Apakah ada spesifikasi standar untuk representasi grafik 3D?

12

Saya membaca buku tentang grafik komputer , dan pada beberapa titik, ini menunjukkan model 3D, dibuat dari file dat.

Berikut adalah beberapa aturan untuk pembuatan file dat:

  • Terbuat dari daftar posisi / wajah simpul
  • Ditulis berlawanan arah jarum jam
  • Wajah diakhiri dengan titik (.)
  • Pecahan juga dapat diterima

Saya ingin tahu apakah ini standar, dan jika tidak, apa cara standar untuk mendefinisikan objek 3D.

Juga, jika ada spesifikasi, siapa yang mendefinisikannya dan di mana menemukannya?

Daniel
sumber

Jawaban:

8

Ketika berbicara tentang format file, kita berbicara tentang mempertahankan beberapa data yang terkait dengan model / geometri 3D. Tidak ada standar universal pada format file untuk geometri 3D yang bertahan. Hanya ada beberapa format yang lebih dominan daripada yang lain.

Seperti halnya dengan format file gambar, PNG dan JPEG adalah format yang paling umum di luar sana saat ini, tetapi tidak ada kesepakatan universal antara aplikasi untuk menggunakan satu atau yang lain. Setiap aplikasi menggunakan yang paling cocok untuk tujuannya.

Hal yang sama terjadi dengan format file yang menyimpan data 3D. Setiap perangkat lunak pemodelan 3D umumnya akan memiliki satu atau satu set format yang disukai. Sebagian besar sebenarnya mendefinisikan format khusus yang hanya berfungsi dengan versi spesifik alat. Ini bisa terjadi karena berbagai alasan, dari menyederhanakan cara kerja aplikasi, atau membuat pemuatan file lebih cepat, hingga mengikat pengguna ke alat yang diberikan dengan sengaja.

Ini .datformat yang Anda menggambarkan adalah format khusus yang dibuat oleh penulis buku, yang mungkin dirancang dengan kesederhanaan dalam pikiran. Tampaknya menjadi file teks yang mirip dengan format OBJ Wavefront , yang pada gilirannya adalah format yang sangat populer untuk menyimpan geometri statis, meskipun agak ketinggalan zaman sekarang. Bisa dikatakan .OBJformatnya adalah .BMPformat model 3D.

Format model 3D populer lainnya termasuk:

Dan banyak lagi. Penjelasan lebih umum di sini .

Juga perhatikan bahwa saya katakan di awal bahwa ini adalah format untuk menyimpan / mempertahankan model 3D atau geometri pada penyimpanan offline. Itu tidak berarti (dan biasanya tidak demikian) bahwa aplikasi yang menggunakannya akan menyimpan data secara internal di memori menggunakan tata letak yang sama dengan file. Biasanya, jenis data ini akan mengalami banyak pemrosesan setelah dimuat dari file hingga, misalnya, ditampilkan di layar.

Glampert
sumber
1
"Biasanya, data seperti ini akan mengalami banyak pemrosesan setelah dimuat dari file hingga, misalnya, ditampilkan di layar." seperti gambar ditransformasikan ke array piksel sebelum didorong pada layar terlepas dari apa format aslinya. (kompresi perangkat keras meskipun)
ratchet freak
@ scratchetfreak tetapi tidak semua penggunaan format 3D berakhir di layar.
joojaa
BMP, sebagai format biner, bukan mitra yang baik untuk OBJ. Pencocokan yang lebih baik adalah XPM , yang tekstual.
Ruslan
5

Tidak ada format standar untuk model 3D. Beberapa yang umum tercantum dalam jawaban glampert, lebih banyak dapat ditemukan dalam jawaban SE ini .

Jika Anda mendesain format Anda sendiri untuk keperluan Anda sendiri, (hal yang cukup umum dilakukan, sebenarnya) itu adalah langkah pertama yang baik untuk melihat bagaimana Anda menggunakan data model Anda. Misalnya, jika Anda berfokus pada rendering, Anda dapat menggunakan format yang diharapkan oleh perpustakaan grafis. Jika Anda ingin mengurangi waktu muat perangkat lunak sebanyak mungkin, mengurangi jumlah penguraian dan pemrosesan yang harus Anda lakukan dapat membantu. Utilitas sederhana yang dapat menampilkan file dalam format yang mesin Anda harapkan akan berarti Anda cukup memetakan file ke dalam memori dan kemudian mengirimkan pointer ke perpustakaan grafik Anda.

Di sisi lain, jika rendering bukan urusan utama Anda dan pengeditan lebih penting bagi Anda, Anda mungkin mempertimbangkan format yang lebih sesuai untuk diedit, seperti edge bersayap . Menggunakan format model tujuan umum mungkin sesuai dengan tujuan Anda di awal proyek, tetapi pada akhirnya ada banyak hal yang dapat Anda lakukan dengan model 3D dan setiap format memiliki kelebihan dan kekurangannya sendiri, sehingga Anda dapat memilih salah satu yang paling sesuai untuk Anda. .

Jorge Rodriguez
sumber
4

Tidak ada standar tunggal yang mendefinisikan penyimpanan model 3D. Grafik API hanya peduli tentang segitiga, yang ditentukan oleh simpul dan indeks yang menunjukkan simpul mana yang membentuk segitiga.

Banyak perusahaan telah menciptakan format model mereka sendiri dengan berbagai fitur dan tujuan. Salah satu yang paling sederhana adalah format .obj (Wavefront Object). Yang berisi daftar posisi titik, normal dan koordinat tekstur dan daftar indeks yang membentuk segitiga. Ini juga berisi bahan, dengan beberapa sifat dasar seperti tekstur, warna menyebar dan specular.

Format model yang lebih maju, seperti .fbx (FilmBox) yang digunakan oleh Autodesk berisi informasi tambahan yang diperlukan oleh perangkat lunak pemodelan. Ini mungkin termasuk tulang, hierarki dan bahkan lebih banyak properti verteks yang digunakan untuk menguliti dll. Jadi ada "standar", tetapi mereka tidak benar-benar bersatu karena setiap program mungkin memerlukan informasi yang berbeda. Tetapi wavefront adalah pilihan yang sangat baik, karena banyak aplikasi pemodelan dapat mengekspornya dan mudah untuk menulis (menemukan) pengimpor.

Maurice Laveaux
sumber
3

Seperti jawaban lain yang disebutkan, ada beberapa format yang bersaing untuk menyimpan data 3D.

Namun, satu format spesifik telah muncul sejak pertanyaan ini diajukan, yang memiliki banyak karakteristik yang Anda harapkan dari "standar": format glTF .


glTF adalah standar 3D yang diterbitkan oleh Khronos Group (organisasi di belakang OpenGL dan Vulkan), yang bertujuan untuk menebus kekurangan di Collada.

Keuntungan utamanya adalah:

  • Berbasis JSON, yang membuatnya sangat mudah untuk mengurai, membuat serial, membaca, dan mengirim melalui jaringan.

  • Ada sedikit ambiguitas atau redundansi dalam standar (meskipun ada beberapa *). Unit, wenangan, tanda-tanda koordinat tekstur, dll semua standar; semuanya selalu berbasis indeks, yang berarti tidak ada redundansi data. Ini membuatnya sangat mudah untuk menulis importir.

  • Dokumentasinya sangat bersih dan lengkap.

  • Tata letak data didasarkan pada alur kerja OpenGL / WebGL, yang berarti bahwa model yang diimpor dapat digunakan sebagai data di dalam mesin dengan sedikit pipa ledeng.

  • Standarnya adalah Open Source, dan spesifikasinya di-host di Github. Itu berarti standar akan selalu tersedia, dapat digunakan secara gratis, dan proses pengembangan dapat dilihat oleh semua orang. Dengan oposisi, masa depan standar sumber tertutup ditentukan oleh kepentingan pribadi, yang pada dasarnya berbahaya.

  • glTF didukung oleh banyak raksasa industri melalui Khronos (Adobe, Google, Microsoft, Mozilla, Unity); itu dapat diekspor oleh Blender (mengekspor dari Maya secara resmi tidak didukung), dan diimpor oleh Unreal, Unity dan Godot.

Lihat juga:

* Saya cukup yakin tangen variabel wenangan tidak ada gunanya.

Narrateur du chaos
sumber
2

Untuk menambah jawaban lain, sebenarnya ada dua jenis format, menengah dan runtime. Format perantara (contoh: COLLADA) lebih verbose / lebih lambat dan dikonversi antara alat pada akhirnya menjadi format runtime khusus yang dioptimalkan untuk aplikasi / perangkat keras tertentu. Aplikasi sederhana yang tidak terlalu peduli dengan kinerja dapat langsung menggunakan format perantara.

Mesin Survival
sumber