如何解决将three项目迁移至vue项目遇到的问题
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章主要介绍了如何解决将three项目迁移至vue项目遇到的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。通过npm下载的th
千家信息网最后更新 2025年01月18日如何解决将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安全错误
数据库的锁怎样保障安全
数据库字段indexof
深圳达内软件开发培训机构
网络安全应急响应视频课程
字节跳动企业网络技术
nsc网络安全大会
浙江公安网络安全
影响大的网络安全事件
ip地址访问服务器
网络安全企业SWOT分析
java数据库建表三大
我看网络技术怎么样
网络安全作文名
实时数据库价格对比
网络技术名称简称
企业应该用什么数据库服务器
把服务器根目录删除之后还可以吗
虹口区手机软件开发培训
安卓哪个平台下软件开发
滨州旗云网络技术有限公司
网络安全web渗透例题bp
海丰县软件开发公司
php数据库配置文件代码
怀旧服服务器一键重置
软件开发苏州无锡
基岩国际版起床服务器
服务器3258是什么配置
tidb最低服务器配置
改服务器
web服务器的网站创建主机记录
网络技术的发展与商业媒体