加载glb模型设置HDR泛光不生效
-
一个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 = … … } })