Tformvector

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Fuchsi

Betreff: Tformvector

BeitragSo, Jun 03, 2007 12:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Titel sagt alles, was genau bewirkt Tformvector.
In der OH steht zwar, dass es genau dasselbe sei wie Tformpoint, allerdings kann ich das nicht ganz nachvollziehen.

MfG
Füchse sind toll !

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Jun 03, 2007 19:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Die OH schreibt:

Zitat:
Beispiel: Du möchtest ein Objekt 1 Schritt nach vorne bewegen (0,0,1). Das kann man so machen: MOVEENTITY obj,0,0,1. Wie würde das aber als globale Version aussehen, da der Vektor von Objektwinkel abhängig ist. Den Vektor kann man mit diesen Befehlen transformieren (siehe Beispiel). Dann kann ein Objekt auch mit TRANSLATEENTITY obj,x,y,z bewegt werden.

Dieses Beispiel ist - so ich finde - sehr gut beschrieben. TFormVector wird zB für Physikspielereien benutzt, kann aber auch für Schüsse sehr Sinnvoll sein. Man will zB dass ein Geschoss genau aus der Position der Kanone abgefeuert wird, nicht aus der Mitte eines Schiffes. Sowas könnte man mit Pivots lösen aber auch mit TFormVector berechnen, da ein Schuss beim abfeuern ja erstmal positioniert werden muss.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Fuchsi

BeitragSo, Jun 03, 2007 20:23
Antworten mit Zitat
Benutzer-Profile anzeigen
hectic hat Folgendes geschrieben:


Die OH schreibt:

Zitat:
Beispiel: Du möchtest ein Objekt 1 Schritt nach vorne bewegen (0,0,1). Das kann man so machen: MOVEENTITY obj,0,0,1. Wie würde das aber als globale Version aussehen, da der Vektor von Objektwinkel abhängig ist. Den Vektor kann man mit diesen Befehlen transformieren (siehe Beispiel). Dann kann ein Objekt auch mit TRANSLATEENTITY obj,x,y,z bewegt werden.



Genau das verwirrt mich ja. Wenn ich ein Objekt abhängig von dessen Drehwinkel bewegen möchte, dann benutze ich Moveentity, für eine globale Bewegung Translateentity.
Wozu ist dann dieser Befehl gut.
Mich interessiert es deshalb: Auf der Seite von den Devil-Engines ist ein SingleSurface - Tutorial in welchem Tfomvector benutzt wird um die Partikel richtig zu drehen.

MfG
Füchse sind toll !

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Jun 03, 2007 21:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast dir hoffentlich auch mein Beitrag dazu gelesen und nicht nur mein Zitat aus der OH?

Es geht hier nicht darum, ein Objekt anstelle MoveEntity mit TranslateEntity zu bewegen, sondern darum das man es damit könnte. Weil es eben das beste Beispiel ist um es zu erklären. Wenn du mal was in 3D berechnen willst, was dahingehend in die Richtung geht, so weißt du jetzt das es dafür ein 'Befehl' gibt. Ich habe dazu zwei Beispiele gegeben, wo man es auch noch anwenden könnte.

Die Alternative(n) dazu währe(n):
- Es mit sehr viel komplizierteren Rechenwegen selbst auszurechnen (mit Sinus und Cosinus in Verbindung mit einer Matrix)
- Eine unschöne Methode anwenden, und zwar: Ein Pivot an Objekt positionieren, dann nach Objekt auszurichten, dann per MoveEntity es zu bewegen, dann die Differenz zwischen beiden auszurechnen.

Es gab übrigens erst kürzlich sowas hier im Forum https://www.blitzforum.de/foru...hp?t=23825

Hier hast du nochmal den Link in einer Kurzform funktionstüchtig zusammengestellten Code: [AUSKLAPPEN]
Graphics3D 600,400,0,2
SetBuffer BackBuffer()

camera=CreateCamera()
MoveEntity camera,0,2,-6

TurnEntity CreateLight(),30,-30,0

c1=CreateCube():EntityColor c1,255,255,0
c2=CreateCube():EntityColor c2,255,0,0


While Not KeyHit(1)
 TurnEntity c1,0,1,0

 If KeyDown(2)
  PositionEntity c2,EntityX(c1),EntityY(c1),EntityZ(c1)
  RotateEntity c2,EntityPitch(c1),EntityYaw(c1),EntityRoll(c1)
  MoveEntity c2,0,3,2
 End If

 If KeyDown(3)
  TFormVector 0,3,2,c1,0
  If KeyDown(4) RotateEntity c2,EntityPitch(c1),EntityYaw(c1),EntityRoll(c1)
  PositionEntity c2,TFormedX(),TFormedY(),TFormedZ()
 End If

 RenderWorld
 Flip
Wend
End

Drücke dabei ''1'', oder ''2'', oder ''2'' und ''3'' zusammen.

Gewöhne dir blos nicht, die erste Methode zu programmieren, da du schnell an die Möglichkeiten kommen wirst. Ausserdem ist es 'unsauber' programmiert, auch wenn ein paar Zeichen weniger Code vorhanden sind.

edit1: Bei der Schatten-Engine würde ich mal ganz stark vermuten, das dort TFormVector dafür benutzt wird, um die Ausrichtung der Singlesurface zu berechnen. Da sich die Kamera ja auch dreht, muss jedes Triangle zur Kamera manuel gedreht werden, was mit Sprites zB auch automatsch geht. Denoch sind Sprites um ein vielfaches langsamer als eine selbst berechete Singlesurface.

edit2: Beispiel: Ich will dir erklären wie man Geschwindigkeit bzw. relative Geschwindigkeit berechnen kann, so komme ich mit folgendem Beispiel: Nehmen wir an, wir fahren in einem Zug, welcher 100 km/h fährt, nun werfe ich ein Ball in Fahrtrichtung (also nach vorne) des Zuges einen Ball, welchen ich mit 20 km/h werfe? Wie schnell bewegt sich nun der Ball relativ zu Erde? - Würdest du dann auch sagen: ''Diese Mathemathik brauche ich nicht, weil ich nie in einem fahrendem Zug mit Bällen werfen werde noch diese zu berechnen''?!? Very Happy

Fuchsi

BeitragMo, Jun 04, 2007 15:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Danke Very Happy

Thx für deine Hilfe.
Hast was gut bei mir.
Also falls du jemals von meinen höchst umfangreichen Programmierkenntnissen im 3D-Bereich Gebrauch machen würdest steh ich dir voll und ganz zur Verfügung zur Verfügung. Very Happy

MfG
Füchse sind toll !

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group