본문 바로가기
3D Algorithm

Backface Culling 의미와 기본 원리

by DarkRock 2023. 11. 8.
반응형

Backface Culling은 

3D 그래픽스에서 자주 사용되는 기술로, Object의 후면(Back face)을 자동으로 숨기는 작업을 말합니다.

 

출처: https://3dgumshoe.com/maya-turning-off-backface-culling


위의 이미지의 왼쪽이 후면을 그린 것이고 오른쪽이 후면을 삭제한 그림입니다. 후면은 일반적으로 사용자에게 보이지 않는 면이기 때문에 화면에 그리지 않음으로써 렌더링 성능을 높이기 위해 사용됩니다. 여기서 렌더링 성능을 높인다는 의미는 Object를 그릴 때 좀 더 높은 FPS(Frames Per Second)를 확보할 수 있다고 볼 수 있습니다.

 

Backface Culling은 그래픽 라이브러리 openGL이나 direct X에서 기본적으로 지원해 주는 기능이지만 만약에 이 기능을 구현해야 한다면, Object의 앞면(Front face)과 후면(Back Face)을 구별해 주어서 drawing 할 때 후면은 그리지 않도록 개발하시면 됩니다.

 

출처: https://docs.tizen.org/application/native/guides/graphics/assembly


앞면과 후면의 구별은 사용자가 보는 view 백터와 오브젝트 면의 법선 백터의 내적으로 구별하시면 됩니다. 두 백터의 내적이 양수가 나오면 사용자의 시점과 면의 법선백터가 같은 방향을 갖는 면이기 때문에 후면으로 판별하고, 내적이 음수면 앞면으로 판별하시면 됩니다.
두 백터의 내적이 같은 방향일 때 왜 양수로 나오는 것에 대한 내용은 아래 내용을 보시면 됩니다.

2023.10.30 - [3D Algorithm] - 백터 내적 활용(개발자 관점)

 

벡터 내적 활용(개발자 관점)

벡터의 내적은 영어로 Inner Product, Dot Product라고 부르며 3차원에서 계산은 1. a•b = a.x*b.x + a.y*b.y + a.z*b.z 2. a•b = |a||b|cosθ 두 가지 방식으로 계산할 수 있습니다. 주로 개발을 할 때 계산은 1 번식

darkrock.tistory.com

 

이렇게 면의 법선백터와 사용자의 view 벡터의 내적을 이용해서 Backface Culling을 구현 할 수 있습니다.

 

 

 

반응형