COLLADA COLLAborative Design Activity Федоров Сергей, 8409

реклама
COLLADA
COLLAborative Design Activity
Федоров Сергей, 8409
2
Содержание
COLLADA FX
COLLADA Physics
3
4
Collada FX
• Цель:
Создать инструмент для обмема сложными
шейдерами
Осуществить поддержку множественного
описания эффекта (разные уровни
детализации, ночное/дневное освещение и
т.п.)
Хранить шейдеры для разных платформ в
одном файле (напр. CG и GLSL шейдеры в
одном документе)
5
Материалы
• Местоположение
• Вещество
• Стиль
6
Эффекты: модель управления
данными
• Effect Framework – это декларативный язык для
управления, группировки, параметризации и
настройки состояния GPU и кода для подготовки к
отрисовке
7
Эффекты в Collada
Effect
Profile
Technique
Pass
Pass
Pass
Technique…
Profile…
8
Стандартные профили
•
•
•
•
•
•
<profile_COMMON>
<profile_CG>
<profile_GLSL>
<profile_GLES>
<profile_GLES2>
<profile_Bridge >
9
<effect>
10
Technique
• Элемент <technique> описывает один из
способов достижения желаемого эффекта
• Для разных уровней детализации (Levels of
details) могут быть разные способы, связанные с
аппаратными ограничениями, расстоянием от
камеры до модели, наличием ресурсов и т.п.
• Могут быть разные способы достижения схожего
эффекта (например, для эффекта
представляющего кожу могут быть разные
способы для отрисовки кожи человека,
крокодила или змеи).
11
<technique>
12
Passes
• Зачем нужны?
Для обработки за один проход может быть
недостаточно вычислительной мощности
Каждая из подзадач может быть
переиспользована множество раз
Одна и та же процедура может повторяться
много раз
Простота отладки
Необходимо если требуется информация о
соседних объектах
13
<pass>
14
Параметры
• В эффектах параметры используются как
переменные для настройки состояния GPU во
время отрисовки (пр.: цвет объекта)
• Параметры могут быть на трех уровнях:
▫ Уровень эффекта (effect level)
▫ Уровень профиля (profile level)
▫ Уровень метода (technique level)
• Стандартные параметры: скаляры, векторы,
матрицы, поверхности (surfaces), сэмплеры,
строки и перечисления
• Пользователь может добавлять новые
параметры
15
<fx_newparam_common>
• <modifier>:
VARYING
UNIFORM
CONST
SHARED
16
Поверхности (surfaces)
• Поверхности – специальный тип параметров
для получения доступа к нескольким
изображениям в эффекте
• Типы:
▫
▫
▫
▫
▫
▫
1D
2D
3D
RECT
CUBE
DEPTH
17
<fx_surface_common>
18
Сэмплер (sampler)
• Специальный тип параметров,
описывающий, каким образом читать из
поверхности – преобразует данные
координаты пиксела на объекте в
координаты пиксела на изображении
(текстуре)
19
<fx_sampler2D_common>
20
<annotation>, <semantic>
• <annotation> описывает дополнительную
информацию об объекте, как хранится и как
извлечь информацию, которая может быть
платформо-зависимой.
• <semantic> описывает смысл параметров или
аргументов функций. Цель:
▫ предоставить альтернативные имена для
параметров и аргументов, которые могут
понадобиться из других элементов, вне эффекта.
▫ предоставить способ связывания геометрической
информации с эффектом
21
Стандартный профиль
<profile_COMMON>
• Должен пониматься любым приложением. Если
приложение не может использовать ни один из
платформо-зависимых профилей, оно должно
использовать стандартны профиль.
• Каждый метод (technique) содержит один из
стандартных алгоритмов освещения:
▫
▫
▫
▫
<constant>
<labmert>
<phong>
<blinn>
22
23
Collada Physics
• Платформо-независимое описание базовых
объектов и соединенных моделей (в текущей
реализации поддерживаются только твердые
тела)
• Определение границ для пересечений объектов
• Описание связей между соединенными
объектами и ограничений на соединения,
определение степеней свободы
• Разделение объектов сцены на статические,
динамические и другие объекты
24
Определение пересечений
• Находить пересечения намного эффективнее для выпуклых
объектов. При тесте на пересечение вместо объектов обычно
используется ограничивающий параллелепипед, сфера, либо
другая простая выпуклая поверхность
• Иногда для быстро перемещающихся объектов мы можем не
найти пересечение:
Пересечение не найдено
Пересечение найдено
25
Аналитические поверхности
• Поверхности определены по умолчанию в
“Y_UP” координатной системе. Положение
можно менять с помощью преобразований
• Типы поверхностей:
▫
▫
▫
▫
▫
▫
▫
Сферы
Параллелепипеды
Плоскости
Цилиндры
Конические цилиндры
Капсулы
Конические капсулы
26
<sphere>
27
<box>
28
<plane>
29
<cylinder>
30
<tapered_cylinder>
31
<capsule>
32
<tapered_capsule>
33
<convex_mesh>
34
<shape>
35
<physics_material>
36
<rigid_body>
37
Пример
<library type="PHYSICS">
<rigid_body id="hammerHandleRigidBody">
<shape>
<mass> 0.25 </mass>
<inertia> ... </inertia>
<cylinder>
<height> 8.0 </height>
<radius> 0.5 0.5 </radius>
</cylinder>
<physics_material url="#WoodPhysMtl"/>
</shape>
</rigid_body>
</library>
<library type="GEOMETRY">
<geometry id="hammerHandleToRender">
<mesh>
...
</mesh>
</geometry>
</library>
38
Соединенные твердые тела
• Элемент <rigid_constraint> используется для
соединения нескольких объектов в один, с помощью
связей с ограничениями (constrained joints)
• Для определения типа связи используются 6
степеней свободы.
• Для определения связи необходимо:
▫ Точка соединения
▫ Степени свободы
• Можно определить, могут ли объекты двигаться
относительно точки соединения, а также определить
границы, тип перемещения (вращение, скольжение
и т.п.), силу трения и упругость в точке совмещения
39
Пример
<rigid_constraint id="rigidHingeConstraint">
<ref_attachment body="#wallRigidBody">
<translate sid="translate">5 0 0</translate>
</ref_attachment>
<attachment body="#doorRigidBody">
<translate sid="translate">0 8 0</translate>
<rotate sid="rotateX">0 1 0 -45.0</rotate>
</attachment>
<technique_common>
<limits>
<swing_cone_and_twist>
<min> 0 90 0 </min>
<max> 0 -90 0 </max>
</swing_cone_and_twist>
</limits>
</technique_common>
</rigid_constraint>
40
Поля сил
• Элемени <force_field> позволяет хранить
внешние силы, действующие на объекты
(например, сила тяжести)
41
<physics_model>
42
<instance_physics_model>
43
<physics_scene>
44
Общее описание
Скачать