Bagikan melalui


Mengonfigurasi parameter konversi model

Dalam artikel ini, pelajari cara mengonfigurasi parameter untuk konversi model.

File pengaturan

Jika file yang disebut <modelName>. Konversi Pengaturan.json ditemukan di kontainer input di samping model input modelName.< <>ext>, maka file digunakan untuk menyediakan konfigurasi tambahan untuk proses konversi model. Misalnya, saat mengonversi box.gltf, Anda akan menggunakan kotak. Konversi Pengaturan.json untuk mengatur parameter untuk konversi model.

Konten file pengaturan konversi JSON harus memiliki skema ini:

{
    "$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
}

Sebuah kotak. Konversi Pengaturan.json mungkin terlihat seperti contoh ini:

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

Skema untuk mengonversi jala segitiga dan cloud titik identik. Namun, konversi cloud titik menggunakan subset fitur yang ketat dibandingkan dengan konversi jala segitiga.

Pengaturan untuk jala segitiga

Saat Anda mengonversi jala segitiga, seperti dari file .fbx , semua parameter dalam contoh skema yang ditampilkan di bagian sebelumnya memengaruhi hasil konversi. Bagian berikutnya memberi Anda penjelasan terperinci tentang parameter.

Parameter geometri

  • scaling: Parameter ini menskalakan model secara seragam. Penskalaan dapat digunakan untuk menumbuhkan atau menyusutkan model, misalnya, untuk menampilkan model bangunan di atas tabel. Penskalakan juga penting ketika model didefinisikan dalam unit selain meter karena mesin penyajian mengharapkan meter. Misalnya, jika model didefinisikan dalam sentimeter, maka menerapkan skala 0,01 merender model pada ukuran yang benar. Beberapa format data sumber (misalnya, file .fbx ) memberikan petunjuk penskalaan unit. Dalam hal ini, konversi secara implisit menskalakan model ke unit meter. Penskalaan implisit yang disediakan oleh format sumber diterapkan di atas scaling parameter. Faktor penskalaan akhir diterapkan pada node geometri dan transformasi lokal dari node grafik adegan. Penskalaan untuk transformasi entitas akar tetap tidak dimodifikasi.

    Penting

    Showcase dan Quickstart mungkin mengkompensasi penskalaan waktu konversi apa pun karena masing-masing memiliki fitur penskalaan otomatis bawaan. Untuk informasi selengkapnya, lihat panduan pemecahan masalah.

  • recenterToOrigin: Parameter ini menyatakan bahwa model harus dikonversi sehingga kotak pembatasnya berpusat di asal. Jika model sumber dipindahkan jauh dari asalnya, masalah presisi floating-point dapat menyebabkan penyajian artefak. Mempusatkan model dapat membantu dalam skenario ini.

  • opaqueMaterialDefaultSidedness: Mesin penyajian mengasumsikan bahwa bahan buram bersisi ganda. Jika asumsi tersebut tidak benar dari model tertentu, parameter ini harus diatur ke SingleSided. Untuk informasi selengkapnya, lihat Penyajian satu sisi.

Deduplikasi material

  • deduplicateMaterials: Parameter ini mengaktifkan atau menonaktifkan deduplikasi otomatis bahan yang memiliki properti dan tekstur yang sama. Deduplikasi terjadi setelah penimpaan material diproses. Status diaktifkan secara default.

  • Jika model memiliki lebih dari 65.535 bahan bahkan setelah deduplikasi, layanan mencoba menggabungkan bahan yang memiliki properti serupa. Sebagai opsi terakhir, bahan apa pun yang melebihi batas digantikan oleh bahan kesalahan merah.

Gambar berikut menunjukkan dua kubus 68.921 segitiga berwarna. Contoh kiri adalah sebelum deduplikasi, dengan 68.921 bahan warna. Contoh yang tepat adalah setelah deduplikasi, dengan 64.000 bahan warna. Batasnya adalah 65.535 bahan. Untuk informasi selengkapnya tentang batas material, lihat batasan.

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

Parameter ruang warna

Mesin perenderan mengharapkan nilai warna berada dalam ruang linier. Jika model didefinisikan dengan menggunakan ruang gamma, opsi berikut harus diatur ke true:

  • gammaToLinearMaterial: Mengonversi warna material dari ruang gamma ke ruang linier.
  • gammaToLinearVertex: Mengonversi warna puncak dari ruang gamma ke ruang linier.

