3ds Max. Создание ломающегося предмета (дневник исследования) — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

3ds Max. Создание ломающегося предмета (дневник исследования) — различия между версиями

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск
м
м (Модель готова)
Строка 67: Строка 67:
 
Открываю сцену в максе, добавляю кость: Create-> System -> Bones. Переименую её в link.
 
Открываю сцену в максе, добавляю кость: Create-> System -> Bones. Переименую её в link.
 
{|
 
{|
|[[Изображение:3D-max-bone-test-box.jpg|thumb|400px|Добавление кости]]
+
|[[Изображение:3D-max-bone-test-box.jpg|thumb|400px|Добавление костей]]
 
|[[Изображение:3d-max-init.gif|frame|Инициализация скелета]]
 
|[[Изображение:3d-max-init.gif|frame|Инициализация скелета]]
 
|}
 
|}
Строка 83: Строка 83:
 
<font color="green" size="101%">+</font>  Недеформируемые вершины (Твердые)<br />
 
<font color="green" size="101%">+</font>  Недеформируемые вершины (Твердые)<br />
 
<font color="blue" size="101%">+</font>  Пустые вершины без весa и привязки к кости<br />
 
<font color="blue" size="101%">+</font>  Пустые вершины без весa и привязки к кости<br />
Сам ящик твердый, и поэтому мы используем для него rigid вершины. Счала надо очистить вершины от других костей, нажимаем select, выделяем вершины, переключаемся на синие вершины, нажимаем Assign to link и тыкаем на желтую полоску кости link. Вес и привязка сняты, теперь переключаемся на зеленые и опять тыкаем на линк, привязка назначена, делаем тоже самое с плафоном только тыкаем уже на соответствующую кость plafon. Теперь провод, здесь нам нужно перейти на Envelopes,  тыкаете на нужные кости провода, переключаетесь на cross Section масштабируете енвайлоп как надо, периодически вращая кости подгоняете все как нужно у каждой кости.
+
Сам ящик твердый, и поэтому мы используем для него rigid вершины. Счала надо очистить вершины от других костей, нажимаем select, выделяем вершины, переключаемся на синие вершины, нажимаем Assign to link и тыкаем на желтую полоску кости link. Вес и привязка сняты, теперь переключаемся на зеленые и опять тыкаем на линк, привязка назначена.
 +
 
 +
Теперь экспортируем модель нашего ящика через Export Skin, а части простым экспортом(Export Editor Objects). Я сохранил модель ящика под именем test_box, а частей как test_box_prt{номер части}.

Версия 12:45, 11 июня 2007

Автор: Neo][

Введение

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


Поехали

Первым делом решил посмотреть, что из себя представляет модель деревянного ящика, нашёл две модели:

  • gamedata\meshes\objects\dynamics\box\box_wood_01.ogf
  • gamedata\meshes\physics\box\box_wood_01.ogf

Просмотрев модели в этих директориях, остановился на gamedata\meshes\physics\box\box_wood_01.ogf. Хотя в обоих случаях присутствует папка \prt\, из названия ясно, что это части объектов(part), т.е. их также необходимо отдельно моделить, жаль, что xray + ode не считают это в динамике. Хотя для стекла-то нет частей, через опыты понятно, что стекло ломается по полигонам. Ну да ладно разговор не об этом.

Есть целая модель, есть части, значит... Значит надо как-то указать эти части, правильно конфиг объекта. Иду искать. Нахожу:

  • gamedata\config\models\objects\box_wood_01.ltx

Меня заинтересовала секция:

[destroyed]
physics\box\prt\box_wood_01_prt1
physics\box\prt\box_wood_01_prt2
physics\box\prt\box_wood_01_prt3
physics\box\prt\box_wood_01_prt4
physics\box\prt\box_wood_01_prt5
physics\box\prt\box_wood_01_prt6
physics\box\prt\box_wood_01_prt7
 
[autoremove_parts]
time = 15

Значит со структурой ломающихся объектов разобрались.

Создаём, да прибудет SDK в помощь

Теперь перенести бы это на процесс создания, первым делом попробуем подобрать необходимые шейдеры. Пошёл смотреть Описание шейдеров XRayMtl. Добавлю, что:

  • Engine - отображение текстуры в движке игры.
  • Compiler - используется при компиляции уровня.
  • Material - игровой материал (wallmark, sound и др.).

Выбрал:

  • Engine - models/model(Основной шейдер для динамических объектов)
  • Compiler - def_vertex(Основной vertex shader, раз физический объект, вершинный шейдер значит по любому нужен)
  • Material - objects/large_furnitura(Материал деревянных изделий)

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

Тестовый ящик

Экспортирую ящик и каждую из частей отдельно. Далее после экспорта в ogf с занесением в custom data модели почти копии файла gamedata\config\models\objects\box_wood_01.ltx и спавна в редакторе как destroyable_objects, натыкаюсь на кучу ошибок в редакторе, толи что-то неправильно, толи...


Update: При загрузке уровня получаю следующий лог:

 stack trace:
 001B:0049B5FF XR_3DA.exe, CCF_Skeleton::CCF_Skeleton()
 001B:01CC39FF xrGame.dll
 001B:01C8AA2B xrGame.dll
 001B:01C82A34 xrGame.dll

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

Открываю сцену в максе, добавляю кость: Create-> System -> Bones. Переименую её в link.

Добавление костей
Инициализация скелета


Теперь применю к мешу ящика модификатор Physique. Проинициализурем скелет, нажатием на кнопку Attach to Node и выбрав кость link.
Теперь небольшое отступление по поводу этого модификатора. Раскрыв свиток модификатора, мы видим там следующее:

  • Envelope – Настройка веса вершин и привязке к кости с помощью огибающих
  • Link – Настройка параметров костей
  • Bulge – Редактор выпуклостей
  • Tendons – Редактор сухожилий
  • Vertex – Настройка типа вершин и привязка к кости.

Но меня интересует только Envelope и Vertex. Настрою привязку вершин к кости, учитывая, чтобы ни одна вершина не осталась непривязанной. Иду в Vertex.
Типы вершин:
+ Деформируемые вершины (мягкие)
+ Недеформируемые вершины (Твердые)
+ Пустые вершины без весa и привязки к кости
Сам ящик твердый, и поэтому мы используем для него rigid вершины. Счала надо очистить вершины от других костей, нажимаем select, выделяем вершины, переключаемся на синие вершины, нажимаем Assign to link и тыкаем на желтую полоску кости link. Вес и привязка сняты, теперь переключаемся на зеленые и опять тыкаем на линк, привязка назначена.

Теперь экспортируем модель нашего ящика через Export Skin, а части простым экспортом(Export Editor Objects). Я сохранил модель ящика под именем test_box, а частей как test_box_prt{номер части}.

Другие места
LANGUAGE