如何用Vue3和p5.js打造一个令人惊叹的3D球体在线展示

Alt

本文由ScriptEcho平台提供技术支持

项目地址:传送门

使用 p5.js 创建交互式 3D 图形

应用场景介绍

p5.js 是一个用于创建交互式图形和动画的 JavaScript 库。它被广泛用于教育、艺术和设计领域,让开发者可以轻松创建具有吸引力的可视化效果。

代码基本功能介绍

此代码段演示了如何使用 p5.js 创建一个交互式 3D 球体网格。用户可以通过鼠标移动来旋转球体,产生动态且引人入胜的视觉效果。

功能实现步骤及关键代码分析

1. 加载 p5.js 库
let jsUrls = ['https://registry.npmmirror.com/p5/1.9.3/files/lib/p5.min.js']
await Promise.all(jsUrls.map((jsUrl) => loadJavascript(jsUrl)))

此代码加载 p5.js 库,这是创建 3D 图形的必要条件。

2. 创建画布并初始化 p5.js 实例
const sketch = (s) => {s.setup = () => {s.createCanvas(710, 400, s.WEBGL)}

此代码创建一个画布元素并初始化一个 p5.js 实例。 createCanvas 函数指定画布的尺寸和渲染模式(在这种情况下为 WebGL)。

3. 定义 draw 函数
  s.draw = () => {s.background(250)s.rotateY(s.frameCount * 0.01)

draw 函数是 p5.js 的核心部分。它定义了在每次帧渲染时要执行的代码。在此代码中,它设置背景颜色、围绕 Y 轴旋转画布并随着时间推移更新旋转角度。

4. 创建球体网格
    for (let j = 0; j < 5; j++) {s.push()for (let i = 0; i < 80; i++) {s.translate(s.sin(s.frameCount * 0.001 + j) * 100,s.sin(s.frameCount * 0.001 + j) * 100,i * 0.1,)s.rotateZ(s.frameCount * 0.002)s.push()s.sphere(8, 6, 4)s.pop()}s.pop()}

此代码使用嵌套循环创建球体网格。外层循环(j) 创建 5 层球体,而内层循环(i) 在每一层创建 80 个球体。每个球体都沿着正弦曲线平移和旋转,随着时间推移产生动态效果。

5. 响应鼠标移动

p5.js 中未明确处理鼠标移动,但可以利用 p5.Element API 在 HTML 画布元素上附加事件侦听器。

总结与展望

这段代码展示了如何使用 p5.js 创建交互式 3D 图形。它涉及加载库、初始化画布、定义 draw 函数、创建球体网格以及处理鼠标移动。

经验与收获:

  • 了解 p5.js 库及其用于创建交互式图形的功能。
  • 掌握了 WebGL 的基本概念,例如旋转和投影。
  • 提高了使用 JavaScript 编程语言的技能。

未来拓展与优化:

  • 添加照明和纹理,以增强球体网格的真实感。

  • 探索使用其他 p5.js 函数创建更复杂的图形和动画。

  • 优化代码以提高性能和响应能力。

  • 集成传感器数据(例如加速计或陀螺仪),以实现更具交互性的体验。

    更多组件:

    在这里插入图片描述


    在这里插入图片描述

    获取更多Echos

    本文由ScriptEcho平台提供技术支持

    项目地址:传送门

    扫码加入AI生成前端微信讨论群:

扫码加入群聊

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/853113.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是堡垒机?和跳板机是一个概念吗?

堡垒机&#xff0c;又称运维审计系统、跳板机&#xff0c;是一种位于内部网络与外部网络之间的安全防护设备&#xff0c;它充当了一个“中间人”的角色&#xff0c;所有对内部网络资源的远程访问都必须通过堡垒机进行。这一设计的核心目的&#xff0c;在于严格控制和记录所有进…

任务3.8.1 利用RDD实现词频统计

实战&#xff1a;利用RDD实现词频统计 目标 使用Apache Spark的RDD&#xff08;弹性分布式数据集&#xff09;模块实现一个词频统计程序。 环境准备 选择实现方式 确定使用Spark RDD进行词频统计。 Spark版本与Scala版本匹配 选择Spark 3.1.3与Scala 2.12.15以匹配现有Spar…

kafka原理简介

Kafka是由LinkedIn开发的一个分布式发布/订阅的消息系统和一个强大的队列&#xff0c;使用Scala编写&#xff0c;它以可扩展和高吞吐率而被广泛使用。 Kafka适合离线和在线消息消费。 Kafka消息保留在磁盘上&#xff0c;并在群集内以master-flower方式实现数据同步&#xff0c;…

用Canvas绘制2D平面近大远小的马路斑马线

用Canvas绘制2D平面近大远小的马路斑马线 设置canvas和上下文&#xff1a; 首先&#xff0c;你需要创建一个元素&#xff0c;并获取其2D渲染上下文。 绘制斑马线&#xff1a; 使用fillRect或strokeRect方法绘制斑马线。你可以通过循环和计算来绘制多条具有不同宽度和间隔的…

1.PyQt6库和工具库QTDesigner安装

1.安装PyQT6和pyqt6-tools 1. PyQt6库是PyQt的开发库 2.pyqt6-tool时QTDesigner设计器工具支持库 pip install PyQt6 pip install pyqt6-tools 2.在Pycharm中配置外部工具QTDesigner和PYGIC 配置外部工具QTDesigner 1. QTDesigner是QT界面设计器 2.打开Pycharm->Settin…

【最新鸿蒙应开发】——HarmonyOS沙箱目录

鸿蒙应用沙箱目录 1. 应用沙箱概念 应用沙箱是一种以安全防护为目的的隔离机制&#xff0c;避免数据受到恶意路径穿越访问。在这种沙箱的保护机制下&#xff0c;应用可见的目录范围即为应用沙箱目录。 对于每个应用&#xff0c;系统会在内部存储空间映射出一个专属的应用沙箱…

Qt MaintenanceTool.exe使用镜像源更新Qt

环境&#xff1a;Windows11&#xff0c;Qt6.5&#xff0c;新版的MaintenanceTool.exe linux环境类似&#xff0c;mac环境可以看官方文档。 cmd命令窗口&#xff1a;切换到MaintenanceTool.exe所在目录&#xff0c;可以用“D:”切换到D盘&#xff0c;“cd xxxx”切换到xxxx目录…

僵尸网络相关

个人电脑被植入木马之后&#xff0c;就会主动的连接被黑客控制的这个C&C服务器&#xff0c;然后这个服务器就会给被植入木马的这个电脑发指令&#xff0c;让他探测在他的局域网内还有没有其他的电脑了&#xff0c;如果有那么就继续感染同局域网的其他病毒&#xff0c;黑客就…

增材制造引领模具创新之路

随着科技的快速发展和制造业的不断转型升级&#xff0c;增材制造&#xff08;也称为3D打印&#xff09;技术正逐渐展现出其在模具智造中的巨大潜力和优势。增材制造以其独特的加工方式和设计理念&#xff0c;为模具行业带来了革命性的变革&#xff0c;为传统制造业注入了新的活…

十大成长型思维:定位思维、商业思维、时间管理思维、学习成长思维、精力管理思维、逻辑表达思维、聚焦思维、金字塔原理、目标思维、反思思维

一、定位思维 定位思维是一种在商业和管理领域中至关重要的思维模式&#xff0c;它涉及到如何在顾客心智中确立品牌的独特位置&#xff0c;并使其与竞争对手区分开来。以下是关于定位思维的清晰介绍&#xff1a; 1、定义 定位思维是一种从潜在顾客的心理认知出发&#xff0c;通…

全新设计,样式大改!搭载酷睿Ultra5处理器的零刻 SEi14 是不是你的梦中情机?

全新设计&#xff0c;样式大改&#xff01;搭载酷睿Ultra5处理器的零刻 SEi14 是不是你的梦中情机&#xff1f; 哈喽大家好&#xff0c;我是Stark-C~ 此次我又收到了来自于零刻官方送测的「全新一代」 SEi14 高性能迷你主机。目前已经折腾了大半个月&#xff0c;今天为大家做…

CVE-2011-1473: OpenSSL权限许可和访问控制问题漏洞及解决方案

CVE-2011-1473: OpenSSL权限许可和访问控制问题漏洞 漏洞详情&#xff1a; OpensSL.是OpensSL团队的一个于源的能够实现安全套接层&#xff08;SSL2/3&#xff09; 和安全传输层&#xff08;TLSw1&#xff09;协议的通用加密库。该产品支持多种加密算法&#xff0c;包括对称密…

高考志愿填报,大学读什么专业比较好?

高考分数出炉后&#xff0c;选择什么样的专业&#xff0c;如何去选择专业&#xff1f;于毕业生而言是一个难题。因为&#xff0c;就读的专业前景不好&#xff0c;意味着就业情况不乐观&#xff0c;意味着毕业就是失业。 盲目选择专业的确会让自己就业时受挫&#xff0c;也因此…

网络标准架构--OSI七层、四层

OSI七层网络架构&#xff0c;以及实际使用的四层网络架构。

进来学习Kubernetes知识点

Kubernetes集群部署 文章目录 Kubernetes集群部署一、Kubernetes概述1.1、什么是Kubernetes1.2、为什么要用Kubernetes 二、Kubernetes组件2.1、Master组件2.2、Node组件 三、Kubernetes资源对象3.1、Pod3.2、Label3.3、Replication Controller3.4、Deployment3.5、Service3.6、…

AI金融投资:批量下载深交所公募REITs公开说明书

打开深交所公募REITs公开说明书页面&#xff0c;F12查看网络&#xff0c;找到真实地址&#xff1a;https://reits.szse.cn/api/disc/announcement/annList?random0.3555675437003616 { "announceCount": 39, "data": [ { "id": "80bc9…

学习笔记——网络管理与运维——SNMP(概述)

一、SNMP概述 1、SNMP背景 SNMP的基本思想&#xff1a;为不同种类的设备、不同厂家生产的设备、不同型号的设备&#xff0c;定义为一个统一的接口和协议&#xff0c;使得管理员可以是使用统一的外观面对这些需要管理的网络设备进行管理。 通过网络&#xff0c;管理员可以管理…

6个免费自动写文章软件,简直好用到爆

对于创作者而言&#xff0c;创作一篇高质量的文章并非易事&#xff0c;它需要耗费大量的时间与精力去构思、组织语言、斟酌字句。灵感并非总是源源不断&#xff0c;有时我们可能会陷入思维的僵局&#xff0c;不知从何下手。而此时&#xff0c;免费自动写文章软件就如同黑暗中的…

RabbitMQ无法删除unsynchronized队列及解决办法

一、故障环境 操作系统:CentOS7 RabbitMQ:3 nodes Cluster RabbitMQ version: 3.8.12 Erlang Version:22.3 Queue Type:Mirror,with polices 二、故障表现: 2.1 管理界面队列列表中存在部分队列镜像同步状态标红: 2.2 TPS为0,无消费者,其他节点镜像未同步且无法手动…

C# Web控件与数据感应之模板循环输出

目录 关于模板循环输出 准备数据源 ​范例运行环境 RepeatHtml 方法 设计与实现 如何获取模板内容 getOuterHtml 方法 getInnerHtml 方法 调用示例 小结 关于模板循环输出 数据感应也即数据捆绑&#xff0c;是一种动态的&#xff0c;Web控件与数据源之间的交互&…