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 Общее описание