Three.js: Utils: Menghentikan Eksportir (Blender, 3DS Max dan Maya)

Dibuat pada 18 Des 2017  ·  68Komentar  ·  Sumber: mrdoob/three.js

Saya ingin menyarankan penghentian (penghapusan) eksportir Blender, 3DS Max dan Maya JSON karena dua alasan:

  • Eksportir tidak benar-benar aktif dipertahankan. Ada daftar panjang bug non-sepele, permintaan fitur, dan saran yang tidak dipedulikan siapa pun (lihat daftar masalah Blender ). Karena semua eksportir didasarkan pada API yang berbeda (Blender, 3DS Max...) dan ditulis dalam bahasa pemrograman yang berbeda (bukan JavaScript), sangat sulit untuk mempertahankan hal ini.
  • Poin yang lebih penting adalah bahwa kualitas dan kematangan loader tertentu (misalnya FBXLoader dan GLTFLoader ) telah meningkat pesat seiring waktu. Dengan kata lain, lebih mungkin untuk memuat file FBX atau glTF dengan hasil yang tepat. Selain itu, loader ini secara aktif dikelola oleh kolaborator proyek.

Jadi, alih-alih mengekspor ke format JSON, pengguna harus fokus pada format lain seperti FBX atau glTF . Dan dalam konteks pengiriman aset, terutama glTF adalah format yang jauh lebih baik daripada JSON (tidak terkompresi).

Suggestion

Komentar yang paling membantu

keberadaan eksportir yang tidak terawat dan ketinggalan zaman dalam repo adalah titik kebingungan yang tidak perlu bagi pendatang baru

Saya hanya ingin menyoroti pernyataan ini karena menurut saya ini sangat penting untuk three.js . Ketika pengguna menemukan eksportir ini, mereka mengharapkan alat yang berfungsi. Tetapi dalam banyak kasus mereka menjadi bingung dan mungkin kesan buruk dari keseluruhan proyek. Itu tidak baik. 😢

Semua 68 komentar

+1 untuk ini - keberadaan eksportir yang kurang terpelihara dan ketinggalan zaman dalam repo adalah titik kebingungan yang tidak perlu bagi pendatang baru, terutama karena @Mugen87 menunjukkan sekarang ada opsi yang jauh lebih baik.

