Световосприятие объектов

Здесь можно задать свои вопросы напрямую разработчикам Unity3D

Re: Световосприятие объектов

Сообщение Woolf 05 ноя 2012, 11:28

seaman писал(а):
Дальше шейдером пишем в эту текстуру (уж как - не знаю)

а вот вопрос - можно ли добыть текстуру из шейдера?


Можно через рендеринг сцены в текстуру. Но получите настолько тормозной процесс, что лучше не пробовать. Объясняю в чем дело - шейдер оперирует текстурами в видеопамяти, чтение текселя - только из основной памяти (ну нельзя читать из видеопамяти тексели). Потому и будет гонять текстуру по шине туда-сюда каждый кадр. И то, таким способом можно узнать только освещенность точки на экране, а не на сцене.

А по поводу
Да чего мелочиться? Сразу б предложили самописный двиг =) А так, перечитайте выше вопросы, именно вопросы, сравните с разделом и названием темы. Не будем так близко подходить к флуду, ок?

Написание собственной системы освещения - для вас это будет наиболее оптимальным. Потому то, что вы хотите - извините, это бред и вопросы ваши тоже, проистекают от полного непонимания поцессов рендеринга и освещения. Почитайте что-ли статьи разные по освещению, их много. И я вообще не могу понять половины вопросов. Набор слов какой-то.. Что такое "восприятие света", к примеру? Что значит "свет падает"? Свет никуда не падает, никакого рейтресинга нет. Есть такое понятие, как освещенность вершины и освещенность пикселя НА ЭКРАНЕ. Высчитывается она по различным формулам освещения (к примеру, Фонга или Блинна). Что тут сложного?

Если что-то еще хотите узнать - формулируйте правильно вопросы. Если вам надо знать освещенность конкретной точки на объекте - то только собственная система освещения.
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: Световосприятие объектов

Сообщение Garu 08 ноя 2012, 00:51

Woolf писал(а):
Да чего мелочиться? Сразу б предложили самописный двиг =) А так, перечитайте выше вопросы, именно вопросы, сравните с разделом и названием темы. Не будем так близко подходить к флуду, ок?

Написание собственной системы освещения - для вас это будет наиболее оптимальным. Потому то, что вы хотите - извините, это бред и вопросы ваши тоже, проистекают от полного непонимания поцессов рендеринга и освещения. Почитайте что-ли статьи разные по освещению, их много. И я вообще не могу понять половины вопросов. Набор слов какой-то.. Что такое "восприятие света", к примеру? Что значит "свет падает"? Свет никуда не падает, никакого рейтресинга нет. Есть такое понятие, как освещенность вершины и освещенность пикселя НА ЭКРАНЕ. Высчитывается она по различным формулам освещения (к примеру, Фонга или Блинна). Что тут сложного?

Если что-то еще хотите узнать - формулируйте правильно вопросы. Если вам надо знать освещенность конкретной точки на объекте - то только собственная система освещения.

1 - http://ru.wikipedia.org/wiki/%D0%92%D0% ... 0%B8%D0%B5
2 - http://ru.wikipedia.org/wiki/%D0%A1%D0%B2%D0%B5%D1%82
Дальше можно сходным способом ;)
Опять же, повторный совет перечитать первый пост, а заодно обратить особое внимание на 1 строку того поста, но, ладно, опишу повторно.
Допустим мы берем метод Physics.OverlapSphere и поинт лайт, данный способ допустим очень подходит для распознания объектов, но, вертексы не обладают коллизией, а значит не ловятся этим методом, так что он пригоден лишь для статиков с колалйдером. Этот метод отсекает возможность "ловить" скин\скелет меши, а набивать их различными триггерами - шибко жирно по производительности. Так же мы машем ручкой той ситуации, когда объект А и свет Б имеют между собой объект (к примеру стену), на которой альфой стряпнута "дырка", ведь рейкастик (если проверочно кидать), удолбится одинаково что в ту дырку альфы, что в "закрашенную часть", и я надеюсь причину этого пояснять не надо =) Тем самым я и интересовался лояльным в плане нагрузки, производительности и всего прочего, способом вывода объекта, который бы ловил именно меш, без коллизий и прочих радостей, об этом к слову - тоже писалось. То что вы тут носитесь с рендером - ну, похвально, только это совершенно не то что требуется, да и по хорошему не имеет отношения к данной ситуации. И вопрос к разрабам, как раз и заключается в возможности "ловли мешей", дабы тем же источником света, в определенный - хоть Collider[] хоть Transform[], загнать список того, что попадает в зону освещения, а заодно бы решало вопрос\проблему с "дырка альфой в стене", для точности вывода.
Аватара пользователя
Garu
UNITрон
 
Сообщения: 199
Зарегистрирован: 13 авг 2009, 18:26

Re: Световосприятие объектов

Сообщение waruiyume 08 ноя 2012, 01:57

Garu писал(а):...И вопрос к разрабам, как раз и заключается в возможности "ловли мешей", дабы тем же источником света, в определенный - хоть Collider[] хоть Transform[], загнать список того, что попадает в зону освещения, а заодно бы решало вопрос\проблему с "дырка альфой в стене", для точности вывода.

