3

three.jsシーンにCubeGeometryベースのメッシュがいくつかあり、それらはすべて、グローバルに使用しているPointLightを反映しています。ただし、そのうちの1つは、THREE.Geometry(コードで頂点と面を追加)だけを使用して「手作業」で作成されたものではありません。色がなくても、MeshPhongMaterialでTHREE.Colorを「emissive」キーに設定した場合にのみ、この色を設定できます。

JS関数によって動的に作成されたジオメトリ。私はこのlitghsを使用しています:

    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 に答える