Корочи хрень полная этот LSCM. Я на какой-то демке на гитхабе находил в качестве примера картинку, где LSCM ловко наложил текстуру на лицо.
Так вот подтверждаю - для морд раскладку он генерирует действительно просто идеально, лучше не придумаешь. В остальном у него ровно те же самые проблемы. Если будет цилиндрический объект - тут же настанет жопа.
Пример - та же самая морда с рогами. Морда отлично, рога вытянулись в острые треугольники. Его конечно можно и дальше ограничивать, например по углу от базовой нормали или по реальным текскордам, но тут мы столкнёмся с той же самой траблой - если так ограничивать, то LSCM и вовсе не нужен, я обычной трипланаркой управлюсь. Но в том-то и смысл, что вот у нас к примеру раковина и хочется для нее иметь нормальную развертку.
Так ладно раковина, а если к примеру унитаз? Это ж вообще капец!
Есть еще геодезическая проекция, она используется, например для проекции нашей и так уже плоской земли на другую плоскость.
Вот вероятно мне надо копать в эту сторону. Тем более, как я понял, что его мелкософт юзает для своего UVAtlas из D3DTools. Я конечно позавчера ковырнул его сорцы, но там тихий ужас. Надо найти какое-то чистое решение - примерчег.
Добавлено 08-12-2020 в 18:35:
Я чёт совсем забыл, что в комплекте с OpenNL идт демонстрационные модельки для теста LSCM. А щас глянул - все модельки, это чьи-то морды.
пять моделей разных морд. Зашибись вообщем. И разумеется ни у одной морды нету рогов.
Изучал этот микрософтовский UVAtlas. Углубился. Во первых там тоже нет серебряной пули. Он пытается сперва сделать тривиальную параметризацию. Потом планарную. Потом строит геодезическую изомапу.
Потом внимание! проверяет, не является ли тело цилиндром или бараньим рогом. И тут внимание! вызывает для параметризации цилиндра чертову функцию, которая просто делит его на два куска. Я это как увидел, у меня уж руки опустились... А бараний рог сверху проецируется, в круг.
Полное дерьмо. Из этого следует нехитрый вывод - изомапа с замкнутыми объектами тоже не дружит. И второй вывод - надо к каждому типу объекта свой подход. Иначе просто никак.
То есть вот я нашёл тут гитхаб чувачка который занимался параметризацией. Дипломная работа у него штоле: https://github.com/alecjacobson/geo...arameterization
так вот там просто до чёрта вариантов. Спрашивается, если бы было ультимативное решение, ктобы всё это тестировал и изобретал?
Добавлено 08-12-2020 в 21:58:
Мало этого. Там еще и общий метод состоит из:
Landmark Merging by geodesic distance
если не прокатит, то
LSCM
далее
Barycentric parametrization
spectral clustering
и наконец если не прокатит - разбить по фейсово.
Добавлено 08-12-2020 в 21:59:
А я ещ думал, да чтож либа такая громадная, да чому там столько кода.
Так, кажется я кое-что понял. Мне необходимо посчитать халф-эджы и boundaries. Может и LSCM нормально заработает.
Вобще складывается ощущение, что это тема нормально нигде не разобрана, есть только отдельные статьи, а общего обзора, сравнения и принципов нету.
Вышел новый Unigine и в него добавили лайтмаппер. Я помню, как Запрягаев в своё время орал - никаких лайтмап, только динамика. А как его ушли, так сразу и добавили. Интересное кино.
Дядя Миша
Поясни один момент. Если карта собрана из smd, то она обязательно должна лежать внутри брашевого скайбокса, или же замкнутый smd сам по себе может сформировать уровень без ликов?
Чем дальше я лезу в дебри этого микрософтовского параметризатора, тем больше укрепляется впечатление, что это какое-то адовое дерьмо.
Ну вот судите сами. Первое, что он пытается сделать - это надежда на то, что поверхность - один сурфейс и её можно параметризовать абстрактным треугольником или что-то вроде этого. Следующая проверка - что это нечто вроде плоскости. Идеальный кейс на самом-то деле. Тут не надо никакого СЛАУ, тривиальная проекция всегда даёт отличный результат.
Собственно единственный кейс, который всегда даёт что-то валидное с минимальными усилиями. Ну и дальше он, прямо как в сталкере пытается вычесть нормаль из первого случайно выбранного фейса с остальными нормалями (собсно единственное отличие как раз таки в том, что он вычитает, а не складывает). Если по результатам такого вычитания длина нормали опасно приблизилась к нулю (т.е. меш завернулся сам на себя, по типу цилиндра), то ой-ой, нам это не годится, стоп работа. Однако прикол в том, что планарная параметризация особенно с учётом выполненной подготовительной работы, по разделению на субмешы, раздельные потом по границам, вероятность того, что такое наложение окончится фейлом, ну процентов может быть 10-15. Как раз вот для всяких там цилиндров или лонгхорнов. Проще говоря - для меша, который совсем на себя завернулся.
Ну есть конечно еще одно условие - чтобы не было нулевой площади у треугольников, но это ведь вырожденный случай.
То есть меня не покидает ощущение, что все эти eigen И решение слау там чисто для галочки и охватывают какие-то совсем уж узкоспециальные мешы, которые к тому же еще и детектируются особым образом. А на большинство ложиться обычная планарка. Просто я до последнего в это не хотел верить. Но сейчас ради интереса всё же проверю. И посмотрим.
Добавлено 14-12-2020 в 13:01:
PS. для тех кто в танке поясню - параметризация цилиндра это наипростейшая операция, вообще без матана, единственная сложность - это убедиться, что перед нами реально цилиндр.
Дядя Миша
Ещё вопрос. Скажи, возможно ли в рамках одной карты иметь несколько 3d-скаев, которые рендрятся в зависимости от локации в зависимости от локации?