d3d_set_Projection reihenfolge?

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

  • d3d_set_Projection reihenfolge?

    Hallo,
    irgentwie versteh ich die ganze d3d_set_preojection sache nicht richtig, vieleicht könnt ihr mir helfen. es geht um follgendes:
    wen ich ein object mache welches ich obj_cam genant habe und ihm im draw event diesen code gegeben habe:

    GML-Quellcode

    1. d3d_set_projection(x+xfrom,y+yfrom,z+zfrom,x,y,z,0,0,1)
    und mehrere andere objecte mir verschiedenen draw_wall...draw_ground ect. habe werden diese nur korrect dargestellt wen das obj_cam object eine niedrigere id hatt als die restlichen objecte. sollte die id höher sein werden diese objecte so dagestellt als ob der room 2d währe (also von oben).
    wen ich zusätzlich noch eine orthographische projection machen möchte (die einen HUD drawen soll) wird die camere um 180° gedreht und etwas verzehrt, egal ob dieser befehl vor oder hinder der 3dprojection durchgeführt wird.

    gibt es möglichkeiten zu sagen das, egal welche id das cam object hat, die d3d_set_projection(...) immer als erstes ausgeführt wird, und die ortho projection immer als letztes obwohl sie im selben object sind? (ich vermute das das mit der orthoprojection gehen solte wen es in einem object stehen würde das die höchste id besitzt.

    danke schonmal.
    :) Nobody is perfect (-:

    "Dummköpfe sind Denkerköpfen weit überlegen. Zahlenmäßig." Ernst Ferstl
  • also das es an der ID liegt glaube ich kaum. es könnte daran liegen, das alle objecte die selbe depth haben. die camera solle eine höhere depth haben als die objecte, die projezierte fläche eine niedrigere (glaube ich grad).
    das das bild mit projezierter fläche verzerrt wird, könnte daran liegen, das die größe der fläche nicht mit der camerawiete übereinstimmt. aber genaues kann ich auch nicht sagen.

    EDIT: und eigendlich muss der code so aussehen:

    GML-Quellcode

    1. d3d_set_projection(x,y,z, x+xfrom,y-yfrom,z+zfrom,0,0,1)

    also x,y, und z zuerst, dann die modifizierten x,y, zund z werte. und es muss y-yfrom heissen, es sei denn, du drehst den y-vector irgendwo um.
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • ich habe heute morgen ein paar versuche durchgeführt, und es kommt imer das selbe herraus, sobalt die camera id muss niedriger sein als die der objecte, zumindest wen die depth überall 0 ist. ich werde mal ausprobieren was passiert wen man die depthwerte verändert.
    das mit der orthographischen sache ist ebenfalls so eine sache, dort muss die id die größte sein (wieder bei gleichem depth wert).

    ps: der code (x+xfrom,y+yfrom,z+zform,x,y,z,0,0,1) stimmt schon, das habe ic zur besseren übersicht gebraucht (für andere sachen).
    :) Nobody is perfect (-:

    "Dummköpfe sind Denkerköpfen weit überlegen. Zahlenmäßig." Ernst Ferstl
  • eigendlich sollte die ID keine rolle spielen. es kommt darauf an, welche depth die objecte haben, bzw bei gleicher depth, in welcher reihnfolge sie im raum platziert werden.
    und dein cameracode ist einfach flasch herum. man kann sich das so vordtellen, das der cameraman die cam, flasch herum, also noch hinten zeigend auf den schultern hat. das klappt zwar auch, dreht aber einige werte um.
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • ich habs gelöst, danke win für die ide mit dem depth.

    zur id:
    nach meinen experimenten steht (zumindest für mich^^) definitiv fest das objecte mit einer niedrigeren id eher gedrawt werden als welche die eine höhere haben, zumindest solage sie den gleichen depth wert haben. @ win: die id wird ja abhängig davon wan sie plaziert werden generiert.
    zu cam und hud:
    die cam muss eine möglichst hohen depth wert besiten, das hud object einen möglichst kleinen, damit alles korrekt dargestellt werden kan, dan spielt auch die id keine rolle mehr.
    zu meinem code:
    das object camera soll bei mir nicht vom punkt x,y,z schauen, sondern auf diesem punkt, daher ist es umgekehrt. somit lässt sich viel besser feststellen ob sich die camera inerhalb des rooms befindet. man muss es sich so forstellen:
    wen man vom camera x,y,z punkt ganz unten am rand währe, könnte man onjecte die sich unter der camera befinden nicht sehen, da die camera einen 45° winkel besitzt. wen sie am oberen rand ist, sieht man nichts, da man vom room weg schaut. wen man aber auf die x,y,z punkt schaut kan das nicht passieren, da man wen man unten ist eigentlich schon auserhalb des room ist, bzw. wen man oben ist, noch innerhalb. wen du möchtest schicke dir dir die datei, dan kanst es dir selbst ansehen. (pn an mich)
    :) Nobody is perfect (-:

    "Dummköpfe sind Denkerköpfen weit überlegen. Zahlenmäßig." Ernst Ferstl
  • Benutzer online 1

    1 Besucher