Three.js: Pemuat

Dibuat pada 28 Okt 2014  ·  66Komentar  ·  Sumber: mrdoob/three.js

Daftar pemuat yang bagus untuk dimiliki:

3D

Enhancement Loaders

Komentar yang paling membantu

Mengenai pemuat 3dm: Saya sudah mulai mengerjakan ini sekarang karena perpustakaan openNURBS telah dikompilasi menjadi wasm berkat emscripten ( rhino3dm ).

Saya sedang mengerjakan ini di sini dan memiliki mesh, breps, ekstrusi, pointclouds, material, lapisan, dan dukungan grup mulai dan berfungsi.

image

Dokumen relevan:

Saya berharap untuk mengirimkan PR yang memiliki dukungan untuk lebih banyak jenis objek kapan-kapan _soon_. Saya harus mengakui bahwa saya memiliki sedikit pengalaman dengan pekerja web, dan saya bersandar pada contoh draco dan basis loader. Semoga #18234 menyederhanakan ini sedikit.

id kami sudah menambahkan dukungan threejs langsung ke perpustakaan rhino3dm.js seperti di sini dan di sini .

Sunting: perbarui tautan untuk menunjuk ke garpu org McNeel.

Semua 66 komentar

Daftar yang sangat luas!
Saya juga mengusulkan pemuat AMF (http://en.wikipedia.org/wiki/Additive_Manufacturing_File_Format).
(format file 3d digunakan untuk pencetakan 3d).
Saya sudah menyelesaikan dasar-dasar loader, jadi saya bisa memodifikasinya sedikit dan menambahkan contoh.

Sebagian besar loader ini lebih penting untuk kasus khusus seperti editor, karena katakanlah game, mungkin lebih baik untuk langsung mengonversi ke format three.js, bukan? Dalam kasus ini konverter/eksportir lebih penting.

Kami telah menguji glTF sebagai pengganti tiga format sebagai pengoptimalan - di sana datanya biner dan dapat dikompresi dengan kompresi geom.

Notifikasi [email protected] kirjoitti 28 Okt 2014 kello 17.38:

Sebagian besar loader ini lebih penting untuk kasus khusus seperti editor, karena untuk katakanlah game, mungkin lebih baik untuk langsung mengonversi ke format three.js, bukan? Dalam kasus ini konverter/eksportir lebih penting.


Balas email ini secara langsung atau lihat di GitHub.

@kaosat-dev Ditambahkan ke daftar!
@Herst Ya. Ini sebagian besar untuk editor atau aplikasi yang tidak memerlukan waktu muat cepat.

Saya juga mencari pemuat IGES. Saya bahkan mungkin akan mulai membangunnya sendiri tetapi tidak yakin harus mulai dari mana.

bagaimana kalau menambahkan 3DM (digunakan oleh Badak ) ke dalam daftar?

@nyaaao menambahkan. Terima kasih!

Tentang Pemuat 3DS:

Hai semuanya, dulu sekali, saya perlu membuat loader 3DS untuk mesin 3DzzD Web 3D, itu agak sulit dilakukan ... tidak sulit untuk mendapatkan beberapa hasil pertama melainkan untuk menangani semua potongan dengan benar, tetapi setelah beberapa kali Saya berhasil menghasilkan loader yang cukup efisien. spesifikasi format file 3DS sulit ditemukan, tetapi saya selesai menemukan yang bekerja dengan cukup baik. Saya telah membuat loader untuk 3DzzD dengan dokumentasi ini dan bekerja lebih baik daripada yang ada di photoshop saat ini (pegangan yang lebih baik pada pivot/grup halus/skala/keyframe/dll...), jadi inilah spesifikasi yang saya gunakan (3DzzD source code adalah opensource dan mungkin membantu tetapi kodenya sangat jelek... proyek berumur sepuluh tahun...)

http://dzzd.net/3DSChunkDefinitions.html

Tentang OBJ Loader:

Saya memodifikasi pemuat OBJ saat ini dan mendapatkan setidaknya 10/15 FPS lebih banyak pada banyak model 3d, tetapi untuk saat ini saya tidak menemukan bagaimana saya harus memposting perubahan ini?

Masalahnya terutama disebabkan oleh fakta bahwa pemuat OBJ saat ini membuat terlalu banyak objek (lebih dari model 3d asli, satu objek dibuat pada setiap perubahan material) dan juga 3dFaces dengan material yang sama tidak dikelompokkan bersama bahkan dalam objek yang sama, dan menghasilkan terlalu banyak panggilan WebGL

http://dzzd.net/3DSChunkDefinitions.html

Terima kasih! Ditambahkan ke posting pertama.

Masalahnya terutama disebabkan oleh fakta bahwa pemuat OBJ saat ini membuat terlalu banyak objek (lebih dari model 3d asli, satu objek dibuat pada setiap perubahan material) dan juga 3dFaces dengan material yang sama tidak dikelompokkan bersama bahkan dalam objek yang sama, dan menghasilkan terlalu banyak panggilan WebGL

Oh! Menarik. Maksud Anda OBJMTLLoader . Benar?

Oh! Menarik. Maksud Anda yang OBJMTLLoader. Benar?

Ya,, lebih tepatnya blok "if ( /^usemtl /.test( line ) ) " membuat objek/jala baru untuk setiap sakelar material, ini berakhir dengan kinerja yang buruk dan hierarki objek yang salah.

Saya akan memposting kasus uji sederhana yang menunjukkan perbedaan antara pemuat saat ini dan pemuat yang dimodifikasi (perbedaan terutama terlihat pada perangkat seluler)

Berikut adalah kasus uji untuk pemuat saat ini dan pemuat yang dioptimalkan:

http://demo.dzzd.fr/threejs/OBJMTLLoaderTest/

EDIT:
Saya mendapat 10 FPS di GalaxyTab3 dengan pemuat saat ini dan lebih dari 60 FPS dengan pemuat baru, perbedaannya mungkin sulit dilihat pada perangkat cepat

PS: Jika Anda bertanya-tanya dari mana model 3D itu berasal :)

