Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Black-Panther

Alter Hase

  • »Black-Panther« ist der Autor dieses Themas

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

1

10.01.2007, 14:19

Kugelkoordinaten schnell genug?

Hi!

Ich stehe derzeit vor einer Entscheidung.. und zwar:
Ich habe eine Kugel (einen Planeten) auf dem werden Objekte bewegt (Interpolation) und können markiert werden. Also hab ich mir gedacht, da würden sich Kugelkoordinaten hervorragend eignen. Bieten alles was ich brauche und die Interpolation zwischen zwei Punkten ist einfach perfekt! Nun meine Frage: Da ich ja nicht mit Kugelkoordinaten rendern kann, und meine gesamten Kollisionsabfragen ebenfalls mit kartesischen Koords arbeiten, muss ich bei jeder Änderung (Bewegung, Klick zur Auswahl (Kollision Kugel-Linie), ...) alle Kugelkoordinaten in kartesische umrechnen. Ist das zu performancelastig?

Anmerkung:
Umrechnung von kartesischen in Kugelkoordinaten benötigt 2 Wurzeln, einen arctan und einen arccos.
Umgekehrt (kugel-kartes.): zwei sinus und zwei cosinus!
Mehr Infos auf www.wikipedia.de
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

10.01.2007, 15:20

hängt natürlich ab was genau du vorhast, aber unter umständen kannst du mit quaternionen was rausholen...

Black-Panther

Alter Hase

  • »Black-Panther« ist der Autor dieses Themas

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

3

10.01.2007, 16:09

Wie gesagt, mir geht es primär darum, Objekte auf der Kugeloberfläche zu bewegen, also mit Spherical Interpolation. Damit ich das machen kann, muss ich immer (um dann das Objekt an der richtigen stelle render zu können) die Kugelkoordinaten in kartesische umwandeln. Die Quaternionsinterpolation ist ja ebenfalls sphärisch, afaik und das interpolieren selbst ist glaub ich, auch nicht schneller... die Frage ist nur, ob das Umwandeln in eine rotationsmatrix schnell von statten geht?
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

10.01.2007, 16:15

ich denk in dem fall werden quaternionen nicht viel bringen.
das interpolieren ist nicht wirklich schneller, und das umrechnen in eine matrix ziemlich lahm.
aber du kannst vertices direkt mit einer quaternion transformieren, ohne zuerst eine matrix draus zu machen (kostet aber mehr als vektor * matrix)
was sich jetzt besser eignet müsste man testen.

an deiner stelle würd ichs einfach mal ganz normal machen, weil wenn das zu einem bottleneck wird, ist ziemlich was faul ;)
für den notfall hat die FPU eine instruction mit der du den sinus und cosinus von einem winkel gleichzeitig berechnen kannst 8)

rklaffehn

Treue Seele

Beiträge: 267

Wohnort: Braunschweig

  • Private Nachricht senden

5

11.01.2007, 12:18

Naja, eigentlich leitest du ja aus den Kugelkoordinaten nur die Transformation für die Objekte auf der Kugel ab. Ich denke, der Performance Verlust wird durch die einfachere Interpolation ausgeglichen und die Transformation der Modelle ist vermutlich sowieso teurer. Du musst ja nicht für jeden Punkt des Modells eine eigene Transformation bestimmen. (ausser natürlich, die Modelle sind sehr gross und müssen sich an die Kugel anschmiegen :))

Wenn du deine Modelle dann erstmal in kartesischen Koordinaten transformiert hast, ist die Kollisionsabfrage auch keine Schwierigkeit mehr.

Gruss,
Rainer
God is real... unless declared integer.
http://www.boincstats.com/signature/user_967277_banner.gif

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

6

11.01.2007, 15:36

Ich selber habe das noch nicht gemacht, weiss aber dass manche FluSis, z.B. Microsoft's Flight Sim X das so machen. Ich denke dass die nur Objektpositionen in Kugelkoordinaten haben und nicht alle Vertices. FSX ist nicht unbedingt schnell, aber ob es unbedingt daran liegt...

Hier steht ein klein bisschen zu Koordinatensystemen drin:
http://fsinsider.com/Community/Developers-Corner/Global+Terrain+for+Flight+Simulator.htm

Der Open Source FluSi FlightGear hat auch ein nicht-flaches Model der Erde.
"Games are algorithmic entertainment."

Werbeanzeige