2013-01-24 6 views
2

HUD처럼 서로 다른 두 개의 장면과 카메라를 겹쳐서 렌더링하려고합니다. 혼자있을 때 둘 다 올바르게 렌더링됩니다. 또한이 당신이 helpscene에서 mainscene를 볼 수 있도록 의도 한대로 작동합니다EffectComposer에 의해 파괴 된 깊이 버퍼가 재설정되었습니다.

renderer.render(mainscene, maincamera); 
renderer.render(helpscene, helpcamera); 

내가 주요 장면을 렌더링하는 EffectComposer를 사용하고, 나는 단지 작곡가 렌더링의 결과를 볼 전혀 helpscene을 볼 수 없습니다 :

renderTargetParameters = { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter, format: THREE.RGBAFormat, stencilBuffer: false }; 
renderTarget = new THREE.WebGLRenderTarget(width, height, renderTargetParameters); 
composer = new THREE.EffectComposer(renderer, renderTarget); 
---- cut out for brevity --- 

composer.render(delta); 
renderer.render(helpscene, helpcamera); // has no effect whatsoever on the screen, why? 

여기 무슨 일입니까? 다시 한 번 렌더링 호출을 주석 처리하면 올바르게 작동합니다. 하지만 둘 다 활성화되어서, 나는 작곡가 장면/렌더링 만 볼 수 있습니다. 나는 helpscene이 그 전에 렌더링 된 것을 오버레이 (또는 최소한 덮어 쓰기)하기를 기대할 것이다.

renderer.render(helpscene, helpcamera); 전에 상당히 복잡한 코드가 있는데, 다양한 다른 렌더링 경로를 사용하고 다른 설정에 따라 효과 구성자를 사용할지 여부를 결정할 수 있습니다. 그러나 helpscene은 항상 아무런 효과도없이 간단한 경로를 사용하기를 원합니다. 그래서 나는 별도의 렌더링 호출을 사용하고 effectcomposer pass로 통합하지 않습니다.

EDIT : 깊이 버퍼 (?)를 사용하여 재미있는 비즈니스가 있기 때문입니다. 도우미 장면의 모든 내용에 material.depthTest = false를 설정하면 올바르게 표시됩니다. 깊이가 일부 작곡가 패스 또는 작곡가 자체에 의해 0 또는 매우 낮게 설정된 것처럼 보입니다. 예기치 않게 다음 렌더링 호출로 렌더링 된 것을 숨길 수 있습니다.

도우미 장면에서만 LineMaterial을 사용하기 때문에 현재는 수행 할 것입니다.하지만 depthTest = false 해결 방법으로 몇 가지 문제가 발생할 것으로 예상됩니다. 깊이가 필요한 실제 음영 처리 된 개체가있을 수 있습니다. 같은 도우미 장면 안의 다른 객체들에 대해 테스트).

REAL QUESTION IS : EffectComposer 다음에 깊이 버퍼 (또는 무언가)를 재설정하면 어떻게 렌더링 호출이 영향을받지 않게 할 수 있습니까? 마지막 작곡가 패스로 도우미 장면 렌더링을 할 수도 있고별로 차이가 나지 않습니다.

필자의 작곡가 설정 중 하나 인 RenderPass가 그 목적을 위해 만들어진 원근 카메라 근처의 왜곡 된 평면 지오메트리 (예 : ortographic 카메라 & 쿼드 설정이 많은 후 처리 예제에서 발견되지만 왜곡). 다른 설정에는 실제 장면 카메라가있는 "일반"RenderPass가 있습니다. 여기서 깊이 정보가 어쨌든 도우미 장면을 볼 수 있어야합니다. (아마도 심각하게 f * * ** 영어, 미안, 여기에 모국어가 아닌 사람이 말하는데 나는 더 나은 단어를 생각해 낼 수 없었다.) 두 가지 대안 모두에서 동일한 문제가 발생합니다.

답변

4

... 그리고 내 대답에. 진정한 원인을 찾은 후 매우 간단합니다.

renderer.clear(false, true, false);은 오버레이 렌더링이 예상대로 작동하도록 깊이 버퍼를 지울 것입니다.

관련 문제