모델 변환 매개 변수 구성

이 문서에서는 모델 변환을 위한 매개 변수를 구성하는 방법을 알아봅니다.

설정 파일

<modelName>.ConversionSettings.json이라는 파일이 입력 모델 <modelName>.<ext> 옆에 있는 입력 컨테이너에 있는 경우, 이 파일은 모델 변환 프로세스를 위한 추가 구성을 제공하는 데 사용됩니다. 예를 들어, box.gltf를 변환할 때 box.ConversionSettings.json을 사용하여 모델 변환을 위한 매개 변수를 설정합니다.

JSON 변환 설정 파일의 콘텐츠에는 다음 스키마가 있어야 합니다.

{
    "$schema" : "http://json-schema.org/schema#",
    "description" : "ARR ConversionSettings Schema",
    "type" : "object",
    "definitions" : 
    {
        "position_attribute" : {"type" : "string", "description" : "Destination format of the position attribute", "enum" : [ "32_32_32_FLOAT", "16_16_16_16_FLOAT" ]},
        "color_attribute" : {"type" : "string", "description" : "Destination format of the color attribute", "enum" : [ "NONE", "8_8_8_8_UNSIGNED_NORMALIZED" ]},
        "vector_attribute" : {"type" : "string", "description" : "Destination format of the normals, tangents and binormals attributes", "enum" : [ "NONE", "8_8_8_8_SIGNED_NORMALIZED", "16_16_16_16_FLOAT" ]},
        "texcoord_attribute" : {"type" : "string", "description" : "Destination format of the texture coordinates attribute", "enum" : [ "NONE", "32_32_FLOAT", "16_16_FLOAT" ]}
    },
    "properties" : 
    {
        "scaling" : { "type" : "number", "exclusiveMinimum" : 0, "default" : 1.0 },
        "recenterToOrigin" : { "type" : "boolean", "default" : false },
        "opaqueMaterialDefaultSidedness" : {" type" : "string", "enum" : [ "SingleSided", "DoubleSided" ], "default" : "DoubleSided" },
        "material-override" : { "type" : "string", "default" : "" },
        "gammaToLinearMaterial" : { "type" : "boolean", "default" : false },
        "gammaToLinearVertex" : { "type" : "boolean", "default" : false },
        "sceneGraphMode" : { "type" : "string", "enum" : [ "none", "static", "dynamic" ], "default" : "dynamic" },
        "generateCollisionMesh" : { "type" : "boolean", "default" : true },
        "unlitMaterials" : { "type" : "boolean", "default" : false },
        "deduplicateMaterials" : {"type" : "boolean", "default" : true },
        "fbxAssumeMetallic" : {"type" : "boolean", "default" : true },
        "axis" : {
            "type" : "array",
            "items" : {
                "type" : "string",
                "enum" : [ "default", "+x", "-x", "+y", "-y", "+z", "-z" ]
            },
            "minItems" : 3,
            "maxItems" : 3
        },
        "vertex" : {
            "type" : "object",
            "properties" : {
                "position" : { "$ref" : "#/definitions/position_attribute" },
                "color0" : { "$ref" : "#/definitions/color_attribute" },
                "color1" : { "$ref" : "#/definitions/color_attribute" },
                "normal" : { "$ref" : "#/definitions/vector_attribute" },
                "tangent" : { "$ref" : "#/definitions/vector_attribute" },
                "binormal" : { "$ref" : "#/definitions/vector_attribute" },
                "texcoord0" : { "$ref" : "#/definitions/texcoord_attribute" },
                "texcoord1" : { "$ref" : "#/definitions/texcoord_attribute" }
            },
            "additionalProperties" : false
        },
        "metadataKeys" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
        }
    },
    "additionalProperties" : false
}

box.ConversionSettings.json 파일은 다음 예와 같습니다.

{
    "scaling" : 0.01,
    "recenterToOrigin" : true,
    "material-override" : "box_materials_override.json"
}

삼각형 메시와 포인트 클라우드를 변환하는 스키마는 동일합니다. 그러나 포인트 클라우드 변환은 삼각형 메시 변환에 비해 엄격한 기능 하위 집합을 사용합니다.

삼각형 메시 설정

.fbx 파일에서와 같이 삼각형 메시를 변환할 때 이전 섹션에 표시된 스키마 예의 모든 매개 변수가 변환 결과에 영향을 미칩니다. 다음 섹션에서는 매개 변수에 대한 자세한 설명을 제공합니다.

기하 도형 매개 변수

  • scaling: 이 매개 변수는 모델의 크기를 균일하게 조정합니다. 예를 들어 크기 조정을 사용하여 모델을 확장 또는 축소하고 테이블 탑 뷰로 건물 모델을 표시할 수 있습니다. 렌더링 엔진은 미터를 사용하기 때문에 미터 이외의 단위로 모델을 정의할 때는 크기 조정이 중요합니다. 예를 들어, 모델이 센티미터 단위로 정의된 경우 배율 0.01을 적용하면 모델이 올바른 크기로 렌더링됩니다. 일부 원본 데이터 서식(예: .fbx 파일)은 단위 크기 조정 힌트를 제공합니다. 이 경우 변환은 암시적으로 모델을 미터 단위로 크기 조정합니다. 원본 형식에서 제공하는 암시적 크기 조정은 scaling 매개 변수 위에 적용됩니다. 최종 배율 인수가 장면 그래프 노드의 기하 도형 꼭짓점과 로컬 변환에 적용됩니다. 루트 엔터티의 변환에 대한 크기 조정은 수정되지 않고 유지됩니다.

    Important

    쇼케이스 및 빠른 시작은 각각 자동 크기 조정 기능이 기본 제공되어 있으므로 변환 시간 조정을 보완할 수 있습니다. 자세한 내용은 문제 해결 가이드를 참조하세요.

  • recenterToOrigin: 이 매개 변수는 경계 상자가 원본의 중앙에 오도록 모델을 변환해야 함을 나타냅니다. 원본 모델이 원점에서 멀리 떨어져 있는 경우에는 부동 소수점 정밀도 문제로 인해 렌더링 아티팩트가 발생할 수 있습니다. 이 시나리오에서는 모델을 중앙에 배치하는 것이 도움이 될 수 있습니다.

  • opaqueMaterialDefaultSidedness: 렌더링 엔진은 불투명 재질을 양면으로 가정합니다. 해당 가정이 특정 모델에 해당되지 않는 경우 이 매개 변수를 SingleSided로 설정해야 합니다. 자세한 내용은 단면 렌더링을 참조하세요.

재질 중복 제거

  • deduplicateMaterials: 이 매개 변수는 동일한 속성과 질감을 공유하는 재질의 자동 중복 제거를 사용하거나 사용하지 않도록 설정합니다. 재질 재정의가 처리된 후에 중복 제거가 발생합니다. 기본적으로 사용하도록 설정되어 있습니다.

  • 중복 제거 후에도 모델에 65,535개 이상의 재질이 있는 경우 서비스는 속성이 유사한 재질을 병합하려고 시도합니다. 마지막 옵션으로 제한을 초과하는 재질은 빨간색 오류 재질로 바꿔집니다.

다음 그림은 68,921개의 색 삼각형으로 구성된 두 개의 큐브를 보여 줍니다. 왼쪽 예에서는 중복 제거 전에 68,921개의 색 재질이 포함되어 있습니다. 오른쪽 예에서는 중복 제거 후에 64,000개의 색 재질이 포함되어 있습니다. 재질 수의 한도는 65,535개입니다. 재질 한도에 대한 자세한 내용은 한도를 참조하세요.

Screenshot that shows two cubes of 68,921 colored triangles and the effect of deduplication.

색 공간 매개 변수

