Тени в скрипте

Общие вопросы о Unity3D

Re: Тени в скрипте

Сообщение AM-Games 08 апр 2013, 08:46

aler писал(а):
artk писал(а):Самый наилучший и быстрый способ - это "рейкастить" положение игрока на полу до каждого источника света. Если есть препятствие - значит это тень.


Для этого нужны коллайдеры, а они не обязательно присутствуют в проекте

Именно этот способ я и хотел предложить, но еще с проверкой объекта, чтобы не все тени откликались. И в случае с DirLight нужно посылать луч не к свету, а в противоположном ему направлении.
Насчет коллайдеров. Просто всем объектам даете коллайдер, а те, которые не должны иметь коллизию, переключаете на trigger.
AM-Games
UNIт
 
Сообщения: 139
Зарегистрирован: 21 окт 2012, 11:30

Re: Тени в скрипте

Сообщение dota 08 апр 2013, 09:20

Еще один нубский вопрос - как эти лучи создавать и откуда/куда направлять?
dota
UNец
 
Сообщения: 17
Зарегистрирован: 07 апр 2013, 07:27

Re: Тени в скрипте

Сообщение AM-Games 08 апр 2013, 10:18

dota писал(а):Еще один нубский вопрос - как эти лучи создавать и откуда/куда направлять?

http://docs.unity3d.com/Documentation/ScriptReference/
1) Ищем Raycast и читаем про создание лучей и их свойства.
2) Ищем Vector3 и Quaternion и читаем про вычисление направлений и прочего.
AM-Games
UNIт
 
Сообщения: 139
Зарегистрирован: 21 окт 2012, 11:30

Re: Тени в скрипте

Сообщение artk 08 апр 2013, 17:26

aler писал(а):
artk писал(а):Самый наилучший и быстрый способ - это "рейкастить" положение игрока на полу до каждого источника света. Если есть препятствие - значит это тень.


Для этого нужны коллайдеры, а они не обязательно присутствуют в проекте

Без коллайдера не будет тени.
Аватара пользователя
artk
Старожил
 
Сообщения: 749
Зарегистрирован: 22 май 2011, 12:22

Re: Тени в скрипте

Сообщение aler 08 апр 2013, 17:31

artk писал(а):
aler писал(а):
artk писал(а):Самый наилучший и быстрый способ - это "рейкастить" положение игрока на полу до каждого источника света. Если есть препятствие - значит это тень.


Для этого нужны коллайдеры, а они не обязательно присутствуют в проекте

Без коллайдера не будет тени.


:-@
Коллайдеры и тени никак не связаны
Аватара пользователя
aler
UNIверсал
 
Сообщения: 351
Зарегистрирован: 20 фев 2011, 17:41

Re: Тени в скрипте

Сообщение Robotron18 03 дек 2013, 16:06

Если тени реализованы лайтмапой, то можно брать ее цвет для анализа. Рейкаст вертикально вниз.

Синтаксис:
Используется csharp
 LightmapData lightMapInfo = LightmapSettings.lightmaps[rand.lightmapIndex];
            Texture2D tex = lightMapInfo.lightmapFar;

            Vector2 pixelUV = hitCurrent.lightmapCoord;
            Color surfaceColor = tex.GetPixelBilinear(pixelUV.x, pixelUV.y);
            shadowLerpIndex = Mathf.InverseLerp(colorMax, colorMin, surfaceColor.r);
Robotron18
UNец
 
Сообщения: 40
Зарегистрирован: 25 июл 2010, 15:48

Re: Тени в скрипте

Сообщение BornFoRdeatH 03 дек 2013, 16:31

Можно попробовать реализовать на шейдерном уровне, это будет многим точнее чем всякие там рейкасты, добавить флоат где 0 не в тени и 1 в тени, и этим руководствоваться...
Не бойся, если ты один, бойся, если ты ноль.
BornFoRdeatH
Адепт
 
Сообщения: 2377
Зарегистрирован: 22 окт 2011, 23:41
Откуда: Украина
Skype: bornfordeath

Re: Тени в скрипте

Сообщение waruiyume 03 дек 2013, 16:45

А как это, собственно, сделать?
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Тени в скрипте

Сообщение BornFoRdeatH 03 дек 2013, 16:53

waruiyume писал(а):А как это, собственно, сделать?

Ну думаю достаточно каждый фрейм получать эту переменную и обнулять, ну а в шейдере достаточно условие чтобы не каждый фрагмент изменял переменную.
Не бойся, если ты один, бойся, если ты ноль.
BornFoRdeatH
Адепт
 
Сообщения: 2377
Зарегистрирован: 22 окт 2011, 23:41
Откуда: Украина
Skype: bornfordeath

Re: Тени в скрипте

Сообщение BornFoRdeatH 04 дек 2013, 11:10

Таки я ошибся, думал что можно изменять проперти из шейдера, но никогда этим не интересовал и небыло потребности, но решив попробовать затестить, и оказалось что шейдер не может их менять как это не прискорбно, а какие бы возможности могли открыться... Приношу свои извинения за мое ошибочное мнение...
Не бойся, если ты один, бойся, если ты ноль.
BornFoRdeatH
Адепт
 
Сообщения: 2377
Зарегистрирован: 22 окт 2011, 23:41
Откуда: Украина
Skype: bornfordeath

Пред.

Вернуться в Общие вопросы

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

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