位置: IT常识 - 正文

vue3项目中使用three.js(vue3用法)

编辑:rootadmin
vue3项目中使用three.js vue3项目中使用three.js前言一、three.js是什么?二、vue3中下载与安装three.js三、操作步骤1.创建场景2.创建物体3.添加光源4.添加相机5.开始渲染四、myThree.vue源代码五、效果图1.单个模型2.多个模型总结前言

推荐整理分享vue3项目中使用three.js(vue3用法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue3项目中使用代码编辑工具,vue3this,vue3用法,vue3项目中使用高德地图,vue3用法,vue3项目中使用vue2组件,vue3项目中使用高德地图,vue3项目中使用代码编辑工具,内容如对您有帮助,希望把文章链接给更多的朋友!

在vue3项目中,通过three.js使用了一段短小但完整的代码实现了实际的三维效果图。

一、three.js是什么?

Three.js是一个轻量级,跨平台的Javascript库,可以在浏览器上结合HTML5的canvas,SVG或者WebGL,创建和展示3D模型和动画。 Three.js允许我们在不依赖任何浏览器插件的情况下,创建一个GPU加速的3D动画场景。

二、vue3中下载与安装three.js

1.利用npm安装three.js:

npm install three

2.npm安装轨道控件插件:

npm install three-orbit-controlsvue3项目中使用three.js(vue3用法)

3.安装加载.obj和.mtl文件的插件:

npm i --save three-obj-mtl-loader

4.安装渲染器插件:

npm i --save three-css2drender

安装好后在需要调用的vue文件中引用:

import * as Three from 'three'三、操作步骤

场景——相机——渲染器是在Three.js中必不可少的三要素,只有以上三者结合才能渲染出可见的内容。

1.创建场景//创建一个三维场景 const scene = new THREE.Scene();2.创建物体 const geometry = new THREE.BoxGeometry(100, 100, 100);//长宽高都是100的立方体 // const geometry = new THREE.SphereGeometry(60,40,40);//半径是60的圆 //widthSegments, heightSegments:水平方向和垂直方向上分段数。widthSegments最小值为3,默认值为8。heightSegments最小值为2,默认值为6。 //创建材质(外观) const material = new THREE.MeshLambertMaterial({ // color: 0x0000ff,//设置材质颜色(蓝色) color: 0x00ff00,//(绿色) transparent: true,//开启透明度 opacity: 0.5 //设置透明度 }); //创建一个网格模型对象 const mesh = new THREE.Mesh(geometry, material);//网络模型对象Mesh //把网格模型添加到三维场景 scene.add(mesh);//网络模型添加到场景中3.添加光源 //添加光源 //会照亮场景里的全部物体(氛围灯),前提是物体是可以接受灯光的,这种灯是无方向的,即不会有阴影。 const ambient = new THREE.AmbientLight(0xffffff, 0.4); const light = new THREE.PointLight(0xffffff, 1);//点光源,color:灯光颜色,intensity:光照强度4.添加相机 //创建一个透视相机,窗口宽度,窗口高度 const width = window.innerWidth, height = window.innerHeight; const camera = new THREE.PerspectiveCamera(45, width/height, 1, 1000); //设置相机位置 camera.position.set(300,300,300); //设置相机方向 camera.lookAt(0,0,0);5.开始渲染 //创建一个WebGL渲染器 const renderer = new THREE.WebGLRenderer() renderer.setSize(width,height)//设置渲染区尺寸 renderer.render(scene,camera)//执行渲染操作、指定场景、相机作为参数四、myThree.vue源代码

说了这么多,现奉上myThree.vue源代码:

<template> <div id="my-three"></div></template>​<script lang='ts' setup> import * as THREE from 'three' import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls' import { onMounted } from 'vue' //创建一个三维场景 const scene = new THREE.Scene(); //创建一个物体(形状) const geometry = new THREE.BoxGeometry(100, 100, 100);//长宽高都是100的立方体 // const geometry = new THREE.SphereGeometry(60,40,40);//半径是60的圆 //widthSegments, heightSegments:水平方向和垂直方向上分段数。widthSegments最小值为3,默认值为8。heightSegments最小值为2,默认值为6。 //创建材质(外观) const material = new THREE.MeshLambertMaterial({ // color: 0x0000ff,//设置材质颜色(蓝色) color: 0x00ff00,//(绿色) transparent: true,//开启透明度 opacity: 0.5 //设置透明度 }); //创建一个网格模型对象 const mesh = new THREE.Mesh(geometry, material);//网络模型对象Mesh //把网格模型添加到三维场景 scene.add(mesh);//网络模型添加到场景中 // 添加多个模型(添加圆形) // const geometry2 = new THREE.SphereGeometry(60, 40, 40); // const material2 = new THREE.MeshLambertMaterial({ // color: 0xffff00 // }); // const mesh2 = new THREE.Mesh(geometry2, material2); //网格模型对象Mesh // // mesh3.translateX(120); //球体网格模型沿Y轴正方向平移120 // mesh2.position.set(120,0,0);//设置mesh3模型对象的xyz坐标为120,0,0 // scene.add(mesh2); //添加光源 //会照亮场景里的全部物体(氛围灯),前提是物体是可以接受灯光的,这种灯是无方向的,即不会有阴影。 const ambient = new THREE.AmbientLight(0xffffff, 0.4); const light = new THREE.PointLight(0xffffff, 1);//点光源,color:灯光颜色,intensity:光照强度 scene.add(ambient); light.position.set(200,300,400); scene.add(light); //创建一个透视相机,窗口宽度,窗口高度 const width = window.innerWidth, height = window.innerHeight; const camera = new THREE.PerspectiveCamera(45, width/height, 1, 1000); //设置相机位置 camera.position.set(300,300,300); //设置相机方向 camera.lookAt(0,0,0); //创建辅助坐标轴 const axesHelper = new THREE.AxesHelper(200);//参数200标示坐标系大小,可以根据场景大小去设置 scene.add(axesHelper); //创建一个WebGL渲染器 const renderer = new THREE.WebGLRenderer() renderer.setSize(width,height)//设置渲染区尺寸 renderer.render(scene,camera)//执行渲染操作、指定场景、相机作为参数 const controls = new OrbitControls(camera, renderer.domElement)//创建控件对象 controls.addEventListener('change',()=>{ renderer.render(scene, camera)//监听鼠标,键盘事件 }) onMounted(()=>{ document.getElementById('my-three')?.appendChild(renderer.domElement) })</script>​<style lang='scss'> body{ margin: 0; padding: 0; }</style>五、效果图1.单个模型

2.多个模型

总结

在vue3项目中,通过three.js实现了实际的三维效果demo,未来会继续深入研究,总之3D渲染图形是一个很好玩的东西,欢迎大家一起交流。

本文链接地址:https://www.jiuchutong.com/zhishi/299756.html 转载请保留说明!

上一篇:反射填充详解ReflectionPad2d(padding)(反射dll)

下一篇:〖Python网络爬虫实战②〗- Web网页基础(150讲轻松搞定python网络爬虫)

  • 城建税及教育费附加怎么计算
  • 部分红冲的发票怎么开
  • 新换财务软件如何登录
  • 开票系统里红字发票怎么开
  • 完税证明必须本人办理吗
  • 民办非盈利企业注册
  • 员工上班期间应穿
  • 个体工商户能否开13的专票
  • 自行研发无形资产暂时性差异
  • 购置税发票如何下载
  • 企业变更地址需要哪些资料
  • 委托加工应税消费品消费税的账务处理是怎样的?
  • 以前年度损益调整属于哪类科目
  • 一般纳税人税控维护费怎么填报
  • 工资中代扣水电费是什么意思
  • 关联企业无偿使用土地
  • 应交增值税和未交增值税是一个科目吗
  • 代收水电费如何开票商品分类编码
  • 问答技巧例子
  • 税务三方协议一式几份
  • 企业范围内已利用的荒山要交城镇土地使用税吗
  • 银行借款用于在建工程
  • 增值税影不影响企业利润
  • 增值税和消费税的异同点
  • 制造费用可以抵扣进项税吗
  • 核销坏账应具备的条件
  • win101703怎么看
  • 如何进行网速测试设置
  • 华为mate50pro怎么读
  • 房屋及建筑物改造费用
  • 酒店开业请吃饭敬酒怎么说
  • media是什么文件
  • 新成立股份有限公司股本构成
  • 外资企业股权转让给外资企业
  • 通用数据库软件
  • 原 !神静态网页布局详解,html+css布局实战,附详细代码
  • 长期股权投资的账面价值怎么计算
  • 多目标pso
  • 企业所得税申报表A类
  • php中单引号和双引号
  • 原生js获取元素高度
  • 民间非营利组织如何纳税
  • 旅行社差额征收 政策
  • 预缴税款为什么不能跨月申报
  • 差额征税的扣除额是填什么钱
  • 以房租入股股份怎么计算
  • 织梦栏目页模板
  • 企业的留存收益有
  • 《中华人民共和国治安管理处罚法》
  • MYSQL数据库技术基础
  • 个人提供的劳务费要开发票,但是薪资不需要开发票
  • 小规模增值税申报未开票收入怎么填
  • 收到房租租金下什么科目
  • 新办企业在建期间账务处理
  • 装修费用一次性税前扣除
  • 发票遗失重开需要收费吗?
  • 什么情况需要预缴
  • 咨询费的支出范围
  • 财务费用中的汇兑损益和汇兑收益的区别
  • 发票以外的其他发票
  • 坏账准备对资产负债表影响
  • 征收率和税率的区别举例
  • 分支机构需要单独设立账簿吗
  • mysql 错误1067
  • 删除表s
  • u盘启动怎么制作 u极速一键制作u盘启动图文教程
  • linux信号机制的原理
  • 如何使用chatgpt
  • winxp开机画面自动重启
  • mac入门视频教程
  • win7 host文件路径
  • ajax 编码
  • pycharm怎么学
  • node 多线程
  • unity加密代码
  • python打包成deb
  • 安徽省电子税务局怎么添加办税人员
  • 电子税务密码输入错误五次怎么办
  • 青岛市税务管理局
  • 受让企业与转让企业区别
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设