Kugel und eine Textur drumherum



  • Ich habe mit Direct3D eine Kugel erzeugt und eine Textur herumgelegt. Sieht ja ganz gut aus, bis auf eine Kleinigkeit: Er zeichnet auf die Kugel eine Linie, die die Komplette Textur nochmal enthält, nur sehr gestaucht. Gibt es eine Möglichkeit, das zu vermeiden?

    Danke schonmal, Streusselkuchen.



  • letzte reihe von vertices 2 mal adden (einmal am start, einmal am ende) mit einmal texturkoord. von 0 und einmal mit 1



  • Ist eigentlioch komplett logisch, wenn man das mal etwas überdenkt.

    Bye, TGGC (Demo or Die)



  • Hi,

    für alle die nicht denken wollen: Die Texturkoordinaten beginnen bei 0.0 und laufen einmal um die Kugel herum mit 0.2, ..., 0.4, ..., 0.6, ..., 0.8, ... und dann stoßen sie beim Schließen der Kugel leider wieder auf 0.0 statt auf 1.0f. Daher wird auf diesem schmalen Streifen die Textur von sagen wir mal 0.8 bis 0.0 gemappt, was fast der gesamten Textur entspricht obwohl in diesem Bereich die Textur natürlich von 0.8 bis 1.0f liegen sollte.

    Leider ist das Problem nicht ganz so einfach zu lösen wenn man das Mesh der Kugel durch Viewer-abhängiges LOD generiert wo benachbarte Triangle anhand der Indices ihrer Kanten identifiziert werden 😞

    Ciao,
    Stefan



  • Stefan Zerbst schrieb:

    Leider ist das Problem nicht ganz so einfach zu lösen wenn man das Mesh der Kugel durch Viewer-abhängiges LOD generiert wo benachbarte Triangle anhand der Indices ihrer Kanten identifiziert werden

    Die Tris gelten halt als nicht verbunden, wegoptimiert werden können sie ohnehin nicht.

    Bye, TGGC (Demo or Die)



  • Hää ist ja egal ob dann wieder bei 0 ankommst.. Kannst ja die Vertices nochmal benutzen..



  • Hi,

    @dali
    Das Problem ist, dass die Texturkoordinaten dann von 0.8 bis 0.0 gehen.Oder vielleich wird es anders herum deutlicher:von 0.0 bis 0.8 obwohl sie von 0.8 bis 1.0f laufen sollten.

    @TGGC
    Leider müssen die Triangles aber alle je drei Nachbarn haben damit das ganze vernünftig wird wenn man am Anfang von einem Würfel ausgeht und den durch ROAM o.ä. dynamisch tesseliert. Und wenn man dann noch für schnelle Nachbarschaftstests die Pointer auf die Vertices (oder die Indices) vergleicht dann hat man da schon ein Problem.

    Zum einen "kennt" man den Rand wo man Duplikate bräuchte nicht von vornherein. Zum anderen würde man bei Tesselierungen in diesem "Problemstreifen" immer auch den Effekt haben, dass anfangs eingefügte Duplikate dann eigentlich überflüssig werden weil man in dem Bereich mehr Triangles hat und sich der Problembereich weiter zur Seite verschiebt.

    Einfach zu lösen ist das wenn man die Vertexliste jedes mal komplett neu aufbaut. Aber wen man die Vertexliste erhalten möchte dann scheint das Einfügen von Duplikaten keine gute Lösung zu sein. Was besseres ist mir bisher aber auch nicht eingefallen.

    Ich lasse mich da gerne gedanklich anschubsen.

    Ciao,
    Stefan



  • TGGC schrieb:

    Ist eigentlioch komplett logisch, wenn man das mal etwas überdenkt.

    Jupp, so weit hab ich ja auch schon gedacht, ich weiß ja, warum er das so macht. Da ich aber in Direct3D noch neu bin (Das kugel Programm ist immerhin mein erstes Direct3D-Programm) und zB.: den Culling Mod so schön finde, dachte ich, dass es so was ähnliches für Texturen gibt...

    Die Kugel wird generiert, (also mit sqrt & cosf usw.! cosf, damit das Ganze halbwegs gleichmäßig wird) ich weiß daher, wo der Punkt ist, wo die Textur nochmal zurück geht...

    Also ich kann ja nochmal die Verticen kopieren (Am Rand, nicht alle), ist das nicht aber ein Nachteil für die Performance?

    ->Wie gesagt, ich bin hier noch sehr neu<-

    Gruß Streusselkuchen.



  • Streusselkuchen schrieb:

    [...] ich weiß daher, wo der Punkt ist, wo die Textur nochmal zurück geht. Also ich kann ja nochmal die Verticen kopieren (Am Rand, nicht alle), ist das nicht aber ein Nachteil für die Performance?

    Stefan Zerbst schrieb:

    Das Problem ist, dass die Texturkoordinaten in der letzten "Spalte" der Kugel dann von 0.8 bis 0.0 gehen. Oder vielleich wird es anders herum deutlicher: von 0.0 bis 0.8 obwohl sie von 0.8 bis 1.0f laufen sollten.

    Sprich, wo die letzte Spalte Vertices mit der ersten Spalte verbunden wird musst Du Duplikate einfügen wobei die u Texturkoordinaten dabei nicht 0.0f, sondenr 1.0f ist. Auf die Performance drückt das kein bißchen bei modernen Grafikkarten, es sei denn Deine Kugel verwendet so schon ein paar 10000 Triangles.

    Ciao,
    Stefan



  • @Stefan Zerbst:
    Ok, mach ich das dann so 🙂

    Gruß Streusselkuchen



  • Stefan Zerbst schrieb:

    @TGGC
    Leider müssen die Triangles aber alle je drei Nachbarn haben damit das ganze vernünftig wird

    Dann ist ein solcher Algo ziemlich nutzlos, denn für die meisten Modelle gilt sowas einerseits wegen der Texturen andererseits de harten Kanten nicht.

    Bye, TGGC (Demo or Die)


Anmelden zum Antworten