2012-09-12 4 views
1

블렌더에서 내 보낸 간단한 실내 시나리오가 있습니다. 그것은 천장에 3 개의 구체를 가진 방과 그 안에있는 각각의 광원을 가지고 있습니다. 조명의 각 하나는 독자적으로 잘 작동하지만 모든 장면을 장면에 삽입하면 그 중 하나만 작동합니다! 2 개로 작동하지만 때로는 3 개로는 작동하지 않습니다. 다음은 조명에 대한 내 코드입니다 :.조명 문제 (three.js 사용)

luz_sala1 = new THREE.PointLight(0xFFFFFF,0.5, 50.0); 
luz_sala1.position = new THREE.Vector3(16.14323,2.52331,13.93375); 
scene.add(luz_sala1); 

luz_sala2 = new THREE.PointLight(0xFFFFFF, 0.5, 50.0); 
luz_sala2.position = new THREE.Vector3(27.70114,2.52331,-6.20571); 
scene.add(luz_sala2); 

luz_sala3 = new THREE.PointLight(0xFFFFFF, 0.5, 50.0); 
luz_sala3.position = new THREE.Vector3(21.50580,3.10719,-27.82775); 
scene.add(luz_sala3); 

I 0으로 거리를 설정하면 잘 작동하지만, 나는 그들이에있는 경우에만이 지역에 영향을 미치는 이러한 조명을 필요로 나는 또한 3 개 시도했습니다 . 스포트라이트 (0xFFFFFF, 0.5, 50.0, Math.PI, 0)는 같지만 결과는 같습니다. 같은 거리를 어떻게 든 공유 할 때 조명이 서로 부정하는 것처럼 보입니까?

도와주세요. 매우 혼란스러워합니다.

EDIT : 또한 일부 스포트라이트 모델이있는 방의 다른 섹션이 있는데, 그 중 4 개가 더 스포트라이트를 추가하면 셰이더 컴파일 오류가 발생합니다. 문제를 검색 한 후 렌더러에서 maxLights 속성을 설정해야한다는 것을 알았습니다. 10으로 설정했지만 문제가 계속 발생하면 장면에 4 개 이상의 조명을 사용할 수 없습니다. 내가 할 수있는 일이 또 있니?

편집 2 : 여기에 몇 가지 이미지가 있습니다. 참고로 "luz_sala1"은 TV에 더 가깝고 "luz_sala2"는 가운데 하나이며 "luz_sala3"는 멀리 떨어져 있습니다.

이 코드는 강도가 0.8 인 경우를 제외하고 위 코드 (모두 3 개 표시 등)입니다. http://www.mediafire.com/view/?83qbbua9f8ee3b4

그래서, 당신이 볼 수 있듯이, 2 점 등이 작동 함께 잘 : (") scene.add (luz_sala1"는 댓글을 달았) http://www.mediafire.com/view/?s85qr4rplhort29

그리고 이것은 2과 3 켜져 그러나 3과 함께 그들은 첫 번째 것에 "더해"보인다.

+0

어떤 OS를 사용하고 있습니까? – mrdoob

+0

ATI HD5850이 장착 된 Windows 7과 Windows XP (카드를 Remmember 할 수 없음)가있는 두 대의 컴퓨터에서 시험했는데 같은 일이 두 컴퓨터에서 모두 발생했습니다. 업로드하려고 할 수는 있지만 코드가 매우 큽니다. 나는 약간의 이미지를 곧 게시 할 것이다. – CoreyTaylor

+0

게시 한 이미지 2 개. 라이트가 PointLights 대신 스포트라이트 인 경우에도 똑같은 일이 발생합니다. – CoreyTaylor

답변

0

효과가없는 maxLight 속성은 하드웨어, 드라이버 또는 셰이더에서 다양한 벡터를 지원하지 않는 ANGLE (WebGL을 Direct3D로 변환하는 라이브러리)로 인해 발생할 가능성이 큽니다. 이 일 수도 있습니다. 당신이 당신의 브라우저가 ANGLE을 통해 고유의 OpenGL을 (지침은 구글)를 선호 할 경우 도움이된다면

  1. 보십시오 : 더 빛을하기 위해

    세 가지 옵션이 있습니다. 최신 OpenGL 드라이버가 설치되어 있는지 확인하십시오.

  2. 지연 렌더러를 구현하십시오. 데스크톱 컴퓨터에서는 요즘 매우 일반적이지만 프레임 버퍼 제한으로 인해 WebGL에서 좋은 성능을 구현하는 것은 불가능하지는 않지만 까다로운 작업입니다.
  3. 일부 조명 만 사용하는 나머지 조명을 사용하지 않는 조명 관리자를 구현합니다. 가장 간단한 방법은 카메라에 가장 가까운 조명을 선택하는 것입니다.

또한 주목할 가치가있는 점은 현재 스포트 라이트는 그림자를 한 방향으로 투사하는 바로 가리기입니다.