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

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

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

3D-программирование Вопросы, касающиеся программирования 3D мира

Закрытая тема
 
Опции темы
Старый 20.01.2008, 23:54   #16
Raiter
Гигант индустрии
 
Регистрация: 04.08.2006
Сообщений: 2,642
Написано 53 полезных сообщений
(для 92 пользователей)
Ответ: Размытие...

;RPG Hax
Const texsize=1024,fx=7,o=-1
Graphics3D 800,600,32,2
SetBuffer BackBuffer()
Type TPlayer
Field ent
Field piv
Field go
End Type 
Global campiv=CreatePivot()
PositionEntity campiv,0,300,0
Global cam=CreateCamera(campiv)
RotateEntity CreateLight(),45,0,0
TurnEntity cam,45,0,0



plane=CreatePlane()
EntityPickMode plane,2
planetex=CreatePlaneTexture()
ScaleTexture planetex,100,100
EntityTexture plane,planetex
Global Player.TPlayer=CreatePlayer()
bl=createblurlayer(cam,1,0,1,1,.95,1,o)
Repeat
If MouseDown(1) Then
pick=CameraPick(cam,MouseX(),MouseY())
If pick=plane Then
PositionEntity Player\piv,PickedX(),20,PickedZ()
Player\go=True
EndIf
EndIf
UpdatePlayer(Player)
CameraUpdate()
RenderWorld
bltex=updateblurlayer(bl,bltex)
Flip 
Until KeyDown(1)

Function createblurlayer(cam,z#,ang#,mgn#,bright#,alpha#,bmode,ord)
Local xres=GraphicsWidth()
Local yres=GraphicsHeight()
layer=CreateMesh(cam)
s=CreateSurface(layer)
;Вычисление координат текстуры
vx#=1.0*xres/texsize
vy#=1.0*yres/texsize
AddVertex s,-1,-1,0,0,0
AddVertex s,1,-1,0,vx#,0
AddVertex s,-1,1,0,0,vy#
AddVertex s,1,1,0,vx#,vy#
AddTriangle s,0,1,2
AddTriangle s,3,2,1
;Определение величин для установки прямоугольника прямо перед камерой путем
; вычисления экранных координат точки трехмерного мира
PositionEntity layer,1,1,z#
CameraProject cam,EntityX(layer,True),EntityY(layer,True),EntityZ(layer,True)
rx#=ProjectedX#()-.5*xres
ry#=ProjectedY#()-.5*yres
;Масштабирование слоя
ScaleMesh layer,.5*xres/rx#,.5*yres/ry#,1
;Сдлвиг прямоугольника на полпиксела влево-вверх, чтобы он был в центре экрана
PositionEntity layer,-.5/rx#,-.5/ry#,z#
RotateEntity layer,0,0,ang#
;Задание эффектов слоя
ScaleEntity layer,mgn#,mgn#,mgn#
EntityAlpha layer,alpha#
EntityBlend layer,bmode
col=255*bright#
EntityColor layer,col,col,col
EntityFX layer,1
EntityOrder layer,ord
Return layer
End Function

Function CreatePlaneTexture()
Local tex=CreateTexture(128,128)
Local buff=GraphicsBuffer()
SetBuffer TextureBuffer(tex)
Color 66,122,185
Rect 0,0,64,64
Rect 64,64,128,128
Color 183,234,247
Rect 64,0,128,64
Rect 0,64,64,128
SetBuffer buff
Return tex
End Function
Function CreatePlayer.TPlayer()
p.TPlayer=New TPlayer

p\ent=CreateCone()
RotateMesh p\ent,90,0,0
ScaleEntity p\ent,20,20,20
TranslateEntity p\ent,0,20,200
EntityColor p\ent,167,121,168
p\piv=CreatePivot()

Return p
End Function 
Function CameraUpdate()
Local sp
If KeyDown(42) Then sp=3 Else sp=1
If KeyDown(17) Then MoveEntity campiv,0,0,sp
If KeyDown(31) Then MoveEntity campiv,0,0,-sp
If KeyDown(30) Then MoveEntity campiv,-sp,0,0
If KeyDown(32) Then MoveEntity campiv,sp,0,0
End Function 
Function UpdatePlayer(p.TPlayer)
If Not p\go Then Return
PointToEntity(p\ent,p\piv,0.05)
MoveEntity p\ent,0,0,1
If EntityDistance(p\ent,p\piv)<6 Then p\go=False
End Function
Function PointToEntity( src, dest, softness# )
; вычисляем компоненты вектора между обьектами
Local dx# = EntityX( src ) - EntityX( dest )
Local dy# = EntityY( src ) - EntityY( dest )
Local dz# = EntityZ( src ) - EntityZ( dest )
; ориентируем обьект по вектору
AlignToVector( src, -dx, -dy, -dz, 0, softness )
End Function
Function updateblurlayer(layer,tex)
If tex=0 Then tex=CreateTexture(texsize,texsize)
EntityTexture layer,tex
CopyRect 0,0,GraphicsWidth(),GraphicsHeight(),0,0,BackBuffer(),TextureBuffer(tex)
Return tex
End Function
Кста, этот код пока пробный, я потом начну новый код писать, уже совсем другую игру, но постараюсь разобраться)
Блин, парень ... Что писать? У тебя этот код состоит из двух скопистеных кусков...
Причем второй ты даже скопипастить толком не смог...

Я всегда говорил, что копипаст - зло!
Учи азы!

Последний раз редактировалось Raiter, 21.01.2008 в 00:17.
(Offline)
 
Сообщение было полезно следующим пользователям:
JeSss (21.01.2008)
Старый 20.01.2008, 23:56   #17
JeSss
ПроЭктировщик
 
Регистрация: 05.08.2007
Сообщений: 115
Написано 0 полезных сообщений
(для 0 пользователей)
спс огромное))

А кстати, сможеш сказать пожалст, какие ты внёс изменения, всётаки надо понять)))

Последний раз редактировалось jimon, 21.01.2008 в 01:01.
(Offline)
 
Старый 20.01.2008, 23:59   #18
Raiter
Гигант индустрии
 
Регистрация: 04.08.2006
Сообщений: 2,642
Написано 53 полезных сообщений
(для 92 пользователей)
Ответ: Размытие...

Спс в статистеке не отобразится Есть кнопка "Thanks"... эээ ... тоесть "Полезно"

А кстати, сможеш сказать пожалст, какие ты внёс изменения, всётаки надо понять)))
Йпрст... Ты смотрел хоть пример на БлицЕтСетера??? Или тупо скопировал 2 ф-ции? Скорее второе. Ну ф-ции скопировтаь то ты скопировал, а вызывать их кто за тебя будет? Я лишь дописал вызов функций в цыкле и перед ним. Вот и всё. Вот смотри:
; это всё - код ДО главного цыкла
plane=CreatePlane()
EntityPickMode plane,2
planetex=CreatePlaneTexture()
ScaleTexture planetex,100,100
EntityTexture plane,planetex
Global Player.TPlayer=CreatePlayer()
bl=createblurlayer(cam,1,0,1,1,.95,1,o) ; здесь мы создаём квад на который будем рисовать текстуру из рендера

; сдесь начинается главный цыкл!
Repeat
If MouseDown(1) Then
pick=CameraPick(cam,MouseX(),MouseY())
UpdatePlayer(Player)
CameraUpdate()
RenderWorld
; тут, после рендера, мы вызываем ф-цию обновления нашего квада.
bltex=updateblurlayer(bl,bltex)
Flip 
Until KeyDown(1)
Да. И ещё убрал строчку:
CameraRange cam ,1,10000
ЗЫЖ пиши в 1 сообщении. Есть кнопка "Правка"

Последний раз редактировалось Raiter, 21.01.2008 в 00:32.
(Offline)
 
Сообщение было полезно следующим пользователям:
JeSss (21.01.2008)
Старый 21.01.2008, 01:55   #19
Taugeshtu
scientist.alien
 
Аватар для Taugeshtu
 
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений
(для 2,593 пользователей)
Ответ: Размытие...

ЗЫЖ.
снова и снова...
Ничего не буду говорить. Захочет - сам поумнеет.

а) о блюре говорили много и еще раз много... А потом еще много всего добавили, и даже потом обновляли, правили, в итоге получив множество инфы. (топикстартеру читать следующее предложение запрещено) И если у человека кора головного мозга с отсутствующей картой нормалей - то это его проблемы.
Ибо [no place for copy-pastors in true gamedev] ...

Raiter, а тебе огромный респект за проявленное терпение.
Эх, и по теме добавить нечего. Хотя...
Советую поэкспериментировать с различными блур-эффектами (прим. внутреннего голоса: "Если в соктебрастенный код вникнешь"), особенно с различными вариантами TextureBlend (ты же догадаешься для этого рендерить одну текстуру для блюра а затем делать несколько слоев с мультитекстурированием? (; )
при сильном и жгучем желании тебе светит даже glow. Точнее его подобие.
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab.
We LOVE you. We MADE you.
(Offline)
 
Старый 21.01.2008, 11:20   #20
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,013 пользователей)
Ответ: Размытие...

при сильном и жгучем желании тебе светит даже glow
о, glow !! а где его скопи-пастить ??

PS: glow тоже на форуме был !! так-что JeSss, если надо, то лучше сначала поищи, а потом еси что не понятно, то спрашивай !!
(Offline)
 
Старый 21.01.2008, 11:20   #21
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Размытие...

Симпатичный глоу делал МоКа.
смотри на www.moka.ucoz.ru
(Offline)
 
Старый 21.01.2008, 14:53   #22
Raiter
Гигант индустрии
 
Регистрация: 04.08.2006
Сообщений: 2,642
Написано 53 полезных сообщений
(для 92 пользователей)
Ответ: Размытие...

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 200 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.


Raiter, а тебе огромный респект за проявленное терпение.
Стараюсь

А тебе, JeSss, я еще раз ОЧЕНЬ НАСТОЯТЕЛЬНО рекомендую начать с изучения азов!
Я понимаю, что тебе хочется сразу написать великую игру. Все мы (или почти все) это проходили. Но ты никогда не сможеш постоить хороший дом без фундамента. И никогда не начнёш строить его с крыши. Человек сначала усится ходить, а уже потом бегать... Вот фундамент - это твои базовые знания! Так заложи фундамент и постепенно строй дом, продвигаясь к крыше. Научись ходить и со временем побежиш!

И никогда не копировать чужой код. Ну или по крайней мере не копировать, если ты не понимаеш этот код....

Последний раз редактировалось Raiter, 21.01.2008 в 15:12.
(Offline)
 
Старый 21.01.2008, 15:08   #23
JeSss
ПроЭктировщик
 
Регистрация: 05.08.2007
Сообщений: 115
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Размытие...

спасмбо вообщем всем за всё! А тебе, Raiter, отдельное, БОЛЬШОЕ, 2-ое спасибо! (2-ое значит я тя 2 раза поблагодарил))) за помощь в коде, и за обьяснение)) )

А кстати, ещё 1 вопрос, напишу сдесь:
как сделать чтобы чел двигался вперёд ПОСЛЕ НАЖАТИЯ кнопки, а не вовремя ЗАЖАТОЙ кнопки??

Последний раз редактировалось JeSss, 21.01.2008 в 15:44.
(Offline)
 
Старый 21.01.2008, 16:37   #24
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Размытие...

завести перменную состояния
If KeyDown(200) then run=1
if keydown(20 then run=0
if run then moveentity plaeyer,0,0,1
(Offline)
 
Сообщение было полезно следующим пользователям:
JeSss (21.01.2008)
Старый 21.01.2008, 16:41   #25
FrankH
Разработчик
 
Регистрация: 09.12.2007
Сообщений: 376
Написано 83 полезных сообщений
(для 122 пользователей)
Ответ: Размытие...

Сообщение от HolyDel Посмотреть сообщение
завести перменную состояния
If KeyDown(200) then run=1
if keydown(20 then run=0
if run then moveentity plaeyer,0,0,1
If KeyHit(200) then run=1-run
if Not(run=0) then moveentity plaeyer,0,0,1

Последний раз редактировалось FrankH, 21.01.2008 в 16:46.
(Offline)
 
Сообщение было полезно следующим пользователям:
JeSss (21.01.2008)
Старый 21.01.2008, 16:43   #26
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Размытие...

ну смотря что требуется.
кстати, в таком случае:
If KeyHit(200) then run=1-run
(Offline)
 
Эти 2 пользователя(ей) сказали Спасибо HolyDel за это полезное сообщение:
FrankH (21.01.2008), JeSss (21.01.2008)
Старый 21.01.2008, 17:26   #27
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Размытие...

Или:
IKhUp=KeyHit(200)
If IKhUp run=not run
(Offline)
 
Старый 21.01.2008, 18:11   #28
JeSss
ПроЭктировщик
 
Регистрация: 05.08.2007
Сообщений: 115
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Размытие...

спасибо, оба работают!
(Offline)
 
Старый 21.01.2008, 18:51   #29
JeSss
ПроЭктировщик
 
Регистрация: 05.08.2007
Сообщений: 115
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Ответ: Размытие...

[quote=Raiter;75108]Спс в статистеке не отобразится Есть кнопка "Thanks"... эээ ... тоесть "Полезно"



Йпрст... Ты смотрел хоть пример на БлицЕтСетера??? Или тупо скопировал 2 ф-ции? Скорее второе. Ну ф-ции скопировтаь то ты скопировал, а вызывать их кто за тебя будет? Я лишь дописал вызов функций в цыкле и перед ним. Вот и всё. Вот смотри:
; это всё - код ДО главного цыкла
plane=CreatePlane()
EntityPickMode plane,2
planetex=CreatePlaneTexture()
ScaleTexture planetex,100,100
EntityTexture plane,planetex
Global Player.TPlayer=CreatePlayer()
bl=createblurlayer(cam,1,0,1,1,.95,1,o) ; здесь мы создаём квад на который будем рисовать текстуру из рендера
 
; сдесь начинается главный цыкл!
Repeat
If MouseDown(1) Then
pick=CameraPick(cam,MouseX(),MouseY())
UpdatePlayer(Player)
CameraUpdate()
RenderWorld
; тут, после рендера, мы вызываем ф-цию обновления нашего квада.
bltex=updateblurlayer(bl,bltex)
Flip 
Until KeyDown(1)
Да. И ещё убрал строчку:
CameraRange cam ,1,10000
quote]

Млин, я вообщем начал делать новый код, и нечё неработает, програма открывается, чёрный экран, и сразуже выходит...(( непойму ф чём дело то(((((
(Offline)
 
Старый 21.01.2008, 18:55   #30
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Размытие...

игрового цикла нет?
(Offline)
 
Закрытая тема


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Размытие и CubeMap win32 3D-программирование 16 24.06.2007 16:05


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


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