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

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

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

FAQ Туториалы и часто задаваемые вопросы

Ответ
 
Опции темы
Старый 28.10.2007, 12:22   #1
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,570
Написано 545 полезных сообщений
(для 1,528 пользователей)
Счастье Как реализовать прозрачность текстуры

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

[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 Вот пример:
__________________
Junior Tools Programmer at Larian Studios
ПеКа: AMD Ryzen 1700X 8@3.4 ГГц, 16 Гб ОЗУ,

NVIDIA GTX 960 4 Гб, SSD Samsung 960 EVO 500 Гб
(Offline)
 
Ответить с цитированием
Старый 29.10.2007, 09:57   #2
moka
.
 
Регистрация: 04.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,861 пользователей)
Re: Как реализовать прозрачность текстуры

CameraClsColor camera,100,100,100
Вай, в цикле? Вай! Всё какбы хорошо, но не в цикл её пихай. И имхо, лучше делать прозрачность перебором всех пикселей и изменения их альфы, изая функции Write/Read Pixel
(Offline)
 
Ответить с цитированием
Старый 29.10.2007, 10:00   #3
Tadeus
Троллота
 
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений
(для 1,772 пользователей)
Re: Как реализовать прозрачность текстуры

Угу! В FAQ даж выкладывали такую функцию
(Offline)
 
Ответить с цитированием
Старый 29.10.2007, 13:47   #4
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,570
Написано 545 полезных сообщений
(для 1,528 пользователей)
Re: Как реализовать прозрачность текстуры

Ну извеняюсь, насчет CameraClsColor напарил.... признаю
__________________
Junior Tools Programmer at Larian Studios
ПеКа: AMD Ryzen 1700X 8@3.4 ГГц, 16 Гб ОЗУ,

NVIDIA GTX 960 4 Гб, SSD Samsung 960 EVO 500 Гб
(Offline)
 
Ответить с цитированием
Старый 29.10.2007, 15:16   #5
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,012 пользователей)
Re: Как реализовать прозрачность текстуры

хорошая робота !!
(Offline)
 
Ответить с цитированием
Старый 29.10.2007, 18:25   #6
pipns
Нуждающийся
 
Регистрация: 01.10.2006
Сообщений: 55
Написано одно полезное сообщение
(для 0 участников)
Re: Как реализовать прозрачность текстуры

хороший урок!
(Offline)
 
Ответить с цитированием
Старый 06.11.2007, 11:35   #7
Bagration
Знающий
 
Регистрация: 05.10.2007
Сообщений: 225
Написано 15 полезных сообщений
(для 21 пользователей)
Вопрос Re: Как реализовать прозрачность текстуры

Сообщение от mr.DIMAS
4 - какой либо цвет становится прозрачным( по умолчанию - черный, в RGB(0,0,0))
А как сделать что бы прозрачным был другой цвет а не только черный? Так как черный цвет все таки важен как никак в играх. Как сделать что бы флаг 4 маскировал не черный а цвет скажем 255,0,255?
(Offline)
 
Ответить с цитированием
Старый 06.11.2007, 12:54   #8
moka
.
 
Регистрация: 04.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,861 пользователей)
Re: Как реализовать прозрачность текстуры

Bagration, нужно перебрать все пиксели и поменять им альфу. Смотри Write/Read Pixel.
На форуме уже много раз вылаживали функцию.
(Offline)
 
Ответить с цитированием
Старый 06.11.2007, 18:26   #9
ARA
ТЫ ЧООО?
 
Аватар для ARA
 
Регистрация: 26.02.2007
Сообщений: 3,321
Написано 1,989 полезных сообщений
(для 7,107 пользователей)
Сообщение Re: Как реализовать прозрачность текстуры

можно делать прозрачность ещё в максе с помощью B3d пеплайна.
с помощью .png с прозрачным фоном.

Результат красивее.
__________________
Вертекс в глаз или в пиксель раз?
(Offline)
 
Ответить с цитированием
Старый 08.11.2007, 00:02   #10
dimond
Оператор ЭВМ
 
Регистрация: 13.09.2007
Сообщений: 27
Написано 2 полезных сообщений
(для 5 пользователей)
Re: Как реализовать прозрачность текстуры

установить прозрачность на любой пиксель - юзайте ARGB.
кстати на созданую программно текстуру не действует флаг 4 или 2
т. к. альфаканал пикселей непрозрачен.
перед использованием я обычно закрашиваю всю поверхность текстуры прозрачными пикселями, а потом рисую обычным цветом.
еще, текстуру с альфаканалом можно сделать в фотошопе
только фон должен быть прозрачным. сохраняем в *.png, блиц сам находит, где альфа.
(Offline)
 
Ответить с цитированием
Старый 08.11.2007, 10:05   #11
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,570
Написано 545 полезных сообщений
(для 1,528 пользователей)
Re: Как реализовать прозрачность текстуры

еще, текстуру с альфаканалом можно сделать в фотошопе
только фон должен быть прозрачным. сохраняем в *.png, блиц сам находит, где альфа.
этот урок для тех у кого фотожопы нету
__________________
Junior Tools Programmer at Larian Studios
ПеКа: AMD Ryzen 1700X 8@3.4 ГГц, 16 Гб ОЗУ,

NVIDIA GTX 960 4 Гб, SSD Samsung 960 EVO 500 Гб
(Offline)
 
Ответить с цитированием
Старый 09.11.2007, 23:12   #12
dimond
Оператор ЭВМ
 
Регистрация: 13.09.2007
Сообщений: 27
Написано 2 полезных сообщений
(для 5 пользователей)
Re: Как реализовать прозрачность текстуры

Если ты считаешь себя гуру фотошопа, пусть будет так, никто не спорит. А вот другие могут и не знать.
---
Вместо флага 4 можно использовать флаг 2 + альфаканал. Намного лучше смотрится, если это к примеру листва деревьев.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
прозрачность в OpenGL XenuS C++ 8 08.11.2007 22:13
Альфа(Прозрачность) Atomikc 2D-программирование 15 16.04.2007 14:35
Прозрачность Valet Создание текстур 12 12.02.2007 21:44
Прозрачность _maxim_ 3D-программирование 5 21.11.2006 17:51
Прозрачность в Blitz SubZer0 Библиотеки 2 03.10.2005 20:48


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


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