|
FAQ Туториалы и часто задаваемые вопросы |
28.10.2007, 15:22
|
#1
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Как реализовать прозрачность текстуры
Немного порывшись по форуму, обнаружил что иногда некоторым начинающим разработчикам очень надо реализовать прозрачность текстуры, т.е под прозрачностью текстуры понимается что какой то определенный цвет в текстуре должен быть невидим. И в этом кратеньком уроке я научю Вас как правильно это делать.
Первым нашим шагом будет создание простого куба на который будет наложена текстура. Первым делом создаем пустой проект. И пишем:
[blitz]
Graphics3D 1024,768,32,2
SetBuffer BackBuffer()
camera=CreateCamera()
PositionEntity camera,0,2,-5
kub=CreateCube()
kub_texture=LoadTexture("1.bmp")
Repeat
RenderWorld
Flip
Until KeyHit(1)
End
[/blitz]
Сдесь мы создали простой проект в котором на куб наклыдывается текстура. В качестве текстуры можно взять любую картинку на черном фоне). Теперь можно все это дело запустить и посмотреть на результат. Если все правильно то вы увидете куб с текстурой.
Следующий наш шаг это установка прозрачности какому либо цвету( в нашем случае это черный цвет). Затем после SetBuffer BackBuffer() и перед Repeat и перед загрузкой текстуры, прописываем следующее:
[blitz]
TextureFilter "1",4
[/blitz]
Эта команда управляет видом текстуры и еще данная команда содержит достаточно много флагов для установки параметров текстуры. А теперь поподробней рассмотрим ее синтаксис:
[blitz]
TextureFilter сдесь_указывается_имя_текстуры_без_расширения, нужный_флаг
[/blitz]
В первом параметре указывается имя текстуры( без расширения) для которой будет применяться флаг(параметр). А во втором параметре нужный флаг. Вот некоторые флаги:
1 - обычный вид текстуры
2 - прозрачность(альфа-канал)
4 - какой либо цвет становится прозрачным( по умолчанию - черный, в RGB(0,0,0))
Теперь после этого можно запустить и посмотреть на результат: черный цвет будет невидим(прозрачен).
А теперь подведем итог этого маленького урока:
Теперь читатель знает как задавать прозрачность того или иного цвета.
В большинстве игр декалы(дырки от пуль и т.п) создаются именно таким образом.
Вот весь код:
[blitz]
Graphics3D 1024,768,32,2
SetBuffer BackBuffer()
camera=CreateCamera()
PositionEntity camera,0,2,-5
kub=CreateCube()
TextureFilter"1",4
kub_texture=LoadTexture("1.bmp")
EntityTexture kub,kub_texture
Repeat
CameraClsColor camera,100,100,100
RenderWorld
Flip
Until KeyHit(1)
End
[/blitz]
НАСЛАЖДАЙТЕСЬ!!!
P.S. Я очень надеюсь что кому-то эта статья поможет. Спасибо за внимание.
P.S.S Вот пример:
__________________
|
(Offline)
|
|
29.10.2007, 12:57
|
#2
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: Как реализовать прозрачность текстуры
CameraClsColor camera,100,100,100
Вай, в цикле? Вай! Всё какбы хорошо, но не в цикл её пихай. И имхо, лучше делать прозрачность перебором всех пикселей и изменения их альфы, изая функции Write/Read Pixel
|
(Offline)
|
|
29.10.2007, 13:00
|
#3
|
Троллота
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений (для 1,772 пользователей)
|
Re: Как реализовать прозрачность текстуры
Угу! В FAQ даж выкладывали такую функцию
|
(Offline)
|
|
29.10.2007, 16:47
|
#4
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Re: Как реализовать прозрачность текстуры
Ну извеняюсь, насчет CameraClsColor напарил.... признаю
__________________
|
(Offline)
|
|
29.10.2007, 18:16
|
#5
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Re: Как реализовать прозрачность текстуры
хорошая робота !!
|
(Offline)
|
|
29.10.2007, 21:25
|
#6
|
Нуждающийся
Регистрация: 01.10.2006
Сообщений: 55
Написано одно полезное сообщение (для 0 участников)
|
Re: Как реализовать прозрачность текстуры
хороший урок!
|
(Offline)
|
|
06.11.2007, 14:35
|
#7
|
Знающий
Регистрация: 06.10.2007
Сообщений: 225
Написано 15 полезных сообщений (для 21 пользователей)
|
Re: Как реализовать прозрачность текстуры
Сообщение от mr.DIMAS
4 - какой либо цвет становится прозрачным( по умолчанию - черный, в RGB(0,0,0))
|
А как сделать что бы прозрачным был другой цвет а не только черный? Так как черный цвет все таки важен как никак в играх. Как сделать что бы флаг 4 маскировал не черный а цвет скажем 255,0,255?
|
(Offline)
|
|
06.11.2007, 15:54
|
#8
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: Как реализовать прозрачность текстуры
Bagration, нужно перебрать все пиксели и поменять им альфу. Смотри Write/Read Pixel.
На форуме уже много раз вылаживали функцию.
|
(Offline)
|
|
06.11.2007, 21:26
|
#9
|
ТЫ ЧООО?
Регистрация: 26.02.2007
Сообщений: 3,369
Написано 2,020 полезных сообщений (для 7,192 пользователей)
|
Re: Как реализовать прозрачность текстуры
можно делать прозрачность ещё в максе с помощью B3d пеплайна.
с помощью .png с прозрачным фоном.
Результат красивее.
__________________
Вертекс в глаз или в пиксель раз?
|
(Offline)
|
|
08.11.2007, 03:02
|
#10
|
Оператор ЭВМ
Регистрация: 14.09.2007
Сообщений: 27
Написано 2 полезных сообщений (для 5 пользователей)
|
Re: Как реализовать прозрачность текстуры
установить прозрачность на любой пиксель - юзайте ARGB.
кстати на созданую программно текстуру не действует флаг 4 или 2
т. к. альфаканал пикселей непрозрачен.
перед использованием я обычно закрашиваю всю поверхность текстуры прозрачными пикселями, а потом рисую обычным цветом.
еще, текстуру с альфаканалом можно сделать в фотошопе
только фон должен быть прозрачным. сохраняем в *.png, блиц сам находит, где альфа.
|
(Offline)
|
|
08.11.2007, 13:05
|
#11
|
Дэвелопер
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений (для 1,540 пользователей)
|
Re: Как реализовать прозрачность текстуры
еще, текстуру с альфаканалом можно сделать в фотошопе
только фон должен быть прозрачным. сохраняем в *.png, блиц сам находит, где альфа.
|
этот урок для тех у кого фотожопы нету
__________________
|
(Offline)
|
|
10.11.2007, 02:12
|
#12
|
Оператор ЭВМ
Регистрация: 14.09.2007
Сообщений: 27
Написано 2 полезных сообщений (для 5 пользователей)
|
Re: Как реализовать прозрачность текстуры
Если ты считаешь себя гуру фотошопа, пусть будет так, никто не спорит. А вот другие могут и не знать.
---
Вместо флага 4 можно использовать флаг 2 + альфаканал. Намного лучше смотрится, если это к примеру листва деревьев.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 14:33.
|