Пятница, 14 Август 2009 13:59

Простой 3d-визуализитор многогранников на Flex4

Автор Александр Бушмелев
Оцените материал
(1 Голосовать)
Поднял свои старые архивы двадцатилетней старости с разными визуализаторами и реализовал алгоритм, удаления невидимых поверхностей, основанный на бинарных деревьях.

Этот простенький визуализатор был первоначально написан на C и был оптимизирован для работы на PC AT286 платформы под DOS. Для получения перерисовки в реальном времени приходилось использовать вычисления в целых числах и другие ухищрения.

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

Переписал этот пакет удаления невидимых поверхностей на Flex4. В нем в полном объеме используются вычисления с плавающей арифметикой. Никакой оптимизации не проводил, замеров на производительность тоже. Основная задача была научиться выводить на экран невыпуклые многогранники во Flex4.
Вся реализация с отладкой в вводом данных заняла день (Алгоритм, действительно простенький). Не перестаю удивляться каждый раз, когда заглядываю в свои старые тексты. Неужели так можно было писать? Интересно, что скажу через пару месяцев об этих текстах.

Ниже приведены две простенькие модели демонстрирующие возможности 3d-визуализатора многогранников. При помощи мыши можно вращать модели. Для этого нужно нажать левую кнопку мыши на изображении и перемещать указатель. Для просмотра необходимо установить десятую версию flash-плеера.

Стелла Кеплера:


Этот пример демонстрирует, кроме удаления невидимых поверхностей возможность этого алгоритма по обработке пересекающихся треугольников. Можно не заботиться о пересекающихся гранях. Алгоритм должен их правильно отрабатывать. В этом примере одноцветные грани октаэдра лежащие в одной плоскости заданы одним треугольником. Можно рассматривать эту звездчатую форму октаэдра как объединение двух тетраэдров. Грани полупрозрачные, можно разглядеть внутренность тела.

Модель легкового автомобиля.

Этот многогранник не замкнутый. У автомобиля "открыты" окна и "выбиты" фары. Модель была создана вручную в далеких восьмидесятых без каких-либо визуальных редакторов тупым выписыванием координат. Даже не помню сколько времени потратил на это! Всего в модельке машинки 22 вершины и 38 треугольников.

Прочитано 6926 раз Последнее изменение Пятница, 14 Август 2009 14:20
Авторизуйтесь, чтобы получить возможность оставлять комментарии