도형

많은 기기에서 원활하게 실행되는 3D 게임은 그래픽 프로세서를 활용할 수 있도록 디자인된 3D 아트에서 시작됩니다. 이 가이드에서는 게임의 성능을 개선하고 전력 소모를 최소화하기 위한 모바일 3D 애셋 최적화 및 권장사항을 집중적으로 설명합니다.

이 도움말의 일부는 Arm Limited에서 제공해 준 저작권 보호를 받는 내용을 기반으로 합니다.

도형의 정의

도형 또는 다각형망은 3D 객체의 형태를 구성하는 꼭짓점, 모서리, 면의 모음입니다. 이는 자동차, 무기, 환경, 캐릭터 또는 게임의 모든 시각적 애셋일 수 있습니다.

그림 1. 정육면체의 꼭짓점, 모서리, 삼각형

도형은 다음과 같은 부분으로 구성됩니다.

  • 꼭짓점: 꼭짓점은 3D 공간 내 객체의 구조를 정의합니다.

  • 모서리: 직선으로 연결된 두 개의 꼭짓점입니다.

  • 삼각형: 3개의 모서리로 서로 연결된 3개의 꼭짓점이 삼각형을 만듭니다. 이를 다각형 또는 면이라고 합니다. 3ds Max, Maya, Blender와 같은 3D 소프트웨어에서는 일반적으로 쿼드를 사용합니다. 쿼드는 4면 다각형으로 수정과 작업이 더 용이합니다. 이러한 다각형이 렌더링되면 화면에 삼각형으로 표시됩니다.

다음 섹션에서 도형에 관해 자세히 알아보세요.

삼각형 및 다각형 사용

이 섹션에서는 삼각형 및 다각형 사용 시 주의해야 할 사항을 설명합니다. 여기에는 다음 권장사항이 포함됩니다.

삼각형 수 줄이기

삼각형을 너무 많이 포함하면 게임 성능이 저하되므로

가능한 한 적은 수의 삼각형을 사용해야 합니다. 원하는 품질을 얻을 수 있는 만큼만 사용하는 것이 좋습니다. 모바일 게임용 콘텐츠를 제작할 때 성능에 미치는 영향을 고려하세요. 꼭짓점을 처리하는 데는 많은 비용이 소요됩니다. 꼭짓점 수가 적을수록 게임의 전반적인 성능이 향상됩니다. 또한 삼각형이 적을수록 강력한 GPU 없이도 게임을 실행할 수 있으므로 지원되는 기기가 많아집니다.

다음 이미지는 삼각형을 적게 사용하면서도 품질을 유지할 수 있음을 보여줍니다.

왼쪽 객체에는 584개의 삼각형이 있고 오른쪽 객체에는 704개의 삼각형이 있습니다.

그림 2. 서로 다른 수의 삼각형으로 구성된 두 객체가 음영 모드에서 동일하게 보입니다. 왼쪽 객체에서 실루엣에 영향을 주지 않는 모서리가 삭제되었습니다.

모바일 플랫폼에서 개별 메시에 사용 가능한 최대 꼭짓점 수는 65,535개입니다. 호환성을 극대화하려면 이보다 적어야 합니다.

이렇게 제한하는 이유는 모든 GPU가 16비트 인덱스 지원만 보장하며, 이를 통해서는 꼭짓점 0~65,535개 범위를 나타낼 수 있기 때문입니다. 전부는 아니지만 대부분의 최신 GPU는 꼭짓점 0~4,294,967,295개 범위를 나타내는 32비트 색인을 지원합니다. 16비트 색인을 사용할 때 지원되는 범위를 초과하면 도형이 누락되거나 잘못 렌더링됩니다.

PC 모니터 대신 출시 기기에서 항상 게임을 보고 테스트합니다. 고도로 정밀한 일부 모델은 휴대기기에서 올바로 렌더링되지 않거나 아예 표시되지 않을 수 있습니다.