Catatan

Untuk format file FBX, E57, PLY, LAS, LAZ, dan XYZ, pengaturan ini diatur ke true secara default. Untuk semua format file lainnya, defaultnya adalah false.

Parameter adegan

  • sceneGraphMode: Menentukan bagaimana grafik adegan dalam file sumber dikonversi.
    • dynamic (default): Semua objek dalam file diekspos sebagai entitas dalam API dan dapat diubah dan direparentasi secara semena-mena. Saat runtime, hierarki simpul identik dengan struktur dalam file sumber.
    • static: Mirip dynamicdengan , tetapi objek dalam grafik adegan tidak dapat direparentasikan ke objek lain secara dinamis saat runtime. Untuk model dinamis yang memiliki banyak bagian bergerak, seperti tampilan ledakan, dynamic opsi menghasilkan model yang lebih efisien untuk dirender, tetapi static mode masih memungkinkan transformasi bagian individual. Jika reparenting dinamis tidak diperlukan, static opsinya adalah yang paling cocok untuk model yang memiliki banyak bagian individual.
    • none: Grafik adegan diciutkan menjadi satu objek.

Setiap mode memiliki performa runtime yang berbeda. Dalam mode dynamic, biaya performa diskalakan secara linier dengan jumlah entitas dalam grafik, meskipun tidak ada bagian yang dipindahkan. Gunakan dynamic mode hanya jika perlu memindahkan banyak bagian atau subgraf besar secara bersamaan. Contohnya adalah animasi tampilan ledakan.

Mode static juga mengekspor grafik adegan penuh. Kueri spasial mengembalikan bagian individual, dan setiap bagian dapat dimodifikasi melalui penimpaan status. Dengan mode ini, overhead runtime per objek dapat diabaikan. Mode ini sangat ideal untuk adegan besar di mana Anda memerlukan inspeksi per objek dan perubahan transformasi sesekali pada masing-masing bagian, tetapi tidak ada reparenting objek.

Mode none memiliki overhead runtime paling sedikit dan juga waktu pemuatan yang sedikit lebih baik. Inspeksi atau transformasi objek tunggal tidak dimungkinkan dalam mode ini. Kasus penggunaan adalah, misalnya, model fotometri yang tidak dimulai dengan grafik adegan yang bermakna.

Tip

Banyak aplikasi memuat beberapa model. Anda harus mengoptimalkan parameter konversi untuk setiap model tergantung pada bagaimana Anda akan menggunakannya. Misalnya, jika Anda ingin menampilkan model mobil bagi pengguna untuk terpisah dan memeriksa secara rinci, pertama-tama konversikan dengan menggunakan dynamic mode. Namun, jika Anda juga ingin menempatkan mobil di lingkungan ruang pertunjukan, Anda dapat mengonversi model tersebut dengan menggunakan sceneGraphMode diatur ke static, atau bahkan ke none.

Parameter fisika

  • generateCollisionMesh: Jika Anda memerlukan dukungan untuk kueri spasial pada model, opsi ini harus diaktifkan. Pembuatan jala tabrakan tidak menambahkan waktu konversi tambahan, dan juga tidak meningkatkan ukuran file output. Waktu pemuatan dan biaya runtime model yang memiliki jala tabrakan hanya jauh lebih tinggi. Anda dapat membiarkan bendera ini ke default (diaktifkan) kecuali Anda memiliki alasan khusus untuk mengecualikan model dari kueri spasial.

Bahan yang tidak menyala

  • unlitMaterials: Secara default, konversi membuat materi rendering berbasis fisik (PBR). Ketika opsi ini diatur, pengonversi malah memperlakukan semua bahan sebagai bahan warna. Jika Anda memiliki data yang sudah menggabungkan pencahayaan, seperti model yang dibuat melalui photogrammetry, opsi ini memungkinkan Anda untuk dengan cepat menerapkan konversi yang benar untuk semua materi. Anda tidak perlu mengambil alih setiap materi satu per satu.

Konversi dari format FBX sebelumnya dan model material Phong

  • fbxAssumeMetallic: Versi format FBX yang lebih lama mendefinisikan materinya dengan menggunakan model bahan Phong. Proses konversi harus menyimpulkan bagaimana materi ini memetakan ke model PBR perender. Biasanya pemetaan ini berfungsi dengan baik, tetapi ambiguitas dapat muncul ketika bahan tidak memiliki tekstur, nilai spekular tinggi, dan warna albedo yang tidak abu-abu. Dalam skenario ini, konversi harus memilih antara memprioritaskan nilai spekular tinggi, mendefinisikan bahan yang sangat reflektif dan logam di mana warna albedo larut, atau memprioritaskan warna albedo dengan menentukan sesuatu, seperti dalam plastik berwarna-warni yang mengkilap. Secara default, proses konversi mengasumsikan bahwa nilai yang sangat spekular menyiratkan bahan logam dalam skenario ambigu. Anda dapat mengatur parameter ini ke untuk false efek yang berlawanan.

Penimpaan sistem koordinat

  • axis: Gunakan parameter ini untuk mengambil alih vektor unit sistem koordinat. Nilai bawaannya adalah ["+x", "+y", "+z"]. Secara teori, format FBX memiliki header tempat vektor tersebut ditentukan, dan konversi menggunakan informasi tersebut untuk mengubah adegan. Format GLTF juga mendefinisikan sistem koordinat tetap. Dalam praktiknya, beberapa aset memiliki informasi yang salah di header mereka atau disimpan dengan menggunakan konvensi sistem koordinat yang berbeda. Opsi ini memungkinkan Anda mengganti sistem koordinat untuk mengkompensasi. Misalnya, "axis" : ["+x", "+z", "-y"] menukar sumbu Z dan sumbu Y dan menjaga penyerahan sistem koordinat dengan membalikkan arah sumbu Y.

Metadata simpul

  • metadataKeys: Gunakan parameter ini untuk menentukan kunci properti metadata simpul yang ingin Anda simpan dalam hasil konversi. Anda dapat menentukan kunci yang tepat atau kunci karakter kartubebas. Kunci kartubebas memiliki format ABC* dan cocok dengan kunci apa pun yang dimulai dengan ABC. Jenis nilai metadata yang didukung adalah bool, int, float, dan string.

    Untuk file GLTF, data ini berasal dari objek ekstra pada simpul. Untuk file FBX, data ini berasal dari Properties70 data pada Model nodes. Untuk informasi selengkapnya, lihat dokumentasi untuk Alat Aset 3D Anda.

Saat memuat model dengan data meta diaktifkan, daftar entri data meta entitas tertentu dapat diambil melalui fungsi QueryMetadataAsync asinkron.

Format puncak

Anda dapat menyesuaikan format puncak untuk jala dengan presisi perdagangan untuk penghematan memori. Jika model Anda memiliki jejak memori yang lebih rendah, Anda dapat memuat model yang lebih besar atau mencapai performa yang lebih baik. Namun, tergantung pada data Anda, format yang salah dapat secara signifikan memengaruhi kualitas penyajian.

Perhatian

Mengubah format vertex harus menjadi opsi terakhir ketika model tidak lagi sesuai dengan memori, atau ketika Anda mengoptimalkan performa terbaik. Perubahan dapat dengan mudah memperkenalkan artefak penyajian, baik yang jelas maupun halang. Kecuali Anda tahu apa yang harus diwaspadai, Anda tidak boleh mengubah default.

Anda dapat melakukan penyesuaian ini:

  • Secara eksplisit menyertakan atau mengecualikan aliran data tertentu.
  • Kurangi akurasi aliran data untuk mengurangi jejak memori.

Bagian berikut vertex dalam file JSON bersifat opsional. Untuk setiap bagian yang tidak ditentukan secara eksplisit, layanan konversi kembali ke pengaturan defaultnya.

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

Dengan memaksa komponen ke NONE, dijamin bahwa jala output tidak memiliki aliran masing-masing.

Format komponen per aliran puncak

Tabel berikut ini menjelaskan format yang diizinkan untuk komponen masing-masing:

