【ThreeJS】Threejs +Vue3 开发基础
目前流行的前端3D框架以以Three.js、Babylon.js、A-Frame和ThingJS为例:
1.Three.js
功能: 提供了大量的3D功能,包括基本几何形状、材质、灯光、动画、特效等。
易用性: 功能强大且易于使用,抽象了复杂的底层细节,使得开发者可以更容易地开发3D应用。然而,对于初学者来说,可能需要花费较多时间理解和学习。
性能: 由于其广泛的使用和成熟的生态系统,Three.js在性能上表现良好。
社区支持: 拥有庞大的开发者社区和丰富的教程资源,方便开发者学习和交流。
2.Babylon.js
功能: 与Three.js类似,提供了丰富的3D功能,但更加注重游戏和虚拟现实的应用。
易用性: 同样易于使用,并且提供了多种材质和着色器、物理引擎、灯光、粒子系统等功能,可用于创建复杂的3D场景和交互式应用程序。
性能: 在性能方面与Three.js相当,均能满足大多数3D应用的需求。
社区支持: 虽然社区规模可能稍小于Three.js,但Babylon.js同样拥有活跃的开发者社区和丰富的教程资源。
3.A-Frame
功能: 基于WebVR的3D框架,使用简单的HTML标记语言来构建3D场景。
易用性: 非常适合快速创建3D体验,提供了一组简单易用的组件,包括实体、相机、光源、声音、特效等。
性能: 在WebVR应用中表现良好,但由于其专注于VR体验,可能在某些非VR应用中表现受限。
社区支持: A-Frame的社区相对较小,但活跃度高,且得到了Mozilla等机构的支持。
4.ThingJS
功能: 新兴的3D框架,专注于物联网领域的JavaScript 3D Library。封装了对模型的操作和交互事件,简化了3D应用开发。
易用性: 对于无3D开发经验的人员来说,ThingJS更容易上手。它封装了复杂的3D概念,使得开发者可以更专注于业务逻辑的实现。
性能: 虽然性能可能稍逊于Three.js和Babylon.js等成熟的框架,但足以满足大多数物联网应用的需求。
社区支持: ThingJS的社区规模较小,但得到了优锘科技等公司的支持,并提供了丰富的教程和示例。
我们选中Threejs,没办法,开源,资料又多,坑比较少。
1. 安装依赖
首先,你需要在你的Vue3项目中安装Three.js。你可以使用npm或yarn来安装它.
npm install three
# 或者
yarn add three
2. 集成Three.js到Vue3组件
接下来,你可以在一个Vue3组件中集成Three.js。以下是一个基本的步骤指南:
- 创建Vue3组件:你可以使用Vue CLI或Vite等工具创建一个新的Vue3项目,并添加一个Vue组件。
- 引入Three.js:在你的Vue组件中,使用import语句引入Three.js库。
- 设置Three.js场景:在组件的setup函数或mounted钩子中,设置Three.js的场景、相机和渲染器。
- 渲染循环:使用requestAnimationFrame来创建一个渲染循环,并在其中更新和渲染你的3D场景。
- 添加交互:根据需要,为你的3D场景添加鼠标或触摸事件交互。
3. 示例代码
以下是一个简单的Vue3组件示例,它使用了Three.js来渲染一个旋转的立方体:
<template> <div ref="mount"></div>
</template> <script setup lang="ts">
import * as THREE from 'three'; const mount = ref(null); onMounted(() => { const width = mount.value.clientWidth; const height = mount.value.clientHeight; // 创建场景 const scene = new THREE.Scene(); // 创建相机 const camera = new THREE.PerspectiveCamera(75, width / height, 0.1, 1000); camera.position.z = 5; // 创建渲染器 const renderer = new THREE.WebGLRenderer(); renderer.setSize(width, height); mount.value.appendChild(renderer.domElement); // 创建立方体几何体和材质 const geometry = new THREE.BoxGeometry(1, 1, 1); const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 }); const cube = new THREE.Mesh(geometry, material); // 将立方体添加到场景中 scene.add(cube); // 渲染循环 const animate = () => { requestAnimationFrame(animate); cube.rotation.x += 0.01; cube.rotation.y += 0.01; renderer.render(scene, camera); }; animate();
});
</script> <style scoped>
div { width: 100vw; height: 100vh;
}
</style>
4. 注意事项
这里有几个注意事项:
onMounted
挂载threejs场景dom时,必须在onMounted
里面。mount.value.appendChild(renderer.domElement);
- 必须为dom挂载width/height。
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
【ThreeJS】Threejs +Vue3 开发基础
目前流行的前端3D框架以以Three.js、Babylon.js、A-Frame和ThingJS为例: 1.Three.js 功能: 提供了大量的3D功能,包括基本几何形状、材质、灯光、动画、特效等。 易用性: 功能强大且易于使用,抽象了复杂的底层细节&…...
![](https://img-blog.csdnimg.cn/direct/05c18c4cdf7c4415bbeff5bc7ab05d9f.png)
cocos 如何使用九宫格图片,以及在微信小程序上失效。
1.在图片下方,点击edit。 2.拖动线条,使四角不被拉伸。 3.使用。 其他 在微信小程序上失效,需要将packable合图功能取消掉。...
![](https://img-blog.csdnimg.cn/direct/49eeca391cdf4e219939509a3fd6607a.png)
Spring企业开发核心框架
一、框架前言 1、总体技术体系 单一架构 一个项目,一个工程,导出为一个war包,在一个Tomcat上运行。也叫all in one. 单一架构,项目主要应用技术框架为:Spring,SpringMVC,Mybatis等 分布式架构…...
![](https://img-blog.csdnimg.cn/img_convert/5fd5f02045f38aa404df15f01bf6303b.png)
Scrum团队在迭代中如何处理计划外的工作
认为 Scrum 团队不做计划其实是一个误区,实际上很多 Scrum 团队在冲刺计划会议以及在细化工作项时均会进行详细规划。此外,他们还会创建一个路线图,以便显示他们在多个冲刺中的计划。 Scrum 团队需要经常进行计划,以便在不断变化…...
![](https://img-blog.csdnimg.cn/direct/9d08656d5fad4018ba1560682c3e441b.jpeg)
桌面识别技术革新交互,展厅互动体验步入新时代!
在这股科技浪潮中,物体识别桌作为一种前沿的人机交互设备,其影响力尤为显著。它不仅颠覆了传统展厅内容的交互模式,更以科技之力为观众呈现了一场前所未有的视觉盛宴。那么,接下来,就让我们一起深入探索,物…...
![](https://img-blog.csdnimg.cn/direct/a6899f7f53394803bd5ef8e0dab06492.png)
书生·浦语大模型LagentAgentLego智能体应用搭建 第二期
文章目录 智能体概述智能体的定义智能体组成智能体范式 环境配置Lagent:轻量级智能体框架实战Lagent Web Demo用 Lagent 自定义工具 AgentLego:组装智能体“乐高”直接使用AgentLego作为智能体工具使用 用 AgentLego 自定义工具 智能体概述 智能体的定义…...
![](https://img-blog.csdnimg.cn/img_convert/4f3386c7820bb8da782bf13ffd52bea3.png)
具有 Hudi、MinIO 和 HMS 的现代数据湖
Apache Hudi 已成为管理现代数据湖的领先开放表格式之一,直接在现代数据湖中提供核心仓库和数据库功能。这在很大程度上要归功于 Hudi 提供了表、事务、更新/删除、高级索引、流式摄取服务、数据聚类/压缩优化和并发控制等高级功能。 我们已经探讨了 MinIO 和 Hudi…...
![](https://img-blog.csdnimg.cn/direct/40c7ebed24664965bcdea7b4af800802.png)
32.基于分隔符解决黏包和半包
LineBasedFrameDecoder 基于换行/n (linux)或回车换行/r/n(windows)进行分割。 使用LIneBasedFrameDecoder构造方法,需要设定一个最大长度。 如果超过了最大长度,还是没有找到换行符,就这位这个数据段太长了,抛出ToolLongFrameException DelimiterBasedFrameDecoder …...
![](https://www.ngui.cc/images/no-images.jpg)
2024-6-19(沉默springboot)
1.spring开启事务支持 事务在逻辑上是一组操作,要么执行,要不都不执行。主要是针对数据库而言的,比如说 MySQL。 业务场景eg: public void savePosts(PostsParam postsParam) {// 保存文章save(posts);// 处理标签insertOrUpdateTag(posts…...
![](https://img-blog.csdnimg.cn/direct/f203eedd63f942c59a87dee5c095bdcb.png#pic_center)
three.js 第八节 - gltf加载器、解码器
// ts-nocheck // 引入three.js import * as THREE from three // 导入轨道控制器 import { OrbitControls } from three/examples/jsm/controls/OrbitControls // 导入hdr加载器(专门加载hdr的) import { RGBELoader } from three/examples/jsm/loaders…...
![](https://img-blog.csdnimg.cn/direct/51861904e078428cafff4a0a908e61c5.png)
Aquila-Med LLM:开创性的全流程开源医疗语言模型
论文链接:https://arxiv.org/pdf/2406.12182 开源链接:https://huggingface.co/BAAI/AquilaMed-RL http://open.flopsera.com/flopsera-open/details/AquilaMed_SFT http://open.flopsera.com/flopsera-open/details/AquilaMed_DPO 近年来…...
![](https://www.ngui.cc/images/no-images.jpg)
快速排序总结
标准模版 交换法 单函数法 public static void quickSort(int[] arr, int start, int end) {if (start > end) {return;}int idx start;int pivot arr[idx];int left start, right end;while (left < right) {while (left < right && arr[right] > …...
![](https://img-blog.csdnimg.cn/direct/bea785d910d840a48aadb8065a7df9da.png)
探索Linux的奇妙世界:第二关---Linux的基本指令1
1. xshell与服务器的连接 想必大家在看过上一期视频时已经搭建好了Linux的环境了并且已经下好了终端---xshell了吧?让我来带大家看一看下好了是什么样子的: 第一次登陆会让你连接你的服务器,就是我们买的云服务器,买完之后需要把公网地址ip复制过来进行链接,需要用户名和密码连…...
![](https://img-blog.csdnimg.cn/img_convert/62665dd17ffbfeb665e96af36f44d629.webp?x-oss-process=image/format,png)
荒野大镖客2启动找不到emp.dll的7个修复方法,轻松解决dll丢失的办法
一、emp.dll文件丢失的常见原因 安装或更新问题:在软件或游戏的安装过程中,可能由于安装程序未能正确复制文件到目标目录,或在更新过程中文件被意外覆盖或删除,导致emp.dll文件丢失。 安全软件误删:某些安全软件可能…...
![](https://img-blog.csdnimg.cn/direct/11148438586d43a3bf1fa26ad04472c6.gif)
数据库精选题(三)(SQL语言精选题)(按语句类型分类)
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀数据库 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 前言 创建语句 创建表 创建视图 创建索引…...
![](https://img-blog.csdnimg.cn/d7565cfc032647bfb69e7971731a06a2.gif#pic_center)
Spring Boot + Apache Tika 实现文档内容解析
文章目录 1. 环境准备2. 创建 Spring Boot 项目2.1 初始化项目2.2 添加 Apache Tika 依赖 3. 创建文档解析服务3.1 创建服务类3.2 创建控制器类 4. 配置和运行4.1 配置 Apache Tika 数据文件4.2 运行应用程序 5. 测试和验证5.1 使用 Postman 或 cURL 进行测试 6. 注意事项和优化…...
![](https://www.ngui.cc/images/no-images.jpg)
AcWing 255. 第K小数
自己想出来的,感觉要容易想到,使用可持久化线段树,时间上要比y的慢一倍。大体思想就是,我们从小到大依次加入一个数,每加入一个就记录一个版本,线段树里记录区间里数的数量,在查询时,…...
![](https://img-blog.csdnimg.cn/direct/d2a735a39bb2491582f3ad8027dfc3b9.gif)
Nginx - 反向代理、负载均衡、动静分离、底层原理(案例实战分析)
目录 Nginx 开始 概述 安装(非 Docker) 配置环境变量 常用命令 配置文件概述 location 路径匹配方式 配置反向代理 实现效果 准备工作 具体配置 效果演示 配置负载均衡 实现效果 准备工作 具体配置 实现效果 其他负载均衡策略 配置动…...
![](https://www.ngui.cc/images/no-images.jpg)
从零开始精通Onvif之用户管理
💡 如果想阅读最新的文章,或者有技术问题需要交流和沟通,可搜索并关注微信公众号“希望睿智”。 概述 用户管理是Onvif协议的重要组成部分,它允许系统管理员通过网络接口创建、删除、修改用户账户,并分配不同的权限&am…...
![](https://img-blog.csdnimg.cn/direct/ea778dd80a7b460dbc504662626a8e2d.png)
设计模式——设计模式原则
设计模式 设计模式示例代码库地址: https://gitee.com/Jasonpupil/designPatterns 设计模式原则 单一职责原则(SPS): 又称单一功能原则,面向对象五个基本原则(SOLID)之一 原则定义…...
![](https://img-blog.csdnimg.cn/direct/ecb174a47143447fba9bac63f3ea9994.png)
链表中环的入口节点
链表中环的入口节点 描述 链表中环的入口节点 给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。 数据范围: n≤10000, 1<结点值<10000 要求:空间复杂度 O(1)…...
![](https://www.ngui.cc/images/no-images.jpg)
STL——函数对象,谓词
一、函数对象 1.函数对象概念 概念: 重载函数调用操作符的类,其对象常称为函数对象。 函数对象使用重载的()时,行为类似函数调用,也叫仿函数。 本质: 函数对象(仿函数)是一个类,不是一个函数。 2.函数对象…...
![](https://www.ngui.cc/images/no-images.jpg)
【区分vue2和vue3下的element UI Descriptions 描述列表组件,分别详细介绍属性,事件,方法如何使用,并举例】
在 Element UI(为 Vue 2 设计)和 Element Plus(为 Vue 3 设计)中,Descriptions(描述列表)组件通常用于展示一系列的结构化信息。然而,需要明确的是,Element UI 官方库中并…...
![](https://img-blog.csdnimg.cn/direct/f01ba4c45c924f35a515775e45392334.png)
atcoder abc 358
A welcome to AtCoder Land 题目: 思路:字符串比较 代码: #include <bits/stdc.h>using namespace std;int main() {string a, b;cin >> a >> b;if(a "AtCoder" && b "Land") cout <&…...
![](https://img-blog.csdnimg.cn/direct/c5bd336705034f028f65fa7fc2bd6906.png)
手写docker:你先玩转namespace再来吧
哈喽,我是子牙老师。今天咱们聊聊Linux namespace 瓦特?你没听过namespace?那有必要科普一下了:namespace是Linux内核提供的一种软件性质的资源隔离机制。容器化技术,比如docker,就是基于这样的机制实现的…...
![](https://img-blog.csdnimg.cn/direct/b07db8d4ddf54dd187987723ab5c5d55.png)
注册安全分析报告:PingPong
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞 …...
![](https://www.ngui.cc/images/no-images.jpg)
mysqladmin——MySQL Server管理程序(二)
mysqladmin 是一个命令行工具,用于执行简单的 MySQL 服务器管理任务,如检查服务器的状态、创建和删除数据库、重载权限等。 1 reload 重新加载授权表(grant tables)。当修改了MySQL的权限系统(例如,修改了…...
![](https://img-blog.csdnimg.cn/direct/1dde7b9c88b04b5691756c7493f155a4.png)
Microsoft Edge无法启动搜索问题的解决
今天本来想清一下电脑,看到visual studio2022没怎么用了就打算卸载掉。然后看到网上有篇文章说进入C盘的ProgramFiles(x86)目录下的microsoft目录下的microsoft visual studio目录下的install目录中,双击InstallCleanup.exe&#…...
![](https://img-blog.csdnimg.cn/direct/15f11b9000784d40a96da05717b0d9b0.jpeg)
Appium Android 自动化测试 -- 元素定位
自动化测试元素定位是难点之一,编写脚本时会经常卡在元素定位这里,有时一个元素能捣鼓一天,到最后还是定位不到。 Appium 定位方式和 selenium 一脉相承,selenium 中的定位方式Appium 中都支持,而 Appium 还增加了自己…...
![](https://img-blog.csdnimg.cn/direct/aba5cb0c9bec4f7cac29022a5c40b334.png)
C#.net6.0+Vue+Ant-Design智慧医院手术麻醉系统源码 手术麻醉软件信息化管理系统 麻醉文书祥解
C#.net6.0VueAnt-Design智慧医院手术麻醉系统源码 手术麻醉软件信息化管理系统 麻醉文书祥解 医护人员通过手麻信息系统可以进行手术的预约申请、受理、安排,从门诊医生下医嘱到发起手术申请、护士长审核通过,均实现了全流程信息化管理,大大…...
![](/images/no-images.jpg)
京东不让卖网站制作么/黄页88网站推广效果
第四章 文件和目录 20.读目录 回顾:对于一个目录,r权限表示在该目录下可以执行ls命令,即查看目录内容;w权限表示用户可以在该目录下创建、修改、删除文件;x目录表示用户能否进入该目录,即能不能cd该目录。…...
![](/images/no-images.jpg)
如何建立b2c网站/一句话让客户主动找你
1.将远程项目加载到指定目录:$git init; $git remote add -f origin url2.使用SparseCheckout模式:$git config core.sparsecheckout true3.配置要下载的文件夹: $echo spring-boot-simples/spring-boot-simples-atomikis >> .git/info/sparse-checkout4.下载:$git pull …...
![](http://static.oschina.net/uploads/space/2016/0617/164800_X36w_2474286.png)
网站建设费钱吗/广州网络运营课程培训班
2019独角兽企业重金招聘Python工程师标准>>> OSChina 不支持 md,附上图片如下,github 地址: https://github.com/samuelzuuka/buildfuture-simple-template BuildFuture This Article is composed by Samuel Zuuka, anyone is fr…...
![](/images/no-images.jpg)
西安俄语网站建设/简述网站建设的基本流程
MySQL 的 JDBC 驱动 JAR 的版本问题版本问题mysql jdbc驱动版本与mysql数据库版本有一定的对应关系,用错了版本就会出现连接不上数据库的异常。mysql jdbc驱动版本与mysql数据库版本的对应关系,照着以下关系,选择相应的jdbc驱动和mysql数据版…...
![](/images/no-images.jpg)
外贸出口退税流程/长沙专业竞价优化首选
1. 像snap一样阅后即焚,在服务器端临时存储数据的地方,如显示错误信息。(也可以用session实现)2. Flash的底层是session做的,所以要secret_key。可以看源码3. flash()存储数据,get_flashed_messages()获得数据例子1. flash向某个地…...
![](https://img-blog.csdnimg.cn/5e72ae4d817b451e979d0ad9634656fd.png)
企业做的网站开发费如何入帐/有没有好用的网站推荐
Servlet API并不复杂,主要学习三个类: HttpServlet HttpServletRequest HttpServletResponse 这部分介绍HttpServlet类 HttpServlet 我们写Servlet代码的时候,第一步就是先创建类,继承自HTTPServlet并重写其中的某些方法 核心方法 1.init:在HttpServlet实例化之后被调用一…...