Показать сообщение отдельно
Старый 06.05.2016, 18:56   #422
NB79
Местный
 
Регистрация: 12.07.2015
Сообщений: 417
По умолчанию

Цитата:
Сообщение от jabo Посмотреть сообщение
Где могла бы хранится эта информация ?
Не где, увы. Вроде уже рассказывал, но повторю что с нормалями при конвертации в Иловский msh происходит.

Итак. В Максовской/Блендеровской модели информация о группах сохраняется в файле (в 3ds, obj и т.д.). Соответственно, когда мы загружаем модельку, то имеем эту информацию в наличии и у нас нет проблем.

Что с этими группами происходит? В соответствии с параметрами группы нормали при загрузке и всех манипуляциях с группами пересчитываются, ну и за счёт этого мы можем сглаживать рёбра и т.д. Вам это всё знакомо и понятно.

Но! При конвертации в Иловский меш пишутся уже предрассчитанные нормали! Во-первых, в этом случае загрузка более быстрая, ибо нам не надо их пересчитывать. А во-вторых - в игре не предполагается модификация моделей и информация о группах игре вообще не нужна. Вот по этому с группами сглаживания при обратном экспорте всё так печально. Информации о группах в иловском меше просто нет за ненадобностью.

Печально ещё и то, что надёжно восстановить группы по имеющимся нормалям очень сложно. Вернее, результат на сложных моделях будет очень не аккуратный и проще руками группы назначить, чем править сделанное автоматом. Проблема в том, что нужно по всем полигонам проводить множественные сортировки и вычисления общих для них параметров. А это натыкается на сложные случаи, когда из-за конструкции модели возникают неоднозначности в принятии решения. На простых поверхностях эти алгоритмы работают, но даже на простой поверхности можно изобразить случай, когда будет сложно принять решение о том, к какой группе полигон принадлежит. Может я найду в себе силы сделать группировку как фичу, задача сама по себе интересная и мне такие нравятся. Но обещать сделать это точно не буду, ибо это потребует много свободного времени.
NB79 вне форума   Ответить с цитированием