렌더링 엔진은 색 값이 선형 공간에 있을 것으로 예상합니다. 감마 공간을 사용하여 모델을 정의한 경우 다음 옵션을 true로 설정해야 합니다.

  • gammaToLinearMaterial: 재질 색을 감마 공간에서 선형 공간으로 변환합니다.
  • gammaToLinearVertex: 꼭짓점 색을 감마 공간에서 선형 공간으로 변환합니다.

참고 항목

FBX, E57, PLY, LAS, LAZ 및 XYZ 파일 형식의 경우 이러한 설정은 기본적으로 true로 설정됩니다. 다른 모든 파일 형식의 경우 기본값은 false입니다.

장면 매개 변수

  • sceneGraphMode: 원본 파일의 장면 그래프를 변환하는 방법을 정의합니다.
    • dynamic(기본값): 파일의 모든 개체는 API에서 엔터티로 노출되며 임의로 변환하고 부모를 변경할 수 있습니다. 런타임 시 노드 계층 구조는 원본 파일의 구조와 동일합니다.
    • static: dynamic와 유사하지만 장면 그래프의 개체는 런타임에 동적으로 다른 개체로 재지정될 수 없습니다. 분해 뷰와 같이 움직이는 부품이 많은 동적 모델의 경우 dynamic 옵션은 렌더링에 더 효율적인 모델을 생성하지만 static 모드에서는 여전히 개별 부품 변환을 허용합니다. 동적 부모 재지정이 필요하지 않은 경우 static 옵션은 개별 부품이 많은 모델에 가장 적합합니다.
    • none: 장면 그래프가 하나의 개체로 축소됩니다.

모드마다 런타임 성능이 다릅니다. dynamic 모드에서 성능 비용은 이동된 부분이 없더라도 그래프에서 엔터티 수에 맞춰 선형으로 확장됩니다. 많은 파트 또는 큰 하위 그래프를 동시에 이동해야 하는 경우에만 dynamic 모드를 사용합니다. 폭발 뷰 애니메이션이 예입니다.

static 모드는 전체 장면 그래프도 내보냅니다. 공간 쿼리는 개별 부분을 반환하며 각 부분은 상태 재정의를 통해 수정할 수 있습니다. 이 모드에서 개체당 런타임 오버헤드는 무시됩니다. 이 모드는 개체별 검사 및 개별 부품에 대한 간헐적인 변환 변경이 필요하지만 개체 부모 변경은 필요하지 않은 대규모 장면에 이상적입니다.

none 모드에서는 런타임 오버헤드가 최소화되며 로드 시간도 약간 향상됩니다. 이 모드에서는 단일 개체의 검사 또는 변환이 불가능합니다. 사용 사례는 예를 들어, 의미 있는 장면 그래프로 시작하지 않는 사진 측량 모델입니다.

많은 애플리케이션이 여러 모델을 로드합니다. 사용 방법에 따라 각 모델의 변환 매개 변수를 최적화해야 합니다. 예를 들어, 자동차의 모델을 사용자가 분해하여 자세히 살펴보도록 표시하고 싶다면 먼저 dynamic 모드를 사용하여 변환합니다. 그러나 쇼룸 환경에 자동차를 배치하려는 경우 static 또는 none으로 설정된 sceneGraphMode를 사용하여 해당 모델을 변환할 수 있습니다.

물리학 매개 변수

  • generateCollisionMesh: 모델에서 공간 쿼리 지원이 필요한 경우 이 옵션을 사용하도록 설정해야 합니다. 충돌 메시 생성은 추가 변환 시간을 추가하지 않으며 출력 파일 크기도 늘리지 않습니다. 충돌 메시가 있는 모델의 로딩 시간과 런타임 비용은 아주 약간만 더 높습니다. 공간 쿼리에서 모델을 제외해야 하는 특별한 이유가 없는 한 이 플래그를 기본값(사용)으로 둘 수 있습니다.

