Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 16.07.2014, 14:08   #1
p314
AnyKey`щик
 
Аватар для p314
 
Регистрация: 15.07.2014
Сообщений: 8
Написано 2 полезных сообщений
(для 2 пользователей)
Освещение спрайта

Делаю освещение спрайта как здесь: http://snakehillgames.com/spritelamp/.Создаю спрайт, накладываю текстуры (обе текстуры диффузная и бамп - файл png c прозрачностью). Использую пример: http://blitzetc.ru/index.php/%D0%9F%D1%80%D0%BE%D1%81%D1%82%D0%BE%D0%B9_DOT3_No rmalMapping. Все работает, ...но спрайт становится не прозрачным там где были прозрачные области. Как это исправить?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
L.D.M.T. (17.07.2014)
Старый 16.07.2014, 16:37   #2
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 13.10.2007
Сообщений: 3,877
Написано 2,011 полезных сообщений
(для 5,070 пользователей)
Ответ: Освещение спрайта

Сообщение от p314 Посмотреть сообщение
Делаю освещение спрайта как здесь: http://snakehillgames.com/spritelamp/.Создаю спрайт, накладываю текстуры (обе текстуры диффузная и бамп - файл png c прозрачностью). Использую пример: http://blitzetc.ru/index.php/%D0%9F%D1%80%D0%BE%D1%81%D1%82%D0%BE%D0%B9_DOT3_No rmalMapping. Все работает, ...но спрайт становится не прозрачным там где были прозрачные области. Как это исправить?
Пример покажи(скрин или код). Подозреваю что-там что-то не то с флагами или блендом. Но со слов трудно определить.
(Offline)
 
Ответить с цитированием
Старый 16.07.2014, 17:03   #3
MadMedic
ПроЭктировщик
 
Регистрация: 05.08.2006
Сообщений: 142
Написано 82 полезных сообщений
(для 315 пользователей)
Re: Освещение спрайта

Красиво выглядит ...
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Черный крыс (17.07.2014)
Старый 16.07.2014, 19:55   #4
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 25.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,590
Написано 5,356 полезных сообщений
(для 15,447 пользователей)
Ответ: Освещение спрайта

Боюсь, никак. При опеределёных сочетаниях блендов/fx прозрачность не сделать. Это же DirectX 7.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 16.07.2014, 22:23   #5
p314
AnyKey`щик
 
Аватар для p314
 
Регистрация: 15.07.2014
Сообщений: 8
Написано 2 полезных сообщений
(для 2 пользователей)
Ответ: Освещение спрайта

Похоже прозрачность теряется если индекс текстуры отличен от нуля.Отсюда я делаю вывод, что мультитекстурирование с прозрачными областями в blitze не работает.

пример на всякий случай прикладываю sprite_demo.rar

ps. Если все так плохо - куда дальше двигаться в более-менее блитцеподобное(minib3d например) ?
(Offline)
 
Ответить с цитированием
Старый 17.07.2014, 00:44   #6
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 4,691
Написано 2,087 полезных сообщений
(для 4,907 пользователей)
Ответ: Освещение спрайта

Во-первый не установлены флаги.

tex1=LoadTexture("stone_diff.png",2)

Во-вторых это бесполезно.


Вариант с альфой:




Вариант с маской можно даже не рассматривать:

(Offline)
 
Ответить с цитированием
Старый 17.07.2014, 11:58   #7
tirarex
Бывалый
 
Аватар для tirarex
 
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений
(для 866 пользователей)
Ответ: Освещение спрайта

ЮзатьXors3D Где все это работает !
__________________
Asus rog gl552vw (i7 6700 16gb gtx960m2gb 250gb ssd)

̶M̶s̶i̶ ̶g̶e̶6̶2̶ ̶(̶i̶7̶-̶5̶7̶0̶0̶ ̶1̶2̶g̶b̶ ̶r̶a̶m̶ ̶9̶6̶0̶m̶ ̶2̶g̶b̶ ̶1̶2̶8̶g̶b̶ ̶s̶s̶d̶)̶ - Умер
̶R̶a̶d̶e̶o̶n̶ ̶H̶D̶4̶6̶5̶0̶ ̶2̶g̶b̶ ̶,̶ ̶c̶o̶r̶e̶2̶d̶u̶o̶ ̶t̶6̶5̶0̶0̶ ̶2̶.̶1̶G̶h̶z̶ ̶4̶g̶b̶ ̶r̶a̶m̶ ̶-̶м̶а̶м̶о̶н̶т̶ ̶ Отдан матери
̶I̶n̶t̶e̶l̶ ̶Z̶3̶7̶3̶5̶F̶ ̶1̶.̶3̶-̶1̶.̶8̶g̶h̶z̶ ̶2̶g̶b̶ ̶r̶a̶m̶ ̶-̶ ̶п̶л̶а̶н̶ш̶е̶т̶ Отдан матери
(Offline)
 
Ответить с цитированием
Старый 17.07.2014, 18:01   #8
Кирпи4
Социал-сычевист
 
Аватар для Кирпи4
 
Регистрация: 24.06.2011
Сообщений: 605
Написано 338 полезных сообщений
(для 1,337 пользователей)
Ответ: Освещение спрайта

