Реакция на прикосновение

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

(Различия между версиями)
Перейти к: навигация, поиск
(Введение)
Строка 2: Строка 2:
     after the equal sign. The information will be translated into a
     after the equal sign. The information will be translated into a
     formatted page upon being saved.
     formatted page upon being saved.
-
-->
+
-->{{Статья|автор=AndreyFilantrop. За образец взята статья с Crydev.net CryWiki|сложность=Средняя|совместимости=All|требования= Crysis Mod SDK 1.2; Sandbox 2; 3d max (в статье 3 d max 8). |добавлена=02/02/11}} <!-- The article's topic (Basic Level Design, Terrain...)-->
-
{{Статья
+
-
|автор=AndreyFilantrop. За образец взята статья с Crydev.net CryWiki
+
-
|сложность=Средняя
+
-
|совместимости=All
+
-
|требования= Crysis Mod SDK 1.2; Sandbox 2; 3d max (в статье 3 d max 8).  
+
-
|добавлена=02/02/11
+
-
}}
+
-
 
+
-
<!-- The article's topic (Basic Level Design, Terrain...)-->
+
== Реакция на прикосновение для растений ==
== Реакция на прикосновение для растений ==
Далее по тексту для удобства чтения "изгиб от прикосновения для растительности или '''ИП'''"
Далее по тексту для удобства чтения "изгиб от прикосновения для растительности или '''ИП'''"
 +
== Введение ==
== Введение ==
-
Изгиб от прикосновения это эффект, когда игрок, проходя мимо части растения, задевает ветви, заставляя их двигаться. Руководство подразумевает, что вы уже настроили растение для базового экспорта и детальную реакцию (синоним = '''детальный изгиб''') как описано в статье [[Детальная реакция для растительности]], и что у вас имеется базовое знание '''3D Studio Max''' и '''CryEngine''' экспортера. Эта процедура предназначена для больших листьев или веток, которые изгибаются при воздействии. Это типа установки костей или веревки, базирующееся на '''UV instancing'''. '''UV instancing''' означает повторение, точнее клонирование элементов с идентичной UV развёрткой – это очень важно для нас в создании '''ИП'''.  
+
Изгиб от прикосновения это эффект, когда игрок, проходя мимо части растения, задевает ветви, заставляя их двигаться. Руководство подразумевает, что вы уже настроили растение для базового экспорта и детальную реакцию (синоним = '''детальный изгиб''') как описано в статье [[Детальная реакция для растительности]], и что у вас имеется базовое знание '''3D Studio Max''' и '''CryEngine''' экспортера. Эта процедура предназначена для больших листьев или веток, которые изгибаются при воздействии. Это типа установки костей или веревки, базирующееся на '''UV instancing'''. '''UV instancing''' означает повторение, точнее клонирование элементов с идентичной UV развёрткой – это очень важно для нас в создании '''ИП'''. Когда вы наберете в вашем редакторе '''Sandbox 2''' в консоли команду '''p_draw_helpers = 1''', то увидите, что все оригинальные большие кусты и деревья в '''Crysis''' имеют помимо непосредственной геометрии также еще два прокси, расположенных один в другом, в центре которых сама геометрия и располагается. А теперь нажмите '''Ctrl+G''', и попробуйте подойти вплотную к любому большому кусту, постреляйте в него или пройдите сквозь него. Вы увидите массу появившихся розовых палочек, которые дублируют форму каждой ветки иммитируя её скелет. О том, как эти палочки созданы - данная статья.
-
Когда вы наберете в вашем редакторе '''Sandbox 2''' в консоли команду '''p_draw_helpers = 1''', то увидите, что все оригинальные большие кусты и деревья в '''Crysis''' имеют помимо непосредственной геометрии также еще два прокси, расположенных один в другом, в центре которых сама геометрия и располагается. А теперь нажмите '''Ctrl+G''', и попробуйте подойти вплотную к любому большому кусту, постреляйте в него или пройдите сквозь него. Вы увидите массу появившихся розовых палочек, которые дублируют форму каждой ветки иммитируя её скелет. О том, как эти палочки созданы - данная статья.
+
== Установка ==
== Установка ==
-
Для того чтобы изгибы прикосновений работали, вам нужен элемент растения, к которому уже применен UV-модификатор и правильно применен детальный изгиб. Вам также нужно по крайней мере 3 думми '''dummy''' и '''proxy mesh'''. Думми нужны чтобы создать деформирующий скелет, а прокси решает, когда скелет активируется (что-то типа '''area trigger''', т.е. триггерная зона).  
+
Для того чтобы изгибы прикосновений работали, вам нужен элемент растения, к которому уже применен UV-модификатор и правильно применен детальный изгиб. Вам также нужно по крайней мере 3 думми '''dummy''' и '''proxy mesh'''. Думми нужны чтобы создать деформирующий скелет, а прокси решает, когда скелет активируется (что-то типа '''area trigger''', т.е. триггерная зона).
 +
 
 +
При установке изгибов прикосновением важно помнить, что система базируется на '''UV instancing'''. Установленный правильно, единственный '''UV-mapped mesh''' (меш к которому применем UV модификатор) работает как шаблон, позволяющий другим его клонам ('''instances''') этого же '''mesh''' использовать шаблонную думми-установку для симуляции изгибания. Если ваше растение состоит из нескольких различных листьев или веток, крайне важно, чтоб каждый уникальный '''mesh''' имел свою собственную думми установку. Таким образом, начинаем шоу: врубайте '''3D Studio Max''' и открывайте файл с вашим растением. После применения детальной реакции перед началом настройки '''ИП''' у вас должно уже быть растение такого вида (на картинке я для удобства выделил два прокси элемента, а геометрия растения не выделена):
 +
 
 +
 
 +
 
 +
[[File:Before touch bending.jpg|RTENOTITLE]]
 +
 
-
При установке изгибов прикосновением важно помнить, что система базируется на '''UV instancing'''. Установленный правильно, единственный '''UV-mapped mesh''' (меш к которому применем UV модификатор) работает как шаблон, позволяющий другим его клонам ('''instances''') этого же '''mesh''' использовать шаблонную думми-установку для симуляции изгибания. Если ваше растение состоит из нескольких различных листьев или веток, крайне важно, чтоб каждый уникальный  '''mesh''' имел свою собственную думми установку.
 
-
Таким образом, начинаем шоу: врубайте '''3D Studio Max''' и открывайте файл с вашим растением. После применения детальной реакции перед началом настройки '''ИП''' у вас должно уже быть растение такого вида (на картинке я для удобства выделил два прокси элемента, а геометрия растения не выделена):
 
-
[[Файл:Before touch bending.jpg]]
 
Т.е. должна иметься:
Т.е. должна иметься:
-
1. сама геометрия растения с назначенным детальным изгибом,  
+
1. сама геометрия растения с назначенным детальным изгибом,
-
2. прокси '''proxy_bending''' с настройкой как у меня (впрочем пока можете пропустить настройку, т.к. о ней речь пойдёт чуть дальше),  
+
2. прокси '''proxy_bending''' с настройкой как у меня (впрочем пока можете пропустить настройку, т.к. о ней речь пойдёт чуть дальше),
-
3. '''obstruct_Ai''' прокси, который для нашего '''ИП''' не нужен, но его назначение описывается в статье [[Настройка деревьев]]. Настройте его сейчас, а то потом забудете: также как и всегда назначьте в субматериале '''Crytek Shader''', выберите из выпадающего списка '''«Obstruct»''' и установите галочку в '''«Physicalize»'''. Можете добавить прозрачность.  
+
3. '''obstruct_Ai''' прокси, который для нашего '''ИП''' не нужен, но его назначение описывается в статье [[Настройка деревьев]]. Настройте его сейчас, а то потом забудете: также как и всегда назначьте в субматериале '''Crytek Shader''', выберите из выпадающего списка '''«Obstruct»''' и установите галочку в '''«Physicalize»'''. Можете добавить прозрачность.
Для этого руководства я буду использовать один любой элемент моего растения, а именно - лист, т.к. все мои листья с их ветками соответствуют выше заданному условию '''UV instancing''' (оба прокси и все элементы модели кроме листа я временно отщепил и спрятал).
Для этого руководства я буду использовать один любой элемент моего растения, а именно - лист, т.к. все мои листья с их ветками соответствуют выше заданному условию '''UV instancing''' (оба прокси и все элементы модели кроме листа я временно отщепил и спрятал).
-
Этот лист который будет гнуться, когда игрок проходит через него.
+
Этот лист который будет гнуться, когда игрок проходит через него. Для начала нам нужно создать и установить думми, которые будут формировать скелет. В '''3D max''' – смотрим на панель справа, вкладка '''Create/Helpers/Dummy''' . Необходимо по крайней мере 3 думми для установки, так что для этого примера создадим и назовем их '''branch1_1''', '''branch1_2''', and '''branch1_3'''. Важно, чтоб вы назвали думми в точности как описано, т.к. в противном случае движок не распознает их. Вы можете создать более детальный скелет за счет добавления большего количества думми, т.к я не знаю, какое максимальное их количество вообще возможно. Если у вас более чем одна ветко-установка, то следующая ветко-установка должна иметь думми с именами '''branch2_x'''. То что вы видите на рисунке ниже, это:
-
Для начала нам нужно создать и установить думми, которые будут формировать скелет. В '''3D max''' – смотрим на панель справа, вкладка '''Create/Helpers/Dummy''' . Необходимо по крайней мере 3 думми для установки, так что для этого примера создадим и назовем их '''branch1_1''', '''branch1_2''', and '''branch1_3'''. Важно, чтоб вы назвали думми в точности как описано, т.к. в противном случае движок не распознает их. Вы можете создать более детальный скелет за счет добавления большего количества думми, т.к я не знаю, какое максимальное их количество вообще возможно. Если у вас более чем одна ветко-установка, то следующая ветко-установка должна иметь думми с именами '''branch2_x'''. То что вы видите на рисунке ниже, это:
+
1. Мой отщепленный от всего растения листок в двух проекциях
1. Мой отщепленный от всего растения листок в двух проекциях
Строка 48: Строка 42:
2. Три думми, с именами в точности как указано выше,
2. Три думми, с именами в точности как указано выше,
-
3. Иерархия, появившаяся при нажатии в '''3d max''' кнопки '''Select by Name'''|, показывающая, что я создал думми и присоединил их к основной геометрии листа (обратите внимание, что '''branch1_1''' расположен ближе к основанию листа, а '''branch1_3''' на кончике листа).  
+
3. Иерархия, появившаяся при нажатии в '''3d max''' кнопки '''Select by Name'''|, показывающая, что я создал думми и присоединил их к основной геометрии листа (обратите внимание, что '''branch1_1''' расположен ближе к основанию листа, а '''branch1_3''' на кончике листа).
-
[[Файл:2 views.jpg]]
 
-
Вторая часть изгиба от прикосновения это прокси. Это тот самый '''proxy_bending''' прокси, о котором шла речь выше. Поэтому, если его у вас ещё нет, самое время его создать. Создайте прокси, который окружает видимые части. Пусть он будет простым, т.к. он нужен только для определения, находится ли игрок рядом с растением и нужно ли скелету быть активированным. У кого он спрятан, верните его в сцену.  
+
[[File:2 views.jpg|RTENOTITLE]]
 +
 
 +
 
 +
 
 +
