Добавлен , опубликован

Вводная информация

Продолжая тему "что можно накодить за обеденный перерыв?", хочу рассказать вам о своем микропроекте, который посвящен процедурной генерации моделей.
Началось это все, когда мне не хватило геометрических примитивов для прототипирования, а лезть в 3д-редактор было лень. Можно было, конечно, взять готовый пак моделей из интернета или просто добавить дополнительные формы примитивов, но кого интересуют легкие решения?
В итоге былы выбрана процедурная генерация меша по набору сплайнов. И не банальное построение меша путем вращения сплайна или растягивание одного сплайна вдоль другого, а генерация меша по независимым направляющим, исходящим из одной точки.
Для визуализации используется движок JMonkeyEngine 3.0.
Все вершины, треугольники и нормали генерируются програмно, за исключением небольшого набора вершин, задающего узлы направляющих.
Для интерполяции используется алгоритм CatmullRom.

План действий

  • Построить направляющие по набору ключевых точек - готово
  • Построить лоуполи модель по направляющим - готово
  • Добавить вертикальное и горизонтальное сглаживание к модели путем увеличения кол-ва вершин - готово
  • Построить нормали к поверхности - готово
  • Построить высокополигональную модель по вершинам - готово
  • Добавить текстурные координаты для вершин
  • Добавить возможность редактировать направляющие в режиме реального времени - в процессе
  • Убрать ограничения на форму и количество направляющих
  • Добавить процедурную генерацию текстур
  • Добавить поддержку LOD
  • Добавить поддержку других алгоритмов интерполяции помимо CatmullRom
  • Добавить поддержку более сложных форм за счет комбинирования нескольких сгенерированных моделей
  • Добавить механизм, позволяющий контролировать плотность сетки
  • Добавить возможность делать острые углы на модели, а не только сглаженные до безобразия поверхности
  • Добавить другие алгоритмы генерации помимо базового
  • Добавить возможность экспорта в файл для дальнейшего использования в графических редакторах

Фотоотчет

0
24
9 лет назад
Отредактирован prog
0
Исправлена генерация поверхности по вершинам.
Доработан генератор нормалей.
Исправлен косяк, мешавший сгенерировать последний ряд вершин.
На очереди возможность двигать узлы направляющих, деформируя тем самым сгенерированную поверхность.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.