Catatan: eksportir Blender GLTF resmi (https://github.com/KhronosGroup/glTF-Blender-Exporter) saat ini tidak mengizinkan ekspor animasi yang tepat (saat ini hanya 1 animasi per objek yang didukung).
https://github.com/KhronosGroup/glTF-Blender-Exporter/issues/112

@Usnul bagaimana itu dibandingkan dengan eksportir Blender JSON di repo ini?

@looee
Eksportir Blender JSON mengekspor animasi dengan baik. Ada beberapa gangguan aneh dengan UV atau vertex normal dalam kondisi tertentu yang tidak ada di eksportir GLTF, tapi itu cerita lain.

OK, saya tidak menggunakan Blender jadi saya tidak akan berkomentar lebih jauh tentang itu.

Namun saya dapat mengatakan dari pengalaman bahwa mencoba menggunakan eksportir 3DS Max, yang belum diperbarui dalam beberapa tahun, adalah sakit kepala yang tak ada habisnya dan saya akan sangat mendukung menghapusnya dari repo yang mendukung format FBX.
Hampir semua yang diekspor oleh eksportir 3DS Max FBX sekarang didukung oleh FBXLoader dan karena eksportir tersebut dikelola oleh AutoDesk, kami dapat mengandalkannya untuk tetap up to date.

Demikian pula dengan eksportir FBX Maya, meskipun FBXLoader masih perlu diperbarui untuk mendukung titik pivot dengan benar di sana.

Ketika saya ingat dengan benar, Blender tidak mengekspor animasi saat Anda memilih BufferGeometry . Pasti ada masalah dengan target morph, lihat #10932. Selain itu, eksportir menggunakan format hierarki animasi "lama" dan bukan salah satu sistem animasi saat ini.

Saya pikir kita harus menghapus README eksportir Revit juga - itu hanya menautkan ke repo terpisah yang sepertinya hampir tidak tersentuh dalam beberapa tahun terakhir.

Mungkin ada ratusan alat three.js yang dapat kami tautkan seperti ini, tetapi kecuali jika kami ingin memastikan bahwa alat tersebut dipelihara secara aktif dan berfungsi dengan benar, saya rasa kita tidak perlu menyertakan tautan ke alat tersebut di sini.

Googling untuk "three.js revit eksportir ' menemukan repo baik-baik saja.

Saya pikir kita harus menghapus README eksportir Revit juga - itu hanya menautkan ke repo terpisah yang sepertinya hampir tidak tersentuh dalam beberapa tahun terakhir.

👍

keberadaan eksportir yang tidak terawat dan ketinggalan zaman dalam repo adalah titik kebingungan yang tidak perlu bagi pendatang baru

Saya hanya ingin menyoroti pernyataan ini karena menurut saya ini sangat penting untuk three.js . Ketika pengguna menemukan eksportir ini, mereka mengharapkan alat yang berfungsi. Tetapi dalam banyak kasus mereka menjadi bingung dan mungkin kesan buruk dari keseluruhan proyek. Itu tidak baik. 😢

Sebagai pengguna yang tidak bersalah, bolehkah saya berani memberikan komentar ...

Tentang Blender:
Jika three.js memiliki importir format .blend asli ,
jelas tidak perlu ada eksportir.

Tidak ada upaya instalasi di sisi Blender,
tidak ada kompilasi dari blender API/struct ke javascript melalui kode python ...

Ada upaya luar biasa untuk menulis eksportir JSON dengan python,
Saya bertanya-tanya mengapa Anda kolaborator tidak memilih cara ini ... ?

@wolfgangvonludwigsburg
Ini pertanyaan yang cukup sederhana untuk dijawab. Format campuran tidak terlalu dekat dengan representasi internal three.js, jadi beberapa konversi diperlukan. Format JSON dari three.js sangat dekat dengan representasi internal, jadi pekerjaan konversi dari representasi blender ke three.js ada di sana, apakah Anda memilih untuk menyebutnya Eksportir atau Pemuat. Meskipun demikian, .blend bukanlah format transfer yang umum, tidak ada apa pun kecuali blender yang benar-benar mendukungnya, jadi memiliki Loader untuk itu akan memuaskan audiens yang cukup kecil, karena bahkan orang yang menggunakan blender secara produktif cenderung menggunakan perangkat lunak lain juga, dan .blend bukanlah format pilihan sebagai format pertukaran. Biasanya itu obj, fbx atau standar terbuka seperti gltf atau collada.

@wolfgangvonludwigsburg jika Anda _ ingin membangun pemuat file .blend, ini mungkin tempat yang baik untuk memulai:

https://raginggazebo.com/parsing-blender-3d-files-blend-1-of-3/

Banyak THX atas komentar Anda!

Tapi mengapa eksportir Blender JSON rawan kesalahan seperti itu ...
=> Itu tergantung pada Blender API, ditulis dengan Python, akan memahami struct data Blender,
dan dikompilasi ke format JSON, yang three.js ubah menjadi internalnya ...

Banyak sekali tugas, yang semuanya bisa (dan benar-benar dilakukan!) Gagal, terutama pada perubahan versi Blender.
Yah, saya lebih suka cara "kompilasi data langsung" ...

Yah, saya lebih suka cara "kompilasi data langsung".

Itu bukan pendekatan yang baik. Memuat file blend langsung ke dalam aplikasi adalah semacam penyalahgunaan. Sebaliknya, Anda harus menggunakan format file yang ditujukan untuk transfer data dan pengiriman aset. glTF adalah format standar pertama yang berfokus pada aspek ini dari sudut pandang aplikasi. Itulah salah satu alasan mengapa saya mempromosikan glTF berkali-kali . Ini harus menjadi standar untuk semua aplikasi 3D yang akan datang.

Yah, saya lebih suka cara "kompilasi data langsung" ...

Sayangnya ada masalah yang lebih dalam dengan menggunakan .blend dengan cara ini. Ini menyimpan hal-hal seperti riwayat edit, status UI Blender saat ini, data Add-on blender. Format berubah saat rilis Blender baru keluar. Dan ukuran file bisa sangat besar, sehingga tidak akan pernah menjadi pilihan yang baik untuk aplikasi 3D berkualitas tinggi. Cara terbaik untuk mendapatkan data langsung dari Blender adalah dengan menggunakan API Blender (seperti yang dilakukan eksportir FBX dan glTF), daripada mencoba merekayasa balik format .blend internal Blender.

Untuk pertanyaan awal, saya akan melewatkan menambahkan suara ya/tidak karena saya tidak memiliki banyak keakraban alur kerja penulisan 3D.

Tetapi sebagai pengelola dan terutama pengembang JS, mampu fokus pada pemuatan dan dukungan untuk format seperti FBX dan glTF — yang secara aktif memelihara alat pembuat pihak ketiga — tampaknya lebih memberikan hasil yang andal.

Selain itu, jika ada masalah dengan ekosistem glTF saat ini yang mencegahnya menjadi alur kerja yang cukup baik untuk menyelesaikan jenis kebutuhan ini, itu juga merupakan umpan balik yang berguna. 🙂

Saya tidak berpendapat untuk menggunakan format Blender .blend sebagai format pertukaran umum ,
tetapi mungkin menyederhanakan kolaborasi antara Blender dan three.js ...

Saya tidak dapat memperkirakan upaya, mempertahankan eksportir Python + GUI di bawah kerangka kerja Blender,
tapi saya kira, ini bisa dengan mudah menjadi horor ... ;-)

