Bump и свет.

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

longwair
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 145
Зарегистрирован: 21.04.2010 (Ср) 12:37
Откуда: Крым.

Bump и свет.

Сообщение longwair » 03.08.2014 (Вс) 9:35

Делаю bump так:
Код: Выделить всё
  d3dDevice.SetTextureStageState 0, D3DTSS_COLOROP, D3DTOP_DOTPRODUCT3
  d3dDevice.SetTextureStageState 0, D3DTSS_COLORARG1, D3DTA_TEXTURE
  d3dDevice.SetTextureStageState 0, D3DTSS_COLORARG2, D3DTA_TFACTOR
  d3dDevice.SetTextureStageState 1, D3DTSS_TEXCOORDINDEX, 0
  d3dDevice.SetTextureStageState 1, D3DTSS_COLOROP, D3DTOP_MODULATE
 
  r = 0: g = 0: b = 255
  c = r * &H10000 + g * &H1000& + b
  d3dDevice.SetRenderState D3DRS_TEXTUREFACTOR, c

В сцене ещё, есть и источник света типа DIRECTIONAL, Но на общую сцену он ни как не влияет. Как отобразить Bump что бы текстура учитывала и свет?
Тут же #000000 по #ffffff написано
Уроки по 3DS Max для начинающих - http://3dlong.ucoz.ru/

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Bump и свет.

Сообщение Mikle » 03.08.2014 (Вс) 14:38

RGB для D3DRS_TEXTUREFACTOR рассчитывай исходя из направления света.

longwair
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 145
Зарегистрирован: 21.04.2010 (Ср) 12:37
Откуда: Крым.

Re: Bump и свет.

Сообщение longwair » 04.08.2014 (Пн) 3:10

Mikle, возможно ты меня не понял. Bump отображается хорошо, а вот затенение одной стороны меша от источника света с Bump не отображается.
Вот картинка. Слева без Bump и сторона её затеняется, а справа включаю Bump и теневая сторона принимает обычный цвет текстуры, не учитывая источник света.
У вас нет доступа для просмотра вложений в этом сообщении.
Тут же #000000 по #ffffff написано
Уроки по 3DS Max для начинающих - http://3dlong.ucoz.ru/

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Bump и свет.

Сообщение Mikle » 04.08.2014 (Пн) 10:48

В третьей стадии (в смысле №2) нужно домножить результат на Diffuse.

longwair
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 145
Зарегистрирован: 21.04.2010 (Ср) 12:37
Откуда: Крым.

Re: Bump и свет.

Сообщение longwair » 04.08.2014 (Пн) 13:20

Не пойму как? :oops:
Mikle, не мог бы подробней описать что всё это делает
D3DTSS_COLOROP
D3DTSS_COLORARG1
D3DTSS_COLORARG2
D3DTSS_TEXCOORDINDEX.....

D3DTOP_DOTPRODUCT3
D3DTA_TEXTURE
D3DTA_TFACTOR
D3DTOP_MODULATE....

или ссылочку на описание всего, нормальным(понятным языком), а то леплю перебирая все эти параметры не понимая что делаю.

Домножить Diffuse ну вот написал я d3dDevice.SetTextureStageState 2, D3DTSS_COLORARG1, D3DTA_DIFFUSE , но уверен перед этим ещё что то должно быть, типа d3dDevice.SetTextureStageState 0, D3DTSS_COLOROP, D3DTOP_ADD или ещё какай нибудь подобной штуки. В общем надо разобраться со всем этим, нужно учить а найти не могу где это всё описано нормальным языком.
Тут же #000000 по #ffffff написано
Уроки по 3DS Max для начинающих - http://3dlong.ucoz.ru/

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Bump и свет.

Сообщение Mikle » 04.08.2014 (Пн) 14:34

Код: Выделить всё
d3dDevice.SetTextureStageState 2, D3DTSS_COLORARG1, D3DTA_CURRENT
d3dDevice.SetTextureStageState 2, D3DTSS_COLORARG2, D3DTA_DIFFUSE
d3dDevice.SetTextureStageState 2, D3DTSS_COLOROP, D3DTOP_MODULATE

Естественно должен быть включен свет и всё прочее, что необходимо для него - материал, нормали в модели.
Я это более-менее подробно в книге описывал.

longwair
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 145
Зарегистрирован: 21.04.2010 (Ср) 12:37
Откуда: Крым.

Re: Bump и свет.

Сообщение longwair » 04.08.2014 (Пн) 15:03

Я так понимаю что:
D3DTA_CURRENT-получаем последнюю стадию текстуры
D3DTA_DIFFUSE-добавляем дифуз(это понятно)
D3DTOP_MODULATE-перемножаем arg1 и arg2
Тут же #000000 по #ffffff написано
Уроки по 3DS Max для начинающих - http://3dlong.ucoz.ru/

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Bump и свет.

Сообщение Mikle » 04.08.2014 (Пн) 15:41

Верно понял. D3DTA_CURRENT - результат предыдущей стадии.

longwair
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 145
Зарегистрирован: 21.04.2010 (Ср) 12:37
Откуда: Крым.

Re: Bump и свет.

Сообщение longwair » 04.08.2014 (Пн) 15:45

Makle, спасибо начинаю понимать
Тут же #000000 по #ffffff написано
Уроки по 3DS Max для начинающих - http://3dlong.ucoz.ru/

longwair
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 145
Зарегистрирован: 21.04.2010 (Ср) 12:37
Откуда: Крым.

Re: Bump и свет.

Сообщение longwair » 05.08.2014 (Вт) 1:26

Ну это я так понимаю самый простой Bump. А как сделать так, что бы Bump реагировал на источник света типа Point. Попытаюсь объяснить что имею ввиду.
D3DRS_TEXTUREFACTOR, c, с расчитываю так r = 0: g = 0: b = 255, это даёт обычный (неанемированный) Bump причём если R=0 то тень бампа будет падать вправо, если R=255 то влево. Так же и с переменной G с разницей что тень от бампа будет либо вверху либо внизу.
Ниже пример картинка и gif анимация, сделал в 3DS Max. На картинке чётко видно, тень бампа расходится в разные стороны от источника света, и при перемещении источника света она(тень) реагирует соответственно.
К примеру у нас есть коридор и персонаж с факелом(источник света), как сделать что бы Bump реагировал на перемещение этого факела?
У вас нет доступа для просмотра вложений в этом сообщении.
Тут же #000000 по #ffffff написано
Уроки по 3DS Max для начинающих - http://3dlong.ucoz.ru/

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Bump и свет.

Сообщение Mikle » 05.08.2014 (Вт) 6:20

Это попиксельный свет. Посмотри в книге примеры 20 и 21, они не описаны, это я примеры написал, а описать в книге не успел. В пр. 20 свет падает на плоскость, в пр. 21 на цилиндр. Сделать такой свет падающим на произвольный предмет без шейдеров нереально.
Правка: там в примерах даже не такой свет, а направленный, можно сделать и точечный, в любом случае уже нужны шейдеры.


Вернуться в Мультимедиа

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

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

    TopList