Komponen vertex Format yang didukung Penggunaan dalam materi
position 32_32_32_FLOAT (default), 16_16_16_16_FLOAT Posisi puncak. Harus selalu ada.
color0 8_8_8_8_UNSIGNED_NORMALIZED (default), NONE Warna puncak. Lihat useVertexColor properti baik dalam bahan warna maupun bahan PBR, dan vertexMix dalam bahan warna.
color1 8_8_8_8_UNSIGNED_NORMALIZED, NONE (default) Tidak digunakan. Biarkan sebagai default NONE.
normal 8_8_8_8_SIGNED_NORMALIZED (default), 16_16_16_16_FLOAT, NONE Digunakan untuk pencahayaan dalam bahan PBR.
tangent 8_8_8_8_SIGNED_NORMALIZED (default), 16_16_16_16_FLOAT, NONE Digunakan untuk pencahayaan dengan peta normal dalam bahan PBR.
binormal 8_8_8_8_SIGNED_NORMALIZED (default), 16_16_16_16_FLOAT, NONE Digunakan untuk pencahayaan dengan peta normal dalam bahan PBR.
texcoord0 32_32_FLOAT (default), 16_16_FLOAT, NONE Slot pertama koordinat tekstur. Tekstur individual seperti albedo dan peta normal dapat menggunakan slot 0 atau 1, yang didefinisikan dalam file sumber.
texcoord1 32_32_FLOAT (default), 16_16_FLOAT, NONE Slot kedua koordinat tekstur. Tekstur individual seperti albedo dan peta normal dapat menggunakan slot 0 atau 1, yang didefinisikan dalam file sumber.

Format komponen yang didukung

Tabel berikut ini menjelaskan jejak memori format komponen yang didukung:

Format Deskripsi Byte per puncak
32_32_FLOAT Presisi titik mengambang penuh dua komponen 8
16_16_FLOAT Presisi setengah titik mengambang dua komponen 4
32_32_32_FLOAT Presisi titik mengambang penuh tiga komponen 12
16_16_16_16_FLOAT Presisi setengah titik mengambang empat komponen 8
8_8_8_8_UNSIGNED_NORMALIZED Byte empat komponen, dinormalisasi ke [0; 1] rentang 4
8_8_8_8_SIGNED_NORMALIZED Byte empat komponen, dinormalisasi ke [-1; 1] rentang 4

Praktik terbaik untuk perubahan format komponen

  • position: Jarang sekali akurasi yang berkurang sudah cukup. 16_16_16_16_FLOAT memperkenalkan artefak kuantisasi yang nyata, bahkan untuk model kecil.
  • normal, tangent, dan binormal: Biasanya, nilai-nilai ini diubah bersama-sama. Kecuali ada artefak pencahayaan yang terlihat yang dihasilkan dari kuantisasi normal, tidak ada alasan untuk meningkatkan akurasinya. Namun, dalam beberapa kasus, komponen-komponen ini dapat diatur ke NONE:
    • normal, tangent, dan binormal hanya diperlukan ketika setidaknya satu materi dalam model harus dinyalakan. Di Azure Remote Rendering, skenario ini terjadi ketika materi PBR digunakan pada model kapan saja.
    • tangent dan binormal hanya diperlukan ketika salah satu bahan yang menyala menggunakan tekstur peta normal.
  • texcoord0 dan texcoord1 : Koordinat tekstur dapat menggunakan pengurangan akurasi (16_16_FLOAT) ketika nilainya tetap dalam rentang dan ketika tekstur yang ditangani [0; 1] memiliki ukuran maksimum 2.048 × 2.048 piksel. Jika batas tersebut terlampaui, kualitas pemetaan tekstur menurun.

Contoh

Asumsikan Anda memiliki model fotogrametri, yang memiliki pencahayaan yang dimasukkan ke dalam tekstur. Semua yang diperlukan untuk merender model adalah posisi puncak dan koordinat tekstur.

Secara default, pengonversi harus mengasumsikan bahwa Anda mungkin ingin menggunakan bahan PBR pada model pada suatu waktu, sehingga menghasilkan normal, , tangentdan binormal data untuk Anda. Jadi, penggunaan memori per puncak adalah position (12 byte) + texcoord0 (8 byte) + normal (4 byte) + tangent (4 byte) + binormal (4 byte) = 32 byte. Model yang lebih besar dari jenis ini dapat dengan mudah memiliki banyak jutaan simpul, menghasilkan model yang dapat memakan beberapa gigabyte memori. Data dalam jumlah besar tersebut memengaruhi performa, dan Anda bahkan mungkin kehabisan memori.

Mengetahui bahwa Anda tidak pernah memerlukan pencahayaan dinamis pada model, dan mengetahui bahwa semua koordinat tekstur berada dalam [0; 1] rentang, Anda dapat mengatur normal, , tangentdan binormal ke NONE, dan diatur texcoord0 ke setengah presisi (16_16_FLOAT), menghasilkan hanya 16 byte per vertex. Ketika data jala dipotong menjadi dua, Anda dapat memuat model yang lebih besar, dan performa berpotensi ditingkatkan.

