Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 24.07.2005, 11:09 Titel: [3d-raum] er fliegt in die tiefe, nur wie? |
|
|
hi leutz,
mich quält da gerade so ne frage, die lösung will mir einfach net einfallen. Im IRC is eh net viel los, deswegen poste ichs hier:
Ich hab ein Fadenkreuz im 3d-raum, das ich mit der Maus bewegen. bei einem Klick wird ein Plasma-ball in der mitte des kreuzes abgefeuert. Dieser Ball sollte seinen Weg streng verfolgen und stets immer tiefer in das Bild hinein fliegen. Wenn ich aber nur die z-komponente der Pos. erhöhe, wirkt es zwar, dass der Schuss immer weiter in den Bildschirm hinein fliegt, aber er geht auch immer weiter zum Mittelpunkt(da der abstend in der ferne natücrlich kleiner wirkt). Wie kann ich es erreichen, dass der ball zwar in die tiefe fliegt, aber in Blidschirmkoordinaten immer die gleiche Position behält?
mir kan schon ma die idee, dass ich den Schuss von seinen lok. Koordsys. in die z-Richtung transliere, aber is ja klar, dass das net geht, da das ja immer im Mittelpunkt des Schusses stehen muss. Und nochwas: es genügt nicht, den schuss einfach nur zu skalieren, da er ja im 3d-Raum fliegt und auch auf Kollision überprüft werden muss. Falls es trotzdem nur diese möglichkeit gibt, muss ich eben ein lokalen Vektor definieren und den auf kolision überprüfen...
thx im Vorraus
Gruß DirectXer |
|
Nach oben |
|
 |
GreveN JLI Master

Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 24.07.2005, 11:24 Titel: |
|
|
Die Bewegung solltest du vlt. nicht einfach an der z-Achse festmachen, du übergibst dem Projektil beim Abfeuern einen Richtungsvektor und berechnest dann mit Hilfe dieses Vektors immer die neue Postition.
Im ZFX-Board stand jetzt mal ein ähnlicher Thread:
http://zfx.info/DisplayThread.php?TID=19994 |
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 24.07.2005, 11:29 Titel: |
|
|
hmm, jo, aber wie sollte der Richtungsvektor dann sein? (0.0f, 0.0f, 0.3f) oder so?
dann die alte Fadenkreuz-position + den richtungs vektor wäre ja dasselbe, was ich schon haben würde. oder meinst du den schuss von dem Modellkoordinatansystem des kreuzes aus in z-Richtung translieren?
Gruß DirectXer |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 24.07.2005, 12:37 Titel: |
|
|
du brauchst irgendwie n Richtungsvektor, den den aus der Bildshcirmkoordinate des Fadenkreuzes berechnen musst. also, der Vektor muss von der Kameraposition aus durch den Bildschirm in die Scene gehen. Wenn du ja in der Projektionsmatrix so ne Art NearClipping plane hast ist die ja im Prinzip ein Rechteck. Also musst du versuchen anhand der Bildschirmkoordinate die 3D Pos auf der Near-Clipping-Plane berechnen und dann den Vektor durch diesen Punkt und den Kameramittelpunkt zu bilden. Nur wie du die relative Position auf der Plane bekommst, musste nochmal nachdenken  _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
KI JLI Master

Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 24.07.2005, 13:14 Titel: |
|
|
So wie ich das sehe, kann das garnicht gehen.
Wie bei diesen Eisenbahnschienen, müssen bei einer perspektivischen Ansicht die Objekte zur Mitte laufen.
Bei einer orthogonalen Ansicht, bleiben die Eisenbahnschienen parallel.
edit: Ich meine, die Schienen sind natürlich immer parallel (auch bei der perspektivischen Ansicht). Aber bei einer orthogonalen Ansicht verschmelzen sie nicht zu einem Punkte, je weiter der Blick in die Ferne schweift...
Zuletzt bearbeitet von KI am 24.07.2005, 14:28, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Dr. Best Senior JLI'ler

Alter: 35 Anmeldedatum: 17.06.2004 Beiträge: 269 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 24.07.2005, 13:41 Titel: |
|
|
So wie ich das sehe ist das ganz einfach:
Es sollte wohl allgemein bekannt sein, dass alle punkte die auf einer geraden liegen die durch die Kameraposition geht die gleiche Bildschirmposition haben (natürlich nur bei perspektivischer Projektionsmatrix).
Also musst du den Schuss einfach am Anfang ein kleines Stück vor der Kamera erzeugen (und mit entsprechenden x und y koordinaten versehen) und dann den Richtungsvektor z.B. folgendermaßen festlegen:
Code: | shoot.movement=(shoot.pos-camera.pos)*0.1f; |
Das sollte dann klappen. _________________
Ich bin da, wer noch? |
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 24.07.2005, 21:11 Titel: |
|
|
hi, ich hab grad besuch, ich les mir das morgen nochma genau durch, habs grad nur so überflogen... Bis dann
Gruß DirectXer |
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 25.07.2005, 17:31 Titel: |
|
|
jo, thx an alle
Habs jetzt so gemacht, wie die meisten von euch vorgeschlagen haben, also durch die Kamera usw. Klappt wunderbar, danke
Hättich auch selber draufkommen können... aber naja, schön dasses jetzt funktioniert.
Gruß DirectXer |
|
Nach oben |
|
 |
|