Three.js: Tambahkan dukungan untuk format USD dan USDZ

Dibuat pada 5 Jun 2018  ·  22Komentar  ·  Sumber: mrdoob/three.js

Akan sangat bagus untuk mendapatkan dukungan Three.js untuk format file Universal Scene Description (USD) dan format USDZ mendatang yang diumumkan di WWDC hari ini.

Dokumen spesifikasi USDZ: https://graphics.pixar.com/usd/files/USDZFileFormatSpecification.pdf (Saya berasumsi bahwa rincian lebih lanjut akan keluar dalam beberapa bulan mendatang untuk format ini)

Enhancement Loaders

Komentar yang paling membantu

itu agar Apple dapat terus mengklaim sebagai pilihan mewah kelas atas, dengan format 3D eksklusif yang hanya berfungsi di platform mereka...

Saya bersedia memberikan lebih banyak manfaat dari keraguan di sini – mereka memiliki tujuan yang berbeda untuk format "runtime" daripada yang kami (threejs + web devs), dan dapat membuat pilihan yang berbeda sebagai hasilnya. Secara khusus, menggabungkan runtime ~15MB USD ke iOS berarti mereka tidak peduli bahwa memuat USDZ _tanpa_ runtime asli sangat sulit, dan mereka tampaknya baik-baik saja dengan tidak memberikan aplikasi web akses apa pun ke model, tetapi hanya membuka model apa adanya di aplikasi asli sebagai gantinya.

Pada "kemewahan kelas atas", penampil QuickLook iOS Apple mendukung bahan PBR logam/kekasaran, dan model bahan sebagian besar setara dengan apa yang didukung glTF 2.0 saat ini. Fitur materi tambahan yang direncanakan untuk glTF 2.0 di masa mendatang, dan dijelaskan di https://github.com/mrdoob/three.js/issues/16977 , akan melampaui dukungan pemirsa USDZ Apple sekarang.

Saya menyebutkan "penonton USDZ Apple" karena itulah, secara de facto, apa yang orang-orang maksudkan dengan USDZ. Tetapi format USDZ, secara teknis, hanyalah file USD yang di-zip, dan dapat berisi hampir semua hal mulai dari model material umum hingga shader khusus. Pemirsa Apple mendukung sebagian kecil USD, dan sebagian kecil itu tidak terdefinisi dengan baik, tetapi ringkasan terbaik yang mungkin Anda temukan ada di sini: https://github.com/google/usd_from_gltf#compatibility.

Dalam hal rendering fidelity, saya akan menunjukkan bahwa model-viewer menampilkan model glTF dengan threejs dan menyediakan sarana untuk membuka versi USDZ di iOS Quick Look, dan hasil visualnya sangat mirip. Halaman ini memberikan beberapa perbandingan langsung, meskipun sayangnya saat ini sedang down.

Bagaimanapun, jika tidak ada alasan lain selain untuk menumbangkan tujuan jahat Apple di sini, saya pikir kita perlu mendukung USDZ di beberapa titik.

Lihat https://github.com/mrdoob/three.js/issues/14219#issuecomment -395107896.

Semua 22 komentar

Ini adalah permintaan fitur yang valid tetapi saya pribadi tidak mengerti Apple/Pixar. Mengapa mereka memperkenalkan format file baru dan tidak hanya menggunakan glTF ? Adakah yang bisa menjelaskan apa yang USD / USDZ lebih baik daripada glTF ?

Dokumentasi USD: http://graphics.pixar.com/usd/docs/index.html

Ini adalah permintaan fitur yang valid tetapi saya pribadi tidak mengerti Apple/Pixar. Mengapa mereka memperkenalkan format file baru dan tidak hanya menggunakan glTF? Adakah yang bisa menjelaskan apa yang lebih baik dari USD/USDZ daripada glTF?

Saya setuju, bagian dari itu adalah politik menurut saya. Namun, itu diskusi terpisah :)

USD telah ada selama beberapa tahun — biasanya digunakan dalam film, dan bukan pilihan yang jelas untuk transmisi runtime. Sejauh yang saya tahu USDZ adalah pembungkus di sekitar itu. Apple belum memberikan banyak detail pada saat ini; mungkin mereka memiliki beberapa rencana untuk membuatnya lebih sesuai dengan runtime, atau mungkin pesan di WWDC tidak jelas sehubungan dengan bagaimana mereka benar-benar menggunakannya. Bagaimanapun saya pikir kita mungkin perlu menunggu informasi lebih lanjut.

Jika seseorang tertarik untuk menyumbang THREE.USDZLoader , maka tentu saja. Tetapi semua dokumentasi yang saya temukan sejauh ini menunjukkan bahwa formatnya sangat terkait erat dengan pustaka resmi (C++/Python) untuk menguraikannya, mirip dengan FBX dan FBX SDK. Jadi, kecuali jika itu dapat dibuat ramah web dengan WASM, menerapkan dukungan USDZ di three.js dan mengikuti perubahan format dari waktu ke waktu tampak seperti proses yang sangat memakan waktu, tanpa manfaat dari perpustakaan tersebut.

Karena penasaran, saya mencoba membuka file "Retro TV" dari https://developer.apple.com/arkit/gallery/ seolah-olah itu adalah zip sederhana. Saya 'membuka arsip' .usdz dengan mengganti nama ekstensinya menjadi .zip, dan kemudian meminta OS saya melakukan prosedur terbuka seperti biasa. Agaknya, sesuatu yang serupa dapat dicapai dengan https://gildas-lormeau.github.io/zip.js/

Inilah yang saya lihat ketika saya 'membuka arsip' usdz:

screen shot 2018-07-04 at 2 17 46 pm

Jadi, teksturnya hanya PNG, yang mungkin dirujuk dari dalam .usdc itu, yang merupakan edisi berikutnya. Menurut https://graphics.pixar.com/usd/docs/Converting-Between-Layer-Formats.html , ".usdc files – binary format" yang ada di Crate (lihat _Crate File Format_ di https://graphics. pixar.com/usd/docs/USD-Glossary.html).

Ada juga .usda, yang dikodekan ASCII, yang mungkin akan lebih mudah untuk menulis loader.

Sebagai garis besar kasar dari beberapa hal yang harus dilakukan untuk ini, minimal seorang Loader akan melihat mengekstrak file Zip di JS, dan kemudian juga memahami .usda (dan berpotensi biner Crate .usdc juga.)

Hai @richardmonette , Saya telah melakukan riset tentang USDZ dan format USDA dan telah menulis pengonversi bukti konsep glTF ke USDZ. Mungkin ini berguna untuk penelitian Anda: https://github.com/timvanscherpenzeel/gltf-to-usdz. Anda dapat melihat demo di sini: https://twitter.com/domenicopanacea/status/1011292393801420800 atau mencobanya sendiri di sini: https://timvanscherpenzeel.github.io/gltf-to-usdz/ (memerlukan iOS 12).

Singkatnya: geometri diubah menjadi OBJ , tekstur kekasaran metalik dibagi berdasarkan saluran dan tekstur dibalik Y. Dari sini, file USDA dibangun secara dinamis dan dimasukkan ke usdz_converter untuk membuat usdz final.

Saya tahu beberapa orang ingin menulis konverter langsung ke USDZ tetapi tidak banyak yang diketahui tentang format USDC pada saat ini (juga dalam hal decoding).

Hai @TimvanScherpenzeel , terima kasih atas pesan Anda dan kerjakan ini!

Sudahkah Anda mempertimbangkan untuk menggunakan USD Python API (https://graphics.pixar.com/usd/docs/Hello-World---Creating-Your-First-USD-Stage.html)? Saya bertanya-tanya apakah mungkin untuk melewati tahap .obj dan, menggunakan Python, membaca glTF dan langsung masuk ke .usda/c seperti itu?

Saya memiliki banyak masalah dalam menyiapkan USD dan belum meluangkan waktu untuk memperbaiki masalah tersebut (saya pikir ini ada hubungannya dengan menginstal beberapa versi Python dan selama kompilasi itu tertaut ke Python yang salah).

Anda memang bisa menulis file OBJ langsung ke file USDA (itu sebenarnya bisa menjadi langkah bagus selanjutnya dalam pembuktian konsep saya). Saya tahu struktur file contoh Galeri AR karena kontributor proyek saya mengirimi saya file USDA setelah file USDC mendekodekannya dengan usdcat .

Inti dari Apple menyediakan USDZ QuickLook adalah untuk benar-benar memotong menggunakan WebGL, DOM dan Javascript dan langsung menggunakan adegan dengan ARkit2.0.
Ini hanya tonggak sejarah untuk rOS berdasarkan teknologi Apple/Pixar.
Ketika mereka kemudian menambahkan interaktivitas/scriptability, Web-UI lebih sedikit akan dibutuhkan.

Pixar USD, menggunakan Patch OpenSubDiv yang sangat efisien untuk geometri, yang di-porting ke Mobile Metal akan segera mengungguli WebVR PC-VR HighEnd.
Bukan sebagai format file, tetapi secara keseluruhan pipa Pengalaman-Membuat/Menyajikan/(-Interaksi).

Jadi IMHO lebih penting untuk mengekspor USDZ dari Editor AR/VR dan untuk Android dan Windows untuk menangkap kereta USD, daripada menambahkan importir ke saluran WebGL2 .

Masalah penting adalah bahwa WebXR juga harus mendukung patch SubDiv alih-alih polymeshes lama untuk sepenuhnya mendukung USD seperti yang digunakan oleh Apple.

@pixelpartner Anda agak kehilangan saya.

Tampaknya bagi saya bahwa kecuali sebuah loader dibangun secara asli ke dalam browser, akan sangat membantu untuk membangunnya di JavaScript..

Saya yakin tampilan cepat sangat dioptimalkan, tetapi apa langkah ke depan untuk membuat konten interaktif menggunakan aset USDZ di browser?

Ini adalah permintaan fitur yang valid tetapi saya pribadi tidak mengerti Apple/Pixar. Mengapa mereka memperkenalkan format file baru dan tidak hanya menggunakan glTF? Adakah yang bisa menjelaskan apa yang lebih baik dari USD /USDZ daripada glTF?

Saya mengobrol dengan seseorang yang mengerjakan perangkat lunak tampilan produk baru-baru ini, mereka mengekspor ke glTF dan USDZ jadi saya bertanya kepadanya apa pendapatnya tentang ini. Singkatnya: itu agar Apple dapat terus mengklaim sebagai pilihan mewah kelas atas, dengan format 3D eksklusif yang hanya berfungsi pada platform mereka melalui ARKit2.0/SceneKit. Mengadopsi format glTF standar akan bertentangan dengan tujuan mereka di sini, mereka ingin dapat mengklaim bahwa format _mereka_ lebih baik dan memungkinkan hasil berkualitas lebih tinggi karena sifat material PBR yang (belum?) mendukung glTF.

16977, dan mungkin #14051, kemungkinan diperlukan untuk mendapatkan three.js hingga standar rendering yang sama dengan penawaran Apple, tetapi saya tidak yakin bagaimana keadaan saat ini atau rencana masa depan untuk glTF berhubungan dengan ini.

Bagaimanapun, jika tidak ada alasan lain selain untuk menumbangkan tujuan jahat Apple di sini, saya pikir kita perlu mendukung USDZ di beberapa titik.

itu agar Apple dapat terus mengklaim sebagai pilihan mewah kelas atas, dengan format 3D eksklusif yang hanya berfungsi di platform mereka...

Saya bersedia memberikan lebih banyak manfaat dari keraguan di sini – mereka memiliki tujuan yang berbeda untuk format "runtime" daripada yang kami (threejs + web devs), dan dapat membuat pilihan yang berbeda sebagai hasilnya. Secara khusus, menggabungkan runtime ~15MB USD ke iOS berarti mereka tidak peduli bahwa memuat USDZ _tanpa_ runtime asli sangat sulit, dan mereka tampaknya baik-baik saja dengan tidak memberikan aplikasi web akses apa pun ke model, tetapi hanya membuka model apa adanya di aplikasi asli sebagai gantinya.

Pada "kemewahan kelas atas", penampil QuickLook iOS Apple mendukung bahan PBR logam/kekasaran, dan model bahan sebagian besar setara dengan apa yang didukung glTF 2.0 saat ini. Fitur materi tambahan yang direncanakan untuk glTF 2.0 di masa mendatang, dan dijelaskan di https://github.com/mrdoob/three.js/issues/16977 , akan melampaui dukungan pemirsa USDZ Apple sekarang.

Saya menyebutkan "penonton USDZ Apple" karena itulah, secara de facto, apa yang orang-orang maksudkan dengan USDZ. Tetapi format USDZ, secara teknis, hanyalah file USD yang di-zip, dan dapat berisi hampir semua hal mulai dari model material umum hingga shader khusus. Pemirsa Apple mendukung sebagian kecil USD, dan sebagian kecil itu tidak terdefinisi dengan baik, tetapi ringkasan terbaik yang mungkin Anda temukan ada di sini: https://github.com/google/usd_from_gltf#compatibility.

Dalam hal rendering fidelity, saya akan menunjukkan bahwa model-viewer menampilkan model glTF dengan threejs dan menyediakan sarana untuk membuka versi USDZ di iOS Quick Look, dan hasil visualnya sangat mirip. Halaman ini memberikan beberapa perbandingan langsung, meskipun sayangnya saat ini sedang down.

Bagaimanapun, jika tidak ada alasan lain selain untuk menumbangkan tujuan jahat Apple di sini, saya pikir kita perlu mendukung USDZ di beberapa titik.

Lihat https://github.com/mrdoob/three.js/issues/14219#issuecomment -395107896.

Saya hanya ingin menyebutkan di sini bahwa ada alasan untuk mendukung USD di luar Apple "mengklaim sebagai pilihan mewah". @Mugen87 bertanya "Adakah yang bisa menjelaskan apa yang USD/USDZ lakukan lebih baik daripada glTF?"
Beberapa hal yang saya pedulikan:

  • HDR/tekstur mengambang
  • Peta lingkungan (UsdLuxDomeLight)
  • Lampu area dan bola (UsdLuxRectLight dll.)
  • Bahan shader (OSL/MDL) dengan "permukaan pratinjau" untuk WebGL

Kasus penggunaan saya memuat deskripsi adegan yang sama ke dalam WebGL dan ke dalam pipa rendering kelas atas - memahami tampilannya tentu saja akan berbeda dan beberapa penggantian akan dilakukan.

Pencahayaan dan lingkungan @garyo ditangani oleh penampil AR, dalam upaya untuk mensimulasikan lingkungan yang sebenarnya.
Video ini memberi Anda gambaran tentang peta apa yang didukungnya (albedo, metalik, kekasaran, normal, oklusi ambien, emisif)
https://developer.apple.com/videos/play/wwdc2018/603/

Yang ingin saya lihat adalah eksportir USDA dari three.js, sehingga Anda dapat menyimpan model yang telah Anda buat/konfigurasikan dalam tiga proyek, untuk dilihat di AR.
"model-view" menyertakan tag untuk menentukan alternatif model USDZ, ketika dilihat di iOS.
https://modelviewer.dev/

Sayang sekali Apple menggunakan format yang tidak digunakan orang lain, dan tidak didukung secara asli di mana pun (eksportir beta tersedia untuk Blender). Jadi Anda tidak punya pilihan selain secara manual mengonversi semua model yang ada. Fakta bahwa Anda harus memasukkan tekstur Anda juga menyebalkan jika Anda menggunakan tekstur yang sama di seluruh rentang model. Tentunya mereka bisa memiliki referensi eksternal?
Ini benar-benar sedikit dari format gado-gado, yang hanya menggunakan geometri dan pemetaan dari spesifikasi Pixar, dan menyatukannya dengan file gambar Anda.
glTF/glb akan jauh lebih baik dan kami hanya membutuhkan SATU model untuk di mana-mana...
Di ranah e-commerce, yang mereka tuju, tidak ada pelanggan yang menginginkan pengalaman web yang HANYA berfungsi untuk iOS. Seperti biasa kita harus melakukan semua pekerjaan monyet dan pemeliharaan.

@garyo

Kasus penggunaan saya memuat deskripsi adegan yang sama ke WebGL dan ke dalam pipa rendering kelas atas

tunggu, apakah ada cara untuk memuat usd(z) di webgl?

Kumpulan fitur USDZ baru-baru ini meningkat secara drastis dengan iOS 13.4 (dan RealityComposer 1.4 (133+))

Apple menambahkan banyak skema USD yang saat ini tidak dapat ditafsirkan oleh perangkat lunak lain dan mungkin diabaikan begitu saja.
Hampir seluruh fungsi interaktif RealityComposer sekarang tidak hanya disimpan ke file adegan .reality, tetapi juga dapat diekspor dalam rasa USD baru ini.
Beberapa fitur USD baru di atas kepala saya:
Memicu lompatan, ketuk atau masuki area
tindakan Animasi yang dikelompokkan, secara berurutan dan/atau paralel
Text Geometrie dibuat dengan cepat oleh jenis Prim baru yang mengambil string, font, dan ukuran

Ini membuka era baru. Setiap pengembang sekarang dapat menggunakan alat dan lib penggunaan Pixar (C++/python 2.6/python 3.x) pada platform apa pun untuk menulis file USD yang dapat dengan mudah menampilkan konten atau membuat pengalaman interaktif.
Jelas Anda masih membutuhkan iDevice untuk pengujian.

-
Salam hangat, (baru saja mengakhiri karantina, tetap di rumah kantor)
Thomas yang bersemangat

Am 14.04.2020 um 20:25 schrieb themightyatom [email protected] :
@garyo https://github.com/garyo pencahayaan dan lingkungan ditangani oleh penampil AR, dalam upaya untuk mensimulasikan lingkungan yang sebenarnya.
Video ini memberi Anda gambaran tentang peta apa yang didukungnya (albedo, metalik, kekasaran, normal, oklusi ambien, emisif)
https://developer.apple.com/videos/play/wwdc2018/603/ https://developer.apple.com/videos/play/wwdc2018/603/
Yang ingin saya lihat adalah eksportir USDA dari three.js, sehingga Anda dapat menyimpan model yang telah Anda buat/konfigurasikan dalam tiga proyek, untuk dilihat di AR.
menyertakan tag untuk menentukan alternatif model USDZ, ketika dilihat di iOS.
https://modelviewer.dev/ https://modelviewer.dev/
Sayang sekali Apple menggunakan format yang tidak digunakan orang lain, dan tidak didukung secara asli di mana pun (eksportir beta tersedia untuk Blender). Jadi Anda tidak punya pilihan selain secara manual mengonversi semua model yang ada. Fakta bahwa Anda harus memasukkan tekstur Anda juga menyebalkan jika Anda menggunakan tekstur yang sama di seluruh rentang model. Tentunya mereka bisa memiliki referensi eksternal?
Ini benar-benar sedikit dari format gado-gado, yang hanya menggunakan geometri dan pemetaan dari spesifikasi Pixar, dan menyatukannya dengan file gambar Anda.
glTF/glb akan jauh lebih baik dan kami hanya membutuhkan SATU model untuk di mana-mana...


Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub https://github.com/mrdoob/three.js/issues/14219#issuecomment-613604756 , atau berhenti berlangganan https://github.com/notifications/unsubscribe-auth/AAAR6X5SXAY32JAPYL5V44TRMSTBTANCNFSM4 .

Saya tidak mengetahui adanya parser yang kompatibel dengan web untuk USD atau USDZ. Rendering di WebGL atau API lain tidak menjadi masalah, ini menguraikan konten file yang rumit — tugas itu paling baik ditangani oleh runtime USD resmi, yang memiliki dependensi termasuk OpenSubdiv dan MaterialX.

Setiap pengembang sekarang dapat menggunakan alat dan lib penggunaan Pixar (C++/python 2.6/python 3.x) pada platform apa pun untuk menulis file USD..

Mampu membaca file USD di platform apa pun akan menyenangkan. Untuk alasan teknis, saya tidak berpikir implementasi three.js yang fungsional mungkin dilakukan saat ini. Jika seseorang diberkati dengan waktu luang, saran saya adalah untuk mengimplementasikan OpenSubdiv (w/ WASM?) atau MaterialX (w/ THREE.NodeMaterial?), karena itu akan berguna dengan sendirinya, bahkan tanpa pengurai USD .

@garyo

Kasus penggunaan saya memuat deskripsi adegan yang sama ke WebGL dan ke dalam pipa rendering kelas atas

tunggu, apakah ada cara untuk memuat usd(z) di webgl?

Tidak, itu yang saya cari. Saya memiliki adegan (objek, lampu, bahan, kamera, animasi, dll. - semuanya) dan saya ingin dapat memuat adegan yang sama, dalam format apa pun, ke dalam WebGL (melalui three.js) untuk pratinjau, dan sesuatu seperti Blender untuk render akhir. glTF adalah pilihan terbaik saya untuk saat ini, tetapi tidak mendukung hal-hal yang saya sebutkan di atas (lampu area dll.) Saya mengerti orang-orang glTF enggan menambahkan lebih banyak fitur karena mereka menargetkan mil terakhir ke perangkat daripada adegan yang sebenarnya transfer.
Hanya mencari opsi.

@garyo Kedengarannya seperti Collada mungkin sesuai dengan tagihan? Saya menggunakan versi yang diedit dari eksportir colada dari three.js untuk mengambil aset ke dalam Blender untuk dirender.

@themightyatom Saya melihat Collada beberapa tahun yang lalu -- mungkin harus mengunjunginya kembali. Terima kasih. (Saat itu saya diyakinkan oleh argumen seperti Godot , tidak ada dukungan PBR, dll -- yang mungkin telah berubah.)

@garyo Collada dirancang untuk mentransfer aset di antara pengembang game yang semuanya bekerja di platform yang berbeda. Ini bukan format pengiriman yang layak, tetapi melakukan apa yang dimaksudkan dengan sangat baik :)
Saya cukup beruntung untuk menghabiskan seminggu di Italia dengan salah satu penciptanya, Rene Arnaud. Ini ditulis "dari perspektif GPU" dan umumnya merupakan format pertama yang mendukung perubahan spesifikasi. (OpenGL, DirectX, dll.).

Saya pikir apa yang akan sangat berharga adalah mengintegrasikan https://github.com/google/usd_from_gltf sebagai eksportir. Jauh lebih penting bagi saya untuk bisa membuka USD.

Untuk melakukan sesuatu yang berguna dengan USDZ (memuat atau mengekspor), Anda akan memerlukan SDK USD. _USD dari glTF_ memerlukan USD SDK sebagai dependensi, tetapi SDK tidak didukung di web . Apple menyiasatinya dengan meninggalkan browser web dan membawa Anda ke aplikasi AR Quick Look asli mereka, tetapi itu bukanlah solusi untuk web secara umum.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

filharvey picture filharvey  ·  3Komentar

Horray picture Horray  ·  3Komentar

boyravikumar picture boyravikumar  ·  3Komentar

zsitro picture zsitro  ·  3Komentar

akshaysrin picture akshaysrin  ·  3Komentar