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

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

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

Библиотеки Сторонние библиотеки для Blitz

Ответ
 
Опции темы
Старый 10.06.2013, 20:54   #1
KCEPOKC
Принтер
 
Аватар для KCEPOKC
 
Регистрация: 21.04.2013
Адрес: Больше не РФ
Сообщений: 569
Написано 342 полезных сообщений
(для 1,242 пользователей)
Злость Туториал по "Devil Shadow System"

Всем привет! Я, хоть и начинающий форумчанин, хочу блеснуть своим остроумием и написать свой первый тутор по сие прекрасной либе от Devil’а:D
Так как это мой первый тутор, прошу "не судить строго" и все в таком роде
И вообще, лучше в этой теме совсем не писать

В общем начнем. А начнем мы с теории. Я думаю, все знают, что такое «Тень» и что такое «Shadow», про них я говорить не буду.

Первое, что нужно знать – что из себя представляет данная либа. Напомню Вам, что Blitz3D не Unreal Engine 3, поэтому о графике выше Half-Life 2 можно забыть. А для того, чтобы держать графоун на уровне Halfы Вам понадовятся либы. Много либ. «Devil Shadow System» – одна из них. Она поможет Вам сделать крутые реалтайм тени, реалистичную воду, зеркала, лужицы и т.д.

Один из главных недостатков – она жутко теряет производительность и стабильность при высоких нагрузках. Поэтому полигонами и крутыми текстурами «50000 на 50000 пикселав» спамить категорически запрещается. Масштабами тоже.

Второе – хотя бы основы BlitzBasic и какой-никакой опыт работы с ним. Это самое важное, иначе Вы не поймете ни строчки предложенного кода.

Ознакомиться с мускулатурой либы позволят исходники из основной папки.


Ладно, все с теорией. Теперь нужно установить либу.
DLL и Decl файлы из папки «Userlibs» кидаем в аналогичную папку в директории Blitz3D. Все, что из «Includes», понадобится нам при самой разработке. Кидаем все три файла в папку будущего проекта.

Ниже сразу же вторая часть
Вложения
Тип файла: rar DSS_1.38a.rar (4.61 Мб, 737 просмотров)
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (11.06.2013)
Старый 10.06.2013, 20:59   #2
KCEPOKC
Принтер
 
Аватар для KCEPOKC
 
Регистрация: 21.04.2013
Адрес: Больше не РФ
Сообщений: 569
Написано 342 полезных сообщений
(для 1,242 пользователей)
Злость Основы основ

Между первой и второй перерывчик небольшой, да-да-да? :D
А теперь продолжим. Во 2-ой части тутора я познакомлю Вас с самыми что ни на есть основами данной либы. А именно я Вам разберу первый туториал из одноименной папки.
А разберу я Вам его построчно.
Include "..\Includes\DevilShadowSystem.bb"
Include "..\Includes\ShadowVolumes.bb"
Include "..\Includes\UserInterface.bb"
Тут мы вызываем все нужные инклюды для проекта.
Graphics3D 1024, 768, 32, 2
SetBuffer BackBuffer()
Известное клише. Разъяснять не вижу смысла.
Cam = CreateCamera()
PositionEntity Cam, 0, 3, -8
Создаем и ставим камеру.
InitShadows(Cam)
А вот это уже интересно. Тут мы включаем тени на камеру.
Предупреждение: не рекомендуется включать тени более чем на одну камеру.
Light = CreateLight()
PositionEntity Light, 10, 10, 0
PointEntity Light, CreatePivot()
Первые две строчки: создаем и ставим на позицию свет.
Извините за «нубство» - я не понял, зачем наводить лайт на пустую точку.
SetShadowLight(Light)
Вот тут мы включаем тени для данного источника света.
c = CreateCube()
ScaleEntity c, 5, 1, 5
EntityColor c, 0, 0, 255
Делаем пол из куба. Масштабируем его, затем красим.
SetShadowMesh(c, False)
Это уже посложнее. Вот краткое объяснение в стиле родного справочника B3D:
SetShadowMesh([Entity], [True or False])
Включаем тени для данного [Entity].

True – разрешаем отбрасывать тень(по умолчанию).
False – запрещаем отбрасывать тень.

Caster = CreateSphere()
PositionEntity Caster, 3, 3, 0
EntityColor Caster, 255, 0, 0
Делаем сферку по имени «ролик» . Ставим «ролик», затем красим «ролик».
SetShadowMesh(Caster)
Аналогичная команда, что и для пола. Только без да-нет.
Теперь цикл:
While Not KeyHit(1)
	TurnEntity Caster, 1, .5, 1.5
	
	Render(1)

	Flip
Wend
Первая строчка: вращаем «ролик».
Для второй строчки у меня справочное объяснение:
Render([0-2], [anim_speed#])
Некая замена клише рендер-апдейт ворлд
Параметры:
0 – стандартный B3D рендер.
1 – рендер с тенями.
2 – дебаг рендер(Для адвенсед юзерс:D)
[anim_speed#] – заменяет аналогичный в UpdateWorld.
Ни в коем случае не использовать UpdateWorld и RenderWorld!

А флип он и есть флип.
Уффф… Последние две строчки:
FreeShadows()
End
Первой мы удаляем тени, а второй заканчиваем часть тутора.
Надеюсь, Вам понравилось:D
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо KCEPOKC за это полезное сообщение:
ant0N (11.06.2013), impersonalis (11.06.2013)
Старый 10.06.2013, 21:01   #3
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,019
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: Туториал по "Devil Shadow System"

Юзал когда-то, ашадов лучше, ИМХО.
(Offline)
 
Ответить с цитированием
Старый 10.06.2013, 21:05   #4
KCEPOKC
Принтер
 
Аватар для KCEPOKC
 
Регистрация: 21.04.2013
Адрес: Больше не РФ
Сообщений: 569
Написано 342 полезных сообщений
(для 1,242 пользователей)
Злость Словарик начинающего

И снова здравствуйте! Из за того, что несколько следующих обучающих исходников особо не отличаются от первого, я решил составить так называемый словарь с командами.

Render([0-2], [anim_speed#])
Некая замена клише рендер-апдейт ворлд
Параметры:
0 – стандартный B3D рендер.
1 – рендер с тенями.
2 – дебаг рендер(Для адвенсед юзерс:D)
[anim_speed#] – заменяет аналогичный в UpdateWorld.
Не в коем случае не использовать UpdateWorld и RenderWorld!


SetShadowMesh([Entity], [True or False],[ cache$])
Включаем тени для данного [Entity].
True – разрешаем отбрасывать тень(по умолчанию).
False – запрещаем отбрасывать тень.
Также есть возможность кэшировать тени в файл [ cache$]. Это нужно для того, чтобы ускорить следующие запуски программы. Рекомендуется использовать формат .shw


InitShadows([Cam])
Включение теней на камеру [cam]
Предупреждение: не рекомендуется включать тени более чем на одну камеру.


FreeShadows()
Очистить мир от теней.


CreateShadowSphere([True])
CreateShadowCylinder([True])
CreateShadowCone([True])
CreateShadowCube([True])
CreateShadowPlane([True])
Примитивы со сразу включенными тенями.
True – включить отбрасывание теней(по умолчанию)
False – отключить отбрасывание теней
Примечание: лучше использовать классические команды и только затем включать на них тени.


LoadShadowMesh([Mesh],[True])
LoadAnimShadowMesh([Mesh], [True])
Загрузить [Mesh] сразу со включенными тенями
True – включить отбрасывание теней(по умолчанию)
False – отключить отбрасывание теней
Примечание: лучше использовать классические команды и только затем включать на них тени.


А пока все. Позже я расскажу про бампмаппинг

Последний раз редактировалось KCEPOKC, 11.06.2013 в 13:14.
(Offline)
 
Ответить с цитированием
Старый 10.10.2013, 17:36   #5
KCEPOKC
Принтер
 
Аватар для KCEPOKC
 
Регистрация: 21.04.2013
Адрес: Больше не РФ
Сообщений: 569
Написано 342 полезных сообщений
(для 1,242 пользователей)
Ответ: Туториал по "Devil Shadow System"

Вообщем да. Сидел я себе да пёк, да вдруг вспомнил, что тутор то я не дописал. Вот теперь то да, дописал.

Как жи эта, карту висот рисовать!
Итак, начнем. В первую очередь я хочу вам сказать, мои дорогие немногочисленные читатели, что бампмаппинг тут хз как сделан, а точнее тут только environmental bump mapping(зеркала, вода, зеркальные поверхности ) , но сама суть присутствует - это все же позволяет нам уменьшить кол-во полигонов. Приступим к делу.

Чтобы привязать бампу к мешу, нам нужно начеркать нехитрый код.

SetENBMMesh(entity, tex, bump, bump_frame = 0)
где "Entity" - наш подопытный меш, "Tex" - к.-л. текстура, "Bump" - бамп мапа. Также есть "Bump_Frame" - ограничивает кол-во кадров бампы, само собой необязательно, и мне вообще данный параметр не пригодился.

Теперь код.

Разберем пример "Tutorial4 - ENBM.bb"

Весь я его затрагивать не буду, да и не надо, я так думаю. Смотрим самое важное.

Include "SampleFunctions.bb"

InitGraphics()

;Camera
PositionEntity Cam, 4, 5, 4
PointEntity Cam, CreatePivot()

;Shadows
SetENBMHeight(1)

;Sky
c = CreateShadowSphere(5, False)
ScaleEntity c, -1000, -1000, -1000
EntityTexture c, LoadTexture("Media\Island\Skybox.jpg", 385)
EntityFX c, 9

;Light
Light = CreateShadowLight()
PositionEntity Light, 5, 5, 0
PointEntity Light, CreatePivot()

;Floor
floor_bump = LoadTexture("Media\Rock_Bump.jpg")
ScaleTexture floor_bump, 20, 20
c = CreateWater(floor_bump, 100)
ScaleEntity c, .2, 1, .2
floor_tex = LoadTexture("Media\Rock.jpg")
ScaleTexture floor_tex, 20, 20
EntityTexture c, floor_tex, 0, 3

;Columns
tex = LoadTexture("Media\Wood.jpg")
ScaleTexture tex, 1.5, .5
s = 2
For x = -s To s Step 2
	For z = -s To s Step 2
		If Abs(x) = s Or Abs(z) = s Then
			c = CreateShadowCylinder(16, False)
			ScaleEntity c, .5, 1.5, .5
			PositionEntity c, x * 3, 1.5, z * 3
			EntityTexture c, tex
		EndIf
	Next
Next

;Beethovens
CubeTex = LoadTexture("Media\Cubemap.png", 128)
t1 = LoadTexture("Media\WoodPanel.jpg")
t2 = LoadTexture("Media\WoodPanel_Bump.jpg")
cnt = -1
Dim Beethoven(3)
For x = -1 To 1 Step 2
	For z = - 1 To 1 Step 2
		cnt = cnt + 1
		c = LoadShadowMesh("Media\Beethoven.b3d", False)
		ScaleEntity c, .25, .25, .25
		PositionEntity c, x * 3, 3, z * 3
		EntityTexture c, t1, 0, 3
		SetENBMMesh(c, CubeTex, t2)
		Beethoven(cnt) = c
	Next
Next

;Guy
Global Guy = LoadShadowMesh("Media\Hellknight.b3d", False)
ScaleEntity Guy, .03, .03, .03
PositionEntity Guy, 0, 3.2, 0
EntityTexture Guy, LoadTexture("Media\Hellknight.jpg"), 0, 3
SetENBMMesh(Guy, CubeTex, LoadTexture("Media\Hellknight_Bump.jpg"))

;Ball
c = CreateShadowSphere(16, False)
ScaleEntity c, 2.5, 1.25, 2.5
t1 = LoadTexture("Media\Metal.jpg")
ScaleTexture t1, .25, .25
t2 = LoadTexture("Media\Metal_Bump.jpg")
ScaleTexture t2, .25, .25
EntityTexture c, t1, 0, 3
SetENBMMesh(c, CubeTex, t2)

StartProgram(True)
While Not KeyHit(1)
	UpdateWater()
	UpdateProgram(Cam, .1)
Wend
FreeShadows()
End

Function UpdateSample()
frame = frame + 1
For i = 0 To 3
	RotateEntity Beethoven(i), frame * .1, frame * .1, frame * .1
Next
TurnEntity Guy, 0, .1, 0
End Function
А именно вот эти строчки:
;Ball
c = CreateShadowSphere(16, False)
ScaleEntity c, 2.5, 1.25, 2.5
t1 = LoadTexture("Media\Metal.jpg")
ScaleTexture t1, .25, .25
t2 = LoadTexture("Media\Metal_Bump.jpg")
ScaleTexture t2, .25, .25
EntityTexture c, t1, 0, 3
SetENBMMesh(c, CubeTex, t2)
Начну с конца, там интересней.
Командой "SetENBMMesh(c, CubeTex, t2)" мы говорим библиотеке привязать к сфере "c" бампмаппу "CubeTex", причем сфера у нас будет иметь стандартную текстуру "t2". Ясно? Наверное да.

Далее стоило бы поговорить про эти строчки:
floor_bump = LoadTexture("Media\Rock_Bump.jpg")
ScaleTexture floor_bump, 20, 20
c = CreateWater(floor_bump, 100)
ScaleEntity c, .2, 1, .2
floor_tex = LoadTexture("Media\Rock.jpg")
ScaleTexture floor_tex, 20, 20
EntityTexture c, floor_tex, 0, 3
Тут еще интересней. Появилась некая команда "CreateWater()"
Вот она вкратце:

CreateWater(bumpmap, size = 100, round = False)
bumpmap - бампмапа воды
size - размер плоскости воды
round - если принимает значение "Правда", то создается округлая плоскость, вместо квадратной
Этой командой мы создаем плоскость просто с бампмапой и зеркалом, что само собой подразумевает воду. Для достижения большего эффекта текстуру можно постоянно двигать. Получается прикольно
Далее необходимо в цикле добавить команду "UpdateWater()". Команда неинтересная, про нее говорить не буду.

Ну и все, вернемся к коду:

floor_bump = LoadTexture("Media\Rock_Bump.jpg")
ScaleTexture floor_bump, 20, 20
c = CreateWater(floor_bump, 100)
ScaleEntity c, .2, 1, .2
floor_tex = LoadTexture("Media\Rock.jpg")
ScaleTexture floor_tex, 20, 20
EntityTexture c, floor_tex, 0, 3
В данном случае вода используется несколько не по назначению, чисто для прикольного зеркала.

Здесь мы командой "c = CreateWater(floor_bump, 100)" говорим блитцу, что нам надобно создать квадратную "воду" по имени "c" с размером 100, причем имеющую бампмапу по имени "floor_bump".

Ну вроде все. В планах - переведенный хелп. Удачи вам в познании блитца, господа!

Таки да, узнал я зачем же свет на пустую точку наводить - без этого теней вы не увидите!
Миниатюры
Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 1171
Размер:	163.1 Кб
ID:	19774  
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо KCEPOKC за это полезное сообщение:
ant0N (10.10.2013), SBJoker (10.10.2013)
Старый 11.10.2013, 00:15   #6
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Туториал по "Devil Shadow System"

Дык а скрин с тенями можно?
(Offline)
 
Ответить с цитированием
Старый 11.10.2013, 05:10   #7
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,019
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: Туториал по "Devil Shadow System"

Сообщение от moka Посмотреть сообщение
Дык а скрин с тенями можно?
Такие же как в ашадове - юзается dx7.dll

(Offline)
 
Ответить с цитированием
Старый 11.10.2013, 15:01   #8
KCEPOKC
Принтер
 
Аватар для KCEPOKC
 
Регистрация: 21.04.2013
Адрес: Больше не РФ
Сообщений: 569
Написано 342 полезных сообщений
(для 1,242 пользователей)
Ответ: Туториал по "Devil Shadow System"

Сообщение от moka Посмотреть сообщение
Дык а скрин с тенями можно?
Оки Доки
(Offline)
 
Ответить с цитированием
Старый 11.10.2013, 15:28   #9
KCEPOKC
Принтер
 
Аватар для KCEPOKC
 
Регистрация: 21.04.2013
Адрес: Больше не РФ
Сообщений: 569
Написано 342 полезных сообщений
(для 1,242 пользователей)
Сообщение Ответ: Туториал по "Devil Shadow System"

Решил запилить примерчик. Вот держите. Модель танчика и все текстуры скачаны. Приятного просмотра

Управление:
w-вперед
a-влево
s-назад
d-вправо
Мышка - поворот

Код в комплекте. Бампмаппинг не юзал, да и смысла не вижу.
Я надеюсь, либа уже установлена
Миниатюры
Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 1110
Размер:	205.8 Кб
ID:	19776  
Вложения
Тип файла: zip Sample.zip (2.25 Мб, 666 просмотров)
(Offline)
 
Ответить с цитированием
Старый 11.10.2013, 16:22   #10
KCEPOKC
Принтер
 
Аватар для KCEPOKC
 
Регистрация: 21.04.2013
Адрес: Больше не РФ
Сообщений: 569
Написано 342 полезных сообщений
(для 1,242 пользователей)
Ответ: Туториал по "Devil Shadow System"

Перевел хелп. Наконец. Было трудно, но я сделал это.
На этом мое повествование почти закончилось - осталось только написать свой пример с ENBM. Ждемс.
Вложения
Тип файла: doc Command reference.doc (45.0 Кб, 683 просмотров)
(Offline)
 
Ответить с цитированием
Старый 17.10.2013, 16:31   #11
KCEPOKC
Принтер
 
Аватар для KCEPOKC
 
Регистрация: 21.04.2013
Адрес: Больше не РФ
Сообщений: 569
Написано 342 полезных сообщений
(для 1,242 пользователей)
Сообщение ENBM

Вот и все. Наконец я доделал тутор.
Пример с Бамп Маппингом. Все сурово, немного рябит в глазах, но главное смысл отражает: ОНО РАБОТАИТ!
Извините, код не прокомментирован. Делал в в попыхах.
Впрочем там все ясно.
Затем, я так думаю, напишу тутор по ашадову, затем сравню его с девилом в отдельной теме.
Миниатюры
Нажмите на изображение для увеличения
Название: скрин3.jpg
Просмотров: 1126
Размер:	181.9 Кб
ID:	19801  
Вложения
Тип файла: zip ENBM.zip (1,012.6 Кб, 698 просмотров)
__________________

Последний раз редактировалось KCEPOKC, 17.10.2013 в 20:33.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо KCEPOKC за это полезное сообщение:
ant0N (17.10.2013), Arton (17.10.2013)
Старый 17.10.2013, 16:53   #12
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Туториал по "Devil Shadow System"

Честно сказать - молодец за труды. Но если ты ожидаешь что это кому-то понадобиться, зря надеешься.
Вот на шейдерах чегонить - понадобиться кому-то, даже не столько сам код, сколько вдохновление и т.п.
Я заметил что много кого шейдеры прикалывают, и друг-дружку вдохновляют.
Вон на гд.ру есть темка с шейдерами, народ выкладывает картинки, и всем приятно, вдохновляет.. А вот ковыряя и так мёртвый труп - доставит только олдфагам.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
KCEPOKC (17.10.2013)
Старый 17.10.2013, 17:04   #13
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,019
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: ENBM

Сообщение от XoreX Посмотреть сообщение
Вот и все. Наконец я доделал тутор.
Пример с Бамп Маппингом. Все сурово, немного рябит в глазах, но главное смысл отражает: ОНО РАБОТАИТ!
Извините, код не прокомментирован. Делал в в попыхах.
Впрочем там все ясно.
Затем, я так думаю, напишу тутор по ашадову, затем сравню его с девилом в отдельной теме.
Скриншот ты не сделал =/


Бампмапинг извините, говняный:




На чистом блице всё намного симпатичнее:




P. S. Жду когда изучишь ашадов и сравнишь библиотеки.
P. P. S. По краям сферы борьба полигонов.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
KCEPOKC (17.10.2013)
Старый 17.10.2013, 20:25   #14
KCEPOKC
Принтер
 
Аватар для KCEPOKC
 
Регистрация: 21.04.2013
Адрес: Больше не РФ
Сообщений: 569
Написано 342 полезных сообщений
(для 1,242 пользователей)
Ответ: ENBM

Сообщение от Arton Посмотреть сообщение
P. P. S. По краям сферы борьба полигонов.
Борьба полигонов происходит при разрешении выше 1024 на 768. Сам охреневаю.
А так то да, бампмаппинг там хреново реализован. Честно. Так что ашадов меня ждет

p.s. Извиняйте за скрин. Ща будет!
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Arton (17.10.2013)
Старый 17.10.2013, 20:50   #15
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,019
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: ENBM

Сообщение от XoreX Посмотреть сообщение
Борьба полигонов происходит при разрешении выше 1024 на 768. Сам охреневаю.
А так то да, бампмаппинг там хреново реализован. Честно. Так что ашадов меня ждет

p.s. Извиняйте за скрин. Ща будет!
Про разрешение грустно, смысл тогда использовать

С ашадовым такая тем, на старой версии библиотеки работали все примеры. Однако же как только автор пофиксил либу для висты и выше (до этого тени работали только на XP), начались проблемы, прежние примеры некорректно работают, например: нету мягких теней (хотя может это я не нашёл), прежние примеры бампмапинга перестали работать, есть бамп но нету тени и т. п.
Понять в чём дело мне так и не удалось
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


Часовой пояс GMT +4, время: 20:37.


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