3D Modell beim erstellen drehen

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 3D Modell beim erstellen drehen

    Ich hätte kurz eine ganz simple und womöglich auch dämliche Frage:

    besteht die möglichkeit ein erstelltes Modell (z.B: beim import) um eine Spezielle Achse drehen zu lassen? Dies hätte den netten Effekt dass man im 3D Event nicht jedesmal "nachjustieren" müsste falls das Modell um 90 grad gedreht modelliert wurde. Wenn ich das drehen nur 1 mal im Create event machen würde anstatt jedes draw-Event wie z.B:

    GML-Quellcode

    1. d3d_transform_set_identity();
    2. d3d_transform_add_rotation_z(direction);
    3. d3d_transform_add_translation(x,y,0);

    würde das 1. Performance sparen
    2. Den code weniger verwirrend erscheinen lassen...

    Womöglich ne simple frage, aber ich habe dies noch nie hinbekommen. (konnte die transformation nicht im create event anweden.)

    Hoffe jemand kann mir da raushelfen. ^^
  • Ich würde einfach das Modell, mit einem 3d Programm, um 90 Grad drehen lassen. Denn die Transformationen beziehen sich nur auf's Zeichnen. Oder man muss selbst die Rotations Matrix schreiben, die dann entsprechend beim Laden ausgeführt wird. Dazu müsste man aber den Code der beim Laden der Modelle entsprechend ändern, indem man den Virtex, der für das Modell hinzugefügt wird , seine x und y Koordinate um den Mittelpunkt drehen lässt. Falls du eine DLL oder d3d_model_load(ind,fname) benutzt, gibt es keine andere Möglichkeit als das Model schon vornerein drehst oder die transformationen beim Zeichnen (die Wirklich nicht viel Performance verbrauchen) benutzt. Wenn sich das Modell im Spiel dreht, kommst du ohnehin nicht von den transformationen weg.
  • Das wäre der normalfall wie man es machen würde.

    Ich aber würde gerne diese Transformation nur 1 mal (z.B: im Create Event) vollziehen, sodass das gezeichnete Modell schon bereits gedreht ist und keine tranfsormation mehr im Draw event braucht.
    Mir geht es dabei speziell um 3D Modelle die ich aus blender exportiere. Diese mus ich vor dem exportieren immer "verdrehen" damit die Achsen im GM richtig übernommen werden. Dies ist aber nach jeder Vertex-änderung recht umständlich und kostet nur Modellierungszeit. Darum dachte ich mir dass man das Modell beim Laden in den GM doch iwie "verdrehen" müsste sodass es nicht z.B: Schief gedrawt wird anstatt wie in Blender "normal" stehend.
    Ich habe nähmlich beobachten können das die Transformation doch bei sehr vielen 3D Objekten Performance fressen kann. Diese Performance möchte ich nur ungern verschenken.
  • Du optimierst an der falschen Stelle.
    Alle Vertices die du renderst werden sowieso auf Direct3D-Ebene transformiert, auch mit der Identitätsmatrix. D.h. der größte Aufwand, nämlich die Matrixmultiplikationen, ist immer da.
    Durch das vorherige Drehen würde nur der Overhead durch den Funktionsaufruf verschwinden, den man vernachlässigen kann. Außerdem müsstest du, wie Chris schon erwähnt hat, den Ladecode manipulieren und wissen wie Matrixmultiplikation geht bzw. wie eine Rotationsmatrix aussieht. Ist das den Ärger wert?

    @ Domis: Nein, es ändert nur die Worldmatrix, die Geometrie des Modells bleibt gleich.

    © 2008 by Teamgrill Productions
  • Mir geht es dabei speziell um 3D Modelle die ich aus blender exportiere. Diese mus ich vor dem exportieren immer "verdrehen" damit die Achsen im GM richtig übernommen werden. Dies ist aber nach jeder Vertex-änderung recht umständlich und kostet nur Modellierungszeit. Darum dachte ich mir dass man das Modell beim Laden in den GM doch iwie "verdrehen" müsste sodass es nicht z.B: Schief gedrawt wird anstatt wie in Blender "normal" stehend.
    Ich habe nähmlich beobachten können das die Transformation doch bei sehr vielen 3D Objekten Performance fressen kann. Diese Performance möchte ich nur ungern verschenken.


    Wie wärs, wenn du in den Editmode wechselst, dann auf Top-View gehst und dann das Modell rotierst?
    Das wären 10 Sekunden und es würde richtig exportiert werden, da die Änderungen im Editmode gemacht wurden
    und die Transformation so bei den einzelnen Vertexen gemacht wurde und nicht in der obejct data.
    Modellierst du nicht aus den Orthos, sondern aus der normalen Perspektive? Davon würde ich dir abraten.

    EDIT: Joa, k.A. über was genau du dich aufregst. So ein Aufwand is doch ganz normal ...?
  • Wie wärs, wenn du in den Editmode wechselst, dann auf Top-View gehst und dann das Modell rotierst?
    Das wären 10 Sekunden und es würde richtig exportiert werden, da die Änderungen im Editmode gemacht wurden


    Wenn man aber jedoch das Modell ziemlich oft "bearbeiten" muss, gehen einem die 10 Sekunden. (bzw das Rotieren, bearbeiten,zurücrotieren) ziemlich auf den Keks.
    > Man will ja effizient arbeiten. Wenn man das Modell z.B: feintunen möchte (um es ingame zu testen) könnte es ja sein dass man z.B: irgendwelche Vertices verschieben möchte und nach jeder Verschiebung /erweiterung das Modell speichern und ins Spiel laden möchte. Wenn einem dazwischen das hin und zurückrotieren in den Weg kommt....

    Modellierst du nicht aus den Orthos, sondern aus der normalen Perspektive? Davon würde ich dir abraten.

    Ich modelliere meistens in der Orthographischen Perspektive. Manchmal aber auch in der normalen. Kommt ganz darauf an welche gerade benötigt wird. :P
    Na gut, da dies anders wohl nicht wirklich gehen wird, werde ich die transformation im Draw-Event machen.

    Danke euch allen für die Hilfe!
  • Dann machst du eben in der Test Phase die Rotation im
    Draw Event und wenn es fertig ist im fertigen Modell.
    Dann ist die Performance am Schluss sogar wesentlich besser
    als sie es wahrscheinlich sonst wäre.

    Aber beim GM 8.1 musst man eigentlich schon zeimlich viel falsch
    machen, damit man im 3D Modus schlecht performance bekommt. :troll:
  • Hast du schon gecheckt, ob es in Blender nicht eine Funktion gibt, die beim Exportieren die Achsen vertauscht? Daran dürfte es nämlich liegen. Weil es bei verschiedenen Programmen verschiedene Koordinatensysteme gibt, gibt's auch bei vielen Modellern die Möglichkeit beim Exportieren y und z Achse zu vertauschen.

    © 2008 by Teamgrill Productions
  • Aber beim GM 8.1 musst man eigentlich schon zeimlich viel falsch
    machen, damit man im 3D Modus schlecht performance bekommt. :troll:

    Naja... kommt darauf an. Der GM ist ja in Punkto 3D auch nicht mit einer Engine wie Cryeinge oder UDK vergleichbar. :P
    Bei mir fing es an zu laggen als ich etwa 6*6 Objekte hatte die alle 2 Flächen (die modelle waren) im Raum zeichnete. Dabei wurde einer der Flächen im Draw-Event mit einer transformation behandelt. Dies hat komischerweise noch stärkere laggs hervorgebracht. Ich muss beim GM einfach etwas mehr aufpassen.^^

    Hast du schon gecheckt, ob es in Blender nicht eine Funktion gibt, die beim Exportieren die Achsen vertauscht? Daran dürfte es nämlich liegen. Weil es bei verschiedenen Programmen verschiedene Koordinatensysteme gibt, gibt's auch bei vielen Modellern die Möglichkeit beim Exportieren y und z Achse zu vertauschen.


    Holy s***, da gibts wirklich ne Funktion dafür. O.O (Zumindest scheint sie es zu sein.)
    Danke für den Hinweis. ^^'

    Müsste jetzt nurnoch genauer schauen welche Achsen ich beim Export vertauschen müsste. Mein Denkvermögen in der 3ten Dimension ist mehr als dürftig. XD

    thx!
  • LEWA schrieb:

    Zitat


    Hast du schon gecheckt, ob es in Blender nicht eine Funktion gibt, die beim Exportieren die Achsen vertauscht? Daran dürfte es nämlich liegen. Weil es bei verschiedenen Programmen verschiedene Koordinatensysteme gibt, gibt's auch bei vielen Modellern die Möglichkeit beim Exportieren y und z Achse zu vertauschen.

    LEWA schrieb:

    Holy s***, da gibts wirklich ne Funktion dafür. O.O (Zumindest scheint sie es zu sein.)
    Danke für den Hinweis. '
    Hi,

    weiß jemand, ob es so eine funktion auch im AC3D gibt? finde nichts...

    wie im tutorialarchiv bereits erwähnt, habe ich probleme, sowohl model als auch die culling true surfaces richtig zu übernehmen :(

    Danke, OC
    Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
    (Albert Einstein)
  • Benutzer online 1

    1 Besucher