Three.js: Pemeriksaan header ajaib RGBELoader

Dibuat pada 5 Des 2020  ·  3Komentar  ·  Sumber: mrdoob/three.js

Jelaskan bugnya

RGBELoader memeriksa token ajaib di awal file:
https://github.com/mrdoob/three.js/blob/1e161eaeedee694861ec480f04b632443f64dbb4/examples/jsm/loaders/RGBELoader.js#L149 -L154

Saya memiliki file yang memiliki header tersebut:
image
Loader tidak mengenali token ajaib itu.

Inilah yang line konten ketika dicetak ke konsol:
image

Sekarang bagian yang menarik di sini adalah jika Anda mencoba menyalinnya dan memeriksa kecocokannya lagi:
image
Semua terlihat bagus, namun, jika Anda mencobanya langsung di line , Anda akan melihat ini:
image

Masalahnya adalah ada 
 di akhir (pengembalian kereta):
image
image

Sedikit ekstra:
image
Sepertinya 13 dan 10 ditafsirkan sebagai karakter NEW_LINE oleh fungsi penyerapan fget

Untuk Mereproduksi

  • tidak dapat membagikan file saat ini

Kode


Contoh hidup

  • tidak dapat membagikan file saat ini

Perilaku yang diharapkan

Saya tidak yakin, saya yakin ini harus diperlakukan sebagai tajuk yang valid. Masalah ini tidak terjadi saat menggunakan r107, jadi sepertinya bug regresi. Tetapi mungkin seseorang yang lebih akrab dengan spesifikasi RGBE dapat menjelaskan.

Screenshot

Lihat di atas

Peron:

  • Perangkat: [Desktop]
  • OS: [Windows]
  • Browser: [Chrome]
  • Versi Three.js: [r ??? - ya, 123]
Bug Loaders

Komentar yang paling membantu

Saya tidak dapat menemukan apa pun di internet yang menyatakan byte yang muncul setelah #?RADIANCE harus dibatasi. Referensi pada spesifikasi ini tampaknya menunjukkan bahwa itu cukup untuk byte pertama menjadi #?RADIANCE dan baris baru tidak perlu mengikuti.

Mengubah magic_token_re dari ini

magic_token_re = /^#\?(\S+)$/

untuk ini

magic_token_re = /^#\?(\S+)/

sepertinya perbaikan.

Semua 3 komentar

Saya tidak dapat menemukan apa pun di internet yang menyatakan byte yang muncul setelah #?RADIANCE harus dibatasi. Referensi pada spesifikasi ini tampaknya menunjukkan bahwa itu cukup untuk byte pertama menjadi #?RADIANCE dan baris baru tidak perlu mengikuti.

Mengubah magic_token_re dari ini

magic_token_re = /^#\?(\S+)$/

untuk ini

magic_token_re = /^#\?(\S+)/

sepertinya perbaikan.

@Usnul apakah Anda keberatan menguji perbaikan itu?

Ya, ini berhasil.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat