2014-02-28 122 views
0

我想渲染一个“风景”,with three.js。现在我将飞机的素材从MeshBasicMaterial更改为MeshLambertMaterialMeshPhongMaterial,然后等待呈现一些灯光效果。 奇怪的是,我看不到任何渲染比平坦。Three.js忽略片段底纹

有人可以告诉我,我在做什么错误或碎片渲染的实际要求是什么?

回答

1

看起来像我失踪plane.computeFaceNormals();

我:

plane.computeBoundingSphere(); 
plane.computeVertexNormals(); 

之前和期待computeVertexNormals调用computeFaceNormals含蓄。似乎并非如此。 改为:

plane.computeBoundingSphere(); 
plane.computeFaceNormals(); 
plane.computeVertexNormals(); 

照明工程。是否有任何文档需要调用compute*函数? 什么是computeVertexNormals在没有脸部法线生成时呢?

+0

是的,只要您手动创建几何图形或修改几何图形。 – mrdoob

+0

当我改变顶点坐标时,似乎足以设置'verticesNeedUpdate'和'normalsNeedUpdate'。 – abergmeier

+0

如果你改变顶点,你也应该调用'computeFaceNormals()'/'computeVertexNormals()'。取决于你是否使用'THREE.FlatShading'或'THREE.SmoothShading'。 – mrdoob