3D Script von Steptiger verbessert (?) ... nur Problem

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Chrise

Betreff: 3D Script von Steptiger verbessert (?) ... nur Problem

BeitragDo, Apr 17, 2008 17:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute!

Ich habe letztens mal wieder die 3D Brillen rausgekramt und mir ist da eingefallen, das es da noch den Skript gab, den Steptiger gemacht hatte.
Mir ist nur aufgefallen, das einfach das gerendete Bild verschoben wurde und kein 3D Effekt durch Kameraverschiebung entstand. Bzw. war das der Fall bei einem weiter unten geposteten Beispielcode.

Jetzt hab ich mich ein bisschen hingesetzt und rumprobiert wie man das ändern könnte.
Und habs geschafft, juhu!

Das einzige Problem ist jetzt, wenn man mit den Richtungstasten die Kameraposition verschiebt, manchmal
Fehler im Bild auftauchen. Wie z.b. das plötzlich alles Grau ist, oder nur eine Kameraposition durch den Filter sichtbar ist.

Weiß jemand an was das liegt?

Danke für hilfe, hier der Code:



EDIT: LOOOL Mir ist der Fehler aufgefallen... so klein und unbemerkt.
Der Filter war zu nahe an der Camera, das er bei der render ungenauigkeit kurzzeitig nicht sichtbar war.
Hab den ausgebesserten Code bearbeitet:

(Was fürs Codearchiv???)

Code:
breite=800
hoehe=600

Graphics3D breite,hoehe,32,1
SetBuffer BackBuffer()

rtex=CreateTexture(GraphicsWidth(),GraphicsHeight(),48)
gbtex=CreateTexture(GraphicsWidth(),GraphicsHeight(),48)

;800*600
If breite=800 And hoehe=600 Then
   versch#=0.4;die verschiebung in pixel (je nach fenstergröße verschieden)
   sclx#=6.4; die skalierung in richtung x
   scly#=6.4; die skalierung in richtung y
   difx#=1.38; feinverschiebung in x richtung
   dify#=-2.65; feinverschiebung in y richtung
   difz#=0; feinverschiebung in z richtung
EndIf

;1024*768
If breite=1024 And hoehe=768 Then
   versch#=0.5;die verschiebung in pixel (je nach fenstergröße verschieden)
   sclx#=7.1; die skalierung in richtung x
   scly#=7.1; die skalierung in richtung y
   difx#=0; feinverschiebung in x richtung
   dify#=-1.7; feinverschiebung in y richtung
   difz#=2; feinverschiebung in z richtung
EndIf

;1280*1024
If breite=1280 And hoehe=1024 Then
   versch#=0.6;die verschiebung in pixel (je nach fenstergröße verschieden)
   sclx#=8; die skalierung in richtung x
   scly#=4; die skalierung in richtung y
   difx#=3; feinverschiebung in x richtung
   dify#=0.1; feinverschiebung in y richtung
   difz#=0; feinverschiebung in z richtung
EndIf

screencamversch#=2000

farbe1=255
farbe2=255
farbe3=155
lichtstaerke=55


;box=LoadMesh("mesh1.3ds")
box=CreateCube()
PositionEntity box,0,0,12
;EntityAlpha box,.4
EntityShininess box,1

;Tex1=LoadTexture("textur1.png")
;EntityTexture box,Tex1

cam=CreateCamera()
screencam=CreateCamera()
PositionEntity cam,0,0,5
PositionEntity screencam,0,screencamversch#,-5

light=CreateLight()
LightColor light,lichtstaerke,lichtstaerke,lichtstaerke
PositionEntity light,0,0,1
RotateEntity light,0,0,90

AmbientLight farbe3,farbe3,farbe3

filter=CreateCube()
ScaleEntity filter,600,600,0.01
EntityFX filter,1
EntityBlend filter,3

screen=CreateCube()
ScaleEntity screen,sclx#,scly#,0.01
EntityColor screen,255,255,255
EntityFX screen,1
TextureBlend rtex,2
TextureBlend gbtex,2

EntityTexture screen,rtex,0,0
EntityTexture screen,gbtex,0,1

PositionEntity filter,0,0,6.0101
PositionEntity screen,difx#,screencamversch#+dify#,difz#

Pivot1=CreatePivot()

parent=1
EntityParent cam,pivot1,parent
EntityParent filter,pivot1,parent

frameTimer=CreateTimer(25)
CameraClsColor cam,255,255,255

;_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
;-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
;_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
;-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-

While Not KeyDown(1)
   
   Cls
   
   CameraProjMode cam,1
   CameraProjMode screencam,0
   
   MoveEntity pivot1,versch#,0,0
   EntityColor filter,farbe1,0,0
   RenderWorld
   CopyRect 0,0,GraphicsWidth(),GraphicsHeight(),0,0,BackBuffer(),TextureBuffer(rtex)

   MoveEntity pivot1,-versch#,0,0
   EntityColor filter,0,farbe2,farbe2
   RenderWorld
   CopyRect 0,0,GraphicsWidth(),GraphicsHeight(),0,0,BackBuffer(),TextureBuffer(gbtex)

   CameraProjMode screencam,1
   CameraProjMode cam,0
   WaitTimer (frameTimer)
   UpdateWorld
   RenderWorld
   Flip
   
   If KeyDown(200) Then TranslateEntity pivot1,0,0,0.05,1
   If KeyDown(208) Then TranslateEntity pivot1,0,0,-0.05,1
   If KeyDown(203) Then TurnEntity pivot1,0,1,0
   If KeyDown(205) Then TurnEntity pivot1,0,-1,0
   TurnEntity box,1.5,1,0.5
   
Wend
FreeTimer frameTimer
Llama 1 Llama 2 Llama 3
Vielen Dank an Pummelie, der mir auf seinem Server einen Platz für LlamaNet bietet.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group