Вторая часть изгиба от прикосновения это прокси. Это тот самый '''proxy_bending''' прокси, о котором шла речь выше. Поэтому, если его у вас ещё нет, самое время его создать. Создайте прокси, который окружает видимые части. Пусть он будет простым, т.к. он нужен только для определения, находится ли игрок рядом с растением и нужно ли скелету быть активированным. У кого он спрятан, верните его в сцену.
Я не стал делать отдельную картинку для него, т.к. у меня он виден на первом изображении в этой статье - там это зелёный куб.
Я не стал делать отдельную картинку для него, т.к. у меня он виден на первом изображении в этой статье - там это зелёный куб.
Строка 59: Строка 56:
== Материалы и экспорт ==
== Материалы и экспорт ==
-
Т.к. прокси должны быть прикреплены к основной геометрии растения (повторяю это уже не первый раз, но это очень важно), нам потребуется мульти субматериал '''multi-sub material.''' Ниже представлены '''multi-sub''' и '''proxy sub material.'''
+
Т.к. прокси должны быть прикреплены к основной геометрии растения (повторяю это уже не первый раз, но это очень важно), нам потребуется мульти субматериал '''multi-sub material.''' Ниже представлены '''multi-sub''' и '''proxy sub material.''' '''Proxy''' материал должен быть назван '''proxy_bend.''' (у меня '''proxy_bending''' - но тоже работает) Должна стоять галочка в '''Physicalize''' и в выпадающем меню быть выбран '''«No Collide»'''. Не забудьте назначить этому мэшу правильный суб-материал '''sub-material'''. Как видите у меня на рисунке материала 2 окошка - это сделано в фотошопе, у вас в '''3 d max''' естественно будет только одно. К тому же в моем материале модели '''zelenaya_botva''' целых 6 субматериалов. Это не принципиально, просто следуйте логике - чем больше субматериалов с назначенными текстурами, тем больше грузится память в редакторе. Поэтому для моего растения вполне достаточно трёх первых по списку '''id''' 1-3.
-
'''Proxy''' материал должен быть назван '''proxy_bend.''' (у меня '''proxy_bending''' - но тоже работает) Должна стоять галочка в '''Physicalize''' и в выпадающем меню быть выбран '''«No Collide»'''. Не забудьте назначить этому мэшу правильный суб-материал '''sub-material'''. Как видите у меня на рисунке материала 2 окошка - это сделано в фотошопе, у вас в '''3 d max''' естественно будет только одно. К тому же в моем материале модели '''zelenaya_botva''' целых 6 субматериалов. Это не принципиально, просто следуйте логике - чем больше субматериалов с назначенными текстурами, тем больше грузится память в редакторе. Поэтому для моего растения вполне достаточно трёх первых по списку '''id''' 1-3.
+
-
[[Файл:Proxybend mat.jpg]]
+
 
 +
 
 +
[[File:Proxybend mat.jpg|RTENOTITLE]]
{{Примечание|Очень важно помнить, что вы должны сначала ПОЛНОСТЬЮ подготовить материал именно с ПОЛНОСТЬЮ установленными субматериалами для обоих прокси, а потом уже его экспортировать в редактор.}}
{{Примечание|Очень важно помнить, что вы должны сначала ПОЛНОСТЬЮ подготовить материал именно с ПОЛНОСТЬЮ установленными субматериалами для обоих прокси, а потом уже его экспортировать в редактор.}}
-
Вот как выглядят розовые палочки о которых шла речь в начале статьи (на заднем плане - сейчас камера игрока находится как раз внутри '''proxy_bending''') и два вышеописанных прокси относительно самой геометрии растения (на переднем плане). Консольные команды для получения такого результата приведены ниже.
+
Вот как выглядят розовые палочки о которых шла речь в начале статьи (на заднем плане - сейчас камера игрока находится как раз внутри '''proxy_bending''') и два вышеописанных прокси относительно самой геометрии растения (на переднем плане).  
-
[[Файл:Plant skelenon.jpg]]
+
 