포그라운드 객체에는 삼각형을 더 많이 사용하고 백그라운드 객체에서는 더 적게 사용하는 것이 좋습니다. 이러한 방법은 카메라 시점(POV)이 정적인 게임에 유용합니다. 다음 예시에서는 다양한 객체에 세부정보를 적절히 사용하는 방법을 보여줍니다.

포그라운드 객체의 세부정보는 삼각형으로 생성됩니다. 백그라운드 세부정보는 평면으로 구현됩니다.

그림 3. 이 예에서는 포그라운드 객체와 백그라운드 객체의 세부정보를 비교하여 보여줍니다.

모델에 사용해야 하는 최대 삼각형 수는 기기와 콘텐츠에 따라 다릅니다. 화면에 더 많은 객체가 있는 경우 모델마다 삼각형을 더 적게 사용합니다. 객체가 2개 또는 3개만 표시되는 경우 더 많은 삼각형을 포함할 수 있습니다.

다음 예시에서는 서로 다른 데모의 두 모델을 보여줍니다. Circuit VR 데모에는 하나의 로봇 캐릭터만 있습니다. 객체가 하나뿐이므로 로봇 모델에 더 많은 삼각형이 사용되었습니다. 다른 모델은 Armies 데모의 모델입니다. 이 데모에서는 각 프레임에 수백 명의 군인이 있으므로 각 군인에 삼각형이 적게 사용되었습니다.

그림 4. 두 가지 사용 사례의 삼각형 개수 비교. 왼쪽에 있는 Circuit VR 로봇에는 11,000개의 삼각형이 있습니다. 오른쪽에 있는 Armies 군인에는 360개의 삼각형이 있습니다.

삼각형 사용의 예

다음 그림은 Armies 기술 데모에 사용된 삼각형 개수의 예시입니다.

Unity에서 빌드된 64비트 모바일 기술 데모인 Armies 데모에서는 정적인 카메라가 여러 역동적인 캐릭터를 보여줍니다. 각 프레임은 약 210,000개의 삼각형을 렌더링합니다. 이만한 수의 삼각형을 사용하면 데모가 초당 약 30프레임(FPS) 속도로 안정적으로 실행될 수 있습니다.

그림 5. 사용된 삼각형의 개수를 보여주는 Armies 기술 데모 렌더링 예시.

장면에서 가장 큰 객체인 대포 탑은 화면의 많은 부분을 차지하므로 약 3,000개의 삼각형을 사용합니다.

각각의 캐릭터는 약 360개의 삼각형을 사용합니다. 캐릭터가 많기도 하고 멀리에서만 보이므로 삼각형을 많이 사용하지 않습니다. 카메라 POV에서는 괜찮게 보입니다.

그림 6. Armies 기술 데모에서 적은 삼각형 수를 사용한 군인의 모습.

중요 영역에 삼각형 사용

꼭짓점은 모바일 플랫폼에서 비용이 많이 듭니다. 처리 예산을 낭비하지 않으려면 게임의 시각적 품질에 중요한 역할을 하는 영역에 꼭짓점을 배치합니다. 3D 객체의 작은 세부정보는 게임의 최종 화면에서 보이지 않을 수 있습니다. 작은 화면 크기와 3D 객체의 배치로 인해 작은 세부정보는 눈에 보이지 않을 수 있습니다.

세부정보 대신 실루엣에 반영되는 큰 형태에 초점을 맞춥니다. 다음 이미지는 실루엣에 초점을 맞춘 예입니다.

그림 7. 로봇 주변의 빨간색 선은 실루엣을 나타냅니다.

카메라 POV에 자주 잡히지 않는 영역에는 더 적은 삼각형을 사용하는 것이 좋습니다. 예를 들어 차량 하부나 옷장 뒷면이 여기에 포함됩니다. 객체의 일부가 보이지 않으면 객체의 해당 부분을 삭제합니다.

