Вы находитесь на странице: 1из 1

Главная 3D 2D Engines Web Stereo Sound

Официальный сайт Как импортировать Ваши трехмерные модели в 3D Rad.


Как включить для них определение столкновений и физику, не введя ни одной
Обзор строчки кода!
Документация
Добавление пользовательских работ к библиотеке SkinMesh
ЧАВО
Запустите 3D Rad, нажмите Ctrl+N для запуска нового пустого проекта. Выполните Объект
Обзор редактора - Установить пользовательский SkinMesh для создания нового аспекта для объекта
SkinMesh. введите имя для нового визуала (например, "TestModel") и нажмите кнопку
Начало Сохранить.
Добавление камеры

Визуальные аспекты

Группировка

Импорт

Аддоны

Реклама

Шейдеры

Функции редактора

CamChase

SketchUp

3DS Max

Lightwave

Мультиплеер

События

Устойчивость Подтвердите информацию в диалоговом окне и затем добавьте экземпляр объекта


SkinMesh к пустому проекту, выполнив Объект - Добавить и дважды щелкнув на значке
Основы AngelScript SkinMesh.
Справка программы
Установленный по умолчанию аспект для SkinMesh - это желтая рыба.

Вы можете выбрать вместо него новый аспект "TestModel" в диалоговом окне свойств
объекта SkinMesh (нажать Enter).

Нажмите кнопку Изменить и выберите TestModel. Затем нажмите ОК для закрытия


диалогового окна свойств.

Новый аспект использует установленную по умолчанию работу (фиолетовую рыбу). вы


можете заменить фиолетовую рыбу созданной пользователем трехмерной моделью
заменой установленного по умолчанию файла DirectX® (.x) в папке C:\3D
Rad\3DRad_res\objects\SkinMesh\data\TestModel\ своим собственным файлом.

Следовательно, найти способ экспортировать трехмерную модель из Вашего моделера в


файл формата DirectX® (.x) - это критический шаг.

Если Ваш моделер не может естественно экспортировать в формат файла .х, Вы все
равно можете использовать его в 3D Rad, найдя плагин для него, или экспортировав в
формат файла, который может быть преобразован в формат файла .х дополнительными
трехмерными инструментами.

Информация о том, как экспортировать в формат файла DirectX (.x), доступна для
следующих моделеров: 3D Studio Max, Maya, Lightwave, GMax, Blender, FragMOTION,
L3DT, T.ED, Google SketchUp.

Замена установленных по умолчанию работ своими собственными

Сверните окно 3D Rad и откройте Ваш любимый трехмерный моделер.

Для целей этого урока создайте простую модель с, по меньшей мере, одной текстурой.
Формат изображения текстуры может быть .bmp, .jpg, .dds, .png или .tga.

Убедитесь, что на все полигоны спроецирована текстура. Модель может включать скелет
и скелетную анимацию (rigging), но рекомендуется, чтобы вы попробовали сначала со
статической геометрией, в порядке тестирования Вашей процедуры экспорта.

Подсказка: когда Вы тестируете экспортирование анимированных моделей, попробуйте


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

1. Экспортируйте тестовую модель в C:\3D


Rad\3DRad_res\objects\SkinMesh\data\TestModel\. убедитесь. что имя файла -
"000_mesh.x", так что он заменит существующий в папке файл .х.

Обратите внимание, что вы должны также скопировать в ту же самую папку все файлы
текстур, которые ассоциированы с файлом каркаса .х. В примере текстура - это
"TestModelTexture.bmp".

Важно: любые текстуры во вложенных папках или сохраненные где-нибудь еще,


игнорируются, даже если их полный путь предоставлен в файле .х.

Подсказка: укажите Вашему моделеру папку назначения сразу же после начала Вашей
сессии моделирования. Назовите Вашу модель "000_mesh.x". Сохраняйте текстуры,
работайте с файлами и временными наборами здесь. Наличие всех файлов, относящихся
к новой модели, в правильной папке и с должными именами сделает некоторые вещи
легче. На приведенном выше изображении Вы можете видеть рабочий файл .lwo,
сгенерированный Lightwave 3D, трехмерным моделером. использованным для этого
примера. Дополнительные файлы, подобные этому, не создадут никаких проблем, так как
3D Rad будет использовать файла .х и их текстуры.

2. Вернитесь в 3D Rad и нажмите R, чтобы освежить работу для объекта SkinMesh,


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

Если Вы не видите модель, попытайтесь увеличить или уменьшить масштаб (колесо


мыши), чтобы увидеть, если она намного больше/меньше, чем ожидалось, или если она
смещена.

Если модель неправильно масштабирована, вернитесь в моделер и убедитесь, что


единицы установлены в метры (если применимо), и что размер Вашей модели разумный.
Если Ваш моделер не поддерживает абсолютные единицы, или он изменяет размер
модели при экспортировании, попробуйте просто масштабировать Вашу модель и
экспортировать ее еще раз. Пробы и ошибки помогут определить коэффициент
масштабирования для использования на всех будущих моделях (Вы можете использовать
аспект SkinMesh, называемый "Andro" как ссылку; персонаж высотой в 2 метра).

Если модель смещена в пространстве 3D Rad, убедитесь, что в пространстве Вашего


моделера она находится в мировом центре (начало мировых осей), когда Вы
экспортируете ее.

Если в 3D Rad модель не визуализируется вообще, или отображаются сообщения об


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

3. На приведенном выше изображении, обведенном красным, Вы можете видеть


визуальный артефакт, произведенный объемной тенью, оставшейся от установленной по
умолчанию фиолетовой рыбы. Отбрасыватель тени - это дополнительная трехмерная
модель. В папке она указана как "000_shadow.x". Пожалуйста, смотрите ниже
информацию о том, как смоделировать этот компонент для Ваших пользовательских
объектов SkinMesh. Если Вы не хотите, чтобы Ваша модель отбрасывала тень, просто
удалите файл "000_shadow.x" из папки.

Проецирование нормалей/рельефа

Если Ваша работа требует карты рельефа, Вы должны включить ее как файл
изображения, названный "'000_nm.ext", где ".ext" может быть одним из следующего: .bmp,
.jpg, .dds, .png, .tga. Чтобы включить карту нормалей для SkinMesh, откройте диалоговое
окно свойств для него и выберите шейдер "bumpy".

Проецирование окружения

Если Вы хотите, чтобы Ваш визуальный аспект поддерживал эффекты отражения, Вы


можете также предоставить файл кубической карты. названный "000_em.dds".
Установленная по умолчанию кубическая карта создается в папке для Вас.

Для включения отражения для SkinMesh, откройте диалоговое окно свойств для него и
выберите шейдер, не установленный по умолчанию. Затем установите флажок "Enable
environment map" (Включить карту окружения).

Примечание: разрешение кубической карты определяет качество отраженного


изображения, включая случаи, когда включены динамические отражения.

Карты освещенности/теней, смешивание текстур

Для добавления дополнительной текстуры деталей к Вашей модели или получения


эффекта, основанного на смешивании текстур, Вы можете поместить дополнительный
каркас .х и его текстуры в папку данных. Имя файла дополнительного каркаса должно
быть "000_tmix.x".

Примечание: убедитесь, что установлен флажок "Depth Sorting" (Сортировка по глубине)


для объекта SkinMesh.

Обратите внимание. что для модели "000_tmix.x" также не поддерживается скелетная


анимация, поэтому смешивание текстур возможно только тогда, когда геометрии моделей
"_mesh.x" и "_tmix.x" точно совпадают, эта возможность должна использоваться только
для покадровой анимации (смотри ниже), или для статических моделей.

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

Руководство по моделированию

При создании своих собственных моделей помните, что:

Мировой центр в Вашем моделере будет естественным центром объекта, когда


трехмерная модель будет импортирована в пространство 3D Rad. Убедитесь, что он
удобно расположен.

Сторона Вашей модели, которую Вы считаете передней, будет направлена в


положительном направлении оси Z, когда объект на повернут, в пространстве 3D Rad. В
Вашем трехмерном моделере убедитесь, что Ваша модель ориентирована в соответствии
с этим руководством. Игнорирование этого может произвести некоторую путаницу!
Обратите внимание, что некоторые моделеры не используют ту же систему координат. что
и 3D Rad, так, например, положительное направление мировой оси Z 3D Rad является
положительным направлением мировой оси Y в 3D Studio Max®.

Также убедитесь, что модель:

Использует текстурные изображения только в форматах .bmp, .dds, .dib, .jpg, .png или .tga.
Обратите внимание, что некоторые старые видеокарты поддерживают текстурные
изображения только в размере, равном степени числа 2. Например, 256x256, 512x256,
128x1024 и т.д.

Не включает изолированные вершины, дегенерированные грани и т.д.

не включает очень больших треугольников. Длина стороны треугольника не должна быть


больше 10 - 20 метров, в порядке обеспечения должного расчета и визуализации.

Примечание: убедитесь. что шаблоны DirectX®, текстурное проецирование, материалы и


данные нормалей вершин были фактически экспортированы в целевой файл .х.

Примечание: убедитесь, что файл .х и все его файлы текстурных изображений находятся
в одной и той же папке. 3D Rad проигнорирует текстуры, которые сохранены за
пределами папки, в которой расположен файл .х.

Скелетная анимация

Некоторые инструменты трехмерного моделирования позволяют Вам сохранять


скелетные анимации в файле .х.

Так как 3D Rad может воспроизводить этот вид анимации хорошо и быстро, это
предпочитаемый метод, который Вы будете использовать для Ваших анимированных
техмерных моделей.

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

Для примера этого, пожалуйста, загрузите и запустите проект SkinMeshDemo.3dr (в 3D


Rad выполните Файл - открыть).

Если Ваш инструмент трехмерного моделирования не может экспортировать


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

Вы можете затем объединить их в единственный файл .х с использованием бесплатной


утилиты MView (функция меню Анимация - Добавить анимацию) или Fragmotion
(бесплатная), или вручную, открыв файл .х в текстовом редакторе и скопировав/вставив
блоки AnimationSet из всех файлов в один из них.

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

Обратите внимание, что Вам нужно сгенерировать Ваши файлы .х в формате ASCII в
порядке их ручного редактирования.

Подсказка: при экспортировании анимированных моделей помните, что 3D Rad


поддерживает только основанные на матрицах анимации. Убедитесь, что этот флажок
установлен, если Ваш моделер или плагин экспорта поддерживает его.

Подсказка: если Ваши анимированные модели воспроизводятся в просмотрщиках файлов


DirectX, подобных MView (смотри выше), но не воспроизводятся в 3D Rad, попробуйте
открыть из в MView и еще раз сохранить. Обычно это решает проблему.

Покадровая анимация

Другой способ получения трехмерной анимации в 3D Rad заключается в создании


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

Это мощная технология, особенно потому, что каждая модель (каждый кадр анимации)
может иметь свою собственную геометрию, текстуры, карту нормалей, и даже
отбрасыватель теней!

Все, что Вам нужно сделать для использования этой технологии - это сохранить Вашу
последовательность файлов .х (и связанные текстуры) в пользовательской папке нового
визуального аспекта, убедившись. что имена файлов - это числа в непрерывной
последовательности (с "000_mesh.x", являющемся первым кадром, "001_mesh.x" -
вторым, и так далее).

Для демонстрации этой технологии, пожалуйста, загрузите и запустите проект


SkinMeshFrameAnimationDemo.3dr (в 3D Rad выполните Файл - открыть). Вы также можете
испытать, например, файлы в папке C:\3D Rad\3DRad_res\objects\SkinMesh\data\Capsule.

Моделирование объемных теней

Трехмерная модель может быть использована как отбрасыватель теней (файл


"000_shadow.x", смотри выше) для пользовательского визуала SkinMesh, так как она
состоит из правильной замкнутой оболочки.

Модели, которые не являются совершенно замкнутыми оболочками, будут производить


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

Трехмерная модель, созданная из правильных треугольников, является замкнутой, если:

Она полностью включает в себя часть пространства.

Все грани треугольников разделяются двумя треугольниками.

Например, второй каркас на изображении не является замкнутой оболочкой, так как он


нарушает оба правила. Он не полностью включает часть пространства, и три ребра не
разделяются двумя треугольниками.

Обратите внимание, что, несмотря на отверстие в торе слева на приведенном выше


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

Открытый параллелепипед слева выше - это замкнутая оболочка. Фактически, размер


(толщина) сторон параллелепипеда не равна нулю, и узкое пространство внутри него
полностью замкнуто. Также, все грани разделяются двумя треугольниками.

Вместо этого, параллелепипед справа не является замкнутой оболочкой потому, что


стороны плоские. И есть четыре ребра, которые не разделяются двумя треугольниками.

Другой запутывающий случай изображен выше. Параллелепипед полностью включает в


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

Замечания по моделированию теней

Для статических каркасов, для модели отбрасывателя тени нет необходимости


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

Однако, так как тень отбрасывается также на соответствующий видимый каркас


(отбрасывание тени на самого себя), точное соответствие геометрии гарантирует
последовательный эффект в большинстве случаев.

Альтернативно, Вы можете предотвратить влияние тени (включая самозатенение) на


SkinMesh установкой флажка "No shadow" (Нет теней) в диалоговом окне свойств объекта
SkinMesh.

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

Альтернативно, при использовании технологии, продемонстрированной в проекте


SkinMeshBoneDemo.3dr, объект SkinMesh, предназначенный только для отбрасывания
тени, может быть присоединен к отдельным костям анимированного персонажа для
производства сложной, убедительной анимированной тени. В 3D Rad, нажмите Ctrl+O,
чтобы увидеть список доступных демонстрационных проектов.

Поверхности. для моделей отбрасывателей теней, никогда не должны точно


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

Объекты, принимающие тени, должны сами отбрасывать тени. Рассмотрим следующий


случай:

Когда отбрасывающий каркас предоставляется и для шара, и для стены (слева),


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

Объемные тени могут влиять на частоту кадров в медленных системах. Вы должны


моделировать отбрасыватели тени только для объектов и декораций, которые фактически
отбрасывают тень.

В большинстве случаев Вы можете использовать проецирование теней вместо объемных


теней.

Руководство по моделированию теней

Делая Ваши трехмерные тени, убедитесь, что модель:

Сделана из совершенно замкнутых оболочек.

Не включает очень много треугольников. Длина стороны треугольника никогда не должна


быть больше 10 - 20 метров, в порядке гарантирования должного расчета.

Не включает соединенные (точно перекрывающиеся) поверхности. Соответствующие друг


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

Не имеют текстуры (это не обязательно, но может уменьшить размер файла).

Моделирование твердых тел (физика)

В проекте 3D Rad твердые тела - это невидимые сплошные структуры всех трехмерных
объектов, поддерживающих физику.

Определение столкновений и динамическая симуляция определяются этой невидимой


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

В 3D Rad нажмите Ctrl+N Для запуска нового пустого проекта.

Выполните Объект - Установить пользовательское твердое тело (параллелепипед/сфера -


группа) для создания новой формы для объекта твердого тела.

Назовите новую форму "TestModel", нажмите кнопку сохранения и подтвердите


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

Установленный по умолчанию аспект для твердого тела - это низкополигональный камень.

Для выбора нового аспекта "TestModel" вместо существующего, в диалоговом окне


свойств объекта твердого тела нажмите кнопу Изменить и выберите TestModel. Затем
нажмите ОК для закрытия диалогового окна свойств.

Новый аспект использует установленную по умолчанию работу (группу из 3 сфер).

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

Вы должны получить что-то, подобное этому:

Нажмите пробел для запуска симуляции и проверки определения столкновений и физики


для нового твердого тела.

Заменив установленные по умолчанию файлы DirectX® (.х) в папке C:\3D


Rad\3DRad_res\objects\RigidBody\data\TestModel\ своими собственными файлами, Вы
можете настроить форму (и физические свойства!) нового твердого тела.

ВАЖНО! Для следующего шага Вам нужно узнать, как успешно экспортировать Ваши
трехмерные модели как файлы DirectX® (.х). Пожалуйста, сморите выше для
подробностей.

1. В Вашем моделере создайте группу из 2 или 3 сфер различного размера. Шары могут
пересекаться (частично совпадать) или быть на расстоянии друг от друга, но они не
должны быть растянутыми или деформированы любым способом. Каждая сфера должна
состоять из не более, чем 30 - 40 вершин (около 50 - 60 треугольников).

Добавьте также 2 или 3 параллелепипеда, убедившись, что они состоят в целом из 8


вершин и 12 треугольников. Параллелепипеды могут пересекаться со сферами и другими
параллелепипедами и могут быть повернуты любым образом, но важно, чтобы грани
были точно перпендикулярны (90 градусов) в углах. Деформированные параллелепипеды
не будут распознаны 3D Rad.

Убедитесь, что все поверхности в модели имеют только цвет (нет текстур или
специальных эффектов). и никакая дополнительная информация, подобная костям,
анимации или иерархии, не является частью модели.

Экспортируйте Вашу модель в папку C:\3D


Rad\3DRad_res\objects\RigidBody\data\TestModel\.

Убедитесь, что имя файла "rigidBody_.x" так, чтобы он заменил существующий в папке
файл .х.

2. Вернитесь в 3D Rad и нажмите R для обновления работы для объекта твердого тела
(убедитесь, что он является выделенным элементом).

Обратите внимание, что видимая форма твердого тела не изменилась, но его поведение
при столкновении происходит в соответствии с формой модели параллелепипед/сфера -
группа. которую Вы только что создали и экспортировали.

Модель "rigidBody_.x" - это невидимая геометрия, которую 3D Rad использует для


определения столкновений.

3. Видимый аспект - это дополнительная трехмерна модель (файл .х). В папке она
перечислена как "rigidBody_mesh.x.". Для установленной по умолчанию модели геометрия
идентична невидимой геометрии. Это предоставляет последовательную визуальную
справку.

Однако, модель "rigidBody_mesh.x." может быть чем угодно. Она может иметь
спроецированную текстуру (одна одиночная текстура), и она может отбрасывать тень
(файл "rigidBody_shadow.x").

Три изображения, приведенные ниже, показывают пример твердого тела, основанного на


параллелепипеде/сфере - группе с аспектом, не основанном на параллелепипеде/сфере -
группе. Геометрия rigidBody_.x (невидимая в 3D Rad), его файл rigidBody_mesh.x
(видимая часть) и две модели в сравнении.

Подсказка: модель определения столкновений (группа параллелепипеда/сферы, файл


rigidBody_.x) не должна соответствовать во всех деталях модели видимого каркаса. Чтобы
избежать падения производительности, Вы должны использовать настолько мало
параллелепипедов/сфер, насколько это возможно. Вы не должны стараться "заполнить"
каркас параллелепипедами/сферами. Цель заключается в том, чтобы разместить
параллелепипеды/сферы там, где Вам нужно определение столкновений (для Вашей
определенной модели, в Вашем определенном проекте). Вообще, совершенно допустимы
параллелепипеды/сферы, которые больше или меньше видимых деталей, различия
незаметны в окончательной симуляции.

4. В порядке выполнения физики, 3D Rad нуждается в дополнительной геометрии,


которая описывает, как масса распределена внутри формы твердого тела. Это
автоматически создаваемый по умолчанию файл "rigidBody__.x", обратите внимание на
двойной символ подчеркивания.

Вы можете сделать свою собственную модель массы для твердого тела, учитывая
следующие руководства:

геометрия может быть любой формы (полигональная), но она должна состоять из


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

Модель распределения массы не имеет соответствия с формой модели видимого


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

Помните, что 3D Rad будет использовать модель массы как справку для определения
того, как масса распределяется в теле. Например, модель массы для самолета может
быть подобной

Бесспорно, масса фюзеляжа больше, чем масса крыльев. Там, где модель массы
предоставляет больший объем, 3D Rad назначит большую массу телу.

Помните, модель массы ничего не делает с определением столкновений. Есть модель


определения столкновений (параллелепипед/сфера - группа), которая определяет, где
тело сплошное, а где нет. Модель массы, вместо этого, определяет только, какие части
тела весят больше, и какие части легкие.

Использование объектов SkinMesh как аспектов для объектов твердого тела

Так как объект твердого тела не поддерживает расширенную визуализацию,


"rigidBody_mesh.x" обычно моделируется как простая справочная геометрия. Для
выпускаемой версии игры обычно используются один или больше объектов SkinMesh,
присоединенных к твердому телу, как показано во вводном уроке.

Полигональные твердые тела

Для объектов твердого тела, которые не перемещаются (ландшафты, здания, дороги и


т.д.) геометрия определения столкновений может основываться на полигональных
трехмерных моделях вместо параллелепипеда/сферы - группы.

В 3D Rad Вы оставите тестовый проект с платформой, и Ваше новое твердое тело,


рикошетирующее от него. Если нет, создайте подобный проект, и затем выполните Объект
- Установить пользовательское твердое тело (полигоны) для добавления новой
полигональной формы к библиотеке объектов твердых тел.

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

После закрытия диалогового окна Вы должны увидеть что-то, подобное этому:

Установленный по умолчанию аспект для нового полигонального твердого тела - это


простой мост. Перепозиционируйте объект, если нужно, затем нажмите пробел для
проверки того, что столкновения работают так, как ожидается.

Заменив установленные по умолчанию файлы DirectX® (.x) в папке данных нового


твердого тела своими собственными файлами, Вы можете настроить форму новой
геометрии.

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

Для Вашего первого теста создайте простую модель с использованием полигонов,


которые имеют средний размер (стороны) между 0,2 и 30 метрами. Избегайте сильно
растянутых полигонов.

Убедитесь, что все поверхности модели имеют только цвет (нет текстур или специальных
настроек), и никакая внешняя информация, подобная костям или анимации, не является
частью модели.

Экспортируйте Вашу модель в папку данных новой геометрии дважды, как "rigidBody_.x", и
как "rigidBody_mesh.x" в порядке замещения существующих в папке файлов .х.

Помните, что подобно тому, что мы обсуждали выше, о геометрии, основанной на


параллелепипеде/сфере - группе, "rigidBody_mesh.x" может быть каркасом со
спроецированной текстурой, с дополнительными деталями, которые не интересуют Вас
при проверке столкновений.

Что касается отбрасывателя теней, Вы можете либо смоделировать детали Вашего


статического каркаса как замкнутые оболочки и экспортировать геометрию как
"rigidBody_shadow.x" (для перезаписи установленного по умолчанию), или Вы можете
просто удалить файл "rigidBody_shadow.x".

2. Чтобы увидеть и проверить Вашу работу, вернитесь в 3D Rad и нажмите R для


освежения объекта статического твердого тела (убедитесь, что он является выделенным
элементом).

Замечания по моделированию твердых тел

1. Убедитесь, что модель определения столкновений не включает мелкие полигоны (со


средней стороной менее 0,2 метра), сильно растянутые полигоны (длина одной стороны
менее 5% от периметра полигона) или большие полигоны (длина средней стороны более
50 метров). Из-за ограничений в математике центрального процессора определение
столкновений для этих видов полигонов будет неточным, порождая нестабильную
симуляцию.

Типичная проблема, порождаемая большими полигонами - это "дрожание" объектов,


которые вместо этого должны покоится на земле.

Типичная проблема, порождаемая мелкими/растянутыми полигонами - это низкая частота


кадров.

2. Избегайте перекрывающихся поверхностей (особенно если они направлены в


противоположных направлениях!) и тонки объемов (подобных тонким стенам).

Эти структуры могут привести к сбою определения столкновения, позволяя быстрым


объектам проходить сквозь себя.

Наиболее надежная поверхность - это односторонняя поверхность.

Если Вам нужно сделать стены и потолок, убедитесь, что их толщина адекватна скорости
сталкивающихся с ними объектов.

3. Объекты твердого тела, основанные на параллелепипеде/сфере - группе будут


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

Например, рассмотрим следующий случай: статический объект из одного треугольника


сталкивается с шаром.

Столкновение не будет определено должным образом, если сфера столкнется с ребром


треугольника. Изображенная выше проблема может быть исправлена моделированием
вместо этого треугольного статического тела так, как показано ниже:

Наиболее часто задаваемые вопросы

Вопрос: Я смоделировал большой ландшафт с использованием специализированного


приложения. Как мне импортировать его в 3D Rad?

Ответ: В 3D Rad Вы можете реализовывать ландшафты как объединение видимых


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

Вопрос: Если твердое тело + SkinMesh - это рекомендованная технология для реализации
пользовательских ландшафтов, тогда для чего объект ландшафта? Могу ли я изменять
его?

Ответ: Ландшафт - это предварительно созданный объект, который Вы можете


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

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

Ответ: Пожалуйста, помните, что объект SkinMesh - это просто компонент, одиночный
визуальный модуль. Обычно Вы используете много объектов SkinMesh для композиции
элемента игры, подобного персонажу. Для получения максимальной производительности
Вы должны разрабатывать Ваши модели так, чтобы они могли быть импортированы с
использованием настолько малого количества объектов SkinMesh, насколько это
возможно, но когда каркас должен иметь множественные характеристики поверхности,
нет никаких накладных расходов в использовании нескольких SkinMesh по сравнению с
другими продуктами, которые делают разделение во время визуализации, переключая
шейдеры на лету.

Я знаю, что объект SkinMesh может быть "присоединен к" и быть несомым другими
объектами, но могу ли я присоединить SkinMesh (например, меч) к кости анимированного
персонажа (например, к ксти руки)?

Ответ: Да, пожалуйста, посмотрите проект SkinMeshBoneDemo.3dr для демонстрации. В


3D Rad нажмите Ctrl+O, чтобы увидеть список доступных демонстрационных проектов.

Вопрос: Я хочу, чтобы мой персонаж со скелетной анимацией ходил с использованием


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

Ответ: Да. Пожалуйста, посмотрите проект SkinMeshBoneControlDemo.3dr для


демонстрации.

Вопрос: Я хочу, чтобы монстры и реквизит в сцене реалистично отвечали на столкновения


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

Ответ: 3D Rad позволяет Вам присоединять объекты твердого тела к отдельным костям
ваших анимированных персонажей. Затем эти твердые тела будут взаимодействовать
(сталкиваться) в сцене с любыми другими объектами, основанными на твердых телах.
Например, пожалуйста, посмотрите проект SkinMeshBoneRigidBodyDemo.3dr для
примера.

Олег Широколава, e-mail: shyrokolava@mail.ru