조명 꺼짐 재질

  • unlitMaterials: 기본적으로 변환은 실제 기반 렌더링(PBR) 재질을 만듭니다. 이 옵션이 설정되면 변환기는 대신 모든 재질을 색 재질로 취급합니다. 사진 측량을 통해 만들어진 모델과 같이 조명이 이미 통합된 데이터가 있는 경우 이 옵션을 사용하면 모든 재질에 대해 올바른 변환을 신속하게 적용할 수 있습니다. 개별적으로 각 재질을 재정의할 필요가 없습니다.

이전 FBX 형식 및 Phong 재질 모델에서 변환

  • fbxAssumeMetallic: 이전 버전의 FBX 형식은 Phong 재질 모델을 사용하여 재질을 정의합니다. 변환 프로세스는 이러한 재질이 렌더러의 PBR 모델에 어떻게 매핑되는지 유추해야 합니다. 일반적으로 이 매핑은 잘 작동하지만 재질에 질감, 높은 반사 값 및 비회색 알베도 색이 없으면 모호성이 발생할 수 있습니다. 이 시나리오에서 변환은 높은 반사 값의 우선 순위 지정, 알베도 색이 용해되는 고반사 및 금속 재질 정의 또는 반짝이는 다채로운 플라스틱과 같이 무언가를 정의하여 알베도 색의 우선 순위 지정 중에서 선택해야 합니다. 기본적으로 변환 프로세스에서는 높은 반사 값이 모호한 시나리오에서 금속 재질을 의미한다고 가정합니다. 반대 효과를 위해 이 매개 변수를 false로 설정할 수 있습니다.

좌표계 재정의

  • axis: 이 매개 변수를 사용하여 좌표계 단위 벡터를 재정의합니다. 기본값은 ["+x", "+y", "+z"]입니다. 이론적으로 FBX 형식에는 해당 벡터가 정의된 헤더가 있으며 변환에서는 해당 정보를 사용하여 장면을 변환합니다. 또한 GLTF 형식은 고정 좌표계도 정의합니다. 실제로 일부 자산은 헤더에 잘못된 정보가 있거나 다른 좌표계 규칙을 사용하여 저장되었습니다. 이 옵션을 사용하면 좌표계를 재정의하여 보정할 수 있습니다. 예를 들어 "axis" : ["+x", "+z", "-y"]는 Z축과 Y축을 바꾸고 Y축 방향을 반전시켜 좌표계의 선호 손방향을 그대로 유지합니다.

노드 메타데이터

  • metadataKeys: 이 매개 변수를 사용하여 변환 결과에 유지하려는 노드 메타데이터 속성의 키를 지정합니다. 정확한 키 또는 와일드카드 키를 지정할 수 있습니다. 와일드카드 키는 ABC* 형식이며 ABC로 시작하는 모든 키와 일치합니다. 지원되는 메타데이터 값 형식은 bool, int, floatstring입니다.

    GLTF 파일의 경우 이 데이터는 노드의 extras 개체에서 제공됩니다. FBX 파일의 경우 이 데이터는 Model nodes 노드의 Properties70 데이터에서 제공됩니다. 자세한 내용은 3D 자산 도구 설명서를 참조하세요.

메타데이터가 사용하도록 설정된 모델을 로드할 때 특정 엔터티의 메타데이터 엔터티 목록은 비동기 QueryMetadataAsync 함수를 통해 쿼리할 수 있습니다.

꼭짓점 형식

메시의 꼭짓점 형식을 조정하여 정밀도와 메모리 절감 간에 균형을 유지할 수 있습니다. 모델의 메모리 공간이 적으면 더 큰 모델을 로드하거나 더 나은 성능을 얻을 수 있습니다. 그러나 데이터에 따라 잘못된 형식은 렌더링 품질에 상당한 영향을 미칠 수 있습니다.

주의