객체 일부를 삭제할 때는 신중해야 하며 나중에 객체 재사용이 제한할 수 있습니다. 예를 들어 테이블 메시의 하단을 삭제할 경우 테이블이 뒤집히면 사용자가 삭제된 부분을 보게 될 수 있습니다.

고밀도 삼각형 메시를 사용하여 작은 세부정보를 모델링하지 않습니다. 정교한 세부정보에는 텍스처와 일반 지도를 사용합니다. 다음 예시에서는 동일한 메시에 일반 지도가 있는 경우와 없는 경우를 보여줍니다.

그림 8. 일반 지도가 적용된 모델과 적용되지 않은 모델 비교.

마이크로 삼각형 제거

마이크로 삼각형은 장면의 최종 시각적 요소에 영향을 주지 않는 매우 작은 삼각형입니다.

다각형 수가 많은 모든 3D 객체는 카메라 밖으로 이동했을 때 마이크로 삼각형 문제를 일으킵니다. 마이크로 삼각형에 대해 정의된 업계 표준은 없지만 마이크로 삼각형은 일반적으로 최종 이미지에서 1~10픽셀 미만의 삼각형으로 해석됩니다. 최종 이미지에 기여하지 않더라도 GPU에서 이러한 마이크로 삼각형을 모두 처리해야 하기 때문에 부적절합니다.

마이크로 삼각형은 다음 두 가지 요인으로 인해 발생합니다.

  • 많은 삼각형으로 구성되어 있으며 매우 작은 세부정보
  • 카메라 멀리에서 잡히며 많은 삼각형으로 구성된 객체

그림 9. 거리가 마이크로 삼각형에 미치는 효과.

그림 9에서 포그라운드 로봇에는 마이크로 삼각형이 없습니다. 백그라운드 로봇의 경우 각 삼각형의 크기가 1~10픽셀에 불과하기 때문에 마이크로 삼각형이 있습니다.

그림 10. 매우 상세한 모델의 마이크로 삼각형 비교. 강조표시된 영역의 삼각형 대부분은 휴대전화 화면에서 보기에는 너무 작습니다.

카메라에서 멀리 있는 객체에는 LOD(세부정보 레벨)를 사용합니다. 이렇게 하면 객체의 복잡성이 줄어들고 더 단순해집니다. 그 결과 삼각형을 적게 사용하는 객체가 탄생합니다.

세부정보가 많은 삼각형으로 모델링하지 않습니다. 이런 유형의 세부정보에는 텍스처와 일반 지도를 사용합니다. 너무 작고 최종 이미지에 영향을 주지 않는 꼭짓점과 삼각형 세부정보를 병합할 수 있습니다.

마이크로 삼각형이 메모리 대역폭에 영향을 줄 수 있으므로 마이크로 삼각형 수를 줄이는 것이 중요합니다. 삼각형이 많을수록 GPU로 더 많은 데이터가 전송됩니다. 휴대기기에서는 배터리 수명에 영향을 줄 수 있습니다. 전력 소모량을 늘리면 열 제한이 실행될 수 있으며 이로 인해 GPU의 최대 성능이 제한됩니다.

길고 가는 삼각형 피하기

이러한 모양은 최종 이미지에서 렌더링될 때 한 차원에서 10픽셀보다 작고 화면 전체에 걸쳐 표시됩니다. 길고 가는 삼각형은 보통 다른 삼각형보다 처리 비용이 많이 듭니다.

다음 이미지에서는 멀리서 봤을 때 기둥의 비스듬한 면에 길고 가는 삼각형이 있습니다. 이러한 비스듬한 면은 가까이에서 봤을 때는 문제가 되지 않습니다.

그림 11. 기둥 비스듬한 면의 길고 가는 삼각형.

가능한 경우 모든 객체에서 길고 가는 삼각형을 제거하는 것이 좋습니다.

반짝이는 객체의 경우 길고 가는 삼각형이 있으면 카메라가 이동함에 따라 빛이 깜박일 수 있습니다. LOD는 객체가 카메라에서 멀리 떨어져 있는 경우 길고 가는 삼각형을 제거하는 데 도움이 됩니다.

가능하면 모든 삼각형을 등변 삼각형에 가깝게 유지합니다. 그러면 삼각형이 더 넓어지고 가장자리도 줄어듭니다. 길고 가는 삼각형은 대체로 큰 삼각형에 비해 성능이 떨어집니다. 삼각형 영역에 관한 자세한 내용은 삼각 측량을 참고하세요.

정밀도 수준

정밀도 수준(Level of Detail, LOD)은 객체가 뷰어에서 멀어질수록 복잡성을 줄이는 기술을 의미합니다. LOD의 가장 일반적인 형식은 여러 버전의 메시를 포함하는 형태로 점차적으로 적은 꼭짓점을 사용합니다. LOD는 처리할 꼭짓점 수를 줄일 뿐만 아니라 마이크로 삼각형 문제도 방지합니다. 또한 장면에서 더 가까이 있는 객체는 더 잘 보이게 합니다.

가능하다면 LOD를 사용하는 것이 좋습니다. 객체의 실루엣에 초점을 맞춥니다. 꼭짓점 감소를 목표로 평면에 초점을 맞추는 것이 좋습니다. 다음 이미지는 로봇 모델에 적용된 LOD 사용 사례를 보여줍니다.

왼쪽 로봇이 가장 자세하게 표현되어 있고 가장 많은 삼각형을 사용합니다. 오른쪽 로봇은 더 멀리 있으며 덜 자세하게 표현되어 있고 삼각형을 적게 사용합니다.

그림 12. LOD 변경과 사용되는 꼭짓점 수 비교.

그림 12을 보면 삼각형 2,000개로 구성되어 있으며 가까이에 있는 샘플 객체와 삼각형 200개로 구성되어 있으며 멀리 있는 객체의 차이를 찾기 어렵습니다. 삼각형이 더 많은 객체는 리소스 비용을 높이지만 멀리 있을 때는 화면 품질 개선에 영향을 미치지 않습니다.

그림 13. 서로 다른 수의 삼각형이 사용된 멀리 있는 모델 비교.

개념상으로 LOD는 셰이더 복잡성 및 텍스처 해상도에도 적용될 수 있습니다. 낮은 LOD에서는 다른 소재에 더 단순한 셰이더와 더 적은 텍스쳐가 사용될 수 있습니다. 또한 텍스처에 밉맵이 포함되어 있어 낮은 해상도 텍스처 레벨이 먼 객체에 적용되게 해야 합니다. 이러한 조치는 데이터 크기가 커지는 것을 막아 성능을 높여줍니다.

카메라와 객체가 정적인 모든 게임에는 LOD를 사용하지 않는 것이 좋습니다. LOD의 최대 장점은 카메라 가까이 또는 멀리 이동하는 객체에 있습니다. 정적 객체는 움직이지 않으므로 LOD를 활용할 이점이 없습니다.

그림 14. LOD를 사용하지 않는 Armies 기술 데모의 정적 카메라 장면입니다.

LOD 비율

LOD의 삼각형 수를 줄일 때 일관된 비율을 사용합니다. 레벨마다 삼각형을 50%씩 줄이는 것이 좋습니다.

단순한 객체에는 LOD를 사용하지 않습니다. 이미 삼각형 수가 낮은 객체에는 LOD를 사용하는 이점이 없습니다. Armies 기술 데모의 다음 예는 정적 이미지와 삼각형 수가 적은 객체가 있는 게임의 모습을 보여줍니다.

그림 15. LOD 감소에 따른 모델 비교.

LOD 레벨이 카메라에서 적정 수준 멀어졌을 때 변경되는지 확인합니다. 분석을 통해 게임에 LOD가 사용되는 방식을 결정합니다.

그림 16. LOD 3 모델을 가까이에서 본 모습과 떨어진 거리에서 본 모습 비교.

