Появляются странные линии (швы) при наложении текстуры на модель threejs

Я визуализирую модель, импортированную из файла .ctm, в threejs v71. Затем я добавляю текстуру, используя MeshBasicMaterial с картой.

Исходная модель была сделана в Agisoft Photoscan, экспортирована как .obj, а затем преобразована в формат OpenCTM с помощью официальной программы просмотра OpenCTM. Сама модель .ctm находится здесь.

Выглядит правильно, за исключением того, что на текстуре появляются странные «швы», когда я загружаю .ctm. .Obj отлично загружается в three.js без швов. Что это такое и как от них избавиться?

Вот скриншот:

введите описание изображения здесь

Этих "швов" нет в файле текстуры:

введите описание изображения здесь

ОБНОВЛЕНИЕ: я заметил, что швы также видны при просмотре .ctm в средстве просмотра ctm, так что это, вероятно, проблема преобразования OpenCtm, а не проблема загрузки threejs.


person foobarbecue    schedule 17.04.2015    source источник


Ответы (3)


К моему огорчению, похоже, что это давняя ошибка в OpenCTM.

Другие ответы не должны воспроизводить ситуацию, описанную в вопросе.

Изменить: теперь я полностью понимаю эту проблему и знаю способ ее решения. Проблема в том, что большинство программ (Photoscan, Blender) имеют вершины «на цикл» вместо фактических текстур «на вершину». Это просто означает, что когда вершина является общей для двух полигонов, для этой вершины может быть несколько UV-координат. CTM может иметь только одну UV-координату на вершину, и это вызывает проблемы на стыках текстуры.

Мой обходной путь в блендере:

  • Швы с островов
  • Выберите кромку на шве, выберите аналог -> шов. Теперь следует выделить все швы.
  • Сетка -> Края -> Разделение ребер
  • Экспорт в .obj, используйте ctmviewer.exe для импорта и экспорта в .ctm.

Если приглядеться, швы все еще видны, но разноцветные полосы уже не видны.

person foobarbecue    schedule 16.03.2016
comment
Тогда видимые швы, скорее всего, коснутся жесткого края. Если это фактическое разделение кромок, вы также получите две независимые нормали в этой точке, что приведет к образованию шва при затенении. - person pailhead; 23.03.2017

У меня была такая же проблема с моей моделью / текстурой Agisoft Photoscan, поэтому я открыл текстуру в Photoshop и заметил, что у нее есть прозрачность между всеми участками текстуры. Я заполнил все пробелы, используя заливку с учетом содержимого, и сохранил текстуру как .tif без слоев. Это решило проблему для меня.

person Albin Nilsen    schedule 07.01.2016
comment
В моем файле текстуры нет прозрачности. Кажется, вы описываете другую проблему (вы используете CTM?). - person foobarbecue; 16.03.2016

Или вы можете просто удалить альфа-канал из файла изображения текстуры (или использовать формат JPG при экспорте).

person dead_PyKto    schedule 26.01.2016
comment
При экспорте я использую формат JPG. Кажется, вы описываете другую проблему (вы используете CTM?). - person foobarbecue; 16.03.2016