Anklickproblem (Einheitenselektion)
-
Hallo,
gibt es dazu irgendwo Beispiele, Tutorials oder sonst was?
Ich habe bisher nur lesson 32 auf http://nehe.gamedev.net/
gefunden, aber da wird nur die Auswahl von jeweils einem Objekt gezeigt!
-
Wo isn das Problem einfach nur die 2D Koordinaten zu benutzen ?
-
Unterteile deine Spielwelt in viele kleine Würfel und stelle sicher, das jeder Würfel weiss, welche Einheit sich in ihm befindet (Das heisst, wenn du Einheiten bewegst, musst du diese ggf beim einen Würfel "abmelden" und beim anderen wieder "anmelden"). Wenn du jetzt einen Rahmen ziehst, selektierst du einfach alle Einheiten in den Würfeln die innerhalb des Rahmens liegen. Das sollte auch mit Lufteinheiten problemlos gehen.
(edit)
Diese "Würfelisierung"
kann dir später auch noch bei anderen Dingen wie Pathfinding, Kollisionsabfrage und Culling helfen 
-
Hallo,
das funktioniert leider nicht, da ich eine frei schwenkbare kammera habe.
Die normale Sicht ist wie bei solchen Spielen üblich von oben.
Da würde es funktionieren einfach z.B die Z Achse weg zu lassen. Aber der User kann die Kammera auch wagerecht stellen, so dass man fast aus first persen sicht wie bei einem Shooter die Landschaft sieht. Zieht man nun den Rahmen, werden die falschen Einheiten oder "Würfel" ausgewählt. Somit wäre das Problem die richtige Einheit auszuwählen nur auf die Auswahl der richtigen Würfel verschoben worden.Das man aus der sicht sowas wie ne Pyramiede berechnen muss, meine ich auch. Aber ich schaffe es von meinen mathe kenntnissen her nicht .Das mit der Pyramiede würde ich schon schaffen. Aber das vergleichen der Einheit mit der Pyramiede schaffe ich nicht, da die einheiten ja schwer zu berechnende Formen haben und auch hinter z.B. einem Berg verborgen sein könnten.
Das Problem ist eigentlich eine Projektion von 2d (gezogenes Rechteck) auf
die 3d Landschaft aus der Sicht der kamera, wobei leider deutliche Verzerrungen auftreten.Sowas muss doch schon irgend Jemand mal gemacht haben immerhin gibt es einige Spiele die das können.
Am liebsten wäre mir ein Tutorial oder ne Anleitung wie das geht!
(Zur Not reichen auch einfach die Berechnungsformeln)MfG
Andreas
-
Versteh das Problem nicht. Der schwierigste Teil daran ist nur, die Mauskoordinaten in die 3D Welt zu mappen. Dafür gibts genug Beispiele (suche nach "Picking" o.ä). Wenn du start- und endpunkt des Selektions-Rahmens hast, kannst du ganz einfach die eingeschlossenen Würfel ermitteln und fertig. Da spielt es auch keine Rolle, ob die Einheit im betreffenden Würfel in der Luft oder hinter einem Berg steht.
-
Hallo,
leider reicht es nicht, nur die Eckpunkte (Mauskoordinaten) ins 3d zu mappen, weil sich auch die Seiten des Rechtecks verformen müssen.
Es muss das gesamte Rechteck auf 3d gemapt werden.
Beispiel
Rechteck: ---------------- | | | | | | | | |--------------- Landschaft: Soll nen Berg sein (von oben gesehen) /()\ ((O)) \()/ Rechteck auf Berg: / -- - -\ --- /()\ -- | ((O)) | | \()/ | | | | | | | --------------Am berg muss sich das Quadrat verzerren, wie die Höhenlinien auf einer Landkarte. Und die verzerrung wird schlimmer, umso schräger man auf die
Landschaft blickt.Meine Frage ist, wie ich diese Verzerrung berechnen kann?
-
Andreas XXL schrieb:
Meine Frage ist, wie ich diese Verzerrung berechnen kann?
Als Schnitt des Frustums mit Deinem "Terrain".
-
Sgt. Nukem schrieb:
Als Schnitt des Frustums mit Deinem "Terrain".
*gähn*
Bye, TGGC (Keine Macht den Dummen)
-
TGGC schrieb:
Sgt. Nukem schrieb:
Als Schnitt des Frustums mit Deinem "Terrain".
*gähn*
Nur weil ich wieder Scheisse laber mußt Du doch nicht hier öffentlich rumgähnen...

-
Hallo,
ich seh schon, hier kann oder will mir Keiner helfen -- ENDE!
-
Andreas XXL schrieb:
ich seh schon, hier kann oder will mir Keiner helfen -- ENDE!

Wo hast Du denn noch Probleme??
Hast Du schonmal ein View Frustum Culling selbst berechnet??
Schau' Dich mal da um -> Software-Renderer.Was Du sonst brauchst ist ein Mathe-Buch über Vektor-Algebra.
-
Ich gähne nur mangels sichtbarem Forschritts.
Bye, TGGC (Keine Macht den Dummen)
-
Das ist ja echt kaum mehr mitlesbar, hier ein Vorschlag wie man es mit einem Frustum machen kann:
An den 4 Eckkoordinaten des Auswahlrechtecks sendet man mittels "Picking" jeweils einen Strahl in die 3D Welt. Man erhält dadurch also 4 Geraden, die sich alle im Punkt der Kamera schneiden.
Nun ist es nicht schwer (bzw sollte nicht schwer sein) aus diesen 4 Geraden die Ebenen zu berechnen, die eine Pyramide (das Frustum) aufspannen.
Dann läuft - wie TGGC schon gesagt hat - alles gleich wie beim Sichtbarkeitsculling. Alle einheiten, die sich innerhalb der Pyramide befinden, wurden selektiert.