Frage zum Scenegraph
-
Hallo zusammen
Ich bin gerade dabei den Scenegraphen zu designen und habe diesbezüglich einige Fragen:Bei den statischen Bestandteilen ist die Frage relativ klar, ich habe ein Node mit einem lokalen Koordinatensystem mit mehreren Subnodes. (Bspw. ein Raum mit einem Tisch als Subnode und mit wiederum einem Teller als Subnode vom Tisch.
Aber was ist mit dynamischen Objekten, welche sich in der Welt umherbewegen? Was ist bspw. wenn ein NPC den Raum verlässt, werden dann der NPC Node von "Subnode von Raum" zu "Subnode von Gang" umgehänkt? Aber was ist dann, wenn der NPC direkt in der Türe steht? Zu welchem Node gehört er dann? Oder kann er mehrere Parents haben, so dass NPC dann sowohl Subnode von Raum wie auch von Gang ist?
Also ich bin mir sicher, dass es hierfür keine "Patentlösung" gibt aber wie macht ihr das im Allgemeinen?
Mfg Samuel
-
sprichst du von einem graphen fuer logik? sound? rendering? path finding?
und was willst du dadurch erreichen dass der tisch das child vom raum ist und der teller vom tisch.
-
@rapso
Hallo rapso
Ich habe die Frage ganz allgemein gemeint. Der Vorteil ist, dass wenn sich der Tisch bewegt, bewegt sich automatisch auch der Teller...
-
Ishildur schrieb:
@rapso
Hallo rapso
Ich habe die Frage ganz allgemein gemeint. Der Vorteil ist, dass wenn sich der Tisch bewegt, bewegt sich automatisch auch der Teller...Allgemein kannst du das so machen wie du moechtest damit es die ziele erreicht die du dir wuenscht.
wenn du den vorteil haben moechtest dass der teller sich so wie der tisch bewegt, kannst du den teller natuerlich als child nehmen. wenn du den vorteil haben moechtest, dass der teller runterfaellt, kannst du ihn natuerlich auch nicht als child nehmen und unabhaengig simulieren.
-
Ich hatte eben die Idee, dass der Teller umgelinkt wird, sobald er vom Tisch fällt. (Würde dann Child von Raum, anstatt Tisch). Könnte man das nicht so machen?
Wenn sich der Spieler bspw. in einem sich bewegenden Fahrzeug befindet, dann muss doch der Spieler irgendwie Child dieses Fahrzeuges sein, damit die ModelTransform vom Spieler mit der ModelTransform vom jedem Fahrzeug multipliziert wird. Springt der Spieler jedoch aus dem Fahrzeug heraus, ist er nun Child vom entsprechenden Quadranten und nicht mehr vom Fahrzeug:
World World / \ / \ Q1 Q2 Q1 Q2 / \ => / \ \ Fahrzeug ... Fahrzeug Spieler ... / Spieler
Also das ist nur so eine Idee, isch weis eben nicht, ob das Sinn macht?
-
Ishildur schrieb:
Ich hatte eben die Idee, dass der Teller umgelinkt wird, sobald er vom Tisch fällt. (Würde dann Child von Raum, anstatt Tisch). Könnte man das nicht so machen?
Klar kann man das, ich verstehe zwar immer noch nicht den nutzen, aber technisch ist das sicherlich moeglich.
Wenn sich der Spieler bspw. in einem sich bewegenden Fahrzeug befindet, dann muss doch der Spieler irgendwie Child dieses Fahrzeuges sein, damit die ModelTransform vom Spieler mit der ModelTransform vom jedem Fahrzeug multipliziert wird. Springt der Spieler jedoch aus dem Fahrzeug heraus, ist er nun Child vom entsprechenden Quadranten und nicht mehr vom Fahrzeug:
World World / \ / \ Q1 Q2 Q1 Q2 / \ => / \ \ Fahrzeug ... Fahrzeug Spieler ... / Spieler
Also das ist nur so eine Idee, isch weis eben nicht, ob das Sinn macht?
wenn du zwei objekte binden moechtest, kannst du sie child machen. jedoch muss man nicht zwanghaft alles von allem ein child machen. Ich sehe keinen sinn darin ein tisch child von einem raum zu machen, viele engines unterscheiden deswegen zwischen brushes und entities.
brushes sind statische dinge die fuer sich da sind und nie ihren zustand aendern und deswegen auch keiner hierarchy unterworfen sind (und das trifft wohl auf 95% der dinge zu in spielen wie z.b. Unreal, Gears of war etc).
Entities sind frei existierende objekte (bei der unreal engine auch Actors genannt, afaik). ihre transformation haengt von der physicalischen simulation ab, jemand kann teller und tisch 180grad drehen und im spiel dann am teller ziehen und der tisch wird umfallen.Die allerwenigsten dinge in der welt haben eine hierarchy, und wenn sie die haben, dann meist sehr lokal und fest gebunden, z.b. Tuerklinke -> tuer. kuenstlich teller und unterlage verwand zu machen ergibt meist keinen sinn.
Was wenn ein teller auf zwei stuehlen je zu 50% draufliegt?
-
Ich würde nur Dinge per Parent-Child-Beziehung miteinander koppeln, die auch physikalisch miteinander gekoppelt ( zum Beispiel die Tischbeine zur Tischplatte per Nägel ) sind. Zum Beispiel ist ein Arm Child eines Torsos.
Bei einem Teller und einem Tisch sehe ich eher eine wirkende Kraft ( Gravitation ), die den Teller in eine Richtung bewegt ( nämlich hin zum Boden ), bis er den auf ein Hindernis ( Tisch ) trifft. Dementsprechend wäre das eher etwas für einen Kollisions/Physik-Manager als für die Hierarchie der in der Szene enthaltenden Entities.Gruß Kimmi