Three.js: Проверка магического заголовка RGBELoader

Созданный на 5 дек. 2020  ·  3Комментарии  ·  Источник: mrdoob/three.js

Опишите ошибку

RGBELoader проверяет наличие магического токена в начале файла:
https://github.com/mrdoob/three.js/blob/1e161eaeedee694861ec480f04b632443f64dbb4/examples/jsm/loaders/RGBELoader.js#L149 -L154

У меня есть файл с указанным заголовком:
image
Однако загрузчик не распознает магический жетон.

Вот что такое содержимое line при выводе на консоль:
image

Теперь любопытно, если вы попытаетесь скопировать это и снова проверить соответствие:
image
Все выглядит хорошо, однако, если вы попробуете это напрямую на line , вы увидите следующее:
image

Проблема в том, что в конце стоит 
 (возврат каретки):
image
image

Немного дополнительно:
image
Похоже, что и 13, и 10 интерпретируются функцией приема fget как NEW_LINE char.

Воспроизводить

  • не могу поделиться файлом в данный момент

Код


Живой пример

  • не могу поделиться файлом в данный момент

Ожидаемое поведение

Я не уверен, я считаю, что это следует рассматривать как действительный заголовок. Эта проблема не возникала при использовании r107, поэтому это похоже на ошибку регрессии. Но, возможно, кто-то, более знакомый со спецификацией RGBE, сможет уточнить.

Скриншоты

см. выше

Платформа:

  • Устройство: [Рабочий стол]
  • ОС: [Windows]
  • Браузер: [Chrome]
  • Версия Three.js: [r ??? - да, 123]
Bug Loaders

Самый полезный комментарий

Я не могу найти в Интернете ничего, что заявляет, что байты, следующие после #?RADIANCE должны быть ограничены. Эта ссылка на спецификацию, кажется, указывает, что достаточно, чтобы первые байты были #?RADIANCE и что новая строка не обязательна.

Замена magic_token_re с этого

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

к этому

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

похоже на исправление.

Все 3 Комментарий

Я не могу найти в Интернете ничего, что заявляет, что байты, следующие после #?RADIANCE должны быть ограничены. Эта ссылка на спецификацию, кажется, указывает, что достаточно, чтобы первые байты были #?RADIANCE и что новая строка не обязательна.

Замена magic_token_re с этого

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

к этому

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

похоже на исправление.

@ Уснул , ты не против протестировать это исправление?

Да, это работает.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги