Стекло - создаём прозрачный пол и прозрачные предметы
Сегодня, друзья, будем учиться создавать стеклянные объекты.
Нам потребуется:
- s3pe
- s3oc
- Блокнот
- Object Tool
- Подключение к интернету
Шаг 1. Создаём рабочую папку - в неё мы поместим временные файлы.
Шаг 2. Открываем s3oc, File -> New (Clone)(legacy)... (в новой версии - Cloning -> Normal objects), находим предмет, который будем превращать в стекло, и проделываем необходимые для клонирования операции: Clone or Fix... -> Start -> Ok:
Шаг 3. Открываем сохранённый package в s3pe: File -> Open.Извлекаем из него все файлы с тегами (Tag) MLOD и MODL: Resource -> Export -> To file... и сохраняем их в рабочую папку. Таких файлов может быть от 2-х до 6-ти, но обычно их 4.
Шаг 4. Создаём в рабочей папке столько подпапок, сколько у нас получилось файлов в предыдущем шаге. Названия подпапок значения не имеют, но чтобы не запутаться, давайте их просто пронумеруем: "1", "2", "3" и так далее. Раскладываем все MLOD'ы и MODL'ы по созданным папкам: по одному файлу в каждую. Порядок не важен.
Шаг 5. Открываем папку "1", кликаем правой кнопкой мыши на файл, выбираем "Открыть с помощью..." и находим в списке S3ObjTool.exe:
В появившемся окошке кликаем на кнопку "Decompile" и указываем путь к файлу в папке "1" -> Open:
Если всё сделали верно, в правом окошке появится сообщение "No errors":
Повторите этот шаг для всех файлов MLOD и MODL в остальных подпапках.
Шаг 6. Находим файлы для редактирования. Если вы откроете сейчас любую из папок "1", "2", "3" (и далее), то заметите, что в них появилось приличное количество файлов. Какие-то из них нам нужно самую малость подправить в Блокноте. Что это за файлы, нам и предстоит выяснить. Возвращаемся к S3ObjTool, жмём MODL\MLOD Info и указываем путь к уже известному нам файлу в папке "1":
Справа появилась некая информация:
Ищем Group с самым большим значением Faces (на скриншоте это Group 0). Под этой строчкой находится еще одна - MTST. А уже под ней мы видим несколько block - у каждого свой номер. Вот файлы под этими номерами нам и нужны. Открываем папку "1" и находим в ней эти самые block (.mtlsrc), которые нам показала программа. В моём случае таких файлов 3:
Кликаем правой кнопкой мыши на первый нужный нам block и выбираем: Отправить... -> Блокнот:
И вот, видим содержимое файла:
Этот код нам и предстоит править. Но для начала нужно повторить операцию "Отправить -> Блокнот" для всех нужных нам block в папке "1" и вернуться к S3ObjTool: снова кликаем по MLOD\MODL Info, но на этот раз указываем путь к файлу MLOD (MODL) в папке "2". Ищем в правом окошке Group с самым большим значением Faces, находим в папке "2" показанные файлы block и вновь повторяем "Отправить" -> "Блокнот".
В каких-то ситуациях block может не быть вообще. Как здесь:
В этом случае смотрим на значение Matl_block. На скриншоте выше Matl_block = 1 - это значит, что в папке нам нужно искать файл под названием "...block01.mtlsrc".
В конце концов, у вас должно быть открыто от 2-х до 8-ти окошек Блокнота с текстовым содержимым.
Шаг 7. Переходим в одно из окон Блокнота (сoветую запомнить номер открытого в нем block'а), жмём Ctrl + A, копируем один из следующих кодов и вставляем вместо выделенного текста:
Неперекрашиваемая текстура (стекло останется в игре того цвета, что мы зададим ему в следующем шаге):
MATD 0103
MtlName 0x920790DF
ShaderName GlassForObjectsTranslucent
MTNF 12
UVScales 1 3 0.000030518509 0.000000000000 0.000000000000
EdgeDarkening 1 1 0.000000000000
NormalUVScale 1 2 1.000000000000 1.000000000000
RefractionDistortionScale 1 1 0.000000000000
NormalMapScale 1 1 1.000000000000
Shininess 1 1 20.000000000000
DiffuseUVScale 1 2 1.000000000000 1.000000000000
Specular 1 3 0.500000000000 0.500000000000 0.500000000000
SpecularUVScale 1 2 1.000000000000 1.000000000000
Diffuse 1 4 0.321782201529 0.321782201529 0.321782201529 0.141975298524
FresnelOffset 1 1 0.500000000000
Transparency 1 1 1.000000000000
Перекрашиваемая текстура (стеклу можно задать узор в Create - A - Style):
*данный код пока только проверяется, гарантии его работы на всех предметах нет*
MATD 0103
MtlName 0xE01A0BB8
ShaderName GlassForObjectsTranslucent
MTNF 21
Transparency 1 1 1.000000000000
DiffuseUVSelector 1 3 0.000030518509 0.000000000000 0.000000000000
UVScales 1 3 0.000030518509 0.000000000000 0.000000000000
EdgeDarkening 1 1 0.000000000000
SpecularUVSelector 1 3 0.000030518509 0.000000000000 0.000000000000
SpecularMap 4 4 30000003 00000000 00000000 00000000
MaskWidth 2 1 00000200
MaskHeight 2 1 00000200
SpecularUVScale 1 2 1.000000000000 1.000000000000
DiffuseMap 4 4 30000004 00000000 00000000 00000000
MaskWidth 2 1 00000200
MaskHeight 2 1 00000200
NormalMapScale 1 1 1.000000000000
DiffuseUVScale 1 2 1.000000000000 1.000000000000
0x449A3A67 2 1 00848484
Specular 1 3 0.495049506426 0.495049506426 0.495049506426
Shininess 1 1 20.000000000000
Diffuse 1 4 0.519999980927 0.519801974297 0.519801974297 0.802469074726
NormalUVScale 1 2 1.000000000000 1.000000000000
RefractionDistortionScale 1 1 0.000000000000
FresnelOffset 1 1 0.200000002980
Сохраняем файл с заменённым текстом (не закрываем его!): "Файл" -> "Сохранить" и копируем тот же самый код во все остальные окна Блокнота. Каждое из них также следует сохранить.
Шаг 8. Цвет.
Идём на этот сайт и выбираем из списка один из оттенков - исключительно на ваш вкус. По сути, нам от этого сайта нужны только значения Red - Green - Blue для выбранного вами цвета. Если не хотите ограничиваться выбором, представленным на сайте, можно подобрать свой цвет в графическом редакторе, к примеру, в Photoshop'е.
Я выбрала нечто под названием "brown 2":
Когда цвет выбран, и значения RGB находятся перед вами, переходим на эту страничку, вводим в указанной строчке Red - в первое окошко(#1), Green - во второе (#2), Blue - в третье (#3) и кликаем на кнопку Start:
Ниже, на чёрном фоне, появился ряд новых значений RGB. Нам нужна колонка RGB 0?1:
Разворачиваем любое из окон Блокнота и находим в тексте строчку Diffuse:
Видим в ней 4 значения. Первые три отвечают за цвет - по порядку: Red, Green и Blue.
Копируем первое число из колонки RGB 0?1, вставляем его вместо первого числа в строчке Diffuse и дописываем к нему 7 нулей:
Таким образом, было 0.321782201529 -> изменили на 0.933330000000.
Повторяем то же самое для 2-го и 3-го числа в колонке RGB 0?1 - второе вставляем в Блокнот на место второго и дописываем 7 нулей, третье на место третьего - тоже приписываем 7 нулей:
4-е число в этой строке отвечает за прозрачность текстуры. Чем оно меньше, тем более прозрачным получится предмет. Например, при значении 0.100000000000, цвет стекла практически неразличим, а при значении 0.800000000000 цвет остаётся достаточно насыщенным.
Сохраняем файл: "Файл" -> "Сохранить".
Копируем строчку Diffuse целиком и вставляем в каждое окно Блокнота вместо такой же строчки. Еще раз сохраняем каждый из файлов ("Файл" - "Сохранить") и закрываем группу целиком.
Шаг 9. Собираем объект.
Снова потребуется S3ObjTool. Кликаем Recompile и указываем по очереди путь ко всем файлам MLOD и MODL в папках, которые мы создавали в шаге 4.
S3ObjTool можно закрыть. Разворачиваем s3pe и импортируем в package изменённые MLOD'ы и MODL'ы: Resource -> Import - From file... -> выбрать файл с иконкой S3ObjTool.
После каждого удачного импорта в списке окажется новый зачёркнутый файл:
После того, как импортировали в package все файлы из подпапок, сохраняем oбъект: File -> Save:
Закрываем s3pe и запускаем s3oc: Open (Fix) -> сохранённый package:
Ждём полной загрузки и дважды кликаем на название:
Теперь можно изменить детали вашего объекта и добавить превью, которое будет отображаться в каталоге предметов:
- Catalog Name - название предмета
- Catalog Desc. - описание предмета
- Price - цена
- Размер иконки не должен превышать 128х128px, её фон должен быть прозрачным, формат - png.
Готово? Жмём Start и терпеливо ждём.
Как только появилось окошко "Ok", можно поздравить себя, закрыть s3oc, скопировать packagе в папку Packages (подробнее об этом...) и, скрестив пальцы, запустить игру.
Стекло само по себе выглядит замечательно. А если слегка поэкспериментировать с освещением, можно добиться чего-нибудь интересного:
Коврик, использованный в уроке, можно скачать здесь, ванну - здесь.
Чтобы получить эффект, как на 2-м скрине, нужно:
- удалить напольное покрытие (в нужной части комнаты);
- положить стеклянный ковер (находится в декоре) - использовать чит: moveobjects on;
- края ковра (между ними и плитками пола останется небольшой просвет) застелить напольным покрытием.
Обсудить урок на форуме.