Ada yang tahu tentang IGES. Saya benar-benar dapat menggunakan pemuat IGES. Jika seseorang bisa mengarahkan saya ke arah untuk memulai bagaimana membangunnya? Atau jika ada satu di luar sana di suatu tempat. Saya perhatikan orang-orang di http://www.3dfile.io/ dan beberapa situs visualisasi 3D lainnya menggunakan ThreeJS dan memungkinkan unggahan IGES.

K3D.js (lisensi MIT) memiliki parser untuk OBJ, 3DS, MD2 dan Collada. http://k3d.ivank.net. Lihat #3843.

bagaimana dengan NIFTI untuk dokter?

@jugl Apakah Anda memiliki informasi tentang formatnya?

Saya sangat berharap untuk model .m2, komunitasnya sangat besar. Saya akan menawarkan bantuan saya dengan file model dll. Anda dapat menghubungi saya untuk kasus itu di skype: deexone . Sebagai petunjuk dari satu pengembang lib http://bridge.net/ mungkin dapat digunakan untuk mengubah libnya menjadi js.

Hai, saya memiliki pemuat BVH yang mem-parsing melalui file BVH dan mengeluarkan THREE.Skeleton dan AnimationClip agar mudah digunakan dengan Mixer:
https://github.com/herzig/BVHImporter
dan contoh kerja: http://herzig.github.io/BVHImporter/
Ini terutama diuji pada file CMU BVH dan beberapa lainnya.

Apakah ada panduan tentang bagaimana seharusnya tampilan loader API?

@herzig Manis! BVHLoader akan luar biasa! Loader pada dasarnya memiliki .load() dan .parse() . Anda dapat menggunakan MD2Loader sebagai referensi, tetapi saya akan dengan senang hati membersihkan kode Anda jika Anda melakukan PR dengan apa yang Anda miliki sekarang (contoh + contoh animasi juga akan sangat dihargai).

Hai, yang di sana,
hanya untuk menyinkronkan daftar ini dengan pemuat file di repo ...

3MFLoader tidak ada dalam daftar tetapi sudah diterapkan.
BinaryLoader tidak ada dalam daftar tetapi sudah diterapkan.
DDSLoader tidak ada dalam daftar tetapi sudah diterapkan.
FBXLoader tidak dicentang tetapi sudah diimplementasikan.
HDRcubeTextureLoader tidak ada dalam daftar tetapi sudah diterapkan.
MD2Loader tidak dicentang tetapi sudah diimplementasikan.
NRRDLoader tidak dicentang tetapi sudah diimplementasikan.
PCDLLoader tidak ada dalam daftar tetapi sudah diimplementasikan.
PlayCanvasLoader tidak ada dalam daftar tetapi sudah diterapkan.
RGBLLoader tidak ada dalam daftar tetapi sudah diimplementasikan.
SVGLoader tidak dicentang tetapi sudah diimplementasikan.
TGALoader tidak ada dalam daftar tetapi sudah diterapkan.
TTFLoader tidak ada dalam daftar tetapi sudah diterapkan.

Selanjutnya:

ASCLoader harus ditambahkan ke daftar, dan PR akan dikirim dalam beberapa hari.
LASLoader harus ditambahkan ke daftar, dan PR akan dikirim dalam beberapa hari.
XYZLoader harus ditambahkan ke daftar, dan PR akan dikirim dalam beberapa hari.

Salam,
Tristan

hanya untuk menyinkronkan daftar ini dengan pemuat file di repo ...

Diperbarui!

OpenCTM mungkin merupakan tambahan yang bagus, karena Autodesk menggunakannya untuk
layanan awan
https://en.m.wikipedia.org/wiki/OpenCTM

Pada Minggu, 13 November 2016 pukul 06.33 Mr.doob [email protected] menulis:

hanya untuk menyinkronkan daftar ini dengan pemuat file di repo ...

Diperbarui!


Anda menerima ini karena Anda berlangganan utas ini.
Balas email ini secara langsung, lihat di GitHub
https://github.com/mrdoob/three.js/issues/5524#issuecomment -260168120,
atau matikan utasnya
https://github.com/notifications/unsubscribe-auth/AAkmxkkOn179ZJvqc8yScOoxnaDGzuH6ks5q9qE6gaJpZM4CzpFw
.

@dlabz Kami sudah memiliki CTMLoader .

Saya bekerja dengan beberapa pengembang iOS di ruang AR, mungkinkah ada pemuat untuk file SCN biner yang digunakan oleh Apple di ARKit? Saya sedang berusaha memanfaatkan BinaryLoader dan kita akan lihat apakah saya bisa membuatnya berfungsi.

Apakah ada spesifikasi di suatu tempat untuk format SCN itu?

@mrdoob Maaf saya sangat terlambat. NIfTI adalah format data NMR yang ditransfer dari DICOM. Solusi saya saat ini adalah mendapatkan bentuk 3D darinya sebagai format VTK/OBJ.

Jadi begitu. Apakah ada spek di suatu tempat?

Bagaimana dengan pemuat IFC. Format ini sangat umum digunakan dalam konstruksi untuk model 3dnya

@mrdoob Terima kasih banyak.

@mrdoob apa pedoman + prasyarat pengetahuan untuk membangun pemuat three.js?
Saya ingin membangunnya, tetapi ingin memastikannya dengan cara yang benar. Terima kasih

@Aarbel untuk format apa Anda ingin membuat loader?

@looeee .ifc file

Struktur dasar loader Anda akan terlihat seperti ini:

import {
    FileLoader,
    Loader,
    LoaderUtils
} from '../../../build/three.module.js';

function IFCLoader( manager ) {

    Loader.call( this, manager );

}

IFCLoader.prototype = Object.assign( Object.create( Loader.prototype ), {

    constructor: IFCLoader,

    load: function ( url, onLoad, onProgress, onError ) {

        var scope = this;

        var path = ( this.path !== undefined ) ? this.path : LoaderUtils.extractUrlBase( url );

        var loader = new FileLoader( scope.manager );

        loader.load( url, function ( text ) {

            try {

                scope.parse( text, path, onLoad, onError );

            } catch ( e ) {

                if ( onError !== undefined ) {

                    onError( e );

                } else {

                    throw e;

                }

            }

        }, onProgress, onError );

    },

    parse: function ( text, path, onLoad, onError ) {

        // parsing logic goes here

    }

} );

terima kasih, akan dikerjakan bulan depan

Semoga berhasil! 😊

Haruskah default crossOrigin menjadi Anonymous ?

Saya telah menggunakan kembali pola dari GLTFLoader dan ColladaLoader .

Saya ingin melihat pemuat LWO.
Spesifikasi file didokumentasikan dengan baik di sini: http://static.lightwave3d.com/sdk/2018/html/filefmts/lwo3.html

Saya sering melihat ukuran file LWO sekitar 1/10 dari OBJ, dan formatnya dapat berisi data morph dan sejumlah fitur lain yang tidak diizinkan oleh OBJ. Juga banyak model yang disediakan NASA hanya dalam format LWO https://nasa3d.arc.nasa.gov/search/lwo/model

Jika saya tahu apa yang saya lakukan, saya akan mencoba untuk menjalankan ini, tetapi menulis loader melampaui apa pun yang telah saya lakukan sebelumnya.

FWIW ada parser LWO di sini: https://github.com/marcbizal/lwo-parser ... secara hipotesis itu akan menjadi awal yang baik untuk pemuat atau pengonversi, tetapi sayangnya sepertinya tidak mendukung versi tertentu format LWO yang digunakan NASA. Ia mengharapkan LWOB (biner?) Tetapi string versi ajaib pada model NASA yang saya coba adalah LWO2. Jika Anda menemukan parser yang berfungsi yang ditulis dalam beberapa bahasa selain JS, mungkin akan lebih mudah untuk menulis konverter ke sesuatu yang didukung oleh three.js, daripada mencoba menulis parser baru di JS.

Hai, jadwal saya banyak berubah sehingga tidak ada waktu untuk mengerjakan .ifc loader untuk three.js. Mungkin bagus untuk mengambil kontak orang ini: https://github.com/mrdoob/three.js/issues/9764

Maaf aku tidak menyadarinya

Saya sedang membuat loader "LWO 2". Namun, saya pikir tidak ada permintaan dan saya tidak menyelesaikannya.

http://adrs2002.com/sandbox/lwoLoader/lwoTest.html
https://github.com/adrs2002/threeLwoLoader

Saya harap ini akan membantu untuk sesuatu.

Halo semua,

Saya melihat bahwa M2 ada dalam daftar.

Ini menarik bagi saya karena saya ingin mewujudkan karakter, objek, NPC, dan penampil item dengan Tiga.

Berkaitan dengan M2 adalah sinonim BLP2 (Blizzard Picture File) yang mirip dengan DDS S3 Texture Compression yang digunakan.

Saya telah menemukan sejauh ini:

.m2 = https://github.com/vjeux/jsWoWModelViewer

.blp

Saya sendiri mencoba menambahkannya, tapi saya masih sedikit terlalu berpengalaman dengan keseluruhannya :D

@adrs2002 LWOLoader akan sangat bagus! Apakah Anda ingin melakukan PR dengan apa yang Anda miliki?

Saya sendiri mencoba menambahkannya, tapi saya masih sedikit terlalu berpengalaman dengan keseluruhannya :D

Luangkan waktu Anda

Seorang LWOLoader akan sangat bagus!

Saya menulis pemuat LWO3 beberapa bulan yang lalu, bekerja untuk onthez.com.
Kami menyepakati periode eksklusivitas kemudian kami akan berkontribusi di sini. Mudah-mudahan sekitar akhir Februari.

Saya pikir @jds580s adalah Justin dari z, mungkin dia bisa memberikan ide yang lebih baik kapan kita bisa menambahkannya di sini.

@mrdoob @looeee
Saya pikir komit LWO2 loader tidak diperlukan jika LWO3 loader looeee akan dikomit.
Format LWO3 karena berisi semua keberhasilan format LWO2.

LWOLoader telah mendarat! 😁

16011

Adakah pembaruan pada pemuat IFC? Akan menyenangkan untuk pemandangan konstruksi!

Saya mencoba IFLoader dan bagaimana mengatakannya... Ini tidak mungkin berhenti! Seluruh kode yang diperlukan untuk dapat mengurai dengan benar format IFC adalah sekitar 650 file kelas. (Saya tahu itu karena saya melakukannya). Loader akan menjadi 5 kali lebih besar dari library Threejs.

Tentang spesifikasi jika Anda ingin menerapkannya sendiri: http://standards.buildingsmart.org/IFC/RELEASE/IFC4_1/FINAL/HTML/

Saya bisa merilis kode saya, dan beberapa bantuan akan keren. Tapi jangan berharap untuk melihat loader ini di ThreeJs sebelum beberapa saat...

Saya bisa merilis kode saya, dan beberapa bantuan akan keren. Tapi jangan berharap untuk melihat loader ini di ThreeJs sebelum beberapa saat...

Kenapa tidak?

BTW: Saya baru-baru ini berbicara dengan seorang rekan dan dia memberi tahu saya bahwa IFC didasarkan pada format STEP yang terkenal di komunitas CAD. Secara umum, STEP sangat sulit untuk diuraikan dan Anda perlu menulis pengurai khusus yang mirip dengan VRMLLoader . Namun, file IFC juga dapat diekspresikan dalam XML (mereka memiliki ekstensi .ifcxml ). File seperti itu akan lebih mudah ditangani (lihat 3MFLoader atau ColladaLoader ) sehingga loader dapat fokus pada pembuatan data geometri yang sebenarnya. Mungkin lebih mudah untuk membuat loader yang hanya mendukung .ifcxml di awal?

@mrdoob , @Mugen87

Kenapa tidak?

Karena

Loader akan menjadi 5 kali lebih besar dari library Threejs.

dan saya menggunakan Class dengan fitur javascript terbaru.

IFC didasarkan pada format STEP yang dikenal baik di komunitas CAD.

Ya, suatu hari saya akan menunjukkan kepada Anda apa yang saya lakukan dengan Threejs ;)

File IFC juga dapat diekspresikan dalam XML (memiliki ekstensi .ifcxml).
...
Mungkin lebih mudah untuk membuat loader yang hanya mendukung .ifcxml di awal?

Parsing jelas bukan masalah besar. Tapi Generasi geometri adalah ! Karena format ifc tidak mengandung geometri apapun. Tetapi gunakan interpolasi/interaksi antar objek untuk menentukan geometri akhir.

Bagaimanapun, jika Anda menginginkannya, mungkin Anda harus membuat cabang khusus untuk ini sebelum mengambil keputusan apa pun. Hanya untuk melihat hal BESAR.

Loader akan menjadi 5 kali lebih besar dari library Threejs.

Ya, jika loader tidak begitu kompak seperti yang lain, mungkin lebih baik untuk menempatkan kode ke dalam repositori terpisah.

@Itee Adakah rencana untuk merilis IFCLOADER dalam waktu dekat?
Akan tertarik untuk melihat hal BESAR

Tidak menyadari ada orang yang mau menyumbangkan dan memeliharanya...

Saya menggunakan konverter IFC IfcOpenShell dengan senang hati, itu membuat geom dan bahan yang bagus, dapat melakukan Collada DAE (yang kami gunakan untuk mengimpor ke Unity), IIRC OBJ dan ada glTF saat ini juga

Saya menggunakan konverter IFC IfcOpenShell dengan senang hati, itu membuat geom dan bahan yang bagus, dapat melakukan Collada DAE (yang kami gunakan untuk mengimpor ke Unity), IIRC OBJ dan ada glTF saat ini juga

Tetapi apakah Anda menggunakan data IFC seperti Buildingstorey, Site, dll?
Tidak diragukan lagi, web akan lebih baik jika dapat mengurai IFC dan bukan server klien menyebalkan yang dihadapi semua orang.

Saya telah mencoba ini baru-baru ini. Saya telah berhasil menghasilkan beberapa geometri
image

Tetapi sebenarnya harus ini:
image

Hal mendasar yang salah adalah penempatan dan rotasi sebenarnya di sini dan matematika 3D saya hampir tidak ada (saya tidak punya kesabaran).

Padahal ada banyak kelas dalam skema IFC. Ukuran file akhirnya dapat dikurangi dengan menggunakan antarmuka TypeScript dan menggunakan fungsi untuk mencari dan menerapkan argumen dari setiap 'LANGKAH' dalam file.

Intinya, untuk Loader IFC; Saya tidak tahu apakah kita memiliki jenius Matematika 3D, karena itu akan memecahkan banyak masalah dalam menguraikan hubungan matematika saat membangun geometri.

Tetapi apakah Anda menggunakan data IFC seperti Buildingstorey, Site, dll?

Ya, melalui layanan konversi Tridify, yang juga menggunakan IfcOpenShell (saya juga menggunakannya secara lokal) untuk geom. Saya pikir metadata itulah yang mudah diuraikan.

Generasi geometri memang nontrivial. Jika Anda ingin melakukannya di browser, mungkin Anda dapat mengkompilasi IfcOpenShell ke WebAssembly dan menggunakannya sebagai perpustakaan dari Javascript Anda. Ini C++ biasa tanpa GUI atau apa pun, hanya perpustakaan yang memiliki antarmuka baris perintah secara terpisah, jadi mungkin juga mudah untuk membangun untuk web. Parsing IFC agak berat sehingga mendapatkan kinerja WASM dan jejak memori yang rendah mungkin bagus. Dan lib melakukan pekerjaan yang bagus dalam menciptakan geom.

@MaartenBreeedveld Saya dapat membantu dengan matematika, untuk dasar teoretis saya tidak ragu dan saya memiliki beberapa pengalaman dengan ifc, sebenarnya mungkin ada beberapa transformasi dalam seri yang diperlukan untuk koordinat dunia. Untuk implementasi di three.js mungkin bisa dioptimalkan.

Tetapi apakah Anda menggunakan data IFC seperti Buildingstorey, Site, dll?

Ya, melalui layanan konversi Tridify, yang juga menggunakan IfcOpenShell (saya juga menggunakannya secara lokal) untuk geom. Saya pikir metadata itulah yang mudah diuraikan.

Generasi geometri memang nontrivial. Jika Anda ingin melakukannya di browser, mungkin Anda dapat mengkompilasi IfcOpenShell ke WebAssembly dan menggunakannya sebagai perpustakaan dari Javascript Anda. Ini C++ biasa tanpa GUI atau apa pun, hanya perpustakaan yang memiliki antarmuka baris perintah secara terpisah, jadi mungkin juga mudah untuk membangun untuk web. Parsing IFC agak berat sehingga mendapatkan kinerja WASM dan jejak memori yang rendah mungkin bagus. Dan lib melakukan pekerjaan yang bagus dalam menciptakan geom.

Kami sudah mencoba ini di masa lalu. Tetapi versi kompilasi WASM adalah unduhan 40MB, saya kira ini karena semua pustaka yang direferensikan di ifcConvert.

@Jesusbill , Luar Biasa! Saat ini, saya tidak punya waktu untuk mengerjakan proyek ini. Tapi jika tidak apa-apa, aku akan kembali padamu.

Luar biasa! Saat ini, saya tidak punya waktu untuk mengerjakan proyek ini. Tapi jika tidak apa-apa, aku akan kembali padamu.

Kedengarannya bagus @MaartenBreeedveld

Menambahkan VDBLoader ke daftar. https://www.openvdb.org/

Ada ide tentang IFCLOADER? @mrdoob

Tidak

Mengenai pemuat 3dm: Saya sudah mulai mengerjakan ini sekarang karena perpustakaan openNURBS telah dikompilasi menjadi wasm berkat emscripten ( rhino3dm ).

Saya sedang mengerjakan ini di sini dan memiliki mesh, breps, ekstrusi, pointclouds, material, lapisan, dan dukungan grup mulai dan berfungsi.

image

Dokumen relevan:

Saya berharap untuk mengirimkan PR yang memiliki dukungan untuk lebih banyak jenis objek kapan-kapan _soon_. Saya harus mengakui bahwa saya memiliki sedikit pengalaman dengan pekerja web, dan saya bersandar pada contoh draco dan basis loader. Semoga #18234 menyederhanakan ini sedikit.

id kami sudah menambahkan dukungan threejs langsung ke perpustakaan rhino3dm.js seperti di sini dan di sini .

Sunting: perbarui tautan untuk menunjuk ke garpu org McNeel.

Kami dapat memeriksa yang ini;)
image

Apakah halaman ini membantu?
0 / 5 - 0 peringkat