Как реализовать прозрачность текстуры
Вложений: 2
Немного порывшись по форуму, обнаружил что иногда некоторым начинающим разработчикам очень надо реализовать прозрачность текстуры, т.е под прозрачностью текстуры понимается что какой то определенный цвет в текстуре должен быть невидим. И в этом кратеньком уроке я научю Вас как правильно это делать.
Первым нашим шагом будет создание простого куба на который будет наложена текстура. Первым делом создаем пустой проект. И пишем: [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 Вот пример: |
Re: Как реализовать прозрачность текстуры
CameraClsColor camera,100,100,100
Вай, в цикле? Вай! Всё какбы хорошо, но не в цикл её пихай. И имхо, лучше делать прозрачность перебором всех пикселей и изменения их альфы, изая функции Write/Read Pixel |
Re: Как реализовать прозрачность текстуры
Угу! В FAQ даж выкладывали такую функцию ;)
|
Re: Как реализовать прозрачность текстуры
Ну извеняюсь, насчет CameraClsColor напарил.... признаю
|
Re: Как реализовать прозрачность текстуры
хорошая робота !! :super:
|
Re: Как реализовать прозрачность текстуры
хороший урок!
|
Re: Как реализовать прозрачность текстуры
Цитата:
|
Re: Как реализовать прозрачность текстуры
Bagration, нужно перебрать все пиксели и поменять им альфу. Смотри Write/Read Pixel.
На форуме уже много раз вылаживали функцию. |
Re: Как реализовать прозрачность текстуры
можно делать прозрачность ещё в максе с помощью B3d пеплайна.
с помощью .png с прозрачным фоном. Результат красивее. |
Re: Как реализовать прозрачность текстуры
установить прозрачность на любой пиксель - юзайте ARGB.
кстати на созданую программно текстуру не действует флаг 4 или 2 т. к. альфаканал пикселей непрозрачен. перед использованием я обычно закрашиваю всю поверхность текстуры прозрачными пикселями, а потом рисую обычным цветом. еще, текстуру с альфаканалом можно сделать в фотошопе только фон должен быть прозрачным. сохраняем в *.png, блиц сам находит, где альфа. |
Re: Как реализовать прозрачность текстуры
Цитата:
|
Re: Как реализовать прозрачность текстуры
Если ты считаешь себя гуру фотошопа, пусть будет так, никто не спорит. А вот другие могут и не знать.
--- Вместо флага 4 можно использовать флаг 2 + альфаканал. Намного лучше смотрится, если это к примеру листва деревьев. |
Часовой пояс GMT +4, время: 06:03. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot