2017-09-15 20 views
0

私はthree.jsのチュートリアルのチュートリアルに従いましたが、かなり素早くシーンにポイントライトを追加しようとしました。どのようにして私のコードを完成させても、ポイントライトはキューブを照らすことはありません。three.jsでポイントライトを設定するには

var scene = new THREE.Scene(); 
var camera = new THREE.PerspectiveCamera(75, 
      window.innerWidth/window.innerHeight, 0.1, 1000); 
var renderer = new THREE.WebGLRenderer(); 
renderer.setSize(window.innerWidth, window.innerHeight); 

document.body.appendChild(renderer.domElement); 

camera.position.z = 55; 

var light = new THREE.PointLight(0xff0000, 1, 100, 2); 
light.position.set(20,0,20); 
light.castShadow = true; 

scene.add(light); 

var spheresize = 1; 
var pointLightHelper = new THREE.PointLightHelper(light, spheresize); 
scene.add(pointLightHelper); 

var ambient = new THREE.AmbientLight(0x303030); 
scene.add(ambient); 

var cube_geometry = new THREE.BoxGeometry(10,10,10); 
var cube_material = new THREE.MeshLambertMaterial({color:0x00ff00}); 
var cube = new THREE.Mesh(cube_geometry, cube_material); 
scene.add(cube); 

animate(); 


function animate(){ 
    requestAnimationFrame(animate); 

    cube.rotation.y += 0.01; 

    renderer.render(scene, camera); 
} 

上記のコードでは、私は光ヘルパーが表示され、緑色の立方体が周囲光によって照らされるが、全く光が点光源(添付画像を参照)から来るない見ることができます。私は何を逃したのですか?どのようにしてキューブを照らすためにポイントライトを取得するのですか? code result

答えて

3

ライトは正常ですが、ライトまたはマテリアルの色を変更する必要があります。

現在、あなたは純粋な緑色の素材で純粋な赤い光を照らしています。材料の色は、どの色成分(およびどの量)が材料によって反射されるかを決定する。純粋な赤色の光には緑色の成分がないので、光はオブジェクトを完全に見逃すように見えます。

私たちの物理的な世界では、まれに純粋な赤色の光と純粋な緑色の物質があるため、これは直感的ではありません。

+0

ああ、それが問題でした。私はそれを考えなかったでしょう。本当にありがとう! – ORL

関連する問題