Battle Angel Alita писал(а):что написано в ОП-посте даже мне не понятно.
если хочешь знать как юнька отсекает объекты для освещения - в форварде это пересечение сферы источника света с AABB объекта, а в деффереде такое понятие как "объекты которые освещаются источником света" вообще неприменимо.


http://en.wikibooks.org/wiki/Cg_Program ... Reflection
http://steps3d.narod.ru/tutorials/shado ... orial.html
(popcorn1)
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Световосприятие объектов

Сообщение Garu 14 ноя 2012, 04:57


Штука как бы интересная, но боюсь это не то решение проблемы в котором заинтересован. Отрендерить все эти радости, нужно через камеру, а с учетом кол-ва объектов - камера съест еще больше, чем вариант ловли ГО и вывода их вертексов через векторалку + проверка дистанций. Так же покешировать или OCTree загнать, мягко говоря - тоже вне "легкого" подхода по решению вопроса.

Ладно, на всякий вернемся к истокам вопроса в обличье примеров:
Берем допустим 5 объектов и 5 источников света(дьля примера ьберем поиньт-лайт). 1-3 объекты, допустим просто обычный мешик, но довольно жирный, грубо допускаем "жирность" в 25000 полигонов каждый. Остальные 2 - скин\скелет меши. Допустим они в форме людей, с вытянутой рукой, а их центр находится на уровне пояса. Все эти объекты допустим расставлены так, что у каждого лишь небольшая часть попадает в радиус освещения, или он не попадает под свет вообще. Лееры, таги, фикс неймы объектов - непозволительная роскошь(берем за утверждение). Требуется программно вывести - какой объект попал в зону освещения какого-то из светильников. Если мы идем от варианта меш-коллайдера, с обычными моделями это вполне решает проблему, но с персонажем это не прокатывает. Как вариант триггер-коллизию но, тогда нужно делать по коллайдеру на каждую кость, и если брать просто "куски рук и ног" - это еще допустимая нагрузка, но, те же пальцы, это минимум 10, а там и все 30 триггер коллизий - это немного не то чего хотелось бы в плане нагрузки. Допустим "облегчаем" задачу - хватаем вертексы через векторалку у всех этих объектов, но, как "хватануть" сам объект? Теги могут быть абсолютно разными, или вовсе без тега, хотя вариант с деревом допустимых тегов я все же прикидывал, но, тогда каждый источник света будет ловить себе в расчет весь игровой мир, потом допустим отсекать по радиусу лишнее, но мне кажется, это опять же перебор по "жирности", да и потом, ему нужно словить ВЕСЬ набор вертексов того объекта, а после еще сравнить, не находится ли вертекс в радиусе самого света. И это все в апдейте и не от одного а от массы объектов - снова ловим "жирность". И все это - не предусматривает возможности "прозрачной стены", допустим это будет деревянный забор, который к примеру стряпнут плейном с альфой. А значит выходит следующий расчет:
свет ловит весь мир в список - отсекает все лишнее по допустимой дистанции - у оставшихся объектов ловит все их вертексы - сверяте их уже по собственному радиусу - те которые в него попали он рейкастит - дальше если рейкаст долбанулся во что-то не достигнув вертекса, а значит есть препятствие - должен узнать, прозрачно оно или нет? И все это запихнуть еще и в апдейт. По мне это очень жирно по нагрузке.
Вопрос к разрабам заключается в том, что можно ли устроить и упростить все это дело, с доп. выводом массива ГО через свет, в плане того - на что он попадает? И естественно с учетом той самой прозрачности.
(та часть где многие начали исповедовать рендер) - Что бы эффект был (на глаз\по восприятию\как грубый пример блин) - что сам свет - нечто на подобии рейкаста, который не тыкается в физику, а вообще в любой плейн даже без коллизии, в каждый треугольничек, но не с дикой нагрузкой на производительность. Что бы как человек "на глаз", сидя за монитором определяет что - да, этот объект освещается тем фонарем, так же делалось и программно, с выводом списка тех объектов, которые тем светом и озарило. Без камер и отрисовки, именно чисто выдача массива, где бы не находились объекты и где бы не торчали источники света.
Аватара пользователя
Garu
UNITрон
 
Сообщения: 199
Зарегистрирован: 13 авг 2009, 18:26

Re: Световосприятие объектов

Сообщение artk 08 дек 2012, 21:40

В 4-ой версии юнити есть же что-то наподобие 3D лайтмапы.
Но, я никогда не понимал, зачем так мудрить? "Хватит заниматься херней, а пишите уже код". (С)
На модель расставляем контрольные точки(можно расставлять и автоматом, в зависемости от типа модели, это элементарно). С определенной частотой делаем выборку источников света в определенном радиусе от объекта. Затем, [url]Рейкастом[/url](от контрольной точки до источника света), проверяем на освещенность.
Выборка и рейкасты - это самое минимальнорессурсоемкое занятие.
Аватара пользователя
artk
Старожил
 
Сообщения: 749
Зарегистрирован: 22 май 2011, 12:22

Пред.

Вернуться в Вопросы разработчикам движка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2