赞
踩
今天在处理threejs加载的Obj模型的时候,想让按照模型的不同类型一次加载到页面中,
根据模型中的children中的name来判断模型的类型
- //consle.log(this.modelObject.children.length) //86
- this.modelObject.traverse(child => {
- console.log("in")
- scene.add(child);
- })
以上代码 如果 不加scene.add(child) 控制台上打印出来的“in”的数量是正确的,一旦加上 scene.add(child) 这句话 控制台上打印出来的"in"数量就不正确
经过了解发现 scene.add() 方法 不会复制一份child到scene中,原有的child是属于this.modelObject的 如果直接将child添加到场景中 就会造成层级关系(父子关系)混乱
因此需要单独创建一份数据出来 添加到场景中 这样就能将模型中的数据依次加载到场景中
- this.modelObject.traverse(child => {
- console.log("in")
- scene.add(child.clone());
- })
-
- 或者
- scene.add(...this.modelObject.children)
\
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。