z-Wert bei TransformSprite3D()

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

z-Wert bei TransformSprite3D()

Beitrag 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.
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Beitrag 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? :lol:

wäre auch um hilf fro :allright:
-.-"
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: z-Wert bei TransformSprite3D()

Beitrag 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.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag 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!
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag 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.
Zuletzt geändert von DarkDragon am 26.07.2005 17:08, insgesamt 1-mal geändert.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

Ja, und was sagt mir das jetzt?
Ich hab nur ein Sprite, und das wird komisch verformt.
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
kutta
Beiträge: 40
Registriert: 04.07.2005 09:48

Beitrag 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
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

Danke,
ich setz mich jetzt erstmal 2 Stunden vor den Code und versuch ihn zu verstehen. :mrgreen:

Edit: 2 Stunden werden reichen :lol:
Zuletzt geändert von Batze am 04.07.2005 15:14, insgesamt 1-mal geändert.
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
kutta
Beiträge: 40
Registriert: 04.07.2005 09:48

Beitrag von kutta »

naja so schlimm is ja nun auch nich
wenn du fragen hast poste
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag 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)
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Antworten