Вітаю Вас ГостьВівторок, 08.07.2025, 06:16

CreateGames
Створення комп'ютерних ігор


Статті

Главная » Статьи » Игровые движки для языков программирования » GLScene для Delphi

Bump Mapping
В этой статье я хочу подробно рассказать как пользоваться БампМэппингом в GLScene.
Начну с того что этот бамп который мы будем использовать не самый скоростной, лучше конечно будет есле написать свой GLSL шейдер. Но что ж поделаешь, этот шейдер максимум что может из себя выжать, так это 500-600 FPS при малом количестве обьектов, настроек у него мало...

 Начнём...

 Вот мы уже открыли делфи и создали новое приложение. Что не создал? Ану быстро, не отставай, я диктую быстро))). На форму поставили GLScene1, GLSceneViewer1, GLBumpShader1, GLMaterialLibrary. В Uses написали: JPEG, так как мы будем использовать текстуры в формате ЖПЕГ. Ну это не значит что Вы не можете использовать другие форматы)).
Вот ещё одно примечание: текстура и бамп-текстура должны быть одинакового размера, я имею ввиду пикскли, например 256х256 и 256х256 и т.д...
 Ну создадим допустим самую простую сценку: шарик, даммикуб, план, источник света и камеру которая направлена на шарик. Думаю Вы знаете как это сделать))
 В процедуре OnFormCreate пишем:

procedure TForm1.FormCreate(Sender: TObject);
var
map,bumpmap:TGLLibMaterial;
begin

bumpmap:=GLMaterialLibrary1.Materials.Add;
bumpmap.Material.Texture.Image.LoadFromFile('textures/ground_bump.jpg');
bumpmap.Material.Texture.Disabled:=false;
bumpmap.Name:='Bump_MAP';
bumpmap.Material.Texture.TextureFormat:=TFNormalmap;
bumpmap.Shader:=GlBumpshader1;

map:=GLMaterialLibrary1.Materials.Add;
map.Name:='mat';
map.Material.Texture.Image.LoadFromFile('textures/ground.jpg');
map.Material.Texture.Disabled:=false;

bumpmat.Texture2Name:=mat.Name;

GLSphere1.Material.MaterialLibrary:=GLMaterialLibrary1;
GLSphere1.Material.LibMaterialName:=bumpmap.Name;

end;

 Ну вот, это почти и есть бамп, но почти, ещё нада обьяснить что что значит и настройки шейдера.
Обьясняю:

map,bumpmap:TGLLibMaterial; - этим мы даём названия нашим материалам.
bumpmap:=GLMaterialLibrary1.Materials.Add; - это мы добавляем материал в библиотеку материалов GLMaterialLibrary1.
textures/ground_bump.jpg - это путь к картинке, у Вас он может быть другой)))
bumpmap.Name:='Bump_MAP'; - этим мы задаём имя материалу в библиотеку материалов.
bumpmap.Material.Texture.TextureFormat:=TFNormalmap; - этим мы показуем что эта текстура - карта нормалей, заметьте что бамп карта может быть и карта высот и карта нормалей, разницы не будет.

map:=GLMaterialLibrary1.Materials.Add;
map.Name:='mat';
map.Material.Texture.Image.LoadFromFile('textures/ground.jpg');
map.Material.Texture.Disabled:=false;

Вот этой (выше) всей писаниной мы грузим обычную текстуру.
bumpmat.Texture2Name:=mat.Name; - этим текстура налажывается на второй слой материала.

GLSphere1.Material.MaterialLibrary:=GLMaterialLibrary1;
GLSphere1.Material.LibMaterialName:=bumpmap.Name;

 Ну а этим мы применяем обьекту всю ту выше написанную писанину (текстуру и бамп).

 Вот мы дошли до настроек шейдера, я напишу те настройки которые, по мне, самые лучшие, а так Вы можете поэксперементировать сами. В ObjectInspector шейдера настраиваем:

BumpMethod: bmBasicARBFP
в BumpOptions
напротив boDiffuseTexture2 ставим True - этим мы дклаем видной обычную текстуру. Все остальные не трогаем.
BumpSpace: bsObject
SpecularMode: smOff

 Всё остальное о чём речь не шла не трогаем!

 Всё! Ваш бамп сделан! Теперь можно откомпилировать приложение и посмотреть что получилось.
Кстати, всё то что мы писали, можно сделать в ObjectInspector'e, но кодом гораздо лучше, ато будут появляться разные баги и тому подобное...

Категория: GLScene для Delphi | Добавил: Hacker_xaker (05.05.2009) | Автор: Эдик W
Просмотров: 2683 | Рейтинг: 4.0/1
Всего комментариев: 0
Имя *:
Email *:
Код *:
Категорія розділу
GLScene для Delphi [9]

Бесплатный Хостинг

EG Blocking 1.0 EG Blocking
Форма входу
Пошук
Наше опитування
Які мови ви знаєте?
Всього відповідей: 405
Статистика

Онлайн всього: 1
Гостей: 1
Користувачів: 0

Створення комп'ютерних ігор доступно кожному. Всі щоденні новини ІТ технологій лише у нас.
Створи свою комп'ютерну ігру сам, разом із сайтом "Створення ігор" - "CreateGames.do.am". Щоденні новини ІТ технологій лише у нас і лише для вас.

CreateGames.do.am - Створення комп'ютерних ігор. Новини ІТ © 2009 - 2025 р.