如何解决将three项目迁移至vue项目遇到的问题
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,这篇文章主要介绍了如何解决将three项目迁移至vue项目遇到的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。通过npm下载的th
千家信息网最后更新 2025年11月09日如何解决将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安全错误
数据库的锁怎样保障安全
电商系统如何设计数据库
未来互联网大会领先科技
怀旧服奥罗服务器TAQ开门
联网收银大数据库
服务器防火墙管理
我的世界网络安全宣传语
怀旧服部落服务器命令
海南万稷网络技术有限公司游戏进不去
持续集成等于敏捷软件开发
成都计算机软件开发人员有前途吗
如何打开数据库报表
数据库集群价位
安信交易服务器慢
软件开发财务风险及应对措施
北京北斗网络技术有限公司
手机版如何拥有精灵宝可梦服务器
倡导网络安全的英文
计算机和网络安全管理要求
部队观看网络安全教育片讨论交流
自贡软件开发专业定制
公司网络安全部门年终总结
小米max信号无服务器
数据库会议截稿
c#医疗软件开发
数据库 注册登录代码怎么写
爱康诺软件历史数据库
关于网络安全的团课计划书
原料订单数据库
常见数据库系统比较
曙光服务器内部