꼭짓점 형식 변경은 모델이 더 이상 메모리에 맞지 않거나 최상의 성능을 위해 최적화할 때 마지막 옵션이어야 합니다. 변경 내용은 명백하고 미묘한 렌더링 아티팩트를 쉽게 도입할 수 있습니다. 확인할 항목을 모르는 경우에는 기본값을 변경하면 안 됩니다.

다음과 같이 조정할 수 있습니다.

  • 특정 데이터 스트림을 명시적으로 포함하거나 제외합니다.
  • 메모리 공간을 줄이기 위해 데이터 스트림의 정확도를 낮춥니다.

JSON 파일의 다음 vertex 섹션은 선택 사항입니다. 명시적으로 지정하지 않은 각 부분에 대해 변환 서비스를 수행하면 기본 설정으로 대체됩니다.

{
    ...
    "vertex" : {
        "position"  : "32_32_32_FLOAT",
        "color0"    : "NONE",
        "color1"    : "NONE",
        "normal"    : "NONE",
        "tangent"   : "NONE",
        "binormal"  : "NONE",
        "texcoord0" : "32_32_FLOAT",
        "texcoord1" : "NONE"
    },
    ...
}

구성 요소를 NONE으로 강제 설정하면 출력 메시에 해당 스트림이 없음이 보장됩니다.

꼭짓점 스트림당 구성 요소 형식

다음 표에서는 각 구성 요소에 허용되는 형식을 설명합니다.

꼭짓점 구성 요소 지원되는 형식 재료에 사용
position 32_32_32_FLOAT (기본값), 16_16_16_16_FLOAT 꼭짓점 위치. 항상 존재해야 합니다.
color0 8_8_8_8_UNSIGNED_NORMALIZED (기본값), NONE 꼭짓점 색. 색 재질PBR 재질 모두에서 useVertexColor 속성을 참조하고 색 재질에서는 vertexMix 속성을 참조하세요.
color1 8_8_8_8_UNSIGNED_NORMALIZED, NONE (기본값) 사용되지 않습니다. 기본값 NONE으로 둡니다.
normal 8_8_8_8_SIGNED_NORMALIZED (기본값), 16_16_16_16_FLOAT, NONE PBR 재료의 조명에 사용됩니다.
tangent 8_8_8_8_SIGNED_NORMALIZED (기본값), 16_16_16_16_FLOAT, NONE PBR 재료에서 일반 맵과 함께 조명에 사용됩니다.
binormal 8_8_8_8_SIGNED_NORMALIZED (기본값), 16_16_16_16_FLOAT, NONE PBR 재료에서 일반 맵과 함께 조명에 사용됩니다.
texcoord0 32_32_FLOAT (기본값), 16_16_FLOAT, NONE 텍스처 좌표의 첫 번째 슬롯. 알베도 및 보통 맵과 같은 개별 텍스처는 원본 파일에 정의된 슬롯 0 또는 1을 사용할 수 있습니다.
texcoord1 32_32_FLOAT (기본값), 16_16_FLOAT, NONE 텍스처 좌표의 두 번째 슬롯. 알베도 및 보통 맵과 같은 개별 텍스처는 원본 파일에 정의된 슬롯 0 또는 1을 사용할 수 있습니다.

지원되는 구성 요소 형식

다음 표에서는 지원되는 구성 요소 형식의 메모리 공간을 설명합니다.

서식 설명 꼭짓점당 바이트
32_32_FLOAT 2분 부동 소수점 배정밀도 8
16_16_FLOAT 2분 부동 소수점 단정밀도 4
32_32_32_FLOAT 3분 부동 소수점 배정밀도 12
16_16_16_16_FLOAT 4분 부동 소수점 단정밀도 8
8_8_8_8_UNSIGNED_NORMALIZED 4분 바이트, [0; 1] 범위로 정규화됨 4
8_8_8_8_SIGNED_NORMALIZED 4분 바이트, [-1; 1] 범위로 정규화됨 4

