на главную страницуна главную страницуна главную страницу

Коротко | Процессоры | Системные платы | Видеосистема | Носители информации | Мультимедиа | Домашние кинотеатры | Портативные ПК | Периферия | Мобильная связь | Изображение в числах | Коммуникации | Колонка редактора | Конференция | Поиск по сайту | Komok.com | Computorg | Журнал iXBT.com | Драйверы

Автор: Алексей Греков (alexfft@aha.ru)

Описание: CGWorm (Жизнь дорожного червя)

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

Анимация червя выполнена через разновидность техники скелетной анимации, где в качестве костей, деформирующих скин (полигональную оболочку) используются составные сплайны Безье.

Реализация скинирования и модель материала реализованы в вертексной и фрагментной программах (vertex and fragment programs).

1. Реализация скелетной анимации в вертексной программе.

Каждая вершина полигональной модели червя связана с соответствующей точкой на составном сплайне Безье тремя значениями — номером сегмента сплайна, величиной параметра на сегменте и весом. При деформации кости сплайна каждая вершина получает линейное смещение пропорциональное деформации, а также вращение. Аналогичные преобразования выполняются над нормалями (необходимо для правильного расчета освещенности).

Все расчеты реализованы в вертексной программе (Cg_Worm.cg). Увеличение производительности в сравнении с реализацией на CPU (Celeron 333) приблизительно в 100 раз.

Геометрическая модель и фазы движения червя создана в 3DMax (по эскизам) используя технику лофтинга (lofting) и скинирования (skinning).

Движение осуществляется через смену анимационных состояний (может включать произвольное число фаз) последовательность которых не фиксирована, что позволит в дальнейшем включить в систему алгоритмы мотивации (например, наведение на цель — поиск еды).

1.1. Сравнение с другими техниками

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

Анимационные состояния, представленные модификациями базового сплайна, дают весьма компактное представление.

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

Обычная скелетная анимация требует больших усилий на этапе моделинга, например вместо одного составного сплайна, который является цельным объектом и сохраняет гибкость и непрерывность в местах сочленений, потребуется составление цепочки и подгонка весов в местах сочленений.

Кроме того кривая Безье хорошо изученный математический объект, имеет аналитическое представление, дифференцируема, что дает возможность более легко перейти к анимации на основе физико-механических моделей.

Возможно сочетание этих двух техник.

1.2. Область применения

Данная техника может быть эффективно использована для анимации объектов живой природы таких как рыбы, гусеницы, змеи и т.д., и в более общих случаях, где требуются непрерывные плавные деформации, генерация новых фаз движения, смешением нескольких базовых, коррекция фаз двжения информацией получаемой из модели среды (рельеф, появление еды и т.д.).

2. Модель материала

Поверхность червя (материал) является составным материалом (реализовано в Cg_worm.cg и Cg_Worm_Fragment.cg). Поверхность покрыта лаком, который зеркально отражает объекты окружения (кубическая текстура 1), в тоже время являясь частично прозрачным, пропускает часть света, которая, падая на поверхность червя, отражается диффузно.

Свет от направленного источника, используемый для расчета диффузной компоненты попиксельно (в фрагментной программе), заранее просчитан в кубическую текстуру 2. Допускается использование любого количества источников света.

3. Растительный покров

На поверхности червя растет несколько гибких шипов ворсинок.

Шип состоит из трех жестких стержней соединенных в узлах (шарнирах).

На каждый узел действует система сил (упругая сила стремящаяся перевести стержень в вертикальное состояние, сила тяжести и сила трения), которая расчитывается динамически. Для численного решения дифференциального уравнения используется метод Эйлера (лучше выбрать более точный — система через некоторое время становится нестабильной).

Расчитанные положения узлов используются как контрольные точки кривой Безье (опять он — старик Безье!) вдоль которой формируется полигональная форма ориентированная перпендикулярно наблюдателю (билбоард), освещенная диффузно (Cg_Spike.cg).

Модель шипа предложена Паршиным В.С.

4. Размещение ресурсов программы

Программа разработана в среде CgSDK release 1.0 на базе OpenGL.

Для компиляции и запуска программы необходимо:

  • исходные тексты поместить в каталог DEMOS\OpenGL\src\Cg_Worm,
  • Cg программы в каталог MEDIA\programs\cg_Worm,
  • файл worm_models.zip с моделями в каталог MEDIA\models,
  • файлы ASPHALT3.png и shine.png в каталог MEDIA\textures\2D,
  • программа использует кубические текстуры CloudyHills_xxx_512.png и cube_face_xxx.png, включенные в состав Cg SDK, и расположенные в каталоге MEDIA\textures\cubemaps.

Все эти ресурсы помещены в соответственно названные директории архива.

Запуск программы с командной строки с ключом -r порождает анимацию с псевдослучайной сменой состояний, без этого ключа с прямолинейным движением. Ключ -bModel — программа будет использовать более высокополигональную модель (предпочтительный режим).

Можно воспользоваться двумя командными файлами — WormR.bat (случайная смена состояний) и Worm.bat.

Помощь — F1, меню по правой кнопке мышки, управление камерой через левую кнопку и клавиши Shift и Ctrl.

Поддерживаемые GPU: GeForce4, GeForce FX

Загрузить: worm.zip (2,18 MB)

на главную страницуна главную страницуна главную страницу

Коротко | Процессоры | Системные платы | Видеосистема | Носители информации | Мультимедиа | Домашние кинотеатры | Портативные ПК | Периферия | Мобильная связь | Изображение в числах | Коммуникации | Колонка редактора | Конференция | Поиск по сайту | Komok.com | Computorg | Журнал iXBT.com | Драйверы

Copyright © by iXBT.com, 1997—2003. Produced by iXBT.com