-
+
&nbsp;[[File:Plant skelenon.jpg|RTENOTITLE]]
 +
 
 +
 
 +
 
 +
Консольные команды для получения такого результата приведены ниже.
 +
 
 +
 
=== Отладка ===
=== Отладка ===
Строка 74: Строка 78:
Эти консольные команды вы можете использовать для отладки ваших ресурсов в редакторе:
Эти консольные команды вы можете использовать для отладки ваших ресурсов в редакторе:
-
;p_draw_helpers 1:Показывает физикализированные сетки.
+
;p_draw_helpers 1
-
;e_debug_draw 1:Показывает используемую вашим объектом память текстур и сетки.
+
:Показывает физикализированные сетки.
 +
;e_debug_draw 1
 +
:Показывает используемую вашим объектом память текстур и сетки.
Чтобы отключить их, замените 1 на 0.
Чтобы отключить их, замените 1 на 0.
Строка 81: Строка 87:
== См. также ==
== См. также ==
-
* [[Детальная реакция для растительности]]
+
*[[Детальная реакция для растительности]]
-
* [[Настройка деревьев]]
+
*[[Настройка деревьев]]
-
* [[Использование инструмента Vegetation]]
+
*[[Использование инструмента Vegetation]]
-
* [[Процедурное разрушение 3D-объектов]]
+
*[[Процедурное разрушение 3D-объектов]]
-
[[Категория:Официальная документация:Создание ресурсов:Основы]]
+
<br/>[[Category:Официальная документация:Создание ресурсов:Основы|Официальная_документация:Создание_ресурсов:Основы]] <br/><br/>

Версия 11:10, 3 февраля 2012

О статье
АвторAndreyFilantrop. За образец взята статья с Crydev.net CryWiki
СложностьСредняя
ТребованияCrysis Mod SDK 1.2; Sandbox 2; 3d max (в статье 3 d max 8).
Дата добавления02/02/11


Содержание

Реакция на прикосновение для растений

Далее по тексту для удобства чтения "изгиб от прикосновения для растительности или ИП"


Введение

Изгиб от прикосновения это эффект, когда игрок, проходя мимо части растения, задевает ветви, заставляя их двигаться. Руководство подразумевает, что вы уже настроили растение для базового экспорта и детальную реакцию (синоним = детальный изгиб) как описано в статье Детальная реакция для растительности, и что у вас имеется базовое знание 3D Studio Max и CryEngine экспортера. Эта процедура предназначена для больших листьев или веток, которые изгибаются при воздействии. Это типа установки костей или веревки, базирующееся на UV instancing. UV instancing означает повторение, точнее клонирование элементов с идентичной UV развёрткой – это очень важно для нас в создании ИП. Когда вы наберете в вашем редакторе Sandbox 2 в консоли команду p_draw_helpers = 1, то увидите, что все оригинальные большие кусты и деревья в Crysis имеют помимо непосредственной геометрии также еще два прокси, расположенных один в другом, в центре которых сама геометрия и располагается. А теперь нажмите Ctrl+G, и попробуйте подойти вплотную к любому большому кусту, постреляйте в него или пройдите сквозь него. Вы увидите массу появившихся розовых палочек, которые дублируют форму каждой ветки иммитируя её скелет. О том, как эти палочки созданы - данная статья.

Установка

Для того чтобы изгибы прикосновений работали, вам нужен элемент растения, к которому уже применен UV-модификатор и правильно применен детальный изгиб. Вам также нужно по крайней мере 3 думми dummy и proxy mesh. Думми нужны чтобы создать деформирующий скелет, а прокси решает, когда скелет активируется (что-то типа area trigger, т.е. триггерная зона).

При установке изгибов прикосновением важно помнить, что система базируется на UV instancing. Установленный правильно, единственный UV-mapped mesh (меш к которому применем UV модификатор) работает как шаблон, позволяющий другим его клонам (instances) этого же mesh использовать шаблонную думми-установку для симуляции изгибания. Если ваше растение состоит из нескольких различных листьев или веток, крайне важно, чтоб каждый уникальный mesh имел свою собственную думми установку. Таким образом, начинаем шоу: врубайте 3D Studio Max и открывайте файл с вашим растением. После применения детальной реакции перед началом настройки ИП у вас должно уже быть растение такого вида (на картинке я для удобства выделил два прокси элемента, а геометрия растения не выделена):


RTENOTITLE


Т.е. должна иметься:

1. сама геометрия растения с назначенным детальным изгибом,

2. прокси proxy_bending с настройкой как у меня (впрочем пока можете пропустить настройку, т.к. о ней речь пойдёт чуть дальше),

3. obstruct_Ai прокси, который для нашего ИП не нужен, но его назначение описывается в статье Настройка деревьев. Настройте его сейчас, а то потом забудете: также как и всегда назначьте в субматериале Crytek Shader, выберите из выпадающего списка «Obstruct» и установите галочку в «Physicalize». Можете добавить прозрачность.

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

Этот лист который будет гнуться, когда игрок проходит через него. Для начала нам нужно создать и установить думми, которые будут формировать скелет. В 3D max – смотрим на панель справа, вкладка Create/Helpers/Dummy . Необходимо по крайней мере 3 думми для установки, так что для этого примера создадим и назовем их branch1_1, branch1_2, and branch1_3. Важно, чтоб вы назвали думми в точности как описано, т.к. в противном случае движок не распознает их. Вы можете создать более детальный скелет за счет добавления большего количества думми, т.к я не знаю, какое максимальное их количество вообще возможно. Если у вас более чем одна ветко-установка, то следующая ветко-установка должна иметь думми с именами branch2_x. То что вы видите на рисунке ниже, это:

1. Мой отщепленный от всего растения листок в двух проекциях

2. Три думми, с именами в точности как указано выше,

3. Иерархия, появившаяся при нажатии в 3d max кнопки Select by Name|, показывающая, что я создал думми и присоединил их к основной геометрии листа (обратите внимание, что branch1_1 расположен ближе к основанию листа, а branch1_3 на кончике листа).


RTENOTITLE


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

Я не стал делать отдельную картинку для него, т.к. у меня он виден на первом изображении в этой статье - там это зелёный куб.

Материалы и экспорт

Т.к. прокси должны быть прикреплены к основной геометрии растения (повторяю это уже не первый раз, но это очень важно), нам потребуется мульти субматериал multi-sub material. Ниже представлены multi-sub и proxy sub material. Proxy материал должен быть назван proxy_bend. (у меня proxy_bending - но тоже работает) Должна стоять галочка в Physicalize и в выпадающем меню быть выбран «No Collide». Не забудьте назначить этому мэшу правильный суб-материал sub-material. Как видите у меня на рисунке материала 2 окошка - это сделано в фотошопе, у вас в 3 d max естественно будет только одно. К тому же в моем материале модели zelenaya_botva целых 6 субматериалов. Это не принципиально, просто следуйте логике - чем больше субматериалов с назначенными текстурами, тем больше грузится память в редакторе. Поэтому для моего растения вполне достаточно трёх первых по списку id 1-3.


RTENOTITLE

Примечание:
Очень важно помнить, что вы должны сначала ПОЛНОСТЬЮ подготовить материал именно с ПОЛНОСТЬЮ установленными субматериалами для обоих прокси, а потом уже его экспортировать в редактор.

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

 RTENOTITLE


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


Отладка

Эти консольные команды вы можете использовать для отладки ваших ресурсов в редакторе:

p_draw_helpers 1
Показывает физикализированные сетки.
e_debug_draw 1
Показывает используемую вашим объектом память текстур и сетки.

Чтобы отключить их, замените 1 на 0.

См. также