@donmccurdy
BTW, Wavefront .obj, 3D Studio .3ds juga merupakan format asli, yang banyak digunakan ...

BTW, Wavefront .obj, 3D Studio .3ds juga merupakan format asli, yang banyak digunakan ...

Ya, saya pikir OBJ tidak disebutkan di sini karena formatnya tidak mendukung beberapa fitur populer seperti animasi, tetapi tentu saja three.js akan tetap mendukung OBJ untuk waktu yang sangat lama — ini adalah format klasik dan andal.

3DS Max .3ds adalah dalam kategori yang sama dengan Blender .blend atau Maya .mlt atau Cinema4D ini .c4d . Setiap editor memiliki format internalnya sendiri, dan format tersebut berubah seperti halnya perangkat lunak. Mempertahankan loader untuk setiap format internal pribadi alat pemodelan jauh lebih sulit dan rawan bug daripada menggunakan format ekspor yang telah disediakan oleh pengembang editor itu sendiri. Perlu dicatat bahwa baik 3DS dan Blender hadir dengan ekspor FBX bawaan — dikelola oleh penulisnya — dan Blender juga akan memiliki ekspor glTF bawaan di versi mendatang.

Satu lemparan terakhir...

Kami sudah memiliki satu alat pemodelan independen ex/importir: Collada,
tetapi untuk alasan apa pun ini tampaknya tidak begitu diterima.

Lebih disukai saya memang memikirkan jenis implementasi ini:
solusi pemuatan, berdasarkan Buffer Protokol Google

https://developers.google.com/protocol-buffers/

Ini adalah

... bahasa-netral, platform-netral, mekanisme yang dapat diperluas untuk membuat serialisasi data terstruktur – pikirkan XML, tetapi lebih kecil, lebih cepat, dan lebih sederhana.

Karena data vektor 2D/3D yang harus kita tangani tidak terlalu kompleks, mengembangkan satu skema file data Blender seharusnya cukup layak ...

Sebenarnya ada parser file campuran di javascript 😁
https://github.com/Galactrax/js.blend

uhh, saya mendapat dukungan ... - terima kasih mrdoob ;-))

THE terbesar (dalam hal Terrabyte) 3D Model Aplikasi (Google Maps 3D) menggunakan jenis efisien ini (protobufs) pelaksanaan ...

Menuruni jalur pemuatan .blend mungkin tidak terlalu waras. Tetapi tidak terlalu berbeda dengan memuat .dae dan .fbx...

Bagaimanapun, saya setuju dengan gagasan untuk mencela para eksportir.
Namun, saya akan menunggu sampai gltf sedikit lebih matang dan teruji. Musim panas 2018?

Saya setuju dengan menghapus eksportir itu juga. Anda bahkan dapat memindahkannya ke beberapa repo lain di mana mereka dapat RIP :)

Namun, saya akan menunggu sampai gltf sedikit lebih matang dan teruji. Musim panas 2018?

Menunggu tampaknya masuk akal bagi saya. Khususnya untuk glTF, ada baiknya untuk menyiapkan beberapa hal terlebih dahulu:

  • [ ] Pengiriman blender dengan ekspor glTF bawaan, dan beberapa dukungan animasi.
  • [x] Peningkatan alur kerja dari Maya dan 3DS Max ke glTF, atau hanya lebih banyak pengujian FBX2GLTF .
  • [x] Pembaruan pada konverter COLLADA2GLTF resmi untuk glTF 2.0.

Meninjau kembali pertanyaan di Musim Panas 2018 terdengar benar.

Namun, saya akan menunggu sampai gltf sedikit lebih matang dan teruji. Musim panas 2018?

Untuk eksportir Blender, saya cenderung setuju. Namun saya sarankan menghapus setidaknya eksportir 3DS Max segera karena sudah ada alternatif yang matang dan jauh lebih baik di FBX.

Namun saya sarankan menghapus setidaknya eksportir 3DS Max segera karena sudah ada alternatif yang matang dan jauh lebih baik di FBX.

