Gleiche Größe der Objekt im 3D



  • xindon schrieb:

    Du kannst eine feste Größe für die drei Achsen festlegen und beim Laden von jedem Objekt schauen, wie groß dieses ist und daraus einen Skalierungsfaktor errechnen.
    Entweder skalierst du es dann gleich beim Laden oder eben vor jedem Rendern.

    Kannst Du es ein bisschen näher erklären. Leider ich bin nicht so genz fit in OpenGL. Danke



  • Ich hab mir grad nochmal deine Frage durchgelesen und ich glaub, dass ich dich vorher nicht richtig verstanden habe.

    Kannst du vielleicht einfach mal ein Screenshot oder sowas posten, dass man sieht, was du meinst. Ich kann mir unter Icon nicht wirklich was vorstellen.



  • skaliere das objekt entsprechend seiner tiefe.



  • xindon schrieb:

    Kannst du vielleicht einfach mal ein Screenshot oder sowas posten, dass man sieht, was du meinst. Ich kann mir unter Icon nicht wirklich was vorstellen.

    Ich habe 2 Screenshots vorbereiten. Leider weiß ich nicht, wie ich es hochladen kann. Ist es überhaupt möglich?

    Fallst es nicht geht kann ich sie Dir zuschicken.


  • Mod

    was du moechtest ist wohl dass sowas wie icons immer gleich gross sind, egal wie weit sie von der kamera entfernt sind. Bei perspektivischer projektion wird durch die entfernung zur camera geteilt, deine skalierung ist also die entfernung zur camera bzw die z tiefe im kameraspace. eventuell wird das objekt dann sehr gross sein, multiplizier es also noch mit einem konstanten skalierungswert z.b. 0.01f;

    rapso->greets();



  • das eigentlich problem ist doch, das zbuffering von perspektivischer und orthogonaler projektion unter einen hut zu bringen - was wahrscheinlich unmoeglich ist.
    ich vermute die einzelnen icons haben nur unterschiedliche tiefe um gegenseitige ueberlagerung zu definieren und z-fighting zu verhindern?



  • hellihjb schrieb:

    das eigentlich problem ist doch, das zbuffering von perspektivischer und orthogonaler projektion unter einen hut zu bringen - was wahrscheinlich unmoeglich ist.
    ich vermute die einzelnen icons haben nur unterschiedliche tiefe um gegenseitige ueberlagerung zu definieren und z-fighting zu verhindern?

    ??? z-Buffer ist z-Buffer
    @Krys hast du den Depth Buffer auch aktiviert?
    Und wann schaltest du wo von 3D in 2D um? Das ist mir noch nicht wirklich klar.
    Kannst doch alles in 3D machen.
    Sie mal zu das du deine Screenshots hochgelade kriegst^^



  • Krys schrieb:

    xindon schrieb:

    Kannst du vielleicht einfach mal ein Screenshot oder sowas posten, dass man sieht, was du meinst. Ich kann mir unter Icon nicht wirklich was vorstellen.

    Ich habe 2 Screenshots vorbereiten. Leider weiß ich nicht, wie ich es hochladen kann. Ist es überhaupt möglich?

    Fallst es nicht geht kann ich sie Dir zuschicken.

    http://imageshack.us
    da kannst du deine bilder hochladen...

    ndT Lupo

    Was ist ein guter Mensch? Ein guter Mensch ist der, der anderen wohl will und dabei vergißt, sich zu fragen, was er selber davon hat.
    ^Peter Amendt^



  • So, jetzt habe ich endlich geschafft meine zwei Screenshots auf einen Server hoch zuladen.
    Im ersten Screenshot schaut alles korrekt aus, so wie ich mich es vorgestellt habe. Im zweiten Bild, nachdem ich die Sicht verstellt habe, schaut es schon anders aus. Man sieht, dass die Icons durch das erste Fahrzeugmodell sichtbar sind, was nicht korrekt ist.
    Hier die Links:
    Screenshot 1: http://people.freenet.de/zawicki/scene01.png
    Screenshot 2: http://people.freenet.de/zawicki/scene02.png
    Ich hoffe, jetzt könnt ihr es besser verstehen, was ich damit gemeinet habe.



  • Hast du auch wirkich irgendwo

    glEnable(GL_DEPTH_TEST)
    

    stehen?
    Musst damit natürlich vor jedem neuen Renderlauf den Puffer wieder leeren zusammen mit dem Framebuffer.

    Du könntest auch probieren deine Icons per Textur auf die Flächen zu bekommen. Durch das Mapping kann dir dann die Größe egal sein, das wird dann angepasst.



  • Pellaeon schrieb:

    Hast du auch wirkich irgendwo

    glEnable(GL_DEPTH_TEST)
    

    stehen?

    Natürlich habe ich es in meinem Code am Ende stehen. Soweit ich weiß, wenn ich von 3D auf 2D mit glOrth umschalte, dann deaktiviere ich Depthtest mit

    glDisable(GL_DEPTH_TEST);
    glDepthMask(GL_FALSE);
    ... // von 3D auf 2D und wieder zurück zum 3D
    glDepthMask(GL_TRUE);
    glEnable(GL_DEPTH_TEST);
    

    Pellaeon schrieb:

    Durch das Mapping kann dir dann die Größe egal sein, das wird dann angepasst.?

    Und wie mache ich es?



  • Krys schrieb:

    Soweit ich weiß, wenn ich von 3D auf 2D mit glOrth umschalte, dann deaktiviere ich Depthtest mit

    Und wieso schaltest du ihn da aus? Lass ihn einfach an. Könnte sein, dass das dein Prob ist.
    Oder liegen deine Objekte dann alle in einer Ebene beim "2D-Modus"? Dann musst du die Reihenfolge beim Rendern beachten.

    edit: hab mir deinen Screenshot nochmal angesehen unde würde schon SEHR dazu tendieren, dass dein ausgeschalteter DepthBuffer die Ursache ist. Deine Icons werden wahrscheinlich nach den Boxen gezeichnet und ohne Depthtest überschreiben sie halt einfach die bestehenden Pixel



  • z-Buffer ist z-Buffer
    Und wieso schaltest du ihn da aus?
    Lass ihn einfach an.

    ganz so einfach ist die sache leider nicht.
    in orthogonaler projektion (w=1) verlaeuft z linear, in perspektive (homogene koordinaten) hyperbolisch.



  • Müsste sich aber hinbringen lassen wenn man die Projektionsmatrix etwas "tunt" so dass die z bzw. w Werte eben gleich wie in der Perspektivischen sind, x und y aber bleiben...


Anmelden zum Antworten