0

在线

618

用户

184

主题

489

帖子
  • 0 赞同
    2 帖子
    111 浏览

    一个gltf模型一般是由多个子模型组合而来的,loadGltf 的本质是遍历模型中所有子节点,挨个添加 meshrenderer 分别进行渲染,最终返回的只是模型的一个逻辑根节点,这个 object 本身是没有内容的,它的 children 才是具体的渲染节点,给 root 设置 material 是不会更改内部子节点显示内容的。

    一般我们可以通过forChild遍历模型的所有子对象来设置对应的 meshrenderer 显示,e.g.

    // 加载模型,返回一个 root 节点 let asrolite = await Engine3D.res.loadGltf(...) // 遍历所有子节点 asrolite.forChild(node=>{ // 获取子节点的渲染组件 let mr = node.getComponent(MeshRenderer) if(mr){ // 如果是渲染节点,再设置对应的 material mr.material.emissiveMap = … mr.material.emissiveColor = … … } })