2017-02-22 17 views
2

castShadowreceiveShadowをオブジェクトに追加したいと思います。しかし、私は次のコードで間違っているのですか?...Three.JS影をつける

var mtlLoader = new THREE.MTLLoader(); 
mtlLoader.setPath("objects/Tree/"); 
mtlLoader.load("tree.mtl", function(materials) { 
    materials.preload(); 
    var objLoader = new THREE.OBJLoader(); 
    objLoader.setMaterials(materials); 
    objLoader.setPath("objects/Tree/"); 
    objLoader.load("tree.obj", function(gate) { 

     var positionX = 0; 
     var positionY = 4; 
     var positionZ = 0; 

     gate.position.x = positionX; 
     gate.position.y = positionY; 
     gate.position.z = positionZ; 
     gate.scale.x = 2 
     gate.scale.y = 2; 
     gate.scale.z = 2; 
     scene.add(gate); 

     gate.castShadow = true; 
     gate.receiveShadow = true; 
    }); 
}); 
+1

役立つはずだと思う適切にセットアップあなたのライトをすることを必要とし、同様にそれらの上にcastShadowsを設定します。また、レンダラーでshadowMapを有効にし、目的のshadowMapタイプを設定する必要があります。あなたの完全なコードがなければ、そこに何か誤りがあるかどうかを確認する方法はありません。おそらくあなたはフィドルをセットアップできますか? –

+0

私は持っています。私がMTLoaderとOBJLoaderなしでそれを行うと、うまく動作します。それはローダーで何かでなければならない –

答えて

1

私はあなたが子供を横断する必要があり、その後、下記のようcastShadowを設定すると思います。ここで

gate.traverse(function (child) { 
    if (child instanceof THREE.Mesh) { 
     child.castShadow = true; 
    } 
}); 

が作業サンプルhttp://jsfiddle.net/4Txgp/703/

である私は本当にそれが影を落とし

関連する問題