객체에 적용되는 LOD 레벨 수에는 고정된 값이 없으며 합리적인 수준으로 결정해야 합니다. 객체의 크기와 중요성에 따라 달라집니다. 예를 들어 액션 게임의 캐릭터나 레이싱 게임의 자동차는 나무와 같은 작은 백그라운드 객체보다 LOD 레벨이 세분화되어 있어야 합니다.

LOD를 너무 세분화하면 CPU 리소스가 낭비됩니다. CPU에서 표시할 LOD를 결정하려면 더 많은 처리 능력이 필요하기 때문입니다. 또한 LOD로 파일 크기 및 VRAM 사용량이 높아지므로 메모리 비용도 듭니다. 그리고 LOD 모델을 만들고 확인하는 데 추가 시간이 필요합니다.

LOD 메시를 만드는 방법에는 수동 방식과 자동 방식 두 가지가 있습니다.

  • 3D 소프트웨어를 사용하여 LOD 메시를 수동으로 만들 수 있습니다.
    • 이렇게 하려면 에지 루프를 제거하거나 3D 객체의 꼭짓점 수를 줄입니다.
    • 이를 통해 아티스트는 최종 제품을 가장 효율적으로 제어할 수 있지만 시간이 오래 걸릴 수 있습니다.
  • LOD 메시를 자동으로 생성할 수 있습니다.
    • 3ds Max 내의 ProOptimizer, Maya 내의 Generate LOD Meshes와 같은 3D 패키지에서 특수키를 사용할 수 있습니다.
    • Simplygon 또는 InstaLOD와 같은 LOD 생성 소프트웨어를 사용할 수 있습니다.
    • 일부 게임 엔진에는 자동 LOD 생성 기능이 있어 LOD 메시를 만들고 적용할 수 있습니다.

권장사항

그래픽 재현성을 유지하면서도 게임에 필요한 리소스를 줄이는 추가 기술이 있습니다.

스무딩 그룹 또는 맞춤 꼭짓점 노멀

스무딩 그룹 또는 맞춤 꼭짓점 노멀을 사용하여 에지의 강도를 정의하고 모델의 모양을 변경합니다. 스무딩 그룹은 다각형이 적은 아트 디렉션에서 더 나은 셰이드를 만듭니다. 스무딩 그룹은 또한 구현 시 UV 아일랜드 분할 및 일반 지도의 품질에 영향을 미칩니다.

스무딩 그룹의 예. 왼쪽 로봇에 스무딩 그룹이 적용되어 있습니다.

그림 17. 스무딩 그룹이 적용된 모델과 적용되지 않은 모델 비교.

3D 모델에 스무딩 그룹을 구현하는 경우 3D 소프트웨어에서 내보내고 엔진으로 가져와야 합니다.

메시 토폴로지

새 3D 애셋을 만들 때 잘 정돈된 토폴로지가 있는지 확인합니다. 정갈한 토폴로지는 움직이고 변화하는 캐릭터와 기타 객체에 필수적입니다. 토폴로지가 완벽할 필요는 없습니다. 최종 사용자는 와이어프레임을 볼 수 없으며 텍스처 및 재질이 모델의 외관에 더 큰 영향을 미칩니다.

그림 18. Armies 기술 데모 내 록의 토폴로지, 와이어프레임, 최종 버전

모양 과장

모델을 더 쉽게 해석할 수 있도록 일부 모양을 과장할 수 있습니다. 이는 게임 유형 및 스타일에 따라 크게 달라집니다. 휴대기기 화면은 작기 때문에 매우 작은 일부 모양은 포착하기 쉽지 않습니다. 이러한 모양을 과장하면 사용자가 멀리서도 모양을 볼 수 있습니다.

예를 들어, 손이 큰 캐릭터를 만들면 더 쉽게 볼 수 있습니다.

그림 19. 가시성을 높이기 위해 과장된 비율을 보여주는 모델의 예.