VUE中使用three.js、通过OrbitControls控制模型、通过GLTFLoader导入外部模型

最新修改前前言

新版本的three.js对其变量的引入和暴露进行了优化,可以很方便的从jsm文件夹下引入相关包了。
无需进行一些七七八八的配置,详见另一篇文章:
https://blog.csdn.net/Beam007/article/details/104062426

前言

网上大多数都是导入three.js简单使用,下载并引入three.js使用THREE对象即可:
npm install three --save // 下载安装的命令
import THREE from ‘three’ // 导入THREE对象
this.scene = new THREE.Scene() // 调用对象中的方法创建场景
基本上都不涉及控制和模型导入,只能自己瞎捉摸了好久,苍天呐终于好了!!!

大坑

此处注意,坑啊爬了我很久的坑:
查看npm官网可知,‘three.js’ 包版本停留在0.77.1,提示已被弃用,建议使用’three’
但是我npm install three --save发现下载的包几乎是空的,而npm install three.js --save下载的包可用不过版本过低,导致后续使用GLTFLoader出现各种问题。
经同事建议用cnpm安装,参考如下步骤终于能导入外部模型进行简单控制!!
注意:
一开始我用npm装的three.js结果,使用CubeTextureLoader贴全景图时,怎么都贴不上去图片,经过再三检查路径啥的都没错,

  • 11
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 25
    评论
使用three.js加载gltf模型时,可能会遇到模型自带的材质加载不出来的问题,这可能是因为模型的材质格式不被three.js所支持。解决这个问题的方法是将模型的材质转化为可以被three.js所识别的材质格式。你可以使用GLTFLoader加载模型后,通过遍历模型的材质数组,将每个材质转化为对应的three.js材质类型,例如THREE.MeshBasicMaterial、THREE.MeshLambertMaterial、THREE.MeshPhongMaterial等。具体的实现可以参考以下代码示例: ```javascript var loader = new THREE.GLTFLoader(); loader.load( 'model.gltf', function ( gltf ) { gltf.scene.traverse( function ( child ) { if ( child.isMesh ) { for ( var i = 0; i < child.material.length; i ++ ) { var material = child.material[ i ]; if ( material.isGLTFSpecularGlossinessMaterial ) { material = THREE.MeshStandardMaterial().copy( material ); } else if ( material.isGLTFMaterial ) { material = THREE.MeshStandardMaterial().copy( material ); material.map = null; material.lightMap = null; material.aoMap = null; material.emissiveMap = null; material.bumpMap = null; material.normalMap = null; material.displacementMap = null; material.roughnessMap = null; material.metalnessMap = null; } material.needsUpdate = true; child.material[ i ] = material; } } } ); scene.add( gltf.scene ); }, undefined, function ( e ) { console.error( e ); } ); ``` 在这个示例,我们通过遍历模型的材质数组,将每个材质转化为THREE.MeshStandardMaterial类型,这是three.js支持的一种材质类型。如果你的模型不支持这种材质类型,你可以根据你的模型选择其他的材质类型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值