2

で両面メッシュを作ろうとしているのですTHREE.MeshLambertMaterialが、表側だけ陰になってしまいます。を使用すると問題なく動作しますTHREE.MeshBasicMaterialTHREE.WebGLRendererバージョン 57を使用しています。

長方形を使用した簡単な例を次に示します。

var rectWidth = 100, rectLength = 100;
var geometry = new THREE.Geometry();
geometry.vertices.push(new THREE.Vector3(0, rectWidth, 0));
geometry.vertices.push(new THREE.Vector3(rectLength, rectWidth, 0));
geometry.vertices.push(new THREE.Vector3(rectLength, 0, 0));
geometry.vertices.push(new THREE.Vector3(0, 0, 0));
geometry.faces.push(new THREE.Face4(0, 1, 2, 3));
// MeshBasicMaterial works
var material = new THREE.MeshLambertMaterial({
    color: 0xCC0000,
    side: THREE.DoubleSide,
});
geometry.computeFaceNormals();
geometry.computeVertexNormals();
var rect = new THREE.Mesh(geometry, material);
scene.add(rect);

私は何を間違っていますか?http://mrdoob.github.com/three.js/examples/webgl_performance_doublesided.htmlを見つけました。これは、それがTHREE.DoubleSide動作することを示していますTHREE.MeshPhongMaterial(私の場合も動作しませんでした)。ただし、この例では組み込みのジオメトリを使用していますが、カスタムのジオメトリを構築しているため、何かが欠けていると思います。

4

0 に答える 0