구성 요소 형식 변경에 대한 모범 사례

  • position: 줄어든 정확도로 충분한 경우는 드뭅니다. 16_16_16_16_FLOAT는 작은 모델의 경우에도 눈에 띄는 양자화 아티팩트를 도입합니다.
  • normal, tangentbinormal: 일반적으로 이러한 값은 함께 변경됩니다. 정규 양자화에서 발생하는 눈에 띄는 조명 아티팩트가 없으면 정확도를 높일 이유가 없습니다. 그러나 경우에 따라 이러한 구성 요소를 NONE으로 설정할 수 있습니다.
    • normal, tangentbinormal은 모델에서 적어도 하나의 재질이 켜져야 하는 경우에만 필요합니다. Azure Remote Rendering에서 이 시나리오는 언제든지 모델에서 PBR 재질이 사용될 때 발생합니다.
    • tangentbinormal은 조명 재질이 일반 맵 텍스처를 사용하는 경우에만 필요합니다.
  • texcoord0texcoord1 : 질감 좌표는 값이 16_16_FLOAT 범위를 유지하고 주소 지정된 질감의 최대 크기가 2,048 × 2,048 픽셀일 때 감소된 정확도([0; 1])를 사용할 수 있습니다. 이러한 제한을 초과하면 텍스처 매핑의 품질이 떨어집니다.

예시

질감에 조명이 내재된 사진 측량 모델이 있다고 가정합니다. 모델을 렌더링하는 데 필요한 모든 것은 꼭짓점 위치 및 질감 좌표입니다.

기본적으로 변환기는 사용자가 모델에서 PBR 재질을 사용하려고 할 수 있다고 가정해야 하므로 normal, tangentbinormal 데이터를 생성합니다. 따라서 꼭짓점당 메모리 사용량은 position(12바이트) + texcoord0(8바이트) + normal(4바이트) + tangent(4바이트) + binormal(4바이트) = 32입니다. 바이트. 이 유형의 모델이 더 클 경우 수백만 개의 꼭짓점이 있을 수 있으며 이로 인해 모델이 수 기가바이트의 메모리를 사용할 수 있습니다. 이렇게 많은 양의 데이터는 성능에 영향을 미치며 메모리가 부족할 수도 있습니다.

모델에 동적 조명이 필요하지 않으며 모든 텍스처 좌표가 [0; 1] 범위에 있는 것이 확인되면 normal, tangentbinormalNONE으로 설정하고 texcoord0을 반정밀도(16_16_FLOAT)로 설정하여 꼭짓점당 16바이트만 사용할 수 있습니다. 메시 데이터가 반으로 잘리면 더 큰 모델을 로드할 수 있고 성능이 잠재적으로 개선됩니다.

포인트 클라우드 설정

포인트 클라우드가 변환되면 스키마에서 속성의 작은 하위 집합만 사용됩니다. 다른 속성은 지정하지 않으면 무시됩니다.

포인트 클라우드 변환에 영향을 미치는 속성은 다음과 같습니다.

  • scaling: 삼각형 메시와 동일한 의미입니다.
  • recenterToOrigin: 삼각형 메시와 동일한 의미입니다.
  • axis: 삼각형 메시와 동일한 의미입니다. 기본값은 ["+x", "+y", "+z"]이지만 대부분의 포인트 클라우드 데이터는 렌더러 자체 좌표계와 비교하여 회전됩니다. 이를 보완하기 위해 대부분의 경우 ["+x", "+z", "-y"]은 회전을 고정합니다.
  • gammaToLinearVertex: 삼각형 메시와 유사하게 이 플래그는 점 색상을 감마 공간에서 선형 공간으로 변환해야 하는지 여부를 나타냅니다. 포인트 클라우드 형식(E57, PLY, LAS, LAZ 및 XYZ 파일)의 기본값은 true입니다.
  • generateCollisionMesh: 삼각형 메시와 유사하게 공간 쿼리를 지원하려면 이 플래그를 사용하도록 설정해야 합니다.

메모리 최적화