Kedengarannya bagus untuk saya

Oke, eksportir 3DS Max hilang. Mari kita kunjungi kembali eksportir lainnya (Blender dan Maya) dalam beberapa bulan.

Saya tidak berpikir banyak akan berubah mengenai eksportir Maya pada waktu itu.

Kita mungkin harus mengevaluasi itu sekarang. Saya akan mengujinya dan melihat apakah itu layak disimpan selama beberapa hari ke depan.

Saran yang bagus 👍 .

Selama kita di sini, apa status https://github.com/mrdoob/three.js/tree/dev/utils/converters/fbx ? Sepertinya itu bisa diganti dengan skrip node.js seperti konverter obj2three, hanya menggunakan THREE.FBXLoader dan serialisasi di akhir. Saat ini konverter memiliki banyak masalah terbuka:

No animation support
Only Lambert and Phong materials are supported
Some camera properties are not converted correctly
Some light properties are not converted correctly
Some material properties are not converted correctly
Textures must be put in asset's folder, and use relative path in the material

Juga konverter msgPack, UTF8 dan CTM - mereka belum pernah disentuh selama bertahun-tahun.

Apakah mereka masih berguna bagi siapa pun?

@donmccurdy Saya khawatir Anda tidak dapat menggunakan FBXLoader di dalam skrip node.js karena Anda tidak memiliki akses ke DOM. Semua loader yang menggunakan TextureLoader memiliki ketergantungan pada ImageLoader dan oleh karena itu pada document . Kami akan mendapatkan kesalahan runtime seperti ReferenceError: document is not defined . Masalah yang sama untuk objek window yang diakses dari FileLoader .

Sebagai solusi sementara, mungkin kita bisa mendefinisikan ulang ImageLoader dan FileLoader dalam file fbx2three.js ?

mungkin kita bisa mendefinisikan ulang ImageLoader dan FileLoader di file fbx2three.js?

Saya pikir ini akan cukup sederhana, dan masih memerlukan kode yang jauh lebih sedikit daripada konverter python di sana sekarang ... saya akan mencobanya.

mungkin kita bisa mendefinisikan ulang ImageLoader dan FileLoader di file fbx2three.js?

Ide bagus :blush:

.3ds 3DS Max berada dalam kategori yang sama dengan .blend Blender atau .mlt Maya atau .c4d Cinema4D.

Ini mungkin tidak sepenuhnya benar, .max lebih seperti kategori yang sama, .3ds cukup dipreteli.

Saya suka memiliki eksportir 3ds max sebagai contoh cara menulis eksportir, dan juga pada maxscript. Saya rasa saya tidak pernah bisa mengekspor ruang singgung yang benar dari 3ds max melalui fbx, dengan maxscript mudah untuk bereksperimen dan mengambil barang-barang yang Anda butuhkan.

Layak dimasukkan ke dalam repo baru, dengan penafian yang sesuai? Semua untuk contoh cara menulis eksportir, tetapi jika tidak dirawat dan FBXLoader sekarang lebih andal, kami tidak ingin orang menganggap itu cara yang disarankan untuk membawa aset dari 3DS Max ke three.js.

Ya, jika ada maka saya memilih repo baru.

Hanya ingin menambahkan sebelum benar-benar meninggalkan format json: Kami menggunakan eksportir blender untuk mengekspor adegan, yaitu menyiapkan hierarki kamera dan adegan dengan animasi dan properti khusus bersama dengan objek placeholder, yang kemudian diganti secara dinamis saat runtime oleh jerat nyata (dimuat dengan cara lain). Karena ini 'hanya' json, sangat mudah untuk mengintrospeksi dan memodifikasi di js dan melakukan hal-hal semacam ini. Saya tidak yakin misalnya glTF (setidaknya dalam bentuknya saat ini) cocok sebagai format adegan, jadi berharap eksportir blender dan format json akan bertahan sedikit lebih lama

@pjoe Saya berharap format JSON dan eksportir Blender lebih cenderung bertahan dalam waktu dekat daripada hal-hal lain yang disebutkan di utas ini (misalnya eksportir 3DS Max + Maya).

Tapi tetap saja, akan menyenangkan untuk mendapatkan umpan balik Anda tentang glTF dan eksportir Blender . Semua yang Anda sebutkan didukung:

  • siapkan kamera
  • hierarki adegan
  • animasi (untuk beberapa tindakan Blender, Anda memerlukan eksportir yang berbeda )
  • properti khusus (pilih "Ekspor ekstra" di opsi)
  • "hanya JSON" untuk materi, metadata, dan sebagainya. Data mesh dioptimalkan sebagai muatan biner terpisah

