forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Порталы (http://forum.boolean.name/showthread.php?t=14223)

RegIon 12.02.2011 12:45

Порталы
 
Хотел наштопать портал..не получилось...решил отрисовать вид с одной камеры в картинку....но даже DrawImage не пришлось писать...да и отрисовка както странно работает..проверте..

Код:

Graphics3D 640,480,16,2
SetBuffer BackBuffer()

Light=CreateLight()



SPHERE=CreateSphere(32)
CAM=CreateCamera(sphere)

cub=CreateCube()
PositionEntity cub,0,0,5

plan=CreatePlane()
PositionEntity plan,0,-2,0
EntityColor plan,255,0,0

por=CreateImage(150,150)
SetBuffer ImageBuffer(por)
PORc=CreateCamera()
PositionEntity porc,0,4,0
SetBuffer BackBuffer()


Repeat
PointEntity porc,cub
TurnEntity cub,.2,.2,.2


  UpdateWorld
  RenderWorld
  Color 255,0,255
Rect 0,0,150,150,0
Flip

Until KeyHit(1)

End

как я хотел зделать порталы..:
берём 2 спрайта..перентим к ним 2 камеры развёрнутые от фэйса спрайта, с камер отрисовываем в текстуру, накладываем текстуры наобарот(текстура с первой камеры на второй спрайт)...вот

Не работает....хз почему,точно всё правильно делаю..

RBK 12.02.2011 15:24

Ответ: Порталы
 
Почти правильно, посмотрим справку ещё раз:
Цитата:

RenderWorld [tween#]
Параметры
tween# (необязательный) - по умолчанию 1.

Описание
Визуализирует текущую сцену в задний буфер (BackBuffer) в отдельный прямоугольник, установленный для каждой камеры командой CameraViewport( ). Каждая камера, не скрытая коммандой HideEntity( ) или параметром проекции CameraProjMode( ), отличным от нуля, визуализируется. Визуализирование в другой буфер в Blitz3D пока не поддерживается.
Для отрисовки в текстуру используй TextureBuffer. Чтобы перенести картинку из одного буфера в другой используй CopyRect

}{@KeR 13.02.2011 09:35

Ответ: Порталы
 
Ты хочешь сделать PORTAL 3

Dzirt 13.02.2011 10:14

Ответ: Порталы
 
Цитата:

Сообщение от }{@KeR (Сообщение 178743)
Ты хочешь сделать PORTAL 3

Звучит как наставление...ты его гипнотизируешь?

IgorOK 13.02.2011 10:30

Ответ: Порталы
 
Цитата:

Сообщение от Dzirt (Сообщение 178744)
Звучит как наставление...ты его гипнотизируешь?

EVERYBODY LOVES HYPNOTOAD! ALL GLORY TO HYPNOTOAD!

RegIon 13.02.2011 13:39

Ответ: Порталы
 
Нет......игруху типа портал........
Цитата:

Почти правильно, посмотрим справку ещё раз:
RenderWorld [tween#]
Параметры
tween# (необязательный) - по умолчанию 1.

Описание
Визуализирует текущую сцену в задний буфер (BackBuffer) в отдельный прямоугольник, установленный для каждой камеры командой CameraViewport( ). Каждая камера, не скрытая коммандой HideEntity( ) или параметром проекции CameraProjMode( ), отличным от нуля, визуализируется. Визуализирование в другой буфер в Blitz3D пока не поддерживается.
Для отрисовки в текстуру используй TextureBuffer. Чтобы перенести картинку из одного буфера в другой используй CopyRect
тут косяк...камера рендрит и на экране остаётся...если только хайдить её в цыклах...но жопарез...моргать может в углу..

RBK 13.02.2011 15:13

Ответ: Порталы
 
В циклах их нужно хайдить(? :4to: интересное слово) поочерёдно.
Лучше скрывать камеру используя CameraProjMode( ) равную 0.

Я тоже пишу игру вроде портала.

RegIon 13.02.2011 15:34

Ответ: Порталы
 
а зах поочереди...я одну хайду....а понял..чтоб не моргала..И как идёт процесс.

RBK 13.02.2011 16:12

Ответ: Порталы
 
В основном пока всё на бумаге, иногда делаю небольшой кусочек, смотрю как работает.

RegIon 13.02.2011 16:14

Ответ: Порталы
 
у мя в башке.......бумага кончается таким макаром, и менять код легче чем переписать...

RBK 13.02.2011 16:21

Ответ: Порталы
 

В башке со временем накапливается много идей, и они начинают друг другу мешать.


Цитата:

Зато бывают такие комбинации....что только с++ или LYA.....Blitz не потянет(а мож и потянет)
это да, бывает. Ладно закругляемся, это уже не по теме.

RegIon 13.02.2011 16:23

Ответ: Порталы
 
Зато бывают такие комбинации....что только с++ или LYA.....Blitz не потянет(а мож и потянет)

baton4ik 15.02.2011 09:52

Ответ: Порталы
 
Что за "LYA"?

Цитата:

Сообщение от Костян (Сообщение 178798)
Blitz не потянет(а мож и потянет)

Ну вот, опять. Зачем писать то, в чём не уверен?

RegIon 15.02.2011 11:40

Ответ: Порталы
 
Еа LYA написан Half LIfe 2

Артем Валерьевич 15.02.2011 11:41

Ответ: Порталы
 
может LUA - http://en.wikipedia.org/wiki/Lua_(programming_language)

RegIon 15.02.2011 11:51

Ответ: Порталы
 
Оу блин...Точно LUA...Ну почти

baton4ik 15.02.2011 17:54

Ответ: Порталы
 
Опять сравнения. Lua - скриптовый язык программирования и используется для соответствующих целей, на чистом Lua ты ничего грандиозного не напишешь, так что сравнение некорректно.

Aikon 15.02.2011 18:33

Ответ: Порталы
 
baton4ik, был такой проект, как обертка для движка Irrlicht. Т.е. получали примерно то же, что и Blitz3D, но на Lua. Язык Lua более гибок, чем Basic, да и весьма быстр (в отличии от Irrlicht, так что я не уверен, в том, что эта связка работала быстрее чем Blitz3D). Увы, проект загнулся давным-давно.

}{@KeR 19.02.2011 09:58

Ответ: Порталы
 
Вложений: 1
Баг один--> Рядом с дверью можно пройти....но это можно исправить

Randomize 19.02.2011 18:33

Ответ: Порталы
 
Цитата:

Сообщение от Aikon (Сообщение 179017)
baton4ik, был такой проект, как обертка для движка Irrlicht. Т.е. получали примерно то же, что и Blitz3D, но на Lua. Язык Lua более гибок, чем Basic, да и весьма быстр (в отличии от Irrlicht, так что я не уверен, в том, что эта связка работала быстрее чем Blitz3D). Увы, проект загнулся давным-давно.

Работало медленнее чем Blitz3D.
Делал тесты на сложных математических операциях.

RegIon 20.02.2011 05:24

Ответ: Порталы
 
Цитата:

Баг один--> Рядом с дверью можно пройти....но это можно исправить
Вложения
Тип файла: zip door.zip (1.84 Мб, 6 просмотров)
косячный пример....качал с другого сайта....правда камера угарная..

RegIon 20.02.2011 05:31

Ответ: Порталы
 
Код:

Global newvalue#,oldvalue#,increments,mx#,my#,camera,hero,pitch#,yaw#,cameraX#,cameraY#,cameraZ#,cx#,cz#
Global mousespeed#=.2,cameraspeed#=.5,camerasmoothness#=3

Global hero_energy%=1000


hero_t=1:col_T=2
Graphics3D 1024,768
SetBuffer BackBuffer()

camera=CreateCamera()

light=CreateLight()
RotateEntity light,90,0,0



poligon=LoadMesh("datas\mesh\test.3ds")
Poligon_plan=CreatePlane()
PositionEntity poligon_plan,0,-.005,0
EntityColor poligon_plan,0,0,0
EntityType poligon,Col_t
EntityType poligon_plan,col_t

createhero(camera,0,10,0)

CameraFogMode camera,0
CameraFogRange camera,1,110
CameraFogColor camera,0,0,0


MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
Collisions hero_t,col_t,2,3
Repeat

upr_mouse#()


        UpdateWorld()
        RenderWorld()

        Flip
Until KeyHit(1)
End


Function CurveValue#(newvalue#,oldvalue#,increments )
If increments>1 oldvalue#=oldvalue#-(oldvalue#-newvalue#)/increments
If increments<=1 oldvalue=newvalue
Return oldvalue#
End Function

Function createhero(camera%,x%,y%,Z%)
EntityRadius camera,2,1
HEro=CreateSphere()
EntityRadius hero,2,1
EntityAlpha hero,0
CameraRange camera,1,10000
ScaleEntity camera,.5,.5,.5
RotateEntity camera,45,0,0
PositionEntity camera,x,y,z
PositionEntity hero,x,y,z
EntityType camera,hero_t
EntityType hero,hero_t
End Function
       
Function upr_mouse#()
        mx#=CurveValue(MouseXSpeed()*mousespeed#,mx#,camerasmoothness#)
        my#=CurveValue(MouseYSpeed()*mousespeed#,my#,camerasmoothness#)
        MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
        pitch#=EntityPitch(camera)
        yaw#=EntityYaw(camera)
        pitch#=pitch#+my#
        yaw#=yaw#-mx#
        If pitch#>79 pitch#=79
        If pitch#<-69 pitch#=-69
        RotateEntity camera,0,yaw#,0
        RotateEntity hero,0,yaw#,0
        TurnEntity camera,pitch#,0,0
        cx#=(KeyDown(32)-KeyDown(30))*cameraspeed#
        cz#=(KeyDown(17)-KeyDown(31))*cameraspeed#
        cameraX#=EntityX#(hero)
        cameraY#=EntityY#(hero)
        cameraZ#=EntityZ#(hero)
        MoveEntity hero,cx#,0,cz#
        PositionEntity camera,cameraX#,cameraY#+8,cameraZ#
        RotateEntity hero,60,yaw#,0
        TranslateEntity hero,0,-.3,0
        End Function

Проваливается....хоть здохни.

RegIon 20.02.2011 06:05

Ответ: Порталы
 
Всё....Const Забыл...фурычит

}{@KeR 20.02.2011 07:35

Ответ: Порталы
 
Я не понял Костян что ты хотел показать своим кодом

Amatsu 20.02.2011 09:28

Ответ: Порталы
 
Цитата:

Сообщение от }{@KeR (Сообщение 179700)
Я не понял Костян что ты хотел показать своим кодом

Да, интересно, что же автор хотел нам показать своим кодом, какую идею донести до нас, какие эмоции передать нам через свое произведение?...

RegIon 20.02.2011 10:05

Ответ: Порталы
 
ДА косяк был.....пол дня искал..кинул код чтоб помогли..а потом дошло..Const перед объявлением тупака забыл....

RegIon 20.02.2011 10:27

Ответ: Порталы
 
Почему затупает.......иль мож у мя комп тупит..Вложение 12737
Главно на примере двери не тупит...а тут сильно:user: :user:

RegIon 20.02.2011 10:44

Ответ: Порталы
 
Замеил.....при рендре текста в текстуру макаром Text x,y,text.....сильно жрёт фпс...хз почему..

Ganociy 20.02.2011 10:52

Ответ: Порталы
 
Цитата:

Сообщение от }{@KeR (Сообщение 179470)
Баг один--> Рядом с дверью можно пройти....но это можно исправить

Чего ты такой жестокий?! Кровище!..:)

RegIon 20.02.2011 11:15

Ответ: Порталы
 
Ну.....Text в текстуре фпс много жрёт....заменил на картинки..норм...и ту пить не стал.

RegIon 20.02.2011 11:17

Ответ: Порталы
 
У кого есть моделька туалета как в Вузах.....без зеркал..лень моделить..

RegIon 21.02.2011 12:24

Ответ: Порталы
 
Код:

Function renderimg(p_cam%,cam%,W%,H%)
Local img%
ShowEntity p_cam
HideEntity cam
CameraViewport cam,0,0,0,0
CameraViewport p_cam,0,0,w,H
If img=0 Img=CreateImage(w,h)
CopyRect 0,0,w,h,0,0,FrontBuffer(),ImageBuffer(img)
CameraViewport p_cam,0,0,0,0
CameraViewport cam,0,0,GraphicsWidth() ,GraphicsHeight()
HideEntity p_cam
ShowEntity cam

Return img
End Function

RBK---Не работает как ты говорил....рендрит с одной камеры..Хелпни..всё перепробывал.

RBK 21.02.2011 18:27

Ответ: Порталы
 
Вложений: 1
:4to: Ужас какой. посмотри в samples\tex_render\tex_render.bb. если у тебя нет, посмотри у меня.

RegIon 22.02.2011 09:32

Ответ: Порталы
 
Чо ужас.....По сути, и так работать должно.....:mad:

RegIon 22.02.2011 09:34

Ответ: Порталы
 
Тоже самое...только в функции..и в имгу

RegIon 22.02.2011 10:10

Ответ: Порталы
 
RenderWorld() в конце небыло..

RegIon 22.02.2011 10:11

Ответ: Порталы
 
Вложение 12751
Почему полоска мелькает????

baton4ik 22.02.2011 10:24

Ответ: Порталы
 
Нет, ну слушай, кнопку "Правка" ты в упор не замечаешь?
То что ты делаешь называется "оверпост" - вид флуда. За это могут забанить.
Выложил скрин и спрашиваешь, почему мелькает. Экстрасенсы ещё не вернулись.

RegIon 22.02.2011 10:30

Ответ: Порталы
 
Цитата:

Нет, ну слушай, кнопку "Правка" ты в упор не замечаешь?
То что ты делаешь называется "оверпост" - вид флуда. За это могут забанить.
Выложил скрин и спрашиваешь, почему мелькает. Экстрасенсы ещё не вернулись.
Писал каждые по 15 минут(почти).....смотри выше насчёт скрина.....

Nex 22.02.2011 10:46

Ответ: Порталы
 
Цитата:

Сообщение от Костян (Сообщение 179970)
Вложение 12751
Почему полоска мелькает????

Почему слоны не летают?
Больше, больше информации давай! Код!1! Где код?!?1?

RegIon 22.02.2011 11:04

Ответ: Порталы
 
Код:

Global newvalue#,oldvalue#,increments,mx#,my#,camera,hero,pitch#,yaw#,cameraX#,cameraY#,cameraZ#,cx#,cz#
Global mousespeed#=.2,cameraspeed#=.5,camerasmoothness#=3

Global hero_energy%=1000


Const hero_t=1:col_T=2
Graphics3D 1024,768,32,0
SetBuffer BackBuffer()

fps_tim=CreateTimer(60)
camera=CreateCamera()
CameraFogMode camera,0
CameraFogRange camera,1,110
CameraFogColor camera,0,0,0


light=CreateLight()
RotateEntity light,90,0,0



poligon=LoadAnimMesh("datas\mesh\test.3ds")
ScaleEntity poligon,0.4,.4,.4
Poligon_plan=CreatePlane()
PositionEntity poligon_plan,0,-.005,0
EntityColor poligon_plan,0,0,0
EntityType poligon,Col_t
EntityType poligon_plan,col_t
Timer_piv=FindChild(poligon,"Timer")
HideEntity timer_piv
;*****************************************************************
sp_num=LoadAnimImage("datas\img\time\timer.bmp",48,48,0,11)
t=CreateTexture(200,50)
Sp=CreateSprite()
ScaleSprite sp,10,2
PositionEntity sp,EntityX(timer_piv,1),EntityY(Timer_piv,1),EntityZ(Timer_piv,1)
;********************************************************************

createhero(camera,0,5,0)

cam2=CreateCamera()
CameraViewport cam2,0,0,128,128
CameraClsColor cam2,0,128,0


Collisions hero_t,col_t,2,3
Repeat
WaitTimer (fps_tim)
PointEntity cam2,hero

sec=(MilliSecs()/1000) Mod 14


upr_mouse#()
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2

UpdateWorld()
RenderWorld()
DrawImage renderimg(cam2,camera,128,128),100,100
Flip
Until KeyHit(1)
End
;=====
Function renderimg(p_cam%,cam%,W%,H%,trig%=0,Tex_p=1 )
;Local img%
ShowEntity p_cam
HideEntity cam
RenderWorld()
If trig=0
If img=0 Img=CreateImage(w,h)
CopyRect 0,0,w,h,0,0,BackBuffer() ,ImageBuffer(img)
Else
If img=0 img=CreateTexture(w,h,tex_p)
CopyRect 0,0,w,h,0,0,BackBuffer() ,TextureBuffer(img)
EndIf
HideEntity p_cam
ShowEntity cam
RenderWorld()
Return img
End Function
;=======
Function DrawTimer(sprite%,tex%,img%,min%,sec%)
;доделать...
SetBuffer TextureBuffer(tex)
Cls
For i=0 To 4
Select I
Case 0
fr=Int(Left(Str(min),1))
Case 1
fr=Int(Right(Str(min),1))
Case 2
fr=10
Case 4
If Len(Str(SEC))>1
fr=Int(Right(Str(sec),1))
Else
fr=0
EndIf
Case 3
fr=Int(Left(Str(sec),1))
End Select
DrawImage img%,50*i,0,fr
Next
SetBuffer BackBuffer()
EntityTexture sprite,tex
End Function

Function CurveValue#(newvalue#,oldvalue#,increments )
If increments>1 oldvalue#=oldvalue#-(oldvalue#-newvalue#)/increments
If increments<=1 oldvalue=newvalue
Return oldvalue#
End Function

Function createhero(camera%,x%,y%,Z%)


EntityRadius camera,2,1
HEro=CreateSphere()
ScaleEntity hero,.5,1,.5
EntityRadius hero,2,1
EntityAlpha hero,0
CameraRange camera,1,10000
ScaleEntity camera,.5,.5,.5
RotateEntity camera,45,0,0
PositionEntity camera,x,y,z
PositionEntity hero,x,y,z
EntityType camera,hero_t
EntityType hero,hero_t
;===========
stat_p=LoadSprite("Datas\Img\Hero_bar\Stat_p.png",2,camera)
PositionEntity stat_p,0,0,1.001
EntityAlpha stat_p,.8
ScaleSprite stat_p,.04,.04


End Function
       
Function upr_mouse#()
        mx#=CurveValue(MouseXSpeed()*mousespeed#,mx#,camerasmoothness#)
        my#=CurveValue(MouseYSpeed()*mousespeed#,my#,camerasmoothness#)
       
        pitch#=EntityPitch(camera)
        yaw#=EntityYaw(camera)
        pitch#=pitch#+my#
        yaw#=yaw#-mx#
        If pitch#>79 pitch#=79
        If pitch#<-69 pitch#=-69
        RotateEntity camera,0,yaw#,0
        RotateEntity hero,0,yaw#,0
        TurnEntity camera,pitch#,0,0
        cx#=(KeyDown(32)-KeyDown(30))*cameraspeed#
        cz#=(KeyDown(17)-KeyDown(31))*cameraspeed#
        cameraX#=EntityX#(hero)
        cameraY#=EntityY#(hero)
        cameraZ#=EntityZ#(hero)
        MoveEntity hero,cx#,0,cz#
        PositionEntity camera,cameraX#,cameraY#+1,cameraZ#
        RotateEntity hero,60,yaw#,0
        TranslateEntity hero,0,-.3,0
        End Function

На те код....

У кого-нибудь есть имаге шривт с буквой в 72 пикселя....Чтоб зря не рисовать...желательно Bmp...без альфы.

baton4ik 22.02.2011 14:10

Ответ: Порталы
 
Цитата:

Сообщение от Костян (Сообщение 179975)
Писал каждые по 15 минут(почти).....смотри выше насчёт скрина.....

Что? Ты каждое сообщение, в котором и 50 символов не будет, по 15 минут писал? А время над постом говорит, что меньше минуты.

RegIon 22.02.2011 14:41

Ответ: Порталы
 
1-2 пост-да(1 минута) остальные-нет..код отлаживал

RegIon 23.02.2011 09:22

Ответ: Порталы
 
Вложение 12768--Что на стряпать успел(смог).....Код тормознуть.
и текстурки не ровно ложатся...Не могу исправить..

Nex 23.02.2011 09:40

Ответ: Порталы
 
На вин7 х64 все лагает. Наверно из за спрайтов. Так что используй лучше квады.

RegIon 23.02.2011 10:31

Ответ: Порталы
 
У мя XP .....


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot