位置: 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网络爬虫)

  • ipadmini4(ipad尺寸)

    ipadmini4(ipad尺寸)

  • 维迈通v8怎么连接手机(维迈通v8怎么连接对讲机)

    维迈通v8怎么连接手机(维迈通v8怎么连接对讲机)

  • 微信开通商家收款码后个人的还可以用吗(微信开通商家收款码提现要手续费吗)

    微信开通商家收款码后个人的还可以用吗(微信开通商家收款码提现要手续费吗)

  • 用户已被锁定什么意思(用户已锁定什么意思)

    用户已被锁定什么意思(用户已锁定什么意思)

  • 淘宝平台标题栏最多允许输入多少个字符(淘宝平台标题栏允许最多输入60个字符集30个汉字)

    淘宝平台标题栏最多允许输入多少个字符(淘宝平台标题栏允许最多输入60个字符集30个汉字)

  • 淘宝店铺降权会对店铺有什么影响(淘宝店铺降权会影响什么)

    淘宝店铺降权会对店铺有什么影响(淘宝店铺降权会影响什么)

  • airpods躺着带不识别(airpods躺着不能用)

    airpods躺着带不识别(airpods躺着不能用)

  • z170主板配什么cpu(z170主板配什么风扇)

    z170主板配什么cpu(z170主板配什么风扇)

  • pr支持的视频格式有哪些(pr2020支持的视频格式)

    pr支持的视频格式有哪些(pr2020支持的视频格式)

  • 苹果手机恢复出厂设置后里面的图片还有吗(苹果手机恢复出厂后怎么恢复数据)

    苹果手机恢复出厂设置后里面的图片还有吗(苹果手机恢复出厂后怎么恢复数据)

  • 11处理器是多少(iphone11处理器是多少)

    11处理器是多少(iphone11处理器是多少)

  • 拼多多申请介入怎么撤销(拼多多申请介入在哪里)

    拼多多申请介入怎么撤销(拼多多申请介入在哪里)

  • 咪咕超级会员怎么登录(咪咕超级会员怎么取消)

    咪咕超级会员怎么登录(咪咕超级会员怎么取消)

  • 手机怎么取消固定屏幕(手机怎么取消固定ip地址)

    手机怎么取消固定屏幕(手机怎么取消固定ip地址)

  • 闲鱼消费者保障怎么开(闲鱼消费者保障服务协议)

    闲鱼消费者保障怎么开(闲鱼消费者保障服务协议)

  • 荣耀v30pro是什么屏幕材质(荣耀v30pro是什么芯片)

    荣耀v30pro是什么屏幕材质(荣耀v30pro是什么芯片)

  • 华为悬浮图标怎么消除(华为悬浮图标怎么关闭)

    华为悬浮图标怎么消除(华为悬浮图标怎么关闭)

  • 如何在目录前加空白页(如何在目录前加摘要)

    如何在目录前加空白页(如何在目录前加摘要)

  • 地磅的小票打印步骤(地磅的小票打印不清楚)

    地磅的小票打印步骤(地磅的小票打印不清楚)

  • 手机应援字幕怎么弄(手机应援字幕app)

    手机应援字幕怎么弄(手机应援字幕app)

  • 如何关闭笔笔攒(如何关闭笔笔攒冻结)

    如何关闭笔笔攒(如何关闭笔笔攒冻结)

  • 手机号欠费不用了可以吗(手机号欠费不用了会自动注销吗)

    手机号欠费不用了可以吗(手机号欠费不用了会自动注销吗)

  • 腾讯视频如何用手机号登录(腾讯视频如何用支付宝支付会员)

    腾讯视频如何用手机号登录(腾讯视频如何用支付宝支付会员)

  • 【uni-app】小程序实现微信授权登陆(附流程图)(unigui 小程序)

    【uni-app】小程序实现微信授权登陆(附流程图)(unigui 小程序)

  • 产品分成方式取得收入什么意思举例
  • 咨询合同按什么交印花税
  • 代加工可靠吗
  • 个人先进奖励要缴纳个税吗
  • 养老险的基数
  • 企业清算的种类
  • 企业所得税和增值税都要交吗
  • 冲减管理费用是红字还是在贷方
  • 物业做账的时候怎么做
  • 公司亏损没有收入怎么办
  • 凭票报销交通费补贴
  • 什么情况下要办居住证
  • 增值税发票的帐号怎么查
  • 开劳务分包发票需要什么条件?
  • 税率税额是星号什么意思
  • 企业所得表怎么填写
  • 农贸市场可以收什么的费
  • 企业借款利息收入企业所得税
  • 固定资产处置要交所得税吗
  • 小企业的场地租金怎么算
  • 农业企业出租厂房需要交税吗
  • 劳务公司开具劳务费发票
  • 航天信息维护费300元能全额抵扣吗
  • 喀拉拉邦地理位置
  • 固定资产核销是资产损失吗
  • 收到进项税发票如何入账
  • wordpress功能介绍
  • 可抵扣的费用
  • 命令行基础
  • 头歌java第一课
  • 福利包括什么
  • uniapp控制硬件设备
  • framework core
  • css 宽度 自适应 占满
  • 上月未开发票的销项税,已经申报缴税,在本月开了票,应该如何填报?
  • 基于区块链技术的什么特征可建立卷烟信息数据查询系统
  • 印花税每个月都报吗
  • 未达起征点销售额是含税还是不含税
  • python从键盘输入正整数n,计算1+2+3
  • 商业汇票利息账务处理如何做?
  • phpcms v9用户手册
  • 计提持有至到期债券投资的利息
  • 固定资产折旧的计算方法
  • 机械租赁收入算成本吗
  • 商场返券计算公式
  • 其他综合收益转到留存收益
  • 公司水电费分摊怎么算
  • 上年度财务费用会计分录
  • 母子公司往来款属于借款吗
  • 增值税专用发票的税率是多少啊
  • mysql sql 基础教程
  • fedora怎么样
  • 科普知识大全
  • 复制糸统
  • 使用命令行 -devmode
  • unix系统的最大特点
  • win8提升模式
  • windows7的任务管理器在哪
  • linux误删除数据
  • nacos监控服务
  • Win10预览版桌面图标和任务栏不翼而飞怎么办?
  • cocos2dx schedule
  • js实现功能
  • Android游戏开发教程
  • dos命令/s
  • 风格的多样性举例说明
  • perl-v
  • perl处理特殊符号
  • 前端面试题csdn
  • android adbd
  • vue使用mixin
  • javascript深入理解
  • bootstrap学习
  • javascript学习指南
  • 全面解析朝鲜战争
  • 工程咨询服务税需要每月缴纳吗
  • 江西国家税务局官网
  • 济南社保减免政策2020通知
  • 试运行期间的收入应如何处理
  • 如何做好税务局长
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设