@donmccurdy harus mengakui bahwa saya tidak memiliki banyak pengalaman dengan glTF (setidaknya belum) - meskipun saya mencoba membaca spesifikasinya :)

Saya kira 'daging sapi' utama saya dengan glTF (yang menurut saya adalah format transportasi yang bagus dan juga bagus untuk mendapatkan 'byte' secepat dan langsung mungkin ke buffer GPU) adalah bahwa semua referensi berbasis indeks, yang tidak baik cocok untuk format adegan yang bisa berubah. Jadi jika Anda misalnya ingin menghapus entri atau menambahkan hal-hal di tengah, Anda perlu memperbarui semua referensi ke indeks setelah tempat itu. Melakukan 'manajemen indeks' ini dengan cepat menjadi sangat berantakan.

Dari waktu singkat yang saya habiskan dengan eksportir blender glTF itu juga tampak cukup dewasa pada saat itu (sekitar dua bulan yang lalu). Itu jelas dapat diperbaiki dengan membantu meningkatkannya :)

... semua referensi berbasis indeks, yang tidak cocok untuk format adegan yang bisa berubah. Jadi jika Anda misalnya ingin menghapus entri atau menambahkan hal-hal di tengah, Anda perlu memperbarui semua referensi ke indeks setelah tempat itu.

Ya, itu tidak dirancang untuk pengeditan manual dalam pengertian itu dan, sebagai format runtime/transmisi, mungkin tidak akan pernah. Ada berbagai perpustakaan untuk bekerja dengannya yang dapat membantu.

Secara umum saya menemukan eksportir Blender glTF memberikan hasil yang lebih baik daripada output Blender lainnya, tetapi harap laporkan bug jika Anda menemukan masalah tertentu. :)

@donmccurdy menyetujui glTF tetap setia untuk transportasi/runtime ... salah satu hal hebat tentang itu, adalah bahwa itu tidak mencoba untuk menjadi cocok untuk semua format (seperti colla - jangan mulai).

Kami mencoba menghindari lib tambahan atau overhead konversi karena kami sedang mengerjakan aplikasi web yang harus kecil dan cepat - dan sejauh ini format JSON three.js cocok sebagai format adegan untuk kasus penggunaan ini. Mampu mengatur seluruh adegan dalam blender, dengan misalnya animasi kamera, cukup ekspor, muat, dan saat runtime mengganti model secara dinamis (yang mungkin akan segera kita gunakan glTF untuk beberapa saat) - ini semua membuat jalur pipa yang cukup mulus untuk kita :)

Sebagai catatan tambahan, kami juga menggunakan webpack json loader untuk menyertakan file adegan dalam bundel utama kami - membuatnya lebih mudah untuk ditangani.

Saya tidak berpikir banyak akan berubah mengenai eksportir Maya pada waktu itu. Kita mungkin harus mengevaluasi itu sekarang. Saya akan mengujinya dan melihat apakah itu layak disimpan selama beberapa hari ke depan.

@looeee Saya penasaran, apakah Anda punya berita tentang ini 😊 ? Apakah menurut Anda kami dapat menghapus eksportir sekarang dan merujuk ke FBX sebagai gantinya?

Apakah menurut Anda kami dapat menghapus eksportir sekarang dan merujuk ke FBX?

Saya hanya melakukan sedikit pengujian, berencana untuk melakukan lebih banyak tetapi saya tidak punya waktu. Tapi saya akan mengatakan ya, kita harus menghapusnya dan bekerja untuk membuat FBXLoader mendukung Maya sepenuhnya.

Bergabung sebagai pengguna eksportir Blender di sini: satu keuntungan memiliki JSON adalah sangat mudah untuk dimodifikasi setelah ekspor. Blender hanyalah bagian dari rantai alat otomatis kami, dan kami melakukan banyak pemrosesan pada JSON yang diekspor, sebelum siap untuk masuk ke penampil web kami. Memiliki format transfer yang sangat mirip dengan format threejs internal, merupakan bonus besar bagi kami.

Selain itu, kami telah melakukan beberapa pengujian dengan format ekspor lain, dan menemukan bahwa format JSON tidak terlalu buruk dalam hal ukuran transfer, setelah dikompres dengan baik, jauh lebih baik daripada Collada atau FBX, misalnya. Kami melakukan uji coba berbasis protobuffer cepat, dan bisa menjadi sedikit lebih kecil seperti itu, tetapi tidak ada yang sepadan dengan kerumitannya bagi kami.

