从Blender导出材质几何体后Three.js加载器创建MeshPhongMaterial的疑问
为什么Three.js加载器会创建MeshPhongMaterial?
其实原因很简单,答案就藏在你贴出的JSON材质参数里!你看这几个关键配置项:
"shading":"phong""colorSpecular":[0.5,0.5,0.5]"specularCoef":50
Three.js的JSON加载器是根据材质配置里的特定字段来判断要实例化哪种材质的。当它检测到shading被设置为"phong",同时还存在colorSpecular(高光颜色)和specularCoef(高光系数)这类Phong材质特有的属性时,就会自动创建MeshPhongMaterial对象,而不是你可能预期的基础材质。
哪怕你在Blender里觉得这是个“简单白色材质”,但Blender的默认材质本身就是Phong类型的——哪怕你没手动调整过高光参数,它也会带上这些默认值导出到JSON里。如果想让Three.js加载出其他类型的材质(比如MeshLambertMaterial或者MeshBasicMaterial),你需要在Blender里把材质的着色模式改成对应的类型,重新导出后,JSON里的shading字段就会更新,加载器也就会创建对应的材质实例了。
内容的提问来源于stack exchange,提问作者Bálint Réthy
相关产品推荐
相关产品推荐

