1. Подготовка
Сегодня мы поговорим о картинах. В Обливионе мы можем видеть много различных картин на стенах домов и замков. Почему бы нам не украсить свой дом/замок собственными картинами? Это могут быть пейзажи, фото родственников или любимых киноактеров или просто автопортрет. По сути же это есть одна из форм ретекстурирования. Я думаю, в данном уроке не будет ничего сложного, при этом результат может быть весьма интересным. Запускаем TES Construction Set. Для начала поищем картины. В Окне Объектов (Object Window) они находятся в закладке WorldObjects>Static>Clutter. Но можно поступить несколько иначе. В строке меню переходим Edit>Find Text и в строке Search Text вбиваем Painting (живопись, картина). Жмем Find Text. Нашлось много чего, но мы переходим на закладку – Objects, etc. Сортируем по типу (Type) и смотрим на Static – это все картины:
![](https://igorlutiy.pp.ua/wp-content/uploads/2022/12/painting.jpg)
Осталось выбрать из этого множество что-то, что мы будем изменять. Я пожалуй возьму одну настенную картину — MiddlePaintingLandscape02d и еще одну на стойке — MS51PaintingRewardChanel (она правда расположена несколько в ином месте – MiscItem>Furniture).
Как я их выбрал? То есть, как можно посмотреть в КС как выглядит та или иная модель? Выбираем нужный объект и кликаем правой клавишей на нем, в открывшемся меню выбираем Use Info:
![](https://igorlutiy.pp.ua/wp-content/uploads/2022/12/painting2.jpg)
Откроется окошко Use Report:
![](https://igorlutiy.pp.ua/wp-content/uploads/2022/12/painting_2.jpg)
В этом окошке мы можем узнать где используется данный объект. Окно поделено на две части:
1) Used by these objects – показывается, в каких объектах используется данный объект. Это могут быть скрипты, контейнеры, существа, уровневые списки и многое другое.
2) Used in these Cells – показывается, в каких ячейках используется данный объект. Двойной клик по ячейке загрузит эту ячейку в Окне Просмотра (Render Window) с выделенным нашим объектом. Таким образом, мы можем посмотреть, как конкретный объект выглядит в игре. Согласен, способ идиотский, но иного в КС Обливиона к сожалению нет.
Объекты выбраны. Теперь нам нужно найти их модели. Для этого выделяем нашу картину в Окне Объектов (Object Window) и правее в столбце Model видим путь к нужной модели:
![](https://igorlutiy.pp.ua/wp-content/uploads/2022/12/painting_3.jpg)
Однако все модели запакованы в BSA-архивы. Модели хранятся в архиве Oblivion – Meshes. Все BSA-архивы в свою очередь находятся в:
\Oblivion\Data
То есть нам нужно извлечь необходимые модели из архива. Чем и как это сделать подробно расписано в туториале:
Распаковка BSA-архивов Обливиона. Работа с BSA Commander и OBMMhttp://modder.ucoz.ru/load/3-1-0-107
поэтому здесь я не буду на этом останавливаться.
Итак, мы извлекли две модели (для каждой из картин). Теперь их нужно расположить в нужном месте:
Oblivion\Data\meshes\clutter\middleclass\paintings\middlepaintinglandscape02b.nif
Oblivion\Data\meshes\furniture\middleclass\ms51rewardpainting.nif
Модели у нас есть. Теперь займемся текстурами, так как именно с ними мы будем работать далее.
Сначала нужно выяснить какая текстура используется в каждой из моделей, а потом их извлечь из архива так же, как и модели перед этим.
Чтобы узнать, какая текстура используется моделью, открываем модель в программе NifSkope. В окне BlockList разворачиваем узлы NiTriStrips и далее узлы NiTexturingProperty. Нас интересуют строки NiSourceTexture. В этих строках прописаны текстуры. В нашем случае модель использует три различные текстуры:
![](https://igorlutiy.pp.ua/wp-content/uploads/2022/12/painting_4.jpg)
Первая текстура это деревянное обрамление картины, вторая – рамка. А вот третья – это сама картина – как раз то, что нам нужно. Ее мы и будем менять на нужную нам картинку.
Теперь нужно извлечь текстуры из архива. Но не забываем, что текстуры всегда идут парами – обычная текстура и карта нормалей:
paintinglandscape02
paintinglandscape02_n (карта нормалей)
Карта нормалей в модели не прописывается. Она автоматически подхватывается игрой. Поэтому ее название должно быть точной копией названия обычной текстуры с добавление окончания _n
Без карты нормалей в игре возникнут проблемы с отображение модели. Поэтому не забываем про нее.
Текстуры находятся в архиве:
Oblivion — Textures — Compressed
извлекаем нужные текстуры так же, как мы это делали ранее. После чего размещаем их в нужном месте:
Oblivion\Data\Textures\clutter\paintings
Итак, подготовительные работы завершены. Приступаем к процессу создания своих картин.
2. Создание своих картин
Для начала нам нужно переименовать используемые нами модели и текстуры, мы ведь хотим создать свои новые картины, а не заменить уже существующие в игре, верно?
Модели я переименовал в
middlepaintingIgorLutiy01
rewardpaintingIgorLutiy
текстуры в
paintingIgorLutiy01
paintingIgorLutiy01_n
rewardpaintingIgorLutiy
rewardpaintingIgorLutiy_n
Всегда и везде при создании своего плагина старайтесь давать «говорящие» названия различным новосозданным предметам и объектам. Этим вы упростите дальнейшую работу, как себе, так и другим (например, кто-то решит перевести ваш плагин на другой язык).
И сейчас сделаем еще одну маленькую вещь, которая вскоре будет нам полезна. Сразу присвоим нашим моделям переименованные текстуры. Для этого открываем модель в NifSkope, ищем строчку NiSourceTexture с той текстурой, которую будем менять. Правее в этой же строчке есть фиолетовый цветочек. Жмем на него, в открывшемся окне выбираем нужную нам текстуру и жмем Открыть:
![](https://igorlutiy.pp.ua/wp-content/uploads/2022/12/painting_8.jpg)
После этого в строке меню NifSkope переходим File>Save As… и жмем Сохранить. Появиться следующее окно:
![](https://igorlutiy.pp.ua/wp-content/uploads/2022/12/painting_5.jpg)
Дело в том, что в NifSkope нет кнопки Save и сохранять модель приходится через Сохранить как… А так как модель у нас уже есть и мы пытаемся сохранить ее под тем же именем, у нас и интересуются, хотим ли мы уже существующую модель заменить? Жмем Да. Отлично, текстура прописана. А раз она прописана и распакована, это значит, что она будет отображаться на модели в NifSkope. Это позволит нам упростить работу над подгонкой картинки.
Теперь перейдем к работе с текстурами. Будем творить шедевры J Для этого нам понадобится графический редактор, в моем случае Photoshop, а также плагин DDS к нему, который позволяет работать с текстурами в формате .dds.
Открываю я первую текстуру — paintingIgorLutiy01. Что и как делать в Фотошопе я рассказывать не буду, уроков по работе в этой программе более чем достаточно. Но кое-что упомяну. Смотрим на картинку ниже (открыв параллельно текстуру в Фотошопе и модель в NifSkope, мы можем сразу видеть результат нашей работы на модели, для этого нужно просто сохранить текстуру и она сразу же будет видна на модели):
![](https://igorlutiy.pp.ua/wp-content/uploads/2022/12/painting_7.jpg)
Что мы на ней видим? Текстуру в Фотошопе (выше) и текстуру на модели в NifSkope (ниже). На модели текстура помещается и видна не полностью, это нужно иметь в виду при замене картинки на свою. Смотрим далее:
![](https://igorlutiy.pp.ua/wp-content/uploads/2022/12/painting_6.jpg)
Опять же заметно то, о чем я говорил выше – на модели видна лишь часть текстуры, плюс заметна еще одна особенность – текстура на модели как бы сжимается по горизонтали. То есть когда вставляем свою картинку, нужно ее немного растянуть по горизонтали, чтобы она корректно отображалась на модели.
И ни в коем случае не меняйте размеры текстуры. В нашем случае это 256 на 128 пикселей.
В общем, подбирайте подходящую картинку, размещайте её как вам нравиться. И… переходим к сохранению. Смотрим на картинку ниже:
![](https://igorlutiy.pp.ua/wp-content/uploads/2022/12/painting_9-1.jpg)
Обязательно отмечаем Generate MIP maps. Это создает в текстуре как бы несколько таких же текстур, но меньшего размера. И в игре, при удалении от предмета на определенное расстояние подгружаются текстуры меньшего размера, что позволяет уменьшить нагрузку на компьютер. То есть вблизи, когда мы можем хорошо рассмотреть предмет – используется самая качественная текстура, а на большом расстоянии – где нет необходимости в деталях – используется менее качественная. Флаг Generate MIP maps используется всегда, кроме иллюстраций книг и иконок, когда отмечается флаг No MIP Maps.
Более подробно о текстурировании можно почитать в замечательном туториале Lanell: Текстурирование вееров. Тонкости текстурирования для игры Обливион
Теперь создаем карту нормалей, вот ту текстуру с окончанием _n, про которую я писал ранее. В разделе фильтров Фотошопа находим нужный:
![](https://igorlutiy.pp.ua/wp-content/uploads/2022/12/painting_10.jpg)
Жмем и видим следующее окно:
![](https://igorlutiy.pp.ua/wp-content/uploads/2022/12/painting_11.jpg)
Здесь в Scale выбираем ноль. Этот параметр указывает величину рельефа поверхности текстуры (чем больше значение, тем более рельефной будет казаться поверхность). У нас картина, поэтому я поставил 0.
Подобным же образом сменим изображение и на второй картине.
Теперь можем переходить к заключительной стадии наших мытарств.
3. Размещение картин в мире игры
Опять возвращаемся в TES Construction Set. Для начала нужно создать наши картины в Конструкторе. Ведь у нас есть модели, но они пока никак не привязаны к игре.
В Окне Объектов (Object Window) находим закладку Static. В списке справа жмем правую клавишу и в открывшемся меню выбираем New. Откроется следующее окно:
![](https://igorlutiy.pp.ua/wp-content/uploads/2022/12/painting_12.jpg)
Вбиваем уникальный ID – вполне подойдет название вашей модели. Затем жмем на кнопку – Add NIF File и открываем нашу модель. В итоге должно получиться как-то так:
![](https://igorlutiy.pp.ua/wp-content/uploads/2022/12/painting_13.jpg)
Жмем Ок. Первая картина готова. Со второй поступим немного иначе. Открываем оригинальную картину:
![](https://igorlutiy.pp.ua/wp-content/uploads/2022/12/painting_14.jpg)
Меняем ID на уникальный, жмем на верхнюю кнопку (подчеркнуто красным) и открываем модель второй картины. Получаем вот такое:
![](https://igorlutiy.pp.ua/wp-content/uploads/2022/12/painting_15.jpg)
Далее жмем Ок. Появится окошко:
![](https://igorlutiy.pp.ua/wp-content/uploads/2022/12/painting_16.jpg)
Так как мы редактировали базовый объект, у нас спрашивают, хотим ли мы создать на его основе новый объект или же внести изменения в старый. Конечно же мы хотим создать новый, поэтому жмем Да.
Теперь нужно наши картины разместить на просторах игры. Они могут послужить украшением дома или замка, однако я ради простоты тестирования размещу их на берегу Портового района Имперского города. Для этого загрузим нужную ячейку в Окне Просмотра (Render Window). В окне Cell View выбираем сначала Tamriel, затем ICWaterdront05 и делаем по нему двойной клик:
![](https://igorlutiy.pp.ua/wp-content/uploads/2022/12/painting_17.jpg)
Ячейка загрузилась, размещаем картины, как вам нравится. У меня получилось вот так (скрин из Конструктора):
![](https://igorlutiy.pp.ua/wp-content/uploads/2022/12/painting_18.jpg)
После этого сохраняем плагин (File>Save) и смотрим, что у нас получилось в игре:
![](https://igorlutiy.pp.ua/wp-content/uploads/2022/12/painting_19.jpg)
©Автор IgorLutiy.
Скачать оффлайн версию можно здесь.