2014-04-03 1 views
1

three.js를 사용하여 객체를 렌더링하는 응용 프로그램이 있습니다. 방향 조명과 트랙볼 컨트롤을 모두 사용하고 있습니다. 저는 컨트롤을 사용하여 카메라를 움직이고 있으며 조명의 위치는 정적이라는 것을 알고 있습니다.방향 조명 및 트랙볼 제어 동기화 - 세 가지

그러나 움직임이있을 때마다 조명이 카메라와 함께 이동하여 각 시점에서 조명 조건이 동일 해지길 바랍니다. 이렇게하면 매달려있는 물체가 카메라 대신 회전하여 나타납니다.

현재 내가 가지고

camera = new THREE.PerspectiveCamera(45, width/height, 0.01, 1000); 
camera.position.z = 3; 

light = new THREE.DirectionalLight(0xAAAAAA, 1); 
light.position = camera.position; 
scene.add(light); 

내가 시도하는 것 :

    (이것은 preffered을 받겠지만) 조명의 다른 유형을 사용하여
  1. 비슷한 방법
  2. 업데이트 시도 Render 루프가있는 위치. 전혀 효과가 없습니다.

이 효과는 빛이 물체의 반대편에 있고 정적인데, 이는 의미가 없습니다. 나는 빛의 위치가 같기 때문에 같은 방향을 가리킬 것이라고 상상한다.

업데이트 : 사용 후 그래서

는 :

light.castShadow = true; 
light.shadowCameraVisible = true; 

나는 빛되고 캐스트를 개설 프레임을 관찰 할 수있다. 빛의 위치는 바뀌지 만 빛 자체는 원래 위치에서 다시 그려지지 않습니다. 빛이 다시 그려지기 위해 필요한 것이 있습니까?

도움을 주시면 감사하겠습니다. 이 같은 것을, 객체가 회전되는 환상을 생성하고 싶은 경우

+0

아쉽게도 작동하지 않습니다. 라이트는 컨트롤과 함께 움직이지 않으며 오브젝트가 반대쪽에 빛이 나타나는 이전과 같은 효과를냅니다. – Tony

+0

예, 나는 그 제안을 따라 갔지만, 내가 깨닫지 못했던 매우 다른 문제가있었습니다. 간단한 [jsfiddle] (http://jsfiddle.net/qzXFM/2/)을 만드는 동안. 나는 이것이 실제로 완벽하게 작동한다는 것을 깨달았다. 내 응용 프로그램에서 나는 카메라의 정확한 위치 이동을가 렸던 광선 효과를 사용하려고했습니다. 고맙습니다.대답으로 회신하면 기꺼이 받아 들일 것입니다. – Tony

+0

나는 당신의 지시를 따랐습니다. :-) – WestLangley

답변

5

:

PointLight를 사용하는 대신 현장의 자식으로, 카메라의 자식으로 추가 : camera.add(light);하고, 그래서 같은 점 광원을 상쇄 : light.position.set(10, 10, 0);

당신은이 경우에도, 현장의 자식으로 카메라를 추가해야합니다 scene.add(camera);

three.js를 r.66

-1

내 테스트에서 나는 카메라에 방향성 등을 연결하고 측면에서 나타나는 빛을 생성 할 수 있습니다. 'directional light'도우미를 사용하면이 광원이 어떻게 빛나는 지 알 수 있습니다.

var directionalLight = new THREE.DirectionalLight(0xffffff, 1.2); 
    directionalLight.position.set(500, 100, 0); 
    directionalLight.target.position.set(0, 0, 0); 

    dlightHelper = new THREE.DirectionalLightHelper(directionalLight, 50); 
    camera.add(dlightHelper); 

    camera.add(directionalLight);