如何解决将three项目迁移至vue项目遇到的问题
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了如何解决将three项目迁移至vue项目遇到的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。通过npm下载的th
千家信息网最后更新 2026年11月02日如何解决将three项目迁移至vue项目遇到的问题
这篇文章主要介绍了如何解决将three项目迁移至vue项目遇到的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
通过npm下载的three依赖无法正常使用
在原项目中使用的是three相关的js文件,而迁移项目的时候本来准备直接通过npm下载相关依赖进行操作,但是发现下载依赖后照着常规的形式导入相关的控件会报错;
// 例如下面的代码,导入three可以正常创建场景、创建模型// 但是使用OrbitControls等控件会报错import * as THREE from 'three'// 查询资料后有人说是需要单独导入,但是我是使用下面的导入形式从three包中导入相关文件依然会报错import "three/examples/js/controls/OrbitControls"
当时转而使用直接导入下载好的js文件的形式,将文件放在public目录下,直接在index.html中进行引用,才解决了这个问题。
导入模型的路径出现了问题
一开始我将需要导入的模型文件放在src/assets下面,但是导入模型的方法找不到模型文件,代码如下:
let mtlLoader = new THREE.MTLLoader();let objLoader = new THREE.OBJLoader();mtlLoader.setPath(`@/assets/objs/`);mtlLoader.load("server2.mtl", function(materials) { materials.preload(); objLoader.setMaterials(materials); objLoader.setPath(`@/assets/objs/`); objLoader.load("server2.obj", function(object) { });});// 页面直接报错,无法正常渲染通过查询资料后,有人说要把模型文件放在public/static目录下,修改后导入成功,代码如下:
let mtlLoader = new THREE.MTLLoader();let objLoader = new THREE.OBJLoader();mtlLoader.setPath(`/static/objs/all/`);mtlLoader.load("server2.mtl", function(materials) { materials.preload(); objLoader.setMaterials(materials); objLoader.setPath(`/static/objs/all/`); objLoader.load("server2.obj", function(object) { });});但是打包部署之后,3D模型的路径又出现了错误,原因是打包后的文件路径出现了变化,但是设置的路径不会随着打包变化,导致打包和本地运行时需要不同的路径;
因为我们的项目部署后是通过ip访问的,所以我的做法是判断当前的url,区分是本地运行还是线上运行;也可以通过webpack配置根据不同的命令使用不同的路径;
let resourcesUrl = ''; // 通过判断赋予不同的路径let mtlLoader = new THREE.MTLLoader();let objLoader = new THREE.OBJLoader();mtlLoader.setPath(`${resourcesUrl}/static/objs/all/`);mtlLoader.load("server2.mtl", function(materials) { materials.preload(); objLoader.setMaterials(materials); objLoader.setPath(`${resourcesUrl}/static/objs/all/`); objLoader.load("server2.obj", function(object) { });});3D场景渲染后没有进行销毁
在项目中发现频繁的在3D场景的页面和其他页面切换会导致页面卡顿,是由于在切换路由时没有清除相关模型导致大量占用了内存;
所以需要在离开3D场景销毁模型,并且释放相关的变量,例如renderer、scene、camera、controls
scene.remove(mesh); // scene下的模型scene = null;camera = null;controls = null;renderer.dispose();
感谢你能够认真阅读完这篇文章,希望小编分享的"如何解决将three项目迁移至vue项目遇到的问题"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
模型
项目
文件
路径
问题
不同
场景
篇文章
页面
代码
形式
会报
运行
控件
目录
资料
面的
切换
变化
查询
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
咖啡网
云南咖啡
上海睿民互联网科技有限公司
新华互联网科技学校
互联网科技公司华为
圆梦互联网科技
科技企业和互联网企业
互联网科技公司发展
亿账通互联网科技
上游互联网科技
互联网金融 科技创新
齐家互联网科技有限公司
创业天下互联网科技有限公司
汽车互联网创新科技园
晓花互联网科技有限公司网址
中国科技创新与世界互联网大会
云南省自由互联网科技有限公司
互联网相关科技技术
互联网领先科技活动
第三届互联网大会安防黑科技
深圳九邦互联网科技有限公司
江苏根荣互联网科技
科技互联网政务服务
丰台科技园 互联网
成都狮子座互联网科技
互联网金融科技委员会
美国互联网前沿科技
温州喔噻互联网科技有限公司
搜狐科技互联网
中国新注册互联网科技