Оптимизация треугольников

Последние четыре дня были весьма насыщенными. Стояла задача: ускорить созданием базовой модели и исправить недочеты в базовой модели. До оптимизации создание базовой модели занимало 10 и более секунд на 50 костей. Конечно, в современном мире это совершенно неприемлемо. Началась кропотливая работа над ускорением процесса создания модели.

Первым делом была получена новая базовая модель, которая создается за 20-50 мс для 100 костей.

Модель на данном этапе не соответствует ожидаемой, но она не содержит пересекающихся треугольников, также модель является цельной и внутри её нет никаких треугольников.

После тестирования, на разных моделях, с разным количеством костей были выявлены и устранены все проблемы которые приводили к заламыванию треугольников.

Следующий шаг был выравнивание модели по костям. Этот этап наиболее сложный, важно правильно передвинуть вершины, чтобы модель не повредилась и максимальна стала приближена к ожидаемой.

Оглядывая модель беглым взглядом, можно заметить, что теперь вершины распределились по поверхностям костей и уже стали прототипом для следующего шага, разбиение треугольников с выравниванием по костям.

В результате: модель получена. Скорость создания 500мс.

Сравним готовую модель с костями:

На рисунке видно, что модель практически полностью приближена к своему прототипу из костей.

Но это только первый этап, второй этап — автоматическое создание UV сетки для модели, о котором будет рассказано отдельно.

Результат по оптимизации достигнут и всё это выполнено как обычно на Javascript.