Оптимизация треугольников
Последние четыре дня были весьма насыщенными. Стояла задача: ускорить созданием базовой модели и исправить недочеты в базовой модели. До оптимизации создание базовой модели занимало 10 и более секунд на 50 костей. Конечно, в современном мире это совершенно неприемлемо. Началась кропотливая работа над ускорением процесса создания модели.
Первым делом была получена новая базовая модель, которая создается за 20-50 мс для 100 костей.
Модель на данном этапе не соответствует ожидаемой, но она не содержит пересекающихся треугольников, также модель является цельной и внутри её нет никаких треугольников.
После тестирования, на разных моделях, с разным количеством костей были выявлены и устранены все проблемы которые приводили к заламыванию треугольников.
Следующий шаг был выравнивание модели по костям. Этот этап наиболее сложный, важно правильно передвинуть вершины, чтобы модель не повредилась и максимальна стала приближена к ожидаемой.
Оглядывая модель беглым взглядом, можно заметить, что теперь вершины распределились по поверхностям костей и уже стали прототипом для следующего шага, разбиение треугольников с выравниванием по костям.
В результате: модель получена. Скорость создания 500мс.
Сравним готовую модель с костями:
На рисунке видно, что модель практически полностью приближена к своему прототипу из костей.
Но это только первый этап, второй этап — автоматическое создание UV сетки для модели, о котором будет рассказано отдельно.
Результат по оптимизации достигнут и всё это выполнено как обычно на Javascript.