Untuk adegan besar dan klien lambat, kecepatan penguraian dan konversi ke model ThreeJS internal juga menjadi penting. Karena penguraian JSON sangat dioptimalkan di browser, dan karena struktur modelnya sangat mirip, kami berasumsi bahwa format JSON akan cukup baik dalam hal ini. Belum benar-benar menguji ini.

Soft8Soft baru saja merilis eksportir berbasis glTF untuk 3ds Max . Jadi ini mungkin merupakan alternatif yang baik untuk eksportir JSON yang dihapus.

Terima kasih @alexkowel , senang melihatnya (dan selamat!). Jika Anda dapat menambahkan tautan di utas ini, kami akan mencantumkannya dengan sumber daya glTF lainnya. 🙂

@dherben poin bagus, terima kasih —

Tentang kecepatan penguraian, saya berharap Anda akan menemukan glTF menjadi lebih cepat. Perbedaan dasarnya adalah bahwa metadata masih "hanya JSON" sedangkan bagian besar dari payload (posisi vertex, data animasi) berada dalam potongan ArrayBuffer yang dapat digunakan untuk membuat array yang diketik untuk THREE.BufferAttribute konstruktor. Dalam loader yang dioptimalkan sepenuhnya (saya tidak tahu apakah THREE.GLTFLoader sudah cukup) Anda tidak perlu membaca atau menyalin data itu di JS.

Tetapi untuk modifikasi data sebagai bagian dari pipeline, saya setuju bahwa JSON biasa lebih mudah digunakan, seperti yang Anda katakan. Ada perpustakaan dalam berbagai bahasa untuk bekerja dengan glTF, tetapi alatnya belum terlalu matang.

Status saat ini dari masalah ini:

Eksportir:

  • [X] Pengekspor Maya
  • [X] Pengekspor 3DS Max
  • [X] Pengekspor blender

    • tidak ke mana-mana sekarang, dapat mengunjungi kembali di masa depan.

    • Dihapus Mei 2018.

Konverter:

EDIT: Diperbarui Mei 2018.

@donmccurdy Hanya ingin kembali setelah bereksperimen lebih banyak dengan eksportir Blender glTF dan pemuat Three.js. Ternyata itu benar-benar berfungsi dengan baik sebagai format adegan untuk kasus penggunaan kami sejauh ini. Apa yang saya lakukan sekarang adalah memuat file glTF yang diekspor ke adegan Three.js dan kemudian memanipulasi hierarki adegan Three.js (menukar placeholder dengan hal-hal yang dimuat secara dinamis) sebelum melakukan render pertama.

Mungkin masih ada beberapa fitur yang ingin saya lihat di glTF eksportir, akan mencoba berkomentar atau melakukan PR di sana :)

Mungkin masih ada beberapa fitur yang ingin saya lihat di glTF eksportir, akan mencoba berkomentar atau melakukan PR di sana :)

Luar biasa, tolong lakukan! 🙂

Pengekspor blender tidak ke mana-mana saat ini, dapat mengunjungi kembali di masa mendatang.

Jadi, apakah ada yang akan mengerjakan bug eksportir Blender saat ini? Saya berharap jawabannya tidak. Dalam hal ini, kita harus mengatakannya.

Jika tidak ada orang lain yang melakukannya sebelum saya... Saya ingin, setidaknya, mencoba menyelesaikan masalah rotasi. #13130

Jadi, apakah ada yang akan mengerjakan bug eksportir Blender saat ini? Saya berharap jawabannya tidak.

Saya tidak membaca seluruh diskusi, tetapi dua sen saya.

Minggu lalu saya diminta untuk membantu sebuah perusahaan yang memiliki solusi yang menggunakan Three.js dalam pengiriman konten dalam pameran permanen. Papan nama dengan model 3D yang dapat dijelajahi dan berinteraksi dengan pengguna. Pengembang asli yang sudah lama menggunakan Format JSON Three.js . Untuk mempersiapkan dan memasukkan model baru (dengan syarat bahwa mengubah kode runtime adalah nogo) adalah mimpi buruk yang nyata.

IMHO Three.js harus fokus mendukung format yang sudah mapan dan berkembang pesat seperti FBX dan glTF . Prioritas pada format yang dapat menampung banyak tempat data UV (oleh karena itu OBJ tercinta TIDAK boleh didorong). Kemudian animasi. Saya tahu bahwa addon ekspor Blender seharusnya mendukung keduanya, tetapi begitu juga FBX.

Bayangkan alur kerja tempat barang-barang Blender keluar

1) WebGL
Three.js jelas

2) OpenGL 3.3+
mentah / Cinder

3) OpenGL ES 2.0 di RISC
Dari ponsel cerdas ke RaspberryPi

4) Mesin permainan

5) Aplikasi grafik waktu nyata yang terintegrasi dengan server media (Hippo, penyamaran D3)
Yang digunakan orang-orang VFX panggung.

Alih-alih harus menggunakan banyak eksportir yang berbeda untuk keluaran yang berbeda, tujuannya adalah menggunakan 1, maksimal 2 format. Saat menulis OGL dalam 3 kasus pertama ... format model yang sama harus digunakan, itu saja. Untuk dua poin terakhir, FBX adalah rajanya (implementasi yang berbeda untuk COLLADA di seluruh paket membuatnya sulit untuk digunakan) dan sebenarnya modelnya tidak "terekspos".
Saya tidak bashing Three.js JSON Format atau Blender addon ( @mrdoob 🙏 ), itu (memiliki?) itu digunakan dan mungkin diciptakan untuk memecahkan masalah yang format lain tidak bisa pada saat itu di tempat pertama (dan saya melakukannya juga memiliki sindrom NIHS).
Saya hanya ingin berbagi bahwa dari perspektif di mana seseorang harus terus-menerus memberikan output yang berbeda dalam industri. Format JSON Three.js tidak cocok dengan lanskap, itu berlebihan.

@kroko pasti setuju 👍

Saya pikir lanskap format mulai menjadi lebih jelas. Format json three.js dilakukan karena pada saat itu belum ada format json. Mendefinisikan format file adalah hal terakhir yang ingin saya lakukan ketika saya sudah melakukan mesin rendering dan API

Sebagai pemula, eksportir JSON Three.js sangat mendidik karena memungkinkan saya untuk melihat data mentah dan struktur yang mendasari geometri keluaran. Eksportir lain, seefisien mereka, tidak membiarkan Anda melihat data karena kebanyakan dalam format biner.

Saya setuju bahwa menghapusnya dari repo ini akan menjadi pilihan terbaik hari ini, tetapi seperti yang dikatakan @hccampos , mungkin itu dapat ditempatkan di

Saya setuju bahwa menghapusnya dari repo ini akan menjadi pilihan terbaik hari ini, tetapi seperti yang dikatakan @hccampos , mungkin itu dapat ditempatkan di

Akan selalu ada opsi untuk mengekspor sebagai JSON dari http://threejs.org/editor/

Saya sarankan kita tutup sekarang semua masalah terbuka yang terkait dengan eksportir Blender. Sepakat?

Saya pikir seseorang dapat menulis beberapa dokumentasi / saluran "resmi" untuk ekspor/impor model 3D (untuk fitur dasar dan khusus), pemecahan masalah umum, dan memangkas atau memperbarui semua dokumen dan contoh yang sudah usang. EG contoh ksatria sangat membingungkan, mengingat Anda tidak memiliki eksportir json blender lagi. Mungkin JSONLoader untuk model 3d harus disimpan untuk retrokompatibilitas, tetapi kita harus membacanya, dll.

@stmaccarelli ada beberapa dokumentasi baru di sini: https://threejs.org/docs/#manual/introduction/Loading -3D-models, tapi ya tolong beri tahu kami apa lagi yang akan membantu!

@donmccurdy Saya pikir kertas itu buruk.
Saat ini seluruh sistem impor / animasi 3d, mengingat campuran dokumentasi, contoh dan hal-hal yang ditemukan di internet dari era yang berbeda, membingungkan.

Dokumen Master Animation System akan baik-baik saja jika referensi dari objek tunggal benar.
Mari kita ambil referensi AnimationClip. Saya tidak yakin saya mengekspor morphTargets dengan cara yang benar, tetapi di sini saya membaca:

_.CreateClipsFromMorphTargetSequences ( name : String, morphTargetSequence : Array, fps : Number, noLoop : Boolean ) : Array
Mengembalikan larik AnimationClips baru yang dibuat dari urutan target morf geometri, mencoba mengurutkan nama target morf ke dalam pola berbasis grup animasi seperti "Walk_001, Walk_002, Run_001, Run_002 ..."_

masalahnya adalah jika saya mengimpor file glTF, tidak ada array morphTargetSequence ... ada beberapa objek morphTargetSomething yang disimpan di sana-sini, tetapi saya tidak tahu apa dan bagaimana menggunakannya.

Saya pikir kita harus memiliki beberapa dokumen yang menjelaskan manajemen/alur kerja Model 3D dengan contoh yang sangat sederhana.
DAN semua referensi pemuat 3D harus menghormati template yang sama.
Katakanlah
1- impor model 3D sederhana
2- impor materi (dengan semua lonceng dan peluit seperti peta yang berbeda, parameter peta, manajemen multimaterial, dll)
3- seluruh adegan impor (seperti cara melintasi / mengelola adegan yang diimpor seperti yang dari glTF)
4- impor dan manajemen kerangka animasi
5- morph animasi impor dan manajemen

Kita juga harus memeriksa bahwa semua contoh yang menampilkan pemuatan model 3D, mengikuti pola yang sama.

Kita harus memperbarui contoh, dan meskipun tidak mungkin kita harus menulis dengan jelas bahwa beberapa bagian sudah usang dan apa (seperti dalam contoh ksatria... )

_EG- jika kita memutuskan bahwa format file JSON untuk model 3D harus ditinggalkan, demi - katakanlah - glTF, tidak masuk akal bahwa satu-satunya contoh animasi yang menampilkan animasi kerangka dan target morf adalah ksatria lama, yang menggunakan Model JSON dari 10 versi yang lalu, yang menyimpan struktur data yang tidak digunakan lagi._

@stmaccarelli Tidak ada satu pun alur kerja ujung ke ujung yang direkomendasikan; Saya pikir kami akan kesulitan untuk menyediakan tingkat keterampilan yang berbeda, preferensi untuk alat pemodelan gratis vs berbayar, dan kebutuhan khusus.

Saya tidak berpikir Anda biasanya membutuhkan metode CreateClipsFromMorphTargetSequences . Dokumen di atas tidak membahas detail penggunaan pemuat tertentu (seperti yang Anda sebutkan, tidak konsisten), tetapi dokumen GLTFloader melakukannya —

loader.load('foo.glb', function(gltf) {
  const clips = gltf.clips;  // Array<THREE.AnimationClip>
  const model = gltf.scene; // THREE.Scene
  ...
});

Dalam hal ini, tidak masalah apakah klipnya adalah target TRS, skinned, atau morph — Anda dapat memainkan semua animasi secara sama. Saya telah menulis satu kemungkinan alur kerja menggunakan Mixamo dan Blender . Ini yang lain menggunakan Maya .

Kita juga harus memeriksa bahwa semua contoh yang menampilkan pemuatan model 3D, mengikuti pola yang sama.

DAN semua referensi pemuat 3D harus menghormati template yang sama.

Ini adalah poin yang adil, dan kami memiliki beberapa ruang untuk ditingkatkan di sini.

tidak masuk akal bahwa satu-satunya contoh animasi yang menampilkan animasi kerangka dan target morf adalah ksatria lama, yang menggunakan model JSON dari 10 versi yang lalu, yang menyimpan struktur data yang tidak digunakan lagi.

Sebenarnya format JSON dan struktur data tidak ditinggalkan, dan itu masih merupakan cara yang benar-benar masuk akal untuk [de]serialize adegan, tetapi poin diambil. @mrdoob apa pendapat Anda tentang kami mengganti beberapa contoh animasi? Seperti:

animation / keyframes / json
animation / scene
animation / skinning / blending
animation / skinning / morph

apa pendapat Anda tentang kami mengganti beberapa contoh animasi?

+1 untuk ini. Saya memilih untuk mengganti setidaknya prajurit dari animation / skinning / blending a dengan model yang lebih modern dari Mixamo, seperti ini:

screenshot-www mixamo com-2018 07 15-10-04-00

Kita dapat memadukan antara idle / walk / run, dan mungkin saja untuk mengonversi model ke glTF jika itu lebih disukai.

Ukuran model akan sekitar 9mb, sedangkan model saat ini bersama dengan semua file terkait adalah 71mb!!

Untuk animation / skinning / morph kita dapat menggunakan model yang telah saya uji dengan target morph FBX:

im

Ukurannya kira-kira sama dengan model ksatria saat ini, tetapi karena target morf lebih umum digunakan untuk ekspresi wajah, menurutku yang ini lebih masuk akal. Sekali lagi, saat ini dalam format FBX tetapi dapat dikonversi ke glTF jika diinginkan.

Berikut adalah beberapa contoh untuk dipertimbangkan:

| tangkapan layar | tautan | ukuran |
|---|---|--|
|iondrive | tautan | 6 MB |
|vacation | tautan | 3 MB |
|lain | tautan | 5 MB |
|handpainted | tautan | 12 MB |

Semuanya dianimasikan, bekerja dengan benar di three.js, dan mungkin dapat dikompresi atau dioptimalkan sedikit lebih banyak daripada versi unduhan Sketchfab. Saya tidak memiliki karakter yang curang dengan siklus lari/jalan yang bagus, tetapi alur kerja Mixamo->glTF tidak terlalu buruk.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat