Настройка физической прокси

Материал из CryWiki Russia

Версия от 17:26, 16 апреля 2011; DCamer (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Содержание

Настройка физической прокси

Настройка физической прокси в 3D-приложениях исключительна — просто настройка необходимого типа поверхности для редактора Sandbox.

Настройка в 3D-приложениях

3ds Max

Физическая прокси супер-простая версия вашей геометрии. В 3ds Max необходимо назначить отдельный идентификатор материала для прокси, а также убедиться, что все грани вашей прокси имеют один группу сглаживания. Учитывая отдельный идентификатор материала необходимо также создать дополнительные подматериал для прокси. Физикализируется как физическая прокси в настройка шейдера Crytek в редакторе материала 3ds Max. Физика может быть изменена только в 3ds Max, но никак не в редакторе. Если вы хотите изменить настройки физики, вам необходимо будет переэкспортировать объект. У физической прокси не должно быть открытых рёбер. Открытые рёбра могут запутать физический движок и негативно повлияеть на производительность. Также полезно назначить крайний цвет у прокси, чтобы сохранить обзор.

AssetCreation PhysicsProxy max sample.jpg
Рисунок 1. Пример.


XSI

Свойства узла

Как правило, особые свойства узла не нужны.
Движок будет автоматически пытаться заменить сетку физической прокси параметрическим примитивом, сравнивая прокси с некоторыми основными форм и приближая возможные примитивы к расчетным пределам. Форма создается вокруг общей ограничительной рамки геометрии и использует оригинальную точку опоры, пытаясь повернуть примитивы для соответствия геометрии. Использование примитивов экономит много времени на расчет столкновений (1 грань = 1 примитив). Поэтому важно как можно больше использовать примитивы.

Явные метки прокси с определенным значением (см. список ниже) указанные в Node Properties, движок расширяет ограничения и заменяет геометрию прокси названием примитивов.

  • nonphysical — используйте только те, у которых нет отдельного физического скелета.
  • sphere
  • box
  • capsule
  • cylinder

Настройка уровня детализации

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

Сложности

Физическая прокси объектов окружения (заборы, ящики, контейнеры, деревья, камни, лестницы и т. д.) должна быть ОЧЕНЬ ПРОСТОЙ.

Простота физической прокси важна не только для снижения избыточности памяти и физических расчетов, но и для создания более плавных движений. Чем сложней прокси, тем больше она занимает памяти, и тем больше теряется производительности по проверке столкновений в отношении его полигонов, и тем больше вероятность того, что высокочастотные детали сделают что игрок застрянет. Это влияет как на одиночную, так и на многопользовательскую игру, в том числе на производительность выделенного сервера. Идеальная прокси всегда примитивна (например, прямоугольник, сфера, капсула, или цилиндр). Движок признает примитивы из сетки, но по умолчанию tolerance очень низка, в целях усиления распознавания добавьте соответствующие ключевые слова («box», «sphere», и т. д.) в пользовательские свойства узла. Однако следует отметить, что сетка с несколькими типами поверхности не может быть преобразована в примитивы. Примитивы должны рассматриваться как вариант даже для более сложных объектов. В большинстве случаев предпочтительнее чтобы было несколько объектов (например, с отключенным «merge nodes») с примитивными частями вместо одного объекта.

Она используется для передвижения персонажа и для первого прохода отслеживания снарядов (пуль и декалей). The projectiles and decals are refined using the render mesh if a hit was detected against the phys proxy. The render mesh should be fully encapsulated by the physics proxy, so that player camera does not intersect the render geometry and first pass projectile culling does not miss the physical part of the object even though it hits the visual part of the object. There is also support for creating a special raytrace proxy that will be used for raytracing, if provided (they should be physicalized as «nocollide»). That would then allow the main proxy to not have to encapsulate the render mesh and thus be even simpler.

For example, simple object like crates and fences can mostly be approximated with a simple block, 6 sides, 12 triangles. The top of stairs should be simple ramps, 2 triangles. More organic or irregularly shaped objects like rocks and trees can still be approximated with a fairly simple hull by allowing slight and acceptable inaccuracies between the render mesh and the physical proxy.

Please talk to David Mondelore for further details.

Linking Objects to simplify export

Physics proxies can be part of the render object (in 3dsMax as an Element) or as a separate object, linked to the render object.

Setup in Sandbox

In Sandbox you need to assign a surfacetype to your physik proxy in the material editor, as well as to your render geometry. The surfacetype gives information about sound and particle effect of your surface. You also need to assign a NoDraw shader in the material editor. Also make sure that no textures are assigned to you proxy sub material. The Physic Proxy will never be rendered in the engine without debug view. even if you assign an illum shader it will stay invisible. To reload the physic proxy you need to reload your object, delte it and undo delte.

Debugging

  • p_draw_helpers 1 shows the physics geometry. Parametric primitives are shown in a different rendering style.
AssetCreation PhysicsProxy editor sample.jpg
Рисунок 2. Пример без отладки.


AssetCreation PhysicsProxy editor sample debug.jpg
Рисунок 3. Пример с отладкой.