Pengaturan untuk cloud titik

Saat point cloud dikonversi, hanya sebagian kecil properti dari skema yang digunakan. Properti lain diabaikan kecuali ditentukan.

Properti yang memang memiliki efek pada konversi cloud titik adalah:

  • scaling: Arti yang sama seperti untuk jala segitiga.
  • recenterToOrigin: Arti yang sama seperti untuk jala segitiga.
  • axis: Arti yang sama seperti untuk jala segitiga. Nilai default adalah ["+x", "+y", "+z"], tetapi sebagian besar data cloud titik diputar dibandingkan dengan sistem koordinat perender sendiri. Untuk mengimbangi, dalam banyak kasus ["+x", "+z", "-y"] memperbaiki rotasi.
  • gammaToLinearVertex: Mirip dengan jala segitiga, bendera ini menunjukkan apakah warna titik harus dikonversi dari ruang gamma ke ruang linier. Nilai default untuk format cloud titik (file E57, PLY, LAS, LAZ, dan XYZ) adalah true.
  • generateCollisionMesh: Mirip dengan jala segitiga, untuk mendukung kueri spasial, Anda harus mengaktifkan bendera ini.

Optimalisasi memori

Konsumsi memori konten yang dimuat mungkin menjadi hambatan pada sistem penyajian. Jika payload memori menjadi terlalu besar, itu mungkin membahayakan performa penyajian atau menyebabkan model tidak dimuat sama sekali. Paragraf ini membahas beberapa strategi penting untuk mengurangi jejak memori.

Catatan

Pengoptimalan berikut berlaku untuk jala segitiga. Anda tidak dapat mengoptimalkan output cloud titik dengan mengonfigurasi pengaturan konversi.

Instancing

Dalam instancing, jala digunakan kembali untuk bagian yang memiliki transformasi spasial yang berbeda alih-alih setiap bagian mereferensikan geometri uniknya sendiri. Instancing memiliki dampak signifikan pada jejak memori.

Contoh kasus penggunaan untuk instancing adalah sekrup pada model mesin atau kursi pada model arsitektur.

Catatan

Instancing dapat meningkatkan konsumsi memori (dan dengan demikian waktu pemuatan) secara signifikan, tetapi peningkatan performa penyajian tidak signifikan.

Layanan konversi menghormati instancing jika bagian-bagian ditandai dengan sesuai dalam file sumber. Namun, konversi tidak melakukan analisis mendalam ekstra terhadap data jala untuk mengidentifikasi bagian yang dapat digunakan kembali. Alat pembuatan konten dan alur ekspornya adalah kriteria yang menentukan untuk penyiapan instancing yang tepat.

Cara sederhana untuk menguji apakah informasi instancing dipertahankan selama konversi adalah dengan melihat statistik output. Secara khusus, periksa nilainya numMeshPartsInstanced . Jika nilai untuk numMeshPartsInstanced lebih besar dari nol, jala dibagikan di seluruh instans.

Contoh: Penyiapan instancing di 3ds Max

Autodesk 3ds Max memiliki mode kloning objek berbeda yang disebut Salin, Instans, dan Referensi. Mode bekerja secara berbeda untuk instancing dalam file .fbx yang diekspor.

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

  • Salin: Dalam mode ini, jala dikloning, sehingga tidak ada instancing yang digunakan ( = numMeshPartsInstanced0).
  • Instans: Dua objek berbagi jala yang sama, sehingga instancing digunakan ( = numMeshPartsInstanced1).
  • Referensi: Pengubah yang berbeda dapat diterapkan ke geometri, sehingga pengekspor memilih pendekatan konservatif dan tidak menggunakan instancing ( = numMeshPartsInstanced0).

Mode komposisi berbasis kedalaman

Jika memori menjadi perhatian, konfigurasikan perender dengan menggunakan mode komposisi berbasis kedalaman. Dalam mode ini, muatan GPU didistribusikan ke beberapa GPU.

Kurangi ukuran vertex

Seperti yang dibahas dalam Praktik terbaik untuk perubahan format komponen, menyesuaikan format puncak dapat mengurangi jejak memori. Namun, opsi ini harus menjadi opsi terakhir yang Anda pilih.

Ukuran tekstur

