2013-02-24 4 views
1

OpenGL에서 간단한 3D 큐브 (모든면이 동일한 크기 임)와 3D 텍스처가 있습니다. 큐브에 3D 텍스처를 매핑하고 싶습니다.큐브의 OpenGL 3D 텍스처

결과는 입방체 안의 모든 점이 텍스처 내부의 해당 점에서 색상을 얻도록 완전히 채색 된 입방체 여야합니다. 이것은 적어도 3D 텍스처에 대한 나의 해석입니다.

어떻게 하시겠습니까? GL_QUADS (6 quads)로 입방체를 만들고 6면 각각에 대해 하나의 텍스처 좌표를 지정하면 작동하지 않을 것이라고 생각합니다.

올바른 모양으로 glTexCoord를 지정하는 큐브를 만드는 동안 큐브를 만들어야한다고 가정합니다.

답변

2

일반적으로 광선 추적으로 수행되는 보셀 렌더링과 같은 사운드를 묘사합니다.

3D 텍스처는 불행히도 당신이 설명하는 것을하지 않습니다. 3D 텍스처는 각 텍셀 페치에 대해 U, V, W를 사용하지만 OpenGL은 여전히 ​​프리미티브의 평평한 표면을 따라 그립니다. 3D 쉐이더에 레이 트레이싱 코드를 써서 3D 텍스처로 변환해야합니다. Raytracing을 효율적으로 수행 할 수 있기 때문에 평평한 (회전하지 않은) 단일 쿼드 (더 좋지만 쿼드가 사용되지 않으므로 의사 쿼드를 만드는 두 개의 삼각형)를 배치하고 레이 트레이싱과 함께 조각 셰이더 코드를 작성하십시오 .

자세한 내용은 '직접 볼륨 렌더링'을 참조하십시오.

+0

고마워요! 이제 3D 텍스처가 실제로 무엇인지 이해하는 것이 좋습니다. – peeol

+1

릴리프 매핑은 OP가 필요로하는 것이 아닙니다. OP가 원하는 것은 "볼륨 레이 캐스팅"이라고도하는 "직접 볼륨 렌더링"입니다. 이것을하기위한 몇 가지 방법이 있습니다. – datenwolf

+0

@ datenwolf 제안 내용을 반영하여 내 대답을 편집했습니다. – user515655