Как сделать такое красивое освещение?
| |
robertono | Дата: Четверг, 19 Июня 2014, 14:30 | Сообщение # 1 |
Чокнутый Кот
Сейчас нет на сайте
| Всем привет! Как сделать красивое освещение? Взгляните на этот скриншот. Да да, это майнкрафт. Видите, слева теплые тона, справа холодные. Как сделать такое красивое, плавное освещение? Как вообще такое делают в других играх? Просто под рукой у меня оказался именно этот скриншот. С встроенной в юнити системой света такое не сделать? Идея с запеканием света не подходит, на скриншоте динамичное всё. Недавно натыкался на такой дешевый и красивый ассетик.. https://www.assetstore.unity3d.com/en/#!/content/8683 С ним можно такое сделать?
Заранее спасибо тем, кто будет отвечать что то хорошее по теме)
|
|
| |
Ranger | Дата: Четверг, 19 Июня 2014, 19:36 | Сообщение # 2 |
почти ветеран
Сейчас нет на сайте
| Я так думаю нужно специальный шейдерок на "глаз" повесить. Который будет сепарировать теплые и холодные цвета. Обрати внимание, что слева и справа изображения монохромные тонированные.
|
|
| |
robertono | Дата: Четверг, 19 Июня 2014, 19:54 | Сообщение # 3 |
Чокнутый Кот
Сейчас нет на сайте
| Ranger, по моему тут нужен физический шейдер. Что то типо такого, какой появится в unity 5. Добавлено (19.06.2014, 19:54) --------------------------------------------- Но ждать пятую версию не вариант, она выйдет то скорее всего в конце осени, а я релиз игры своей на начало осени поставил
|
|
| |
true_abrakadabra | Дата: Четверг, 19 Июня 2014, 19:54 | Сообщение # 4 |
Unity3d - ван лав
Сейчас нет на сайте
| Неужели так сложно поменять цвет ИС? Это теперь магия какая-то?
Ниндзя
|
|
| |
robertono | Дата: Четверг, 19 Июня 2014, 20:22 | Сообщение # 5 |
Чокнутый Кот
Сейчас нет на сайте
| true_abrakadabra, ИС?
|
|
| |
true_abrakadabra | Дата: Четверг, 19 Июня 2014, 20:35 | Сообщение # 6 |
Unity3d - ван лав
Сейчас нет на сайте
| источник света
Ниндзя
|
|
| |
Ranger | Дата: Четверг, 19 Июня 2014, 20:36 | Сообщение # 7 |
почти ветеран
Сейчас нет на сайте
| Источник света. не думаю что источники смогут так четко разделить цвета. надо пробовать
|
|
| |
true_abrakadabra | Дата: Четверг, 19 Июня 2014, 20:39 | Сообщение # 8 |
Unity3d - ван лав
Сейчас нет на сайте
| Очень даже норм получается
Ниндзя
|
|
| |
romgerman | Дата: Четверг, 19 Июня 2014, 21:46 | Сообщение # 9 |
старожил
Сейчас нет на сайте
| Цитата robertono ( ) Как сделать красивое освещение? Поставить больше одного источника света. *пудум тсссс* Ещё можно запечь лайтмапу. Ещё можно попробовать юзнуть Self-Illuminated материал. Например поставить объекты с этим материалом, запечь лайтмапу, а потом убрать их.
|
|
| |
robertono | Дата: Четверг, 19 Июня 2014, 21:48 | Сообщение # 10 |
Чокнутый Кот
Сейчас нет на сайте
| true_abrakadabra, в закрытых помещениях конечно норм. На скриншоте только два источника? В принципе конечно поиграться с источниками света можно.. Но тут и шейдеры получше должны быть мне кажется. В любом случае, как тогда добиться лучшего результата? В смысле тот же Directional Light, который использую я, освещает всё что попадает в его угол. В смысле если свет попадет через окно в помещение, в помещении не будет темного уголка, куда свет вообще не попал. Для этого не подходит Directional Light? Какой тогда лучше будет использовать?
|
|
| |
allods | Дата: Четверг, 19 Июня 2014, 22:14 | Сообщение # 11 |
почти ветеран
Сейчас нет на сайте
| Цитата robertono ( ) помещении не будет темного уголка Темные места , может запекание
|
|
| |
robertono | Дата: Четверг, 19 Июня 2014, 22:21 | Сообщение # 12 |
Чокнутый Кот
Сейчас нет на сайте
| allods, нельзя запекание делать на динамические сцены. В любой момент игрок может с помощью ракетницы вынести стену и темно там уже не должно быть.
|
|
| |
DantorS | Дата: Четверг, 19 Июня 2014, 22:35 | Сообщение # 13 |
заслуженный участник
Сейчас нет на сайте
| robertono, я не понял чем тебе directional light не подходит. Можешь переобъяснить?
|
|
| |
romgerman | Дата: Четверг, 19 Июня 2014, 23:18 | Сообщение # 14 |
старожил
Сейчас нет на сайте
| Цитата robertono ( ) нельзя запекание делать на динамические сцены Для этого есть тени.
|
|
| |
robertono | Дата: Суббота, 16 Августа 2014, 00:06 | Сообщение # 15 |
Чокнутый Кот
Сейчас нет на сайте
| жаль что в free есть только hard shadows и они только для direction light...
Добавлено (15.08.2014, 23:52) --------------------------------------------- Как обычно, после затишья я подниму тему, дабы показать вам свои наработки по этой теме. Выяснилось, что мне нужно Global Illumation или Ambient Occlusion (походу я ещё не особо различаю их разницу..). Но это не важно, ведь всё равно сделать их по настоящему правильно можно только с Pro лицензией. В гугле по теме fake global illumination можно найти много наработок от пользователей юнити. Были какие то cone tracing и ещё куча сложных алгоритмов по этой теме, но самый простой способ, как сказал true_abrakadabra и romgerman и ещё куча других пользователей которые пытались сделать fake GI - поставить больше источников света. Пока я был занят всё лето кучей другой механики, сегодня мне захотелось опять попробовать сделать красивый свет. Т.к. в домах у меня используются отдельные модели окон я добавил на каждое окно мой скрипт fake global illumination (позже расскажу краткую его работу).
Чтож, давайте что ли посмотрим на скрины, а именно на результаты: До После
Хочу уточнить, что цвет источника света не просто белый! С помощью луча я узнаю координаты на текстуре, потом получаю пиксель на текстуре по координатам и затем получаю цвет! Поэтому ИС имеет такой цвет, какой был получен лучом!
Как видите стало значительно светлее, однако это и есть эффект свечения из окна. Чтож, принцип работы скрипта очень прост - пускаем луч от центра окна по направлению главного источника света, немного танцев с бубном и мы получаем цвет точки куда мы попали, создаем свет, корректируем его высоту а так же проверяем на объекты вокруг него, что бы на стене у нас не появилось белое пятно из за близкого расположения ИС к объекту.. Это всё вроде Добавлено (16.08.2014, 00:06) --------------------------------------------- Ещё конечно было бы хорошо сделать Glow / Bloom эффект на полу, надо как нибудь тоже посмотреть какие решения есть для этого в Indie.
Сообщение отредактировал robertono - Пятница, 15 Августа 2014, 23:53 |
|
| |
MANMANA | Дата: Суббота, 16 Августа 2014, 00:34 | Сообщение # 16 |
почти ветеран
Сейчас нет на сайте
| Цитата robertono ( ) С помощью луча я узнаю координаты на текстуре, потом получаю пиксель на текстуре по координатам и затем получаю цвет планируется ли учитывать не один пиксель, а область вокруг него и брать средний цвет из них, ведь попадание рея в шов между досками даст совсем другой результат, нежели волокно дерева? как это будет выглядеть при размытии текстур?
http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Последнее:
Новый раздел "Текстуры"
Как запатентовать, защитить техническое решение, игру, идею
Сообщение отредактировал MANMANA - Суббота, 16 Августа 2014, 00:35 |
|
| |
beril | Дата: Суббота, 16 Августа 2014, 00:51 | Сообщение # 17 |
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
| А ты уверен, что это именно с игры, а не рендинг или обработанный скрин?
Накодил? Убери за собой! Инвентарь в Unity(UI) Инвентарь в Unity(GUI)
|
|
| |
beril | Дата: Суббота, 16 Августа 2014, 00:52 | Сообщение # 18 |
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
| Цитата robertono ( ) Чтож, давайте что ли посмотрим на скрины, а именно на результаты: До После Разница существенная )
Накодил? Убери за собой! Инвентарь в Unity(UI) Инвентарь в Unity(GUI)
|
|
| |
robertono | Дата: Суббота, 16 Августа 2014, 11:33 | Сообщение # 19 |
Чокнутый Кот
Сейчас нет на сайте
| Цитата MANMANA ( ) планируется ли учитывать не один пиксель, а область вокруг него и брать средний цвет из них, ведь попадание рея в шов между досками даст совсем другой результат, нежели волокно дерева? ну если где то найти алгоритм, который на основе массива RGBA сделает средний цвет (а я уверен что это в интернете уже есть, ведь это проще простого, просто своей головой не додумаю) Спасибо за идею, учту
Цитата MANMANA ( ) как это будет выглядеть при размытии текстур? Вы имеете ввиду MIP ? Цвет зависит на прямую от текстуры, если текстура размыта в указанной координате то такой цвет и будет взят. Я просто использую Texture2D.GetPixel(x,y) что бы получить цвет по координатам.Добавлено (16.08.2014, 01:02) --------------------------------------------- beril, жаль что это не realtime Realtime бы убил вообще производительность. А так, источники света устанавливаются при старте сцены. Т.е. Awake. Добавлено (16.08.2014, 01:20) --------------------------------------------- "2. Взять сложить по трём составляющим (RGB) каждый пиксель и поделить каждую составляющую на количество пикселей и получим средний цвет." Я тут прочитал один из способов извлечь средний цвет, попробую потом. Проблема в том что я использую атлас, у меня блоки строго занимают место 64x64, так что сначала нужно будет по координатам определить в каком блоке мы сейчас находимся и проанализировать средний цвет в радиусе например 5 пикселей Добавлено (16.08.2014, 11:33) --------------------------------------------- А я читал что Point Light довольно прожорливые и много таких лучше не использовать. Если я просто сделаю SetActive(false) движок засчитает это как полное выключение источника света ? В смысле допустим я отключу таких 100 поинт лайгхтов, производительность повыситься? Отключение объекта освобождает движок от обработки этого объекта?
|
|
| |
DantorS | Дата: Суббота, 16 Августа 2014, 12:16 | Сообщение # 20 |
заслуженный участник
Сейчас нет на сайте
| Цитата robertono ( ) Выяснилось, что мне нужно Global Illumation или Ambient Occlusion (походу я ещё не особо различаю их разницу..) GI - это более реалестичное отражение света. AO, SSAO - это более реалестичные тени. Цитата robertono ( ) В гугле по теме fake global illumination можно найти много наработок от пользователей юнити. Были какие то cone tracing и ещё куча сложных алгоритмов по этой теме, но самый простой способ, как сказал true_abrakadabra и romgerman и ещё куча других пользователей которые пытались сделать fake GI - поставить больше источников света. Держи. Здесь просто стоит вопрос в оптимизации. Думаю в unity 5 всё будет хорошо. А насчёт вопроса где почитать - crytek публиковала где-то алгоритмы своей GI. Найти сейчас не получается.
Сообщение отредактировал DantorS - Суббота, 16 Августа 2014, 12:20 |
|
| |
|