Сообщение от p314 Посмотреть сообщение
Похоже прозрачность теряется если индекс текстуры отличен от нуля.Отсюда я делаю вывод, что мультитекстурирование с прозрачными областями в blitze не работает.

пример на всякий случай прикладываю Вложение 20730

ps. Если все так плохо - куда дальше двигаться в более-менее блитцеподобное(minib3d например) ?
Да, минибздун как вариант, если есть желание влезть в гл и поработать напильником
__________________


(Offline)
 
Ответить с цитированием
Старый 18.07.2014, 18:51   #9
MadMedic
ПроЭктировщик
 
Регистрация: 05.08.2006
Сообщений: 142
Написано 82 полезных сообщений
(для 315 пользователей)
Re: Освещение спрайта

В один проход такой эффект не сделать, потому что dot3 блендит не только информацию о цвете но и о альфе. Вот набросал код в БлицСДК (самого лица под рукой нет). Папка tex в аттаче
Graphics3D (640, 480, 0, 2)

cam = CreateCamera ()
CameraCLsColor(cam, 255, 66, 66)
CameraProjMode(cam, 2)
CameraZoom(cam, 0.5)
BumpMap=LoadTexture("tex\map-falloff.jpg", 1+16+32)
LightMap=LoadTexture("tex\map-falloff-diff.jpg", 1+16+32)


WallDiff=LoadTexture("tex\wall\wall_diff.jpg")
WallBump=LoadTexture("tex\wall\bump.jpg")
TextureBlend(WallBump, 4)

Wall=CreateCube()
MoveEntity(Wall, 0, 0, 3.2)
EntityFx(Wall, 1)
EntityTexture(Wall, BumpMap, 0, 0)
EntityTexture(Wall, WallBump, 0, 1)
EntityTexture(Wall, WallDiff, 0, 2)

CharDiffAlpha=LoadTexture("tex\char\diff_alpha.png", 1+2)
CharBump=LoadTexture("tex\char\bump.bmp", 1)
TextureBlend(CharBump, 4)
CharAlpha=LoadTexture("tex\char\alpha2.bmp", 1)    ;NOT ALPHA, WILL MULTIPLY

Char=CreateCube()
MoveEntity(Char, 0, 0, 3.1)
EntityFx(Char, 1+32)
EntityTexture(Char, CharDiffAlpha,0, 0)
EntityTexture(Char, LightMap,0, 1)

CharFX=CreateCube()
MoveEntity(CharFX, 0, 0, 3.0)
EntityFx(CharFX, 1)
EntityTexture(CharFX, BumpMap,0, 0)
EntityTexture(CharFX, CharBump,0, 1)
EntityTexture(CharFX, CharAlpha,0, 2)
EntityBlend(CharFX, 3)

Repeat
  
  If KeyDown(57)=0
  PositionTexture(BumpMap, Sin(Millisecs()*0.0015)*0.5, Cos(Millisecs()*0.0025)*0.50)
  PositionTexture(LightMap, Sin(Millisecs()*0.0015)*0.5, Cos(Millisecs()*0.0025)*0.50)
EndIf

 
    RenderWorld ()
    Flip ()
    
Until KeyHit (1)
Миниатюры
Нажмите на изображение для увеличения
Название: im1.png
Просмотров: 561
Размер:	69.2 Кб
ID:	20737  Нажмите на изображение для увеличения
Название: im2.png
Просмотров: 540
Размер:	86.4 Кб
ID:	20738  
Вложения
Тип файла: rar tex.rar (267.1 Кб, 200 просмотров)
(Offline)
 
Ответить с цитированием
Эти 7 пользователя(ей) сказали Спасибо MadMedic за это полезное сообщение:
ABTOMAT (21.07.2014), Arton (19.07.2014), DStalk (22.07.2014), Gector (19.07.2014), Nerd (20.07.2014), p314 (18.07.2014), Черный крыс (19.07.2014)
Старый 21.07.2014, 23:32   #10
Черный крыс
 
Сообщений: n/a
Ответ: Освещение спрайта

Кто-нибудь знает как в OpenGL делается бамп?
 
Ответить с цитированием
Старый 21.07.2014, 23:40   #11
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,921
Написано 2,169 полезных сообщений
(для 5,913 пользователей)
Ответ: Освещение спрайта

нормальные люди шейдером делают
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Arton (22.07.2014)
Старый 22.07.2014, 03:51   #12
Черный крыс
 
Сообщений: n/a
Ответ: Освещение спрайта

Мне бы сделать методом НЕ нормальных людей..
 
Ответить с цитированием
Старый 22.07.2014, 08:49   #13
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,921
Написано 2,169 полезных сообщений
(для 5,913 пользователей)
Ответ: Освещение спрайта

ну раз уж ты взял опенгл, то почему шейдеры не курнуть?
если тебе для 2д спрайтов, то задача ещё проще, чем для 3д, т.к. нормали спрайтов = нормали нормалмап.

clamp(dot(lightDir, normal), 0.0, 1.0) * lightColor
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Черный крыс (22.07.2014)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 13:47.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com