Bergantung pada jenis skenario, jumlah data tekstur mungkin melebihi memori yang digunakan untuk data jala. Model fotogrametri adalah kandidat. Konfigurasi konversi tidak menyediakan cara untuk menurunkan skala tekstur secara otomatis. Jika perlu, penskalaan tekstur harus dilakukan sebagai langkah praproses sisi klien. Tetapi langkah konversi memang memilih format kompresi tekstur yang sesuai:

  • Format file BC1 untuk tekstur warna buram
  • Format file BC7 untuk tekstur warna sumber dengan saluran alfa

Karena format file BC7 memiliki jejak memori dua kali dari format file BC1, penting untuk memastikan bahwa tekstur input tidak menyediakan saluran alfa yang tidak perlu.

Kasus penggunaan umum

Menemukan pengaturan impor yang baik untuk kasus penggunaan tertentu bisa menjadi proses yang melelahkan. Di sisi lain, pengaturan konversi mungkin berdampak signifikan pada performa runtime.

Beberapa kelas kasus penggunaan tertentu memenuhi syarat untuk pengoptimalan tertentu. Beberapa contoh dijelaskan di bagian berikut.

Kasus penggunaan: Visualisasi arsitektur atau peta luar ruangan besar

Untuk skenario yang melibatkan visualisasi arsitektur atau peta luar ruangan besar, pertimbangkan faktor-faktor berikut:

  • Jenis adegan ini cenderung statis. Mereka tidak membutuhkan bagian yang dapat bergerak. Dengan demikian, Anda dapat mengatur sceneGraphMode ke static, atau bahkan ke none, dan meningkatkan performa runtime. Dalam static mode, simpul akar adegan masih dapat dipindahkan, diputar, dan diskalakan. Misalnya, dapat beralih secara dinamis antara skala 1:1 (untuk tampilan orang pertama) dan tampilan tabel atas.

  • Jika aplikasi tidak menggunakan bidang potong, opaqueMaterialDefaultSidedness bendera harus dimatikan. Perolehan performa biasanya adalah 20 persen hingga 30 persen. Anda masih dapat menggunakan bidang potong, tetapi tidak akan ada wajah belakang ketika Anda melihat ke bagian dalam objek, yang tampak berlawanan. Untuk informasi selengkapnya, lihat penyajian satu sisi.

Kasus penggunaan: Model fotogrametri

Saat merender model fotogrammetri, Anda biasanya tidak memerlukan grafik adegan. Dalam skenario ini, Anda dapat memilih untuk mengatur sceneGraphMode ke none. Karena model-model tersebut jarang berisi grafik adegan yang kompleks, efek memilih opsi ini kemungkinan tidak signifikan. Karena pencahayaan sudah dimasukkan ke dalam tekstur, tidak diperlukan pencahayaan dinamis. Dalam skenario ini:

  • Setel bendera unlitMaterials ke true untuk mengubah semua bahan menjadi bahan berwarna yang tidak menyala.
  • Hapus data yang tidak diperlukan dari format vertex. Lihat contoh sebelumnya.

Kasus penggunaan: Visualisasi komputer yang ringkas dan lainnya

Dalam kasus penggunaan ini, model sering memiliki tingkat detail yang tinggi dalam volume kecil. Perender sangat dioptimalkan untuk menangani kasus-kasus ini dengan baik. Namun, sebagian besar pengoptimalan yang dijelaskan dalam kasus penggunaan sebelumnya tidak berlaku di sini. Pengoptimalan meliputi:

  • Bagian individual harus dapat dipilih dan dapat bergerak, jadi sceneGraphMode harus diatur ke dynamic.
  • Ray cast biasanya merupakan bagian integral dari aplikasi, sehingga mesh bentrokan harus dibuat.
  • Bidang potong terlihat lebih baik ketika opaqueMaterialDefaultSidedness bendera diaktifkan.

Fitur yang tidak digunakan lagi

Mengatur parameter konversi model dengan menggunakan konversi khusus non-model Pengaturan.json nama file masih didukung, tetapi tidak digunakan lagi. Sebagai gantinya, gunakan modelName> khusus <model. Konversi Pengaturan.json nama file.

material-override Menggunakan pengaturan untuk mengidentifikasi file penggantian materi dalam file pengaturan konversi masih didukung, tetapi tidak digunakan lagi. Sebagai gantinya, gunakan modelName> khusus <model. Nama file MaterialOverrides.json.

Langkah berikutnya