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

news2025/6/28 0:03:34

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.coloradmin.cn/o/1822603.html

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

相关文章

怎么改变图片分辨率dpi数值?图片改分辨率的在线技巧

在上传图片的时候除了图片大小、尺寸等要求之外&#xff0c;修改图片分辨率也是比较常见的一个问题&#xff0c;需要将图片按照平台的要求修改完成后才可以正常使用。当遇到图片dpi的数值不满足使用需求的时候&#xff0c;有什么方法能够更加快捷的修改图片dpi呢&#xff1f;今…

如何通过SOLIDWORKS教育版提高学生技能培养未来人才?

在当今这个科技日新月异的时代&#xff0c;掌握先进的数字化工具已经成为了一项需备的技能。作为一款功能强大的3D CAD软件&#xff0c;SOLIDWORKS教育版正是一个帮助学生提升技能、培养未来人才的重要工具。那么&#xff0c;如何通过SOLIDWORKS教育版提高学生技能呢&#xff1…

VirtualBox配置双网卡实现宿主机和虚拟机相互访问以及虚拟机外网访问

目录 一&#xff1a;背景 二&#xff1a;实现 三&#xff1a;总结 一&#xff1a;背景 在VirtualBox中配置虚拟机以实现本地主机远程登录、访问外网以及虚拟机之间的相互访问&#xff0c;是一种常见的虚拟化实践&#xff0c;适用于多种场景&#xff0c;如开发、测试和远程工…

鸿蒙 游戏来了 鸿蒙版 五子棋来了 我不允许你不会

团队介绍 作者:徐庆 团队:坚果派 公众号:“大前端之旅” 润开鸿生态技术专家,华为HDE,CSDN博客专家,CSDN超级个体,CSDN特邀嘉宾,InfoQ签约作者,OpenHarmony布道师,电子发烧友专家博客,51CTO博客专家,擅长HarmonyOS/OpenHarmony应用开发、熟悉服务卡片开发。欢迎合…

打造信任和忠诚:增加和改善客户评价的10种方法

客户推荐和产品评价可以成为您最强大的销售工具之一。超过70%的消费者表示他们在购买前会查看产品评价&#xff0c;近63%的消费者表示他们更有可能从有产品评级和评价的网站购买。社会认可可以安抚犹豫的购物者&#xff0c;提供额外的背景信息&#xff0c;并通过确保买家对购买…

【网络编程】基于UDP的服务器端/客户端

UDP可看作是信件邮寄&#xff0c;邮寄过程可能会信件丢失&#xff0c;是一种不可靠的数据传输服务。 但UDP性能更高&#xff0c;实现更加简洁。流控制是区分UDP和TCP的最重要标志。 IP的作用就是让离开主机B的UDP数据包传递给主机B&#xff0c;UDP根据端口号将传到主机的数据包…

6.14工作总结

今天上午&#xff0c;我把之前睿哥吩咐我的任务忙完之后&#xff0c;他就叫我看一下代码。 他跟我说公司的项目用的是微服务的。其实我不懂微服务是个啥&#xff0c;就只知道这个名字。 然后&#xff0c;我把设备管理系统的后端代码展示给他看&#xff0c;他给我指了指&#…

C4D如何预览动画?C4D动画云渲染助力

C4D是一款功能丰富的3D设计软件&#xff0c;以其快速的预览渲染和多样的渲染插件而闻名&#xff0c;其卓越的渲染效果赢得了CG行业专业人士的广泛赞誉。尽管C4D的渲染功能十分强大&#xff0c;但对于初学者而言&#xff0c;其复杂的渲染设置可能会带来一些挑战。本文一起来看看…

Rollup 打包一个 JavaScript 项目

export default {input: "./src/FFCesium/core/index.js", // 输入文件output: {file: "public/lastVersion/FFCesium.confuse.js", // 输出文件//format: "cjs", // 打包格式为cjsformat: "es",exports: "default", // 或者…

计算机网络学习3

文章目录 以太网的MAC帧格式虚拟局域网VLAN概述虚拟局域网VLAN的实现机制以太网的发展802.11无线局域网的组成无线局域网的物理层无线局域网的数据链路层---使用CSMA/CD协议802.11无线局域网的MAC帧 网络层网络层概述网际协议IP和4.2.1异构网络互联IPv4地址及其编址方法概述IPv…

产品规划之精益画布的四大注意事项

精益画布要求团队从用户的角度出发&#xff0c;明确用户痛点和需求&#xff0c;关注用户体验&#xff0c;提高用户满意度和产品市场匹配度&#xff0c;有利于产品迭代与验证&#xff0c;提高了市场适应性和资源配置效率&#xff0c;降低项目潜在风险。 如果没有使用精益画布&am…

什么是断言?

一、assert是个啥&#xff1f; 断言是为了方便调试程序&#xff0c;并不是发布程序的组成部分。理解这一点是很关键的。 在C和C语言中都有assert关键字&#xff0c;表示断言。 java 也不例外&#xff0c;在Java SE 1.4版本以后也增加了断言的特性。 默认情况下&#xff0c;JV…

【QT5】<总结> QT主要技术点

文章目录 前言 一、QT串口编程 二、QT网络编程 三、QT多线程 四、QT连接数据库 五、开发板上运行QT程序 前言 在学习QT的过程中&#xff0c;旨在更好地巩固所学到的知识&#xff0c;本篇总结QT在嵌入式开发中的主要技术点。 一、QT串口编程 思维导图&#xff1a; 知识点…

金融科技助力绿色金融:可持续发展新动力

随着全球气候变化和环境问题的日益严重&#xff0c;绿色金融作为推动环境保护和经济可持续发展的重要手段&#xff0c;已经受到越来越多的关注。而金融科技&#xff0c;作为科技与金融深度融合的产物&#xff0c;正以其独特的优势为绿色金融的发展注入新动力。本文将探讨金融科…

UE5-不同材质上脚步声

主要是用物理材质给不同的材质加一个标签 创建材质 首先去设置里面创建几个地形材质名称&#xff0c;我这里创建了Grass&#xff0c;Rock&#xff0c;Wood&#xff0c;Water &#xff08;就是名字而已&#xff09; 然后创建物理材质&#xff08;物理材质可以添加到现有的普通…

使用Spring AI 和 LLM 实现数据库查询

AIDocumentLibraryChat 项目已扩展为支持提问来搜索关系数据库。用户可以输入一个问题&#xff0c;然后嵌入搜索相关的数据库表和列来回答问题。然后&#xff0c;LLM 获取相关表的数据库架构&#xff0c;并根据找到的表和列生成一个 SQL 查询&#xff0c;来展示结果回答问题。 …

JAVA动态表达式:Antlr4 表达式树解析

接上面 JAVA动态表达式&#xff1a;Antlr4 G4 模板 读取字符串表达式结构树-CSDN博客 目前已经实现了常量及分组常规表达式的解析。 String formula "啦啦啦1 and 11 and 23 and 1123 contains 1 and 23455 notcontains 5"; String formula "啦啦啦1 and (…

基于JSP技术的电子商城系统

开头语&#xff1a; 你好&#xff0c;我是计算机学长码农猫哥。如果你对电子商城系统感兴趣或有相关开发需求&#xff0c;欢迎联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JSP技术 工具&#xff1a;Eclipse、Tomcat 系统展示 首页 管理…

算法007:三数之和

. - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/3sum/ 这个题相较于前几个题来说比较难&#xff0c;思想是前面一个题目…

【MySQL】mysql中常见的内置函数(日期、字符串、数学函数)

文章目录 案例表日期函数字符串函数数学函数其他函数 案例表 emp students 表 exam_result 表 日期函数 注意current_time和now的区别 案例一&#xff1a; 创建一张表用来记录生日&#xff0c;表结构如下 添加日期&#xff1a; insert tmp (birthday) values (2003-01-3…