Воскресенье, 22.09.2024, 18:28
Приветствую Вас Гость | RSS
F.R.O.N.T.
Главная | Статьи | Регистрация | Вход
Меню сайта
Все новые статьи находяться на форуме!!! Видеть их могут только рарегистрированые пользователи...
Категории каталога
Мои статьи [28] Сценарии [0]
Пишите сюда свои сцинарии
Модострой [152]
Статьи по созданию модов
КАК СНЯТЬ ФИЛЬМ??? [0]
Статьи о том как снять фильмы
Мини-чат
Наш опрос
Какой мод лучше всего?
1. АМК 1.4
2. Другие
3. ЖЕСТЬ
4. Зона поражения 1-2
5. Прибой стори
6. Арсенал мод
7. Old good STALKER
8. АВС
9. Симбион
10. Addon To STALKER
11. СРП
12. New Level changer
13. АИ пак
14. CprHicks mod
15. Черноречье
Всего ответов: 110
Главная » Статьи » Модострой

Создание ломаючегося предмаета
Структура статьи

Раз это дневник, а не полноценная статья, то структура несколько странная получилась. Если интересен сам процесс исследования, то можно читать по порядку, иначе можно сразу перейти к секции Создание модели.

Введение

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

Поехали

Первым делом решил посмотреть, что из себя представляет модель деревянного ящика, нашёл две модели:
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

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

Создание модели

Теперь перенести бы это на процесс создания, первым делом попробуем подобрать необходимые шейдеры. Пошёл смотреть Описание шейдеров XRayMtl. Добавлю, что:
Engine - отображение текстуры в движке игры.
Compiler - используется при компиляции уровня.
Material - игровой материал (wallmark, sound и др.).

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




Попробую повторить тот же самый ящик, запускаю макс, быстренько моделю подобие ящика и частей на которые он будет распадаться. Для всего ящика ставлю настройки шейдеров, которые написаны выше, для частей же просто как для деревянный досок(Пресеты 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

Добавление костей

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

Открываю сцену в максе, добавляю 2 кости: 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{номер части}.

Дальнейшая настройка и конвертирование в *.ogf

Настройка Actor Editor-a

Запускаем Actor Editor, для удобства работы изменим некоторые настройки программы, а именно Preferences -> Objects -> Skeleton, поставим все галочки. Теперь загрузим наш объект(File-> Load...).


Настройка объекта

Первым делом настроим наш объект в целом, как я уже говорил в секции про исследование, что части объекта задаются конфигом. Для первого своего разрушаемого объекта я взял конфиг от ящика(gamedata\config\models\objects\box_wood_01.ltx), скопировал его, переименовал в test_box.ltx, далее немного изменил его в соответствии со своей задумкой.

Поменял только пути к частям: Оригинал(box_wood_01.ltx) Наш конфиг(test_box.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 [destroyed]
physics\test_box\prt\test_box_prt1
physics\test_box\prt\test_box_prt2


Остальное пока оставил без изменений. Загрузим получившийся конфиг в User Data объекта, т.е. в Object Item выбираем Object, в нижней части Item Properties, щёлкаем по полю User Data. Откроется диалог в котором нажимаем Load и ищем наш конфиг.
Всё с настройкой объекта закончили, перейдём к настройке геометрии.


Настройка геометрии

В Object Items развернём свиток Bones, в нашем случае будет одна кость с имненем link, выбираем её. В свойствах пункт Bones -> Global -> Generate Shape нажимае All. Идём ниже по списку:
Bones -> Bone -> Game Material указываем материал для нашей кости. Материал выбирается только из папки objects\, в соответствии с тем, какой материал хотим для нашего объекта, смотри Описание шейдеров XRayMtl. В нашем случае я выбрал objects/large_furnitura, что соответствует материалу деревянных изделий.
Bones -> Bone -> Mass - масса нашего объекта, я поставил 2.
Bones -> Bone -> Shape -> Type - форма геометрии, в нашем случае Box.

Далее нужно настроить геометрию так, как хотите, чтобы ваш объект коллизил с другими, т.е. после того, как type установлен в Box, должен появиться белый полупрозрачный шейп, это коллижен для пули и физики. Можно дополнительно редактировать шейп, например инструментом Scale.

Всё наш ящик готов к экспорту в ogf.
File -> Export -> Export OGF... сохраняем файл как: gamedata\meshes\physics\test_box\test_box.ogf

Теперь поочерёдно загружаем части нашего объекта, ничего не меняя экспортим их как: gamedata\meshes\physics\test_box\prt\test_box_prt{номер части в соотв. с конфигом}.ogf

Ставим наш ящик на карту

Наш ящик ставится, как энтити destroyable_object. Переводим редактор в режим Spawn Element и добавляем на карту энтити physics/destroyable_object.

Далее в свойствах энтити устанавливаем нашу модель в свойстве Model/Visual. Всё можно компилировать уровень и идти ломать её

Что дальше?

А дальше постараемся вспомнить все ролики, ФО и постараемся восстановить всё, что видели в них. Шкаф с отпадывающими дверками, "самодельные" бьющиеся лампы и т.д.

Благодарности
Юрию Негробову - за помощь в настройке объекта в Actor Editor-е.







Категория: Модострой | Добавил: front (06.05.2008)
Просмотров: 756 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Поиск
счетчик посещенийсчетчик посещений
Друзья сайта
 
Фан сайт игры S.T.A.L.K.E.R.

Бар_У_границы_Зоны_бар_настоящего_сталкера!

Статистика

На портале: 1
Новичков: 1
Участников: 0

Copyright MyCorp © 2024