게임 프로그래머의 만담, 게임코디 2nd
+1 vote
751 views 만담 (52p)
다시 보기 , 751 views
간단하게 렌더링 프로그램을 만들고 있습니다.

지정된 object (구, 원기둥, 원뿔, 평면)들의 중심좌표, 지름, camera 좌표, 바라보는 방향, 빛의 방향  등의 간단한 정보를 받아와서

사진처럼 하나의 렌더링 이미지를 구현하는 프로그램을 작성하고 있습니다.

프로그램을 만들면서 opengl 로 컴퓨터 그래픽스를 공부하고 있는데 제가 만드는 프로그램에 적용하려고 하니 다른 부분이 많아 질문 올립니다. opengl 은 함수로 알아서 계산을 해주더군요.. 저는 다 구현해야하고..

opengl 은 object들을 삼각형 폴리건매쉬로 나누어서 안에 정점들을 포함하고 있는데 저는 실시간으로 렌더링을 하지 않을꺼라 점하나하나 pixel 의 색 값을 지정해주는 방식으로 하려고 합니다.

object 들의 정점들을 object space -> world space -> camera space 로 이동시키는 행렬들을 구해서 변환하는 방식으로 구현을 하고 있습니다.

가장 궁금한 것은

이떄 camera space 에서 실제 화면에서 보이는 공간으로 변환을할떄 view frustum 을 적용을 시켜야하는데 이 object 들에 포함된 점들이 view frustm 안에 속하는지 확인하는 방법을 잘 모르겠습니다.

제가 생각한 방법은 object 들의 점들을 하나하나 view frustum 에 들어가는지 비교를 해야할 것같은데 각 view frustum 의 평면들 안에 속한다면 view frusutm 에 속하는 것으로 판단을 하는 것이 맞을까요?

만담에 대한 답글을 하려면 로그인 또는 가입해야합니다.

2 answers

+2 투표

View Frustum 거의 모든 현 세대 렌더링 엔진들 기준으로 일부라도 프러스텀내에 충돌 검출 되면 

모두 포함 시키고 Clipping 을 하는 건 아실 것 같고, 보통 각 정점 판단은 시간이 오래 걸리므로 

바운딩 박스를 씌워서 판단 해버립니다. 바운딩 박스를 각 오브젝트에 씌웁니다. Out bounding, Inner Bounding 런식으로..

Out bounding 은 이터레이션 돌려서 자동화 시켜도 됩니다.

https://docs.unrealengine.com/en-US/Engine/Rendering/VisibilityCulling/index.html

언리얼 엔진의 Visibilty Culling 참고. 영어의 한계가 오면 한글 번역 해버리세요.

Acceleration 알고리즘도 소개가 된 Realtime Rendering 4th Edition 의 해당 챕터 글도 도움이 많이 되더라구요.

제대로 된 검색에 답이 있는 경우가 많더군요.

답글 (185p)
답변 주셔서 감사합니다.
충돌 처리를 기준으로 생각하고 만드니까 어느정도 해결이 되는것 같습니다.
만들면서 그래픽스 파이프라인이라던지 빛 등등을 공부하다 보니 이쪽 분야가 점점 재밌어지네요
0 투표
이런 질문은 Throwbug 에서 하는게 알맞는 것 같네요.

본문의 내용은 Soft renderer 를 만드는걸로 이해됩니다. 이 문제는 사실 매우 간단한데, 폴리곤이 screen space 로 변환된 후 삼각형 폴리곤 단위로 screen space cliping 을 하면 간단하게 해결됩니다. 폴리곤 내의 Vertex 수가 화면 픽셀수보다는 적으니 화면 전체를 레이트레이싱 하는 것보다는 월등히 빠릅니다.
답글 (1.3kp)
답변 주셔서 감사합니다..!
저는 엄청 간단하게 구현하다보니 수학적으로 표현할 수 있는 기본적인 도형을 먼저 구현하는 식으로 만들고 있습니다.
폴리곤 개념을 사용하면 여러 물체들도 표현할 수 있어 용이성이 높겠지만 저는 처음 이쪽 분야를 접하는지라..;
일단 간단하게 구현하는 식으로 만들고있습니다. 지금 만들던것을 좀더 다듬고 나서 폴리곤 공부하고 만들어보면 도움이 많이 될것같네용..

게임 프로그래머의 만담 커뮤니티, 게임코디 입니다

온종일 코드와 씨름하는 우리들의 외로움을 삭이고자 합니다