threejs 加载模型遇到的问题

今天在处理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)

\

Guess you like

Origin blog.csdn.net/workhard0905/article/details/121403526