Вітаю Вас ГостьП'ятниця, 17.05.2024, 13:23

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


Статті

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

Bump Mapping
У цій статті я хочу докладно розповісти як користуватися БампМеппінгом в GLScene.

У цій статті я хочу докладно розповісти як користуватися БампМеппінгом в 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 (26.05.2009) | Автор: Эдик E W
Просмотров: 1459 | Рейтинг: 5.0/1
Всего комментариев: 0
Имя *:
Email *:
Код *:
Категорія розділу
GLScene для Delphi [9]

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

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

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

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

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