Каталог




Главная » Статьи » Обучающие статьи » Для мододелов » Создание моделей с коллизиями для Skyrim. Часть1. Пока без коллизии.


Создание моделей с коллизиями для Skyrim. Часть1. Пока без коллизии.




Gamlih



Статус: Offline
Автор статьи: Gamlih



Добавлено: 25 сентября 2015
Просмотров: 9158 | Комментарии: 13

Понравилось: 16 пользователям


Требуемые программы:
   Подразумевается, что у Вас установлен 3DS Max с требуемым плагином для импорта/экспорта в формате nif и Вы умеете им пользоваться (лично у меня версия «макса» от 2012 года). Кроме того у Вас имеется программа для работы с nif файлами NifSkope (лично у меня версия 2.0.0 alpha, в ней, в отличие от более распространенной версии 1.3.3, отображаются коллизии). Ну и программа для присоединения коллизий ChunkMerge, входящая в пакет NifTools.

    Рассмотрим метод на примере небольшого деревянного столика с бронзовой окантовкой столешницы. Для начала создадим в 3DS Max желаемую модель (рис.1). Объединяем все деревянные детали в один объект, соответственно все металлические в другой, так как это разные материалы и используют разные текстуры.
    Экспортируем модель в формат nif, присвоив ему имя, допустим, table_.nif и смотрим на полученное в NifSkope (рис.2):

Известно, что плагин для экспорта все равно работает как-то криво в плане шейдеров. Для того, чтобы в игре все отображалось как надо, используется метод подмены шейпдаты в «родных» скайримовских моделях. Для этого нам понадобится какая-нибудь модель, вытащенная из ресурсов игры. Я обычно пользуюсь бочкой barrel01.nif.
Открываем эту бочку в еще одном окне NifSkope:

и удаляем в модели «родную» коллизию, так как мы собираемся заменить ее на свою. Для этого кликаем правой кнопкой мыши (далее ПКМ) на блоке bhkCollisionObject и выбираем в контекстном меню Block → Remove Branch (удалить всю ветку).
Примечание: как показали недавние эксперименты, удалять коллизию bhkCollisionObject вовсе не обязательно. Программа ChunkMerge ее попросту игнорирует и заменяет имеющуюся на ту, которую Вы укажете в строке Collision-File.
    Затем копируем «родной» шейдер и вставляем его в эту же модель. Вы же помните, что в нашей модели два объекта из разных материалов и с разными текстурами, поэтому нам понадобится два «родных» шейдера, в которых мы подменим геометрию (шейпдату) на свои. Если в вашей модели объектов больше, то и копий шейдера понадобится больше. Для этого кликаем ПКМ на блоке с шейдером бочки, выбираем в контекстном меню Block → Copy Branch (копировать ветку) (рис.4),
затем кликаем ПКМ на «корневом» блоке модели, и выбираем Block → Paste Branch(поместить ветку) (рис.5)

    Теперь, я обычно переименовываю модель и блоки по своему. Мне так удобнее, не путаюсь где что. Для этого кликаем на переименовываемом блоке и в детальном описании блока внизу кликаем ПКМ на его названии. Выбираем в контекстном меню txt Edit String Index и даем ему любое удобное для Вас имя (рис.6). В моем примере это, соответственно, Table и Kant (рис.7)

    Теперь можно приступить к подмене геометрии. Для этого возвращаемся в окно NifSkope, в котором открыта Ваша модель и копируем шейпдату деревянной части стола. Развернем блок кликнув на «плюсик» блока, кликаем ПКМ на шейпдате NiTriShapeData. Выбираем в контекстном меню Block → Copy Branch (рис.8), после чего возвращаемся в окно NifSkope с моделью бочки и вставляем шейпдату в «корень» модели. Почему-то она вставляется именно в «корень», куда б не кликнул ;), но это не страшно. Вставка проста, кликаем ПКМ на «корневой» блок, выбираем в контекстном меню Block → Paste Branch (рис.9)

    Как я уже сказал, шейпдата отправляется в корневой блок в самый его низ и автоматически получает номер 10. Теперь мы кликаем на блок, в котором мы хотим подменить геометрию, в данном примере Table. В детальном описании блока находим строку Data. В ней содержится номер блока, в котором прописана геометрия. Если «развернуть» блок с шейдером (клик на «плюсике»), то мы увидим, что сейчас это блок номер 3.

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

    Как видите, блок 10 с геометрией начал отображаться на модели, а старый блок благополучно перекочевал из шейдера в «корень» и больше не виден. Та бочка, которая еще видна, это геометрия второго шейдера в нашей модели. Она еще не заменена.
Вытесненный ненужный блок номер 3 можно удалить чтобы не мешался. Кликаем по нему ПКМ и выбираем в контекстном меню Block → Remove Branch.
    Аналогичную подмену проводим и для второго шейдера. В итоге получаем почти готовую модель, но с текстурами оставшимися от прошлой модели и отсутствующей коллизией.
    Финальный аккорд – пропишем текстуры. Для этого разворачиваем в каждом блоке подблок с данными о текстурах BSShaderTextureSet и в детальном описании этого подблока (внизу) кликаем на строках ПКМ, выбираем в контекстном меню Texture → Choose и указываем путь к Вашим текстурам. Первая строчка это текстура, вторая – карта нормалей.

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

   Это готовая модель, которая будет корректно отображаться в игре. Но пока она не содержит коллизий и персонажи в игре будут через нее свободно проходить. Сохраняем nif с тем именем, с которым она будет использована Вами в игре. К примеру table.nif (Save As…).

    О том, как подготовить и внедрить коллизию в этот файл мы поговорим во второй части статьи.


Всего комментариев: 13

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











Ответ на жалобу смотрите в разделе жалоб