Сегодня, друзья, будем учиться создавать стеклянные объекты.
Нам потребуется:
Шаг 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, но на этот раз указываем путь к файлу в папке "
2". Ищем в правом окошке
Group с самым большим значением
Faces, находим в папке "
2" показанные файлы
block и вновь повторяем
"Отправить" -> "Блокнот".
В каких-то ситуациях файлов
block может не быть вообще. Как здесь:
В этом случае смотрим на значение
Matl_block. На скриншоте выше
Matl_block =
1 - это значит, что в папке нам нужно искать файл под названием "...
block01.mtlsrc".
В конце концов, у вас должно быть открыто от 2-х до 8-ти окошек
Блокнота с текстовым содержимым.
Шаг 7. Переходим в одно из окон
Блокнота (сoветую запомнить номер открытого в нем
block'а), жмём
Ctrl + A, копируем один из следующих кодов и вставляем вместо выделенного текста:
Неперекрашиваемая текстура (стекло останется в игре только того цвета, что мы зададим ему в следующем шаге):
Код:
; decompiled with S3ModlD V1.00 - by Wesley Howe
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):
*данный код пока только проверяется, гарантии его работы на всех предметах нет*
Код:
; decompiled with S3ModlD V1.00 - by Wesley Howe
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 и указываем по очереди путь ко всем файлам в папках, которые мы создавали в шаге 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 (
подробнее об этом...) и, скрестив пальцы, запустить игру.
Стекло само по себе выглядит замечательно. А если слегка поэкспериментировать с освещением, можно добиться чего-нибудь интересного:
*стекло на втором скрине - измененный ковер 4х4*
Коврик, использованный в уроке, можно скачать
здесь, ванну -
здесь.
Большая просьба: не распространять нигде, кроме prosims.ru.
Чтобы получить эффект, как на 2-м скрине, нужно:
- удалить напольное покрытие (в нужной части комнаты);
- положить стеклянный ковер (находится в декоре) - использовать чит:
moveobjects on;
- края ковра (между ними и плитками пола останется небольшой просвет) застелить напольным покрытием.