Seite 1 von 2
z-Wert bei TransformSprite3D()
Verfasst: 02.07.2005 18:51
von Batze
Also,
ich hab ein Problem mit dem Befehl TransformSprite3D().
Grundsätzlich kapier ich das ja: man gibt da die xy-Koordinaten der 4 Eckpunkte an. Aber wozu sind die z-Koordinaten?
Ich habs leider durch Probieren nicht rausgefunden und die Themen, die ich mit der Forensuche gefunden habe haben mir auch nicht geholfen.
Deshalb: Wie geht das? Am besten mit Beispiel.
Verfasst: 02.07.2005 19:07
von Green Snake
ich habe dabei auch probleme.
bei mir wird das kein bischen verformt.
das heisst, es bleibt einfach bein normalen sprite.
das komische, eine fehlermeldung wird auch nciht ausgegeben.
auch die hilfe is schleir haft.
warum wird dort eine ascii zeichnung gezeigt?
wäre auch um hilf fro

Re: z-Wert bei TransformSprite3D()
Verfasst: 02.07.2005 19:08
von DarkDragon
Batze hat geschrieben:Also,
ich hab ein Problem mit dem Befehl TransformSprite3D().
Grundsätzlich kapier ich das ja: man gibt da die xy-Koordinaten der 4 Eckpunkte an. Aber wozu sind die z-Koordinaten?
Ich habs leider durch Probieren nicht rausgefunden und die Themen, die ich mit der Forensuche gefunden habe haben mir auch nicht geholfen.
Deshalb: Wie geht das? Am besten mit Beispiel.
z ist die Tiefe(also nach hinten). Es sieht deshalb aus wie das normale sprite, weil ja noch eine orthogonale anzeige ist.
Verfasst: 02.07.2005 20:44
von Batze
Es gibt aber ne Veränderung wenn ich die y-Werte ändere. Wenn die garkeine Auswirkungen haben, wie kommt das dann?
Edit: ein Beispiel das im PureBasic >> Examples Verzeichnis läuft
Code: Alles auswählen
If InitSprite() = 0 Or InitKeyboard() = 0
MessageRequester("Error", "Can't open DirectX 7 Or later", 0)
End
EndIf
If InitSprite3D() = 0
MessageRequester("Error", "Direct3D system can't be initialized correctly", 0)
End
EndIf
If OpenScreen(640, 480, 16, "Sprite")
LoadSprite(0, "Data\Geebee2.bmp", #PB_Sprite_Texture)
CreateSprite3D(0, 0)
CreateSprite3D(1, 0)
CreateSprite3D(2, 0)
Sprite3DQuality(1)
TransparentSpriteColor(0, 255, 0, 255) ; Our pink is transparent :)
DefType.f H, V
Repeat
FlipBuffers()
ClearScreen(0,50,128)
If KeyboardPushed(#PB_Key_W) : Y - 1
ElseIf KeyboardPushed(#PB_Key_S) : Y + 1
ElseIf KeyboardPushed(#PB_Key_A) : x - 1
ElseIf KeyboardPushed(#PB_Key_D) : x + 1
EndIf
If KeyboardPushed(#PB_Key_Left ) : H - 0.01
ElseIf KeyboardPushed(#PB_Key_Right) : H + 0.01
ElseIf KeyboardPushed(#PB_Key_Up ) : V - 0.01
ElseIf KeyboardPushed(#PB_Key_Down ) : V + 0.01
EndIf
If Start3D() ; x1 y1 z1 x2 y2 z2 x3 y3 z3 x4 y4 z4
TransformSprite3D(0, 128,000, V, 128,128, V, 000,128, H, 000,000, H)
DisplaySprite3D(0, x, Y, 255)
Stop3D()
EndIf
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
Else
MessageRequester("Error", "Can't open a 640*480 - 16 bit screen !", 0)
EndIf
End
Also bei mir tut sich bei den Pfeiltasten was!
Verfasst: 03.07.2005 08:36
von DarkDragon
Code: Alles auswählen
Verformt ("transform") das 3D-Sprite auf die neu angegebenen Koordinaten. Dies erfolgt typischerweise beim Durchführen von Echtzeit-Verformungen. Warnung: Da ein Sprite3D sich in 2 Richtungen ausdehnt (2 Dreiecke), kann die Verformung sehr seltsam aussehen...
Wenn einer der optionalen 'z'-Parameter verwendet wird, müssen alle angegeben werden.
;
; 1 2
; ---------
; | /|
; | / |
; | / |
; |/ |
; ---------
; 4 3
;
Das Sprite3D(eine Textur) wird ja auf ein Viereck gelegt, das wiederum aus 2 Dreiecken besteht. Und nur die Eckpunkte kann man verändern. Wenn du 2 Sprite3D hast und die übereinanderlegst musst du zuerst prüfen, welches du zuerst zu zeichnen hast.
Verfasst: 03.07.2005 09:25
von Batze
Ja, und was sagt mir das jetzt?
Ich hab nur ein Sprite, und das wird komisch verformt.
Verfasst: 04.07.2005 09:53
von kutta
hallöle
hatte mich auch schonmal damit beschäftigt
das kam dabei raus :
http://forums.purebasic.com/german/arch ... 46ecba9707
ist schon jahr her hoffe es läuft noch
mfg
Verfasst: 04.07.2005 14:33
von Batze
Danke,
ich setz mich jetzt erstmal 2 Stunden vor den Code und versuch ihn zu verstehen.
Edit: 2 Stunden werden reichen

Verfasst: 04.07.2005 14:59
von kutta
naja so schlimm is ja nun auch nich
wenn du fragen hast poste
Verfasst: 26.07.2005 16:48
von Batze
So jetzt hab ich's durch. Gut, ich hab auch nicht die ganze Zeit dran gesessen sondern eigentlich erst heute wieder mal geguckt.
Das ganze lässt sich irgendwie recht schön als simple 3D-Engine anwenden.
Nochmal danke.
Könnte ich den Code wohl verwenden?
Edit: (Ein Ja wär nicht schlecht)