В-общем, я тут зафигачил-таки крутой способ создания ночных моделей с тенями, освещением не альфа-каналом и так далее. Вот попробую описать то, как я их делаю. Пара скриншотов для начала:
Теперь о минусах и плюсах.
Плюсы:
+ Это выглядит наиоблее реалистично из всех возможных вариантов создания ночных моделей на данный момент.
Минусы:
- Это жрет большее количество ресурсов, чем обычная;
- Довольно геморный процесс изготовления, который потребует дополнительных знаний 3dsMax;
- К сожалению, можно сделать только белый источник освещения.
Как видно, плюс всего один, зато сразу три минуса, поэтому, прежде, чем развернуть спойлер подумайте о том, надо ли оно вам. К тому же, тщательно выбирайте здания, в которых оно надо, в которых нет, потому что большие тяжелые здания станут еще тяжелее, особенно ночью, и сейчас вы поймете, почему.
Итак, разворачивайте спойлер и изучайте:
Пока я пишу этот урок, я сам "онлайн" делаю модель. Ну, собственно, для начала необходимо сделать саму модель. Само собой, что описывать этот момент я не буду, к тому же урок все равно предназначен для уже более-менее опытных пользователей 3dsMax. В-общем, создаем нашу модель. Я буду делать на примере здания вокзала Придонская, у меня получилась такая модель:
Текстурить все это дело надо самым обычным образом, запекать и накидывать текстуру. Единственное отличие, это все те полигоны, которые у нас являются лампочками, т.е. будут светиться, их лучше вынести в какое-то отдельное место на текстуре, чтобы их потом было проще в ФШ осветлить. Но это опять же не обязательно, я первые модели делал без этого. И не завбываем бекапиться. Например, нам очень важно иметь бекап, где уже все готово к запеканию, т.е. сделана раскладка и все дела, но на модели еще исходные текстуры. Бамп работает аналогично.
Собственно, весь процесс создания данного вида ночника начинается сразу после того, как модель с текстурами стоит готовая к экспорту. С текстурами у меня получилась вот такая модель:
Собственно, здесь я покажу, как быть, когда у нас есть альфа-канал (перилки) и прозрачное стекло (навесы). Т.е., скажем так, полный фарш. Почему, казалось бы, обычные вещи являются полным фаршем, увидите, позже.
Когда текстуры готовы, накидываем их на здание. И вот, в принципе, процесс начался. В первую очередь, качаем этот архив: https://yadi.sk/d/AdT6_4I7u5w6g
Тут скрипт и пресет для макса, для ночи. Само собой, что я не настаиваю на нем, просто у меня этот пресет прекрасно работает. Ставим и настраиваем источники освещения. Их надо ставить в тот бекап, который был создан до запекания! Чтобы на модели были исходники, а не запеченая текстура!
Свет делается самым обычным образом, ставятся обычные VRayLight и настраиваются по вкусу. Вот, что у меня получилось во вьюпорте и на рендере:
Если есть засветы, то не обращаем на них внимания, технология свечения в ТРС делается немного по иной схеме. Поэтому, если мы где-то не видим текстуру из-за засвета, это в некотором смысле даже хорошо. После создания первой модели, поймете, почему.
Теперь, когда у нас все практически готово в максе, за исключением нескольких моментов, можно потихоньку начать это экспортить в ТРС. Значит, создаем новый ассет и кидаем в него тот скрипт, что был в архиве. В конфиг прописываем следующие строки:
Код:
class "Light"
script "light.gs"
Там, где у нас дерево мешей, прописываем вот эти строки:
Код:
mesh-table
{
default
{
mesh "mesh.im"
auto-create 1
}
day
{
mesh "day.im"
att "a.point1"
auto-create 0
light 1
}
night
{
mesh "night.lm"
att "a.point1"
auto-create 0
light 1
}
}
Я бы советовал на первое время использовать все названия мешей такие, как я буду говорить.
Теперь самый ответственный момент!
Ответственен он тем, что от этого зависит производительность модели. Нам необходимо снова открыть макс и детачить наше здание на две части. Одна из этих частей должна содержать те полигоны, на которые попадает свет от источников освещения. Надо выбирать крайне тщательно, конечно не до фанатизма, но чем лучше будут отделены эти полигоны от неосвещаемых, тем лучше!
Я у себя разбил вот таким образом:
Теперь инфа для тех, у кого либо нереально сложно разбить, либо же освещается ваще все здание:
Примечание
Если получилась такая ситуация, то делаем простой треугольник, делаем его невидимым, не надеваем текстуру и принимаем его за ту часть, которая не освещается!
Ставим строго по центру точку, которая будет называется a.point1. Я предпочитаю ставить ее в IMEditore, но это уж как угодно.
Экпортим часть, которая не освещается, либо же невидимый треугольник, вместе с этой точкой и называем меш mesh.im. Само собой, что вместе с ним будут текстуры, все как положено, все так и надо, отправляем это дело в наш ассет.
Следующим делом экспортим ту часть, которая у нас освещается. Ее тоже экспортим обычным способом, только называем day.im. Итак на данный момент, у нас все готово для работоспособности дневной версии. Переходим к самой сложной части: ночной.
Воттут необходимо принять решение. Если у нас относительно общего кол-во поликов не так много получилось в освещаемой части, то имеет смысл сделать для нее отдельную текстуру. Если много, то можно использовать ту, что уже есть. Ну, а если у нас использовался невидимый треугольник, то тогда однозначно имеет смысл оставить существующую. Я в своем варианте сделаю еще одну текстуру.
Перво-наперво сделаем самое интересное: запечем альфа-канал освещения! Создаем новый материал, где в диффузку кидаем простой белый цвет без единой текстуры. Да, именно белый. А вот те места, где у нас есть что-то прозрачное или какая-то альфа, там мы должны сделать следующее: чтобы не попасть в просак (как я только что), дам один совет. У нас по-любому назначены отдельные материалы на полигоны с альфой или прозрачностью, поэтому смело именно в тех же материалах просто меняем диффузку на белый и все. Чтобы и альфа осталась и прозрачность. А вот все остальное можно тупо фигачить белым сплошняком.
Теперь либо печем текстуру с уже готовой раскладкой, либо делаем новую чисто на освещаемую часть. Лично я создаю новую раскладку.
Т.е. с белой диффузкой получается следующим образом:
Собственно говоря, печем обычную VRayCompleteMap с новым пресетом, готовой карте делаем сразу инверсию и сохраняем оба варианта текстур:
И аналогично запекаем обычную диффузку, если нам нужна новая раскладка.
Учитывая, что у нас есть перилки, где для дырок применялся альфа-канал, нам необходимо просто скопировать ту часть текстуры из "нормального" альфа-канала в TGA, в наш VRayCompleteMap.
Возвращаемся в макс, там нам надо сделать клон той части, которая освещается. В принципе, сейчас можно удалить все, кроме нее, чтобы не мешалось. Значит, просто делаем клон и оставляем как есть. На первый клон надо нанести новую диффузку и первую альфу. На второй клон ту же диффузку и инверсию альфы.
Первая альфа у нас будет просвечивать ровно то, что освещается, ей же надо сделать самосвечение. Вторая часть с инверсией без самосвечения. Я изначально не хотел на второй клон никакую альфу кидать, но, зараза, мерцает. Поэтому пришлось инверсию делать. Но по этой причине у нас все равно здание будет немного просвечивать. Чтобы этого избежать внутрь пихаем простую плоскость весом в 2 треугольника, на которую просто кидаем текстуру m.notex черного цвета.
Ну и экспортим все это добро с названием night.im. Т.е. вот, как должна выглядеть наша night.im в IMEditore:
Значит, практически все готово. Теперь надо учесть, что ночная меш у нас привязывается через lm-лодирование. Поэтому надо закинуть txt со ссылкой на lm, который так и называем: night.lm. Если что, в него можно закинуть следующий текст:
Ну а теперь запускаем и огорчаемся, что где-то мы да напортачили. Если это так, объясню почему. Я делаю только пятый или шестой ассет по этой технологии и сам до сих пор косячу. Конкретно этот раз у меня удался на славу, справедливости ради, единственное, в чем я косякнул, это в том, что не те полики выделил в максе, когда экспортил ночь. В остальном, собралось не так уж и плохо. Поэтому, я сейчас опишу не процесс создания, а как это вообще работает, чтобы был понятен сам принцип работы модели, а уже ошибки можно корректировать с этим учетом.
Значит, работает следующим образом. Есть у нас база, которая не освещается, она не переключается. Она и есть база. Есть у нас скрипт, который переключает день на ночь в зависимости от времени суток. Соответственно, когда у нас день, то у нас все работает обычным принципом. Когда наступает ночь, у нас выключается дневная меш и включается ночная. Ночная меш из себя представляетобычную текстуру, на которую накинут альфа-канал освещения. Т.е. у нас видно ровно то, что должно быть видно от источника света. Но если оставить так, то когда у нас хоть что-то видно, у нас и будет такое прозрачное здание, у которого и видно только освещенное. Поэтому вместе с ним стоит клон, на котором обычная диффузка. Та, что освещается, она с самосвечением, та, что нет, она без самосвечения. Т.о. у нас неосвещенные полигоны изменяют свою яркость по стандартным настройкам освещенности Трейнз. К ней применена инверсия, потому без нее наложение поликов мерцает. Из-за того, что у нас инверсия не дает в сумме абсолютную непрозрачность, приходится все же ставить фоновую плоскость, которая просто черного цвета, чтобы мы сквозь здание не увидели случайно деревья за ней. Но это не везде нужно, например, на платформах в ней нет смысла, потому что роль этого "бэкдропа" выполняет сама поверхность земли. Вот как-то так это и работает.
Если же все получилось с первого раз, то радуйтесь!
А теперь пару моментов и пару интересных фишек:
- ТРС возможно будет жаловаться на ассет, предупреждая, что lm-лодирование должно иметь точку и что-то там с 500 треугольниками. Соответственно, точку просто добавляем, а с 500 думайте сами. Я обычно кладу на это.
- Если нам надо добавить горящие окна, то мы их просто добавляем к ночной меши по обычной технологии, слегка выдвинув полики.
- ЛОДирование производится следующим образом: каждая из этих трех мешей должна лодироваться отдельно и прописываться в дерево lm.txt. Соответственно, если у нас лодируется вообще все, то и mesh.im и day.im надо вписывать в mesh-table тоже через lm, а не im.
В-общем, как-то так. Комментируйте, предлагайте свои идеи, будем вместе их решать.
И самое главное:
Совет
Будьте очень аккуратны с количеством таких ассетов! Как видите, ресурсы они жрать будут много больше, чем простой ассет. По возможности избегайте такие ночники, делайте только на паре основных зданий на всю станцию и достаточно.
В-общем, в итоге мы имеем вот такой замечательный домик на станции Придонская:
А вот ссылка на сам "подопытный образец". Отправлен на ДЛС, искать под куидом: <kuid:502415:106670>
У кого нет ДЛС, или если он там еще не появился, то вот ссыль — https://yadi.sk/d/28KM23SWuGWGi
Кстати, от прописывания light 1 и light 0 в данном контексте смысла никакого. Данный тег отвечает на восприимчивость к направленному освещению солнца, которого в теории никто настраивать ночью не будет. А так всё более-менее верно. Единственное что - нет гарантии что несветящаяся полупрозрачная мешь не будет пропадать под определёнными углами или у определённых мешей (т.к. прозрачность складывается, фактически, в случайном порядке) - как в данном случае с козырьками, решёткой перил и необходимой из-за этого чёрной мешью внутри, но это опять же проверяется опытным путём. Решение - не добавлять эти полигоны в освещаемый-отцепляемый кусок меши.
---------- Сообщение добавлено в 23:59 ---------- Предыдущее сообщение размещено в 23:57 ----------
Сообщение от 5Д49
Бугор, а с простыми фонарями
к фонарям также нужно то, что они освещают. Типа куска забора, куска дороги, куска лужайки и т.п.
---------- Сообщение добавлено 17.08.2016 в 00:00 ---------- Предыдущее сообщение размещено 16.08.2016 в 23:59 ----------
Сообщение от B.U.G.O.R.
К сожалению, можно сделать только белый источник освещения.
а что, жёлтый нельзя? Просто прописав нужные цифры в self-illumination ?
Последний раз редактировалось TRam_; 17.08.2016 в 01:05.
нет гарантии что несветящаяся полупрозрачная мешь не будет пропадать под определёнными углами или у определённых мешей
У меня нигде такого не было.
Сообщение от TRam_
а что, жёлтый нельзя? Просто прописав нужные цифры в self-illumination ?
Честно сказать, я не пробовал. Надо потестить, может еще и этот минус уйдет. Мне казалось, что только белый можно делать, ведь мы по сути, не освещаем ничего, а просто не даем "затмиться темнотой" то, что освещается от фонарей согласно альфа-каналу. Соответственно придаь желтый оттенок текстуре у меня не получалось.
Решением было бы отделение внешних (неосвещающихся своим фонарём) решёток, прописыванием их текстуре однобитной альфы и тега Compression=DXT3 в её texture.txt (дабы небыло чёрного контура)
А, ты про такое наложение. Я думал, ты о тех клонах, которые с инверсией альфы и без нее. Ну, тут хз. На самом деле, меня лично такое не очень парит, потому что ночью, как правило, подобного не видно все равно.