Bagaimana cara Mikktspace bekerja untuk menghitung ruang singgung selama pemetaan normal?

8

Semakin lama industri 3D mengadopsi standar Mikktspace untuk menghitung ruang singgung untuk pemetaan normal dan efek lainnya yang mengandalkan perhitungan akurat dan konsisten ruang singgung dari satu aplikasi ke aplikasi lainnya. Blender, xNormal, Unity, Substance Painter dan Unreal Engine hanyalah beberapa yang dapat saya pikirkan yang sekarang menggunakan Mikttspace. Saya pribadi mencoba untuk mengode ulang proyek saya sendiri untuk mengadopsi standar ini juga.

Tetapi ada sedikit sumber daya tentang cara kerja Mikktspace karena ini adalah hal yang relatif baru. Sedikit sumber daya yang ada, biasanya langka dalam perincian dan sangat teknis, tidak ramah pengguna untuk memahami, atau menganggap pembuat kode memiliki tingkat pengetahuan tertentu yang sedikit di atas rata-rata pemula yang baru memulai yang membutuhkan hal-hal yang dijelaskan dengan lebih cermat.

Saya mencari penjelasan yang jelas tentang bagaimana Mikktspace bekerja dan bagaimana mengimplementasikannya, dengan penjelasan sederhana tentang bagaimana matematika dan kode bekerja dengan cara yang tidak terbatas hanya pada satu bahasa.

Sebagai contoh, misalkan seorang programmer memiliki objek mesh, dengan indeks simpul, masing-masing dengan posisi, koordinat normal dan UV, dan daftar segitiga yang merujuk pada indeks itu.

Sebagai contoh:

  • Vertex: {XYZ NX NY NZ ST}
  • VertexIndex: Daftar Vertex
  • Triangle: {V1 V2 V3} (dalam urutan belitan yang benar untuk arah normal)
  • TriangleList: Daftar Triangle

Secara sederhana, bagaimana cara menghitung per titik vektor vektor tangen (TX TY TZ) dan vektor bitangent (BX BY BZ) untuk setiap titik dengan cara yang sesuai dengan Mikktspace?

Grady
sumber
Apakah ini terlalu sulit? Siapa pun boleh mencobanya jika mereka merasa bisa memberikan jawaban. Bahkan hanya penjelasan singkat tentang apa yang secara spesifik berbeda dari teknik Mikktspace dengan teknik umum perhitungan ruang singgung yang akan dilakukan?
Grady

Jawaban:

3

Ada lebih banyak kode untuk proyek itu:
https://github.com/teared/mikktspace-for-houdini/tree/master/source

Anda juga dapat menemukan informasi tentang peta normal ruang singgung di sini:
https://archive.blender.org/wiki/index.php/Dev:Shading/Tangent_Space_Normal_Maps/ http://image.diku.dk/projects/media/morten. mikkelsen.08.pdf

Informasi lain tentang tanget space normal maps (Mikktspace) tidak terlalu jelas.

Penjelasan singkat tentang metode ini sangat panjang dan oleh karena itu saya telah menyertakan dua tautan di atas untuk merujuk pada penjelasan yang baik tentang peta normal ruang singgung.

Catatan: Blender juga memberikan saran mengapa tidak menggunakan metode ini.

Saya harap ini membantu :)

Tripl3Fac3
sumber
1
Saya pikir Anda harus meletakkan beberapa informasi (pengantar semacam) selain dari tautannya saja. Mereka tidak terlalu membantu jika suatu hari mereka menjadi 404.
Aistis
Sangat benar, ide bagus Aistis. Tetapi Anda juga dapat mengunduh situs web jika mau.
Tripl3Fac3
Saya menerima jawaban ini sebagai jawaban yang benar karena Tripl3Fac3 telah sangat membantu saya secara pribadi, dan informasi yang Tripl3Fac3 berikan di tautan tidak meringkas semua sumber daya kolektif terbaik mengenai hal ini seperti yang berlaku saat ini.
Grady
1
Tautan pdf berfungsi dengan baik untuk saya @Fire
Tripl3Fac3
1
Jawaban ini akan segera dihapus pada stack overflow. Sangat mengejutkan belum dihapus di sini. Ini bukan jawaban. Ini beberapa tautan. Tautan dapat dibiarkan dalam komentar atau digunakan untuk menambah jawaban tetapi tanpa penjelasan yang sebenarnya dalam pertanyaan itu sendiri itu bukan jawaban dan harus ditandai dan dihapus sebagai "bukan jawaban"
gman