 |
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Catscratch1 Junior JLI'ler
Anmeldedatum: 20.01.2005 Beiträge: 98
Medaillen: Keine
|
Verfasst am: 12.03.2005, 10:24 Titel: Objekte gruppieren |
|
|
Hi,
ich hab mal ne Frage.
Kann man Objekte in DirectX zu einer Gruppe zusammen fassen, die man zusammen transformieren kann.
Beispielsweise ich habe ein Cube Objekt, aus dem ich einen Würfelturm baue.
Nun möchte ich aber diesen ganzen Turm mit einer einzigen Translation verschieben, so dass ich den Turm halt mehrfach an verschiedene Stellen bringen kann.
Die nächste Stufe mehrere Türme zusammenzufassen und diese "Turmmatrix" mehrfach anzuzeigen.
Mit Java3D geht das recht einfach über SharedGroups. Gibt es was vergleichbares für OpenGL oder DirectX? _________________ "Dispatcher und Scheduler sind wie Brüder, bloß anders" |
|
Nach oben |
|
 |
HomeLess_PunkDrummer JLI Master Trainee

Alter: 36 Anmeldedatum: 28.11.2004 Beiträge: 583 Wohnort: Alter Joghurtbecher an der A4 Medaillen: Keine
|
Verfasst am: 12.03.2005, 10:31 Titel: |
|
|
std::map, eine für die Objekte(jedes einmal enthalten), und dann eine Struktur, für ein Objekt, in der nur noch die Daten die sich von Instanz zu Instanz unterscheiden können sind: CPP: | std::map<char*, 3DCube> m_mapCubeModel;
struct CubeStruct
{
CustomMath::CustomVector_3 vPos;
float Scale;
};
//Dann initialisieren
3DModel Model;
Model.Load("Cube.wtf");
Map["Cube.wtf"]=Model;
|
Diese tust du in einen std::vector, zb m_vecCubes.
Falls du sie bewgen willst: CPP: | for(long i=0; i<m_vecCubes.capacity() /*oderso*/; i++)
{
m_vCubes[i].vPos.Add(MovementVector);
} |
So mach ich das zumindest.
Gruß _________________ "Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz." |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 12.03.2005, 11:08 Titel: |
|
|
also, wenn man davon ausgeht, das du nur ein einziges Würfelobjekt hast, musst du ja eh jedesmal die Weltmatrix neu setzen.
Dafür könntest du dann einfache Matrizmultiplikation verwenden. -du hast meinetwegen eine Matrix für die Turmposition. Mit der Multiplizierst du nun imemr die Matrix die dei Positiotn des blockes im Turm angibt. Dann sind halt alle Positiontne quasi relativ. Du kannst wenn du die eine Matrix veränderst den Block relativ zum Turm bewegen. Veränderst du aber die andere Matrix bewegst du den gesamten Turm, wobei alle Objekte des Turms ihre relativen Postionen untereinander behalten.
Und das kannste dann natürlich beliebig vortsetzen. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
Catscratch1 Junior JLI'ler
Anmeldedatum: 20.01.2005 Beiträge: 98
Medaillen: Keine
|
Verfasst am: 12.03.2005, 11:26 Titel: |
|
|
Hmm danke.
@Jonathan_Klein Also ich mach das im Prinzip so wie du sagst.
Bloß ich finde es etwas umständlich, deswegen frag ich.
Ich geh nämlich davon aus, dass jede Matrix Multiplikation ziemlich viel Zeit kostet.
Da ich einen Turm aus 27 Würfeln bau, in einer Matrix 9 Türme habe, und die Matrizen 9 Mal anzeige, denke ich dass das ganz schön Zeit kostet.
Aber dann weiß ich schon mal, dass ich das vom Ansatz richtig habe.
Das mit der Map schau ich mir mal an.
Thx @ all _________________ "Dispatcher und Scheduler sind wie Brüder, bloß anders" |
|
Nach oben |
|
 |
PeaceKiller JLI Master

Alter: 36 Anmeldedatum: 28.11.2002 Beiträge: 970
Medaillen: Keine
|
Verfasst am: 12.03.2005, 13:14 Titel: |
|
|
Grafikarten sind eh nicht auf soviele Objekte ausgelegt.
Wenn du alles in einen Buffer kopierst und dann damit arbeitest ist das um einiges effektiver. (Stichwort "static geometry")
Für die Graka ist es nämlich ein Unterschied ob sie 1000-mal 2 Vertexe oder 2-mal 1000 Darstellt. _________________ »If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine |
|
Nach oben |
|
 |
Catscratch1 Junior JLI'ler
Anmeldedatum: 20.01.2005 Beiträge: 98
Medaillen: Keine
|
Verfasst am: 12.03.2005, 14:12 Titel: |
|
|
Schon klar.
Ich mach ja auch nen belastungstest.
Außerdem arbeite ich nur mit einem Vertexbuffer.
In dem liegt ein Würfel aus dem ich Türme und Matrizen baue _________________ "Dispatcher und Scheduler sind wie Brüder, bloß anders" |
|
Nach oben |
|
 |
HomeLess_PunkDrummer JLI Master Trainee

Alter: 36 Anmeldedatum: 28.11.2004 Beiträge: 583 Wohnort: Alter Joghurtbecher an der A4 Medaillen: Keine
|
Verfasst am: 12.03.2005, 14:15 Titel: |
|
|
das is ja auch richtig so. Man lädt ja auch jeden Mesh)bei statischen objekten) nur einmal... _________________ "Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz." |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|