Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Schreiberling Mini JLI'ler
Anmeldedatum: 28.04.2007 Beiträge: 4
Medaillen: Keine
|
Verfasst am: 12.06.2007, 18:20 Titel: Grösse X-Files |
|
|
Hallo zusammen,
ich habe das Beispiel aus dem Buch (Kapitel 29) abgeändert um eine andere x-File zu laden. Das ganze klappt auch soweit, es gibt nur ein Problem, die x-File ist dan viel zu gross.
Wie kann ich die Grösse (mit gleichen Proportionen) einer x-File verändern? (die x-File ist nicht von mir selbst).
Bitte helft mir...
Gruss Schreiberling |
|
Nach oben |
|
|
51m0n JLI'ler
Alter: 33 Anmeldedatum: 06.01.2006 Beiträge: 167 Wohnort: Erkelenz Medaillen: Keine
|
Verfasst am: 12.06.2007, 18:31 Titel: |
|
|
Hi
Meinst du das Objekt, dass in der X-File enthalten ist? Wenn ja, dann solltest dur dir mal das angucken:
D3DXMatrixScaling
IDirect3DDevice9::SetTransform
Aber das wird in Kapitel 27 doch auch angesprochen oder?
Guck mal bei 27.2 Objekte rotieren und verschieben.
Wenn du dann eine Skalierungs-, Rotations- und Translationsmatrix hast, dann musst du die wie folgt multiplizieren, um die Endmatrix zu erhalten:
Scaling*Rotation*Translation
Diese musst du dann per SetTransform setzen und die Matrix wird für alle folgenden Objekte benutzt, die du renderst.
MfG 51m0n _________________ Teigwaren
heißen Teigwaren,
weil sie früher einmal Teig waren |
|
Nach oben |
|
|
Schreiberling Mini JLI'ler
Anmeldedatum: 28.04.2007 Beiträge: 4
Medaillen: Keine
|
Verfasst am: 12.06.2007, 18:44 Titel: |
|
|
hm,
ich dachte die TranslationMatrix wäre für die Verschiebung des Würfels da.
Also wird die TranslationMatrix mit dem der anderen beiden Matrixen multipliziert und ergibt so den neuen Matrixwert?
Kann ich dann einfach:
D3DXMatrixTranslation(&TranslationMatrix, 0.5f, 0.5f, 0.5f);
um die grösse zu halbieren?
oder red ich dummes Zeug? Sorry, anfänger
Gruss Schreiberling
EDIT:
Ich dachte die TranslationMatrix wird einfach hinzuaddiert um die Position zu ändern. Ich will aber das die Grösse des ganzen verändern (mit gleichen Proportionen, also eine Multiplikation/Division). |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 12.06.2007, 18:52 Titel: |
|
|
Translation ist verschiebung, Skalation vergrößern und Transformation kann ne ganze Menge sein (Transformation, Skalation, Rotation ...).
D.h. erstellst du eine Skalationsmatrix und hängst sie per Multiplikation an die Transformationsmatrix an. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
51m0n JLI'ler
Alter: 33 Anmeldedatum: 06.01.2006 Beiträge: 167 Wohnort: Erkelenz Medaillen: Keine
|
Verfasst am: 12.06.2007, 18:54 Titel: |
|
|
D3DXMatrixTranslation ist in der Tat nur für die Verschiebung da.
Du erstellst am Besten 3 Matrizen. Jeweils für Rotation, Skalierung und Translation. Diese füllst du dann mit den Entsprechenden Werten und am Ende muliplizierst du alle und du erhälst die Endmatrix, die du an SetTransform übergeben musst.
Bsp:
CPP: | D3DXMATRIX Transform; // Endmatrix
D3DXMATRIX Scaling;
D3DXMATRIX Rotation;
D3DXMATRIX Translation;
D3DXMatrixScaling(&Scaling, 0.5f, 0.5f, 0.5f); // Die Größe jeweils um die Hälfte verringern
D3DXMatrixIdentity(&Rotation); // keine Rotation
D3DXMatrixTranslation(&Translation, 10.0f, 0.0f, 4.0f); // Objekt verschieben
Transform = Scaling * Rotation * Translation; // Endmatrix erstellen
D3DDevice->SetTransform(D3DTS_WORLD, &Transform); // Matrix setzen |
In diesem Beispiel ist die Matrix Rotation überflüssig, weil das Objekt nich rotiert wird, habs vollständigkeitshalber mal dazugenommen. _________________ Teigwaren
heißen Teigwaren,
weil sie früher einmal Teig waren |
|
Nach oben |
|
|
Schreiberling Mini JLI'ler
Anmeldedatum: 28.04.2007 Beiträge: 4
Medaillen: Keine
|
Verfasst am: 12.06.2007, 19:19 Titel: |
|
|
ich danke!!! Es funktioniert!!!
51m0n for president. Eines Tages errichte ich dir für diese Tat einen Tempel |
|
Nach oben |
|
|
Schreiberling Mini JLI'ler
Anmeldedatum: 28.04.2007 Beiträge: 4
Medaillen: Keine
|
Verfasst am: 13.06.2007, 10:37 Titel: |
|
|
noch eine dumme Frage (sorry, hab Zeitprobleme bei meiner Projektarbeit).
Meine X-Files haben keine Texturen. Sind einfach nur (schnee)weiße Figuren.
Gibt es eine (möglichst einfache) Möglichkeit die Figuren in einer einzelnen Farbe einzufärben? (zB.: eine ganze Figur rot).
schonmal vielen dank im Vorraus.
EDIT: Hat sich erledigt, hatte einen Fehler in der Materialzuweisung. |
|
Nach oben |
|
|
|