1

私のプロジェクトでは、いくつかのモデルやその他のジオメトリオブジェクトを追加し、カメラを動かしてシーンをスキャンできましたが、以下のようにライトを追加すると、モデルがそのまま表示されませんでした。シーン内のモデルに合うように適切なライトを追加するにはどうすればよいですか。

var ambientLight = new THREE.AmbientLight(0x222222);
scene.add(ambientLight);

// add directional light source
var directionalLight = new THREE.DirectionalLight(0xffffff,2);
directionalLight.position.set(1, 1, 1).normalize();
scene.add(directionalLight);

 var directionalLight1 = new THREE.DirectionalLight(0xffffff);
directionalLight1.position.set(-1, -1, -1).normalize();
scene.add(directionalLight1);
4

1 に答える 1

1

それはかなり暗い環境光になるでしょう。0x555555 に近い、またはそれ以上のどこか高い値をお勧めします。また、ディレクショナル ライトをシーンに追加していますが、ディレクショナル ライトの位置をシーンの原点に非常に近い位置に設定しています。

はオブジェクトでdirectionalLight.positionありTHREE.Vector3、ベクトル オブジェクトの .set() メソッドを呼び出してから、単純に結果を正規化しています。あなたのオブジェクトは、単位よりも大きいですか?そして、それは原点にありますか?もしそうなら、私はあなたの指向性ライトがあなたのオブジェクトの中にあると確信しています. 3D モデルは、環境光だけでは正しく見えません。代わりに、次のようにすることをお勧めします。

        var originVector = new THREE.Vector3(0,0,0);
        var ambLight = new THREE.AmbientLight(0x555555);
        scene.add(ambLight);

        var dirLight = new THREE.DirectionalLight(0xFFFFFF);
        dirLight.position.x = -200;
        dirLight.position.y = 200;
        dirLight.position.z = 150;
        dirLight.lookAt(originVector);
        scene.add(dirLight);

影が必要な場合は、Three.JS での影の有効化について以前に回答したこの質問を参照してください。上記の照明コードの結果を表示する必要がある、しばらく前に作成したデモがあります: Lighting Cube Acceleration Demo

于 2012-08-05T19:41:53.270 に答える