로드된 콘텐츠의 메모리 사용량은 렌더링 시스템에서 병목 현상이 될 수 있습니다. 메모리 페이로드가 너무 커지면 렌더링 성능이 저하되거나 모델이 완전히 로드되지 않을 수 있습니다. 이 단락에서는 메모리 공간을 줄이기 위한 몇 가지 중요한 전략에 대해 설명합니다.

참고 항목

다음 최적화는 삼각형 메시에 적용됩니다. 변환 설정을 구성하여 포인트 클라우드의 출력을 최적화할 수 없습니다.

인스턴싱

인스턴싱에서 메시는 고유한 기하 도형을 참조하는 각 부품 대신 고유한 공간 변환이 있는 부품에 재사용됩니다. 인스턴싱은 메모리 공간에 상당한 영향을 미칩니다.

인스턴싱에 대한 사용 사례 예는 엔진 모델의 나사 또는 아키텍처 모델의 의자입니다.

참고 항목

인스턴싱은 메모리 사용량(따라서 로딩 시간)를 상당히 개선할 수 있지만 렌더링 성능 개선은 미미합니다.

변환 서비스는 파트가 원본 파일에 적절하게 표시되는 경우 인스턴싱을 설정합니다. 그러나 변환은 재사용 가능한 부분을 식별하기 위해 메시 데이터에 대한 추가 심층 분석을 수행하지 않습니다. 콘텐츠 생성 도구와 해당 내보내기 파이프라인은 적절한 인스턴싱 설정의 결정적인 조건입니다.

변환 중에 인스턴스 정보가 보존되는지 여부를 테스트하는 간단한 방법은 출력 통계를 살펴보는 것입니다. 특히 numMeshPartsInstanced 값을 확인합니다. numMeshPartsInstanced의 값이 0보다 크면 메시가 인스턴스 간에 공유됩니다.

예: 3ds Max의 인스턴싱 설정

Autodesk 3ds Max에는 복사, 인스턴스참조라는 별개의 개체 복제 모드가 있습니다. 모드는 내보낸 .fbx 파일의 인스턴스에 대해 다르게 작동합니다.

Screenshot that shows an example of cloning an object by using Autodesk 3ds Max.

  • 복사: 이 모드에서는 메시가 복제되므로 인스턴싱이 사용되지 않습니다(numMeshPartsInstanced = 0).
  • 인스턴스: 두 개체가 동일한 메시를 공유하므로 인스턴싱이 사용됩니다(numMeshPartsInstanced = 1).
  • 참조: 고유한 한정자를 기하 도형에 적용할 수 있으므로 내보내기는 보수적인 접근 방식을 선택하고 인스턴싱을 사용하지 않습니다(numMeshPartsInstanced = 0).

깊이 기반 컴퍼지션 모드

메모리가 중요한 경우 깊이 기반 구성 모드를 사용하여 렌더러를 구성합니다. 이 모드에서 GPU 페이로드는 여러 GPU에 걸쳐 분산됩니다.

꼭짓점 크기 줄이기

구성 요소 형식 변경에 대한 모범 사례에서 설명한 것처럼 꼭짓점 형식을 조정하면 메모리 공간을 줄일 수 있습니다. 그러나 이 옵션은 선택하는 마지막 옵션이어야 합니다.

질감 크기

시나리오 형식에 따라 텍스처 데이터의 양이 메시 데이터에 사용되는 메모리보다 클 수 있습니다. 이에 대한 후보는 사진 측량 모델입니다. 변환 구성은 텍스처를 자동으로 스케일 다운하는 방법을 제공하지 않습니다. 필요한 경우 클라이언트 쪽 사전 처리 단계로 텍스처 크기 조정을 수행해야 합니다. 그러나 변환 단계에서는 적합한 텍스처 압축 형식을 선택합니다.

  • 불투명 색 텍스처용 BC1 파일 형식
  • 알파 채널이 있는 원본 색 텍스처의 BC7 파일 형식

