2014-09-15 8 views
3

이것은 아주 기본적인 질문입니다. 나는 현재 3D 그래픽과 조명에 대해 배우고 있으며 정상적인 데이터가 (정상적으로) 저장되는 방법에 대해 궁금해하고 있습니다.일반적으로 일반 데이터는 어떻게 저장됩니까?

이 데이터를 프로그램에로드하는 외부 '모델'파일의 일부로 유지하거나 새 모델을로드 할 때마다 정점 데이터에서 새 데이터를 새로 계산하는 것이 표준입니까? 두 가지 방법 모두 장점이 있습니까? 여러 가지 이유로 때때로 사용되는 경우가 있습니까?

답변

1

OpenGL은,이에 사용되는 가장 일반적으로 위치, 법선 및 텍스처 매핑

제출 한 모든 모델합니다 (OBJ 파일)의 가장 기본은 선택을 할 수 있습니다 각 정점에 대한 몇 가지 속성을 수 있습니다 데이터를 전혀 포함할지 여부를 결정합니다. 그러나 가장 복잡한 모델의 경우 법선은 표준이 아니므로 모델 파일에 저장해야합니다.

+0

). 그래서 외부 파일에 법선을 갖는 것이 가장 표준입니까? – Robomoo

+0

@ Robomoo 다른 모델 관련 데이터와 함께, 예. 텍스처 (이미지)는 외부 적이지만. –

2

그래픽에서 항상 그렇듯이 다릅니다.

간단한 모델을 사용하는 경우 법선을 다시 계산할 때 문제가되지 않습니다. 그것들을 저장하는 것은 기본적으로 캐싱입니다.

그러나 픽셀 단위 조명을 사용하는 경우 법선은 일반 (범프 등) 맵에 픽셀 단위로 저장됩니다. 이 경우 일반적으로 절차 적으로 생성 할 수 없습니다 (폴리 카운트가 더 큰 모델에서 생성됩니다). 처리를 위해 GPU에 보낼 때

+0

.3ds 및 .blend와 같이 가장 일반적으로 사용되는 파일 형식은 어떻습니까? 그리고 전체 장면과 같은 매우 큰 모델에 대해 일반 데이터 (픽셀 단위가 아닌)를 저장하면 파일 크기가 크게 증가하지 않을까요? – Robomoo

+1

디스크 공간은 일반적으로 CPU주기보다 저렴합니다 ( –

1

일반적으로 이는 성능 고려 사항이 아닙니다. 법선은 모델의 일부이며, 버텍스 위치에서 버리고 다시 생성 할 수 없습니다.

그림은 모델링 프로그램에서 모양을 빌드하는 일반적인 경우를 나타냅니다. 소프트웨어의 형상을 기술하는 내부 데이터는 분석 표면 (analytical surfaces)으로 이루어져있다. 스플라인 표면. 모양을 정점 기반 형식으로 내 보내면 분석 표면이 삼각형 메쉬로 근사됩니다. 메쉬의 정점은 정점이 메시를 형성하는 방법을 정의하는 연결 정보와 함께 정점 위치로 기록됩니다. 버텍스 위치에있는 분석 표면 의 법선은 각 버텍스에 대해 계산되어 버텍스 위치와 함께 쓰여집니다.

법선을 사용하지 않은 정점 메쉬가있는 경우 (예 : 법선을 절대 내 보내지 않았거나 무시했기 때문에) 표면 법선을 계산할 수 있습니다. 이것은 일반적으로 각 정점에 인접한 모든면의면 법선을 평균화하여 가능하면 얼굴의 영역 또는 각도를 고려한 가중 평균으로 수행됩니다. 그러나이 계산 방법에 관계없이 결과는 원래 분석 표면의 법선의근사치입니다.

원본 분석 표면의 정확한 법선을 사용하는 것과 삼각형 메쉬에서 재구성 된 근사 법선을 사용하는 것의 차이점은 렌더링시 매우 쉽게 볼 수 있습니다. 테셀레이션이 얼마나 정밀하고 어떤 조명 모델이 사용되는지에 따라 크게 달라집니다. 그러나 대부분의 경우 재구성 된 법선은 원래 모델의 법선만큼 좋지 않으며 원래의 법선이 사용되는 경우 렌더링 된 서페이스는 훨씬 부드럽고 깨끗해 보입니다.