SwordOfTruth | Дата: Вторник, 18.02.2014, 19:38 | Сообщение # 1 |
Группа: Модераторы
Сообщений: 30
Награды: 0
Репутация: 0
Статус:
| Введение
Сегодня я собираюсь написать о том, как редактировать освещение и небо в WoW, потому что многие люди спрашивали можно ли это сделать. Этот гайд не будет пошаговым, а будет больше похож на обзорную информацию по теме редактирования освещения.
Необходимые файлы Итак, мы собираемся создать свое небо и освещение. Как мы знаем, существует несколько DBC-таблиц, которые отвечают за небо и свет в WoW. И, собственно, эти файлы:
Light.dbc LightIntBand.dbc LightFloatBand.dbc LightParams.dbc LightSkybox.dbc
Небольшое овервью возможностей этих файлов:
Light.dbc Light.dbc включает в себя данные о каждом световом наборе (небо + освещение), а также координаты места, где этот световой набор отображается в игре. Здесь у нас есть отсылка к MapID нашей карты, координата якоря (центр освещаемой зоны) и радиус воздействия светового набора (расстояние от точки-якоря, на котором будут отображаться новые параметры света). Также в этом файле мы указываем ID различных параметров из других файлов.
LightParams.dbc LightParams.dbc определяет несколько параметров неба и освещения. Эти параметры не изменяются в зависимости от времени суток в игре. Эти статичные параметры - не что иное как параметры тумана (дальность отображения, прозрачность, цвет), цвета воды и других подобных параметров.
Также этот файл может задать скайбокс на карте (m2-модель неба). Скайбоксы используются по всему Запределью, Нордсколу и другим локациям. Этот параметр является ссылкой на ID из следующей таблицы:
LightSkybox.dbc Этот файл всего лишь список моделей, которые могут быть использованы в качестве скайбокса.
На самом деле можно добавить любую модель в качестве скайбокса, вопрос лишь в том, как она будет отображаться. Итак, все что делает этот файл - это добавление ID к модели. Этот ID может указываться в LightParams и других DBC.
LightIntBand.dbc и LightFloatBand.dbc
Эти файлы определяют цвет неба в дневное и ночное время. Они немного сложнее предыдущих файлов.
Эти две таблицы, как уже было сказано, отвечают за цвета. Но так как небо не состоит из всего лишь одного цвета, мы можем увидеть большое количество различных записей и параметров в DBC.
Существуют цвета облаков, поверхности воды в дневное и ночное время,солнца, луны, тумана, цвета частей неба (верхнее, среднее, нижнее, горизонт) и параметры глобального освещения (диффузное и амбиент), которые влияют на освещение моделей и рельефа, входящих в зону воздействия светового набора из Light.dbc
И судя по названию сами DBC: одна таблица заполнена переменными, другая целыми числами.
И как я уже сказал, у этих таблиц структура посложнее: В них есть сточки под каждую из тех вещей, которые я перечислил выше. Итак, если мы указываем параметры света в Light.dbc и имеем лишь строчку с номером, например, 142, то в LightIntBand у нас будет 18 строк для этого светового набора, 18 строк сгруппированы в 1 ID для каждого неба. Здесь придется немного посчитать.
Когда мы указываем номер 142 в Light.dbc, нам нужно умножить его на 18. Номер, который мы получаем (1136) - и есть наш номер строки. Эта строка и следующие 17 будут параметрами неба для светового набора 142 в LightIntBands. Для LightFloatBand у нас должно быть по 6 строк на каждый набор. И снова умножаете ID*6 и используете полученный + 5 строк дальше.
Одна строка обоих DBC-таблиц выглядит так: ID количество ID для этого параметра неба 15 отметки времени 15 данные в виде переменных или целых чисел.
Проблема с этими двумя файлами: Никто особо не утруждался попробывать все значения, поэтому информация довольно ограничена. Однако, LightIntBand описан довольно хорошо, а вот LightFloatBand - просто коллекция неизвестных значений.
LightIntBand.dbc Вот пример для этого файла. Чтобы было проще, я просто возьму первое небо, которое там описано. Как я уже говорил, у нас есть просто набор из 18 строк каждый раз.
"" 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6199750,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1718357,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21359,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21359,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21359,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21359,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 7,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21359,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21359,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 9,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5789784,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 10,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 11,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 12,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 13,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 14,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 15,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1978430,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 16,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4887,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1978430,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 18,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4887,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, "" Итак, то что мы видим с самого начала - это огромное количество нулей. Но если посмотреть ближе, можно увидеть информацию в середине, ID и 1 для всех строк в самом начале. У нас есть 1 в каждой строчке для этого неба во втором столбце. Разные параметры могут иметь разные значения строк.
Итак, каждая линия имеет только временной указатель и одно поле с информацией. Вернемся к информации, которая писалась раньше, одна строка - это к примеру цвет облаков. Это линия 13 (или 12, если ваш DBC редактор считает от 0...).
Получается, что наша строка для цвета облаков выглядит так: "" 13,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, ""
У нас есть 1 метка времени со значением 0 и информация тоже 0.
Но, мы кое-что забыли: Как определяется цвет в этих файлах?
RGBA цвет определяется через обычный хекс: 0xAARRGGBB Как можно увидеть:два байта на значение, альфа, красный, зеленый и голубой.
Итак, то что нам нужно сделать - это "перевести" перед тем как мы можем что-то сказать про цвет. В этом случае 0 это самый просто вариант. Так как, в хекс-кодировке это 0x00 00 00 00. Для подсчет хекс-значений используйте Google или calc.exe, которое у вас должно быть.
00 00 00 00 значит: 0 альфа, 0 красный, 0 зеленый , 0 синий, что на самом деле является полностью прозрачным, но черным цветом, который просто не видно. В целом, это прозрачный.Черные облака просто не станут отображаться.
Вот что мы можем сделать: сделаем эти невидимые черные облака видимыми розовыми облаками. Итак, первый путь - получение цветаr:
Для этого можно использовать сайты с хекс-цветами, msPaint, Photoshop или другой графический редактор.
То что я буду использовать - цвет, который называется rosè. RGB хекс-код для этого цвета - ff c0 cb. Обычно в интернете это записывают так #ffc0cb. А программисты так: 0xffc0cb. Но на самом деле, это одно и тоже..
Итак, у нас есть непрозрачный цвет , но мы еще не смотрели на альфа значение. Для полностью непрозрачных облаков значение FF будет в районе 255. И снова - это чистый хекс.
Вот получившийся цвет: FF FF C0 CB, #FFFFC0CB или 0xFFFFC0CB. Теперь переведем это в десятиричный вид, как в DBC: Это будет - 4294951115. Да, это довольно большое число.
В итоге наша значение для цвета облаков во времени 0 (так как у нас только одна запись, это будет означать что для всего времени) - 4294951115. Теперь заполните это в файл:
Наша новая строка теперь выглядит так: "" 13,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4294951115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, "" Мы просто заменили значение.
Но, так как этого слишком мало, чтобы писать гайд, мы добавим еще кое-что. К примеру, давайте заставим эти облака приобретать другой цвет в 12:00 или любое другое время. Но как выразить это в числах?
Просто: Метки времени сделаны в полуминутах после полуночи. То есть: 12 часов = 12 * 60 минут = 12 * 60 * 2 полуминут. Что означает, что наша метка времени - 1440. И тем же способом можно вычислить любое время.
Сперва мы изменяем количество цветов облаков во втором поле, затем мы добавляем вторую метку времени и второй цвет.
Итак, вот описание наших записей: 13, - id 2, количество цветов. 0,1440, - метки времени. 4294951115, 4288217343, - наши цвета.
И целая строка: "" 13,2,0,1440,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4294951115,4288217343,0,0,0,0,0,0,0,0,0, 0,0,0,0,0, ""
Теперь у вас достаточно информации, чтобы найти цвета облаков и вычислить время.
Последний шаг это:
LightFloatBand
Проблему я уже описал выше - мы ничего не знаем. Мы знаем только, что у нас есть 6 строк с информацией для каждого неба.
Мне бы очень хотелось сказать, что значат эти строки, но вам придется вычислять их самим просто редактируя и анализируя результат. Просто смотрите, что изменилось в небе в игре. Также, если вам удастся накопать какую-нибудь информацию по значению колонок, добавляйте в комментарии. Также не забывайте читать WoWDev wiki, там тоже может появиться информация.
Заключение:
Вот это пока и будет концом "гайда". Как обычно, я не буду говорить как сделать лучше.Я просто привел нужную информацию по этой теме. будет интересно увидеть результат, если кто-то захочет поковырять настройки света. так, что выкладывайте скриншоты в комментарии.
|
|
| |