BC7 파일 형식은 BC1 파일 형식보다 두 배의 메모리 공간을 사용하므로 입력 텍스처가 불필요한 알파 채널을 제공하지 않는지 확인하는 것이 중요합니다.

일반적인 사용 사례

특정 사용 사례에 적합한 가져오기 설정을 찾는 과정은 지루할 수 있습니다. 반면에 변환 설정은 런타임 성능에 상당한 영향을 미칠 수 있습니다.

일부 특정 클래스의 사용 사례는 특정 최적화에 적합합니다. 몇 가지 예는 다음 섹션에서 설명합니다.

사용 사례: 건축 시각화 또는 대형 실외 맵

건축 시각화 또는 대규모 야외 맵과 관련된 시나리오의 경우 다음 요소를 고려합니다.

  • 이러한 형식의 장면은 정적인 경향이 있습니다. 이동할 수 있는 부품이 필요하지 않습니다. 따라서 sceneGraphModestatic 또는 none으로 설정하고 런타임 성능을 개선시킬 수 있습니다. static 모드에서 장면의 루트 노드는 여전히 이동, 회전 및 크기 조정이 가능합니다. 예를 들어, 1:1 축척(1인칭 보기용)과 탁상용 보기 간에 동적으로 전환할 수 있습니다.

  • 애플리케이션이 절단면을 사용하지 않는 경우 opaqueMaterialDefaultSidedness 플래그를 꺼야 합니다. 성능 향상은 일반적으로 20%~30%입니다. 여전히 절단 평면을 사용할 수 있지만 개체의 내부 파트를 들여다볼 때 직관에 반하는 것처럼 보이는 뒷면이 없습니다. 자세한 내용은 단면 렌더링을 참조하세요.

사용 사례: 사진 측량 모델

사진 측량 모델을 렌더링할 때 일반적으로 장면 그래프가 필요하지 않습니다. 이 시나리오에서는 sceneGraphModenone으로 설정하도록 선택할 수 있습니다. 이러한 모델에는 복잡한 장면 그래프가 거의 포함되지 않기 때문에 이 옵션을 선택하는 효과는 미미할 수 있습니다. 조명이 질감에 이미 내재되어 있으므로 동적 조명이 필요하지 않습니다. 이 시나리오에서는

  • unlitMaterials 플래그를 true로 설정하여 모든 재질을 조명 꺼짐 색 재질로 전환합니다.
  • 꼭짓점 형식에서 불필요한 데이터를 제거합니다. 이전 를 참조하세요.

사용 사례: 소형 컴퓨터 등의 시각화

이러한 사용 사례에서 모델은 종종 작은 볼륨에서 높은 수준의 세부 정보를 갖습니다. 렌더러는 이러한 경우를 잘 처리하도록 크게 최적화되어 있습니다. 그러나 이전 사용 사례에서 설명한 대부분의 최적화는 여기에 적용되지 않습니다. 최적화에는 다음이 포함됩니다.

  • 개별 부품은 선택 및 이동이 가능해야 하므로 sceneGraphModedynamic으로 설정해야 합니다.
  • 광선 캐스팅은 일반적으로 애플리케이션의 필수적인 부분이므로 충돌 메시를 생성해야 합니다.
  • opaqueMaterialDefaultSidedness 플래그가 사용하도록 설정되면 절단 평면이 더 잘 보입니다.

사용 되지 않는 기능

비모델 특정 conversionSettings.json 파일 이름을 사용하여 모델 변환 매개 변수를 설정하는 것은 계속 지원되지만 더 이상 사용되지 않습니다. 대신 모델별 <modelName>.ConversionSettings.json 파일 이름을 사용합니다.

변환 설정 파일에서 재질 재정의 파일을 식별하기 위해 material-override 설정을 사용하는 것은 계속 지원되지만 더 이상 사용되지 않습니다. 대신 모델별 <modelName>.MaterialOverrides.json 파일 이름을 사용합니다.

다음 단계