|
3D-программирование Вопросы, касающиеся программирования 3D мира |
20.01.2008, 23:54
|
#16
|
Гигант индустрии
Регистрация: 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)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.01.2008, 23:56
|
#17
|
ПроЭктировщик
Регистрация: 05.08.2007
Сообщений: 115
Написано 0 полезных сообщений (для 0 пользователей)
|
спс огромное))
А кстати, сможеш сказать пожалст, какие ты внёс изменения, всётаки надо понять)))
Последний раз редактировалось jimon, 21.01.2008 в 01:01.
|
(Offline)
|
|
20.01.2008, 23:59
|
#18
|
Гигант индустрии
Регистрация: 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)
Да. И ещё убрал строчку:
ЗЫЖ пиши в 1 сообщении. Есть кнопка "Правка"
Последний раз редактировалось Raiter, 21.01.2008 в 00:32.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
21.01.2008, 01:55
|
#19
|
scientist.alien
Регистрация: 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
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Ответ: Размытие...
при сильном и жгучем желании тебе светит даже glow
|
о, glow !! а где его скопи-пастить ??
PS: glow тоже на форуме был !! так-что JeSss, если надо, то лучше сначала поищи, а потом еси что не понятно, то спрашивай !!
|
(Offline)
|
|
21.01.2008, 11:20
|
#21
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Размытие...
Симпатичный глоу делал МоКа.
смотри на www.moka.ucoz.ru
|
(Offline)
|
|
21.01.2008, 14:53
|
#22
|
Гигант индустрии
Регистрация: 04.08.2006
Сообщений: 2,642
Написано 53 полезных сообщений (для 92 пользователей)
|
Ответ: Размытие...
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 200 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.
|
Raiter, а тебе огромный респект за проявленное терпение.
|
Стараюсь
А тебе, JeSss, я еще раз ОЧЕНЬ НАСТОЯТЕЛЬНО рекомендую начать с изучения азов!
Я понимаю, что тебе хочется сразу написать великую игру. Все мы (или почти все) это проходили. Но ты никогда не сможеш постоить хороший дом без фундамента. И никогда не начнёш строить его с крыши. Человек сначала усится ходить, а уже потом бегать... Вот фундамент - это твои базовые знания! Так заложи фундамент и постепенно строй дом, продвигаясь к крыше. Научись ходить и со временем побежиш!
И никогда не копировать чужой код. Ну или по крайней мере не копировать, если ты не понимаеш этот код....
Последний раз редактировалось Raiter, 21.01.2008 в 15:12.
|
(Offline)
|
|
21.01.2008, 15:08
|
#23
|
ПроЭктировщик
Регистрация: 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
|
☭
Регистрация: 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)
|
|
Сообщение было полезно следующим пользователям:
|
|
21.01.2008, 16:41
|
#25
|
Разработчик
Регистрация: 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)
|
|
Сообщение было полезно следующим пользователям:
|
|
21.01.2008, 16:43
|
#26
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Размытие...
ну смотря что требуется.
кстати, в таком случае:
If KeyHit(200) then run=1-run
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо HolyDel за это полезное сообщение:
|
|
21.01.2008, 17:26
|
#27
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Размытие...
Или:
IKhUp=KeyHit(200)
If IKhUp run=not run
|
(Offline)
|
|
21.01.2008, 18:11
|
#28
|
ПроЭктировщик
Регистрация: 05.08.2007
Сообщений: 115
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Размытие...
спасибо, оба работают!
|
(Offline)
|
|
21.01.2008, 18:51
|
#29
|
ПроЭктировщик
Регистрация: 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)
Да. И ещё убрал строчку:
quote]
Млин, я вообщем начал делать новый код, и нечё неработает, програма открывается, чёрный экран, и сразуже выходит...(( непойму ф чём дело то(((((
|
(Offline)
|
|
21.01.2008, 18:55
|
#30
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Размытие...
игрового цикла нет?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Размытие и CubeMap |
win32 |
3D-программирование |
16 |
24.06.2007 16:05 |
Часовой пояс GMT +4, время: 11:25.
|