JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=d505597bcfc44f9769f39433f9a0bfeaMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Objekte gruppieren

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Catscratch1
Junior JLI'ler



Anmeldedatum: 20.01.2005
Beiträge: 98

Medaillen: Keine

BeitragVerfasst am: 12.03.2005, 10:24    Titel: Objekte gruppieren Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
HomeLess_PunkDrummer
JLI Master Trainee


Alter: 36
Anmeldedatum: 28.11.2004
Beiträge: 583
Wohnort: Alter Joghurtbecher an der A4
Medaillen: Keine

BeitragVerfasst am: 12.03.2005, 10:31    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 12.03.2005, 11:08    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Catscratch1
Junior JLI'ler



Anmeldedatum: 20.01.2005
Beiträge: 98

Medaillen: Keine

BeitragVerfasst am: 12.03.2005, 11:26    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
PeaceKiller
JLI Master


Alter: 36
Anmeldedatum: 28.11.2002
Beiträge: 970

Medaillen: Keine

BeitragVerfasst am: 12.03.2005, 13:14    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Catscratch1
Junior JLI'ler



Anmeldedatum: 20.01.2005
Beiträge: 98

Medaillen: Keine

BeitragVerfasst am: 12.03.2005, 14:12    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
HomeLess_PunkDrummer
JLI Master Trainee


Alter: 36
Anmeldedatum: 28.11.2004
Beiträge: 583
Wohnort: Alter Joghurtbecher an der A4
Medaillen: Keine

BeitragVerfasst am: 12.03.2005, 14:15    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
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

Impressum