我在three.js场景中有一些基于CubeGeometry的网格,它们都反射了我全局使用的PointLight。但其中一个是用“手工”方式制作的,只使用了THREE.Geometry(通过代码添加顶点和面),却没有反射。即使它没有颜色,我也只能为其设置颜色,如果我将THREE.Color设置为MeshPhongMaterial上的“emissive”键。
这个几何体是由一个JS函数动态生成的。我正在使用以下灯光:
pointLight = new THREE.PointLight(0xFFFEF0, 1, 100000)
pointLight.position = camera.position;
scene.add(
pointLight
);
我正在使用以下代码创建所述的网格:
var floor = new THREE.Mesh(
ShelfArchitect.Utils.getFloorGeometry(walls),
new THREE.MeshPhongMaterial(materialParams)
);
我需要在materialParams上添加一些内容吗?或者问题出在哪里?
computeVertexNormals()
需要先执行computeFaceNormals()
。 - WestLangley