3

我在 three.js 场景中有一些基于 CubeGeometry 的网格,它们都反映了我在全球范围内使用的 PointLight。但是其中一个是由“手工”制作的,只有 THREE.Geometry(通过代码添加顶点和面)没有反映出来。即使它没有颜色,我也只能为此设置颜色,如果我在 MeshPhongMaterial 上将 THREE.Color 设置为“发射”键。

由 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上添加一些东西吗?或者是什么问题?

4

1 回答 1

4

听起来“手”制作的几何图形丢失了,或者顶点法线不正确。

你可以这样做:

geometry.computeFaceNormals();
geometry.computeVertexNormals();
于 2012-12-19T22:05:49.623 回答