Fragen zu einem Schattierungsalgorithmus



  • rapso schrieb:

    Eigentlich ist es in oGL und d3d das gleiche von der implementierung her.

    Ich habe ja auch nichts Anderes behauptet. Das Prinzip ist dasselbe, aber bei Direct3D gibt es laut diesem Artikel einige Dinge bei der Texturprojektionsmatrix, die etwas komplizierter sind: http://developer.nvidia.com/attach/6811


  • Mod

    TomasRiker schrieb:

    rapso schrieb:

    Eigentlich ist es in oGL und d3d das gleiche von der implementierung her.

    Ich habe ja auch nichts Anderes behauptet.

    Bei der Implementierung gibt es da nämlich sehr viel mehr zu beachten als bei der Stencil-Buffer-Variante, vor allem bei Direct3D ist das ziemlich problematisch.

    😉

    ja, oGL hat glPolygon offset und bei d3d muss man sich die matrix selbst generieren, aber ob das als implementierungsunterschied durchgeht?. das alte paper kenn ich, aber die haben es endlich geschaft die paper vom letzten workshop online zu legen, da gibt es ja ein schönes neues paper, das problem ist dort einigermassen gut gelöst und in deren demo sah das auch fehlerfrei aus.

    rapso->greets();



  • rapso schrieb:

    TomasRiker schrieb:

    Bei der Implementierung gibt es da nämlich sehr viel mehr zu beachten als bei der Stencil-Buffer-Variante, vor allem bei Direct3D ist das ziemlich problematisch.

    😉

    Aussage: Implementierung Shadow-Map ist komplizierter als Stencil-Buffer-Variante. Bei Direct3D gibt es zudem noch zusätzliche Schwierigkeiten.


  • Mod

    TomasRiker schrieb:

    rapso schrieb:

    TomasRiker schrieb:

    Bei der Implementierung gibt es da nämlich sehr viel mehr zu beachten als bei der Stencil-Buffer-Variante, vor allem bei Direct3D ist das ziemlich problematisch.

    😉

    Aussage: Implementierung Shadow-Map ist komplizierter als Stencil-Buffer-Variante. Bei Direct3D gibt es zudem noch zusätzliche Schwierigkeiten.

    mit dem komma dazwischen klang es als würdest du dich mit "besonders problematisch" auf die implementierung beziehen.... wir korrintenkacker wir.

    rapso->greets();



  • zu 1) Ok, funktioniert jetzt eigenltich genau wie Texturemapping, nur das nicht die TexCoords sondern die Vektoren der Eckpunkte interpoliert werden.

    zu 2) Occluder= Verdecker, early out test= früh raus Überprüfung (kauf dich mal ein Wörterbuch)

    Bye, TGGC \-/



  • TGGC schrieb:

    zu 2) Occluder= Verdecker, early out test= früh raus Überprüfung (kauf dich mal ein Wörterbuch)

    dich auch 😉

    Danke für die Hilfe.



  • das imho beste deutsch -> englisch und umgekehrt wörterbuch ist:

    http://dict.leo.org



  • dot schrieb:

    das imho beste deutsch -> englisch und umgekehrt wörterbuch ist:

    http://dict.leo.org

    na also, einen Thread zu einem Schattierungsalgorithmus muss man aufmachen, um einen Tipp für ein Wörterbuch zu erhalten! 🙄



  • randa schrieb:

    TGGC schrieb:

    zu 2) Occluder= Verdecker, early out test= früh raus Überprüfung (kauf dich mal ein Wörterbuch)

    dich auch 😉

    Danke für die Hilfe.

    Immer wieder gern.

    Bye, TGGC \-/



  • Hi leute
    Ich steck gerade bei der Implementierung meines Algorithmus fest. Ich hab schon rumgeschaut und stundenlang dagesessen und versucht es zu verstehen, aber ich raffs nicht ganz. Ich rede von der Bestimmung des Schnittpunkts zwischen Gerade und Ebene. Der Hauptgrund, warum ichs nicht verstehe liegt wohl an meinen 5en in Mathe, konstant über viele Jahre hinweg 😉
    Gegeben sind mir: Anfangs und Endpunkt der Gerade, die Eckpunkte der Fläche (mit denen ich die Ebene beschreiben kann). Leider kann ich mit der Parameterform von Ebene nix Anfangen und die Gleichungen dazu übersteigen dass, was ich in Mathe gelernt habe, weit.
    Vielleicht wäre jemand so nett und würde sich die Mühe machen, mir einen pragmatischen Ansatz zur Bestimmung des Schnittpunkts zu geben. Vor allem die Determinante, die dazu notwendig ist, begreife ich nicht ganz.

    Soviel ich verstanden habe, kommt aus der Formel der Skalierungsfaktor (Lamda) raus, den ich mit der Gerade multiplizieren muss, um auf den Schnittpunkt zu kommen.

    Die Tatsache, dass es dazu scheinbar mehrere Lösungsvarianten gibt, verwirrt mich zusätzlich.

    Wäre dankbar für eine (mehr oder weniger) umfassende erklärung.



  • Auf meiner Homepage gibt es Tutorials zur 3D-Kollisionserkennung, und dieses spezifische "Problem" wird da auch behandelt.



  • danke vielmals 🙂
    sieht vielversprechend aus und ich werds mir anschauen.



  • Es ist so ermüdend. Folgendes problem qäult mich seit zwei tagen:
    (pseudocode)

    bool Kollision (Polygon Poly, Vector RayStart, Vector RayEnd)
    {
        Vector Dir (RayEnd-RayStart);
    
        float Alpha=dot_product (dir, Poly.Normalvector);
    
        float Determinante=-dot_product (Poly.Eckpunkt1, Poly.Normalvector);
        //... 
        float Beta=(dot_product (Poly.Normalvector, RayStart)+Determinante)/-Alpha;
    
        Vector Intersection;
        //Liegt nicht auf der Strecke
        if (Beta<0.0f || Beta>1.0f) return false;
        else Intersection=RayStart+(Dir*Beta);
    
        float Winkel[10];
        Vector VektorenZuDenEckpunkten[10];
    
        //...Mit null initialisieren...
    
        for (int i=0; i<10; i++)
        {
            VektorenZuDenEckpunkten[i]=Polygon.Eckpunkt[i]-Intersection;
        }
        for (int i=10-1, x=0; x<10; i=x, x++)
        {
            Winkel[i]=dot_product (VektorenZuDenEckpunkten[i], VektorenZuDenEckpunkten[x]);
        }
    
        float Summe=0.0f;
        for (int i=0; i<10; i++) Summe+=Winkel[i];
    
        //Hier prüfe ich in wirklichkeit auf einen Tolranzbereich um 2PI herum
        if (Summe==2*PI) return true;
        else return false;
    }
    

    Da stimmt was überhaupt nicht, aber ich komme nicht drauf. Der Anfangsteil des Algorithmus stammt von der Scherfgen-site von den tutorials. Das mit den Winkeln hab ich selber gemacht.
    Wäre nett wenn sich jemand die Mühe macht das Mathematisch und Implementierungstechnisch zu überprüfen. Hier soll geprüft werden, ob die Summe aller Winkel der Vektoren zu den Eckpunkten des Polygons kleiner oder gleich 360 grad ist (auch erwähnt auf der scherfgen seite).



  • Meine Kristallkugel sagt: mach weiter!

    Bye, TGGC (Zu viele Primitve hier.)



  • TGGC schrieb:

    Meine Kristallkugel sagt: mach weiter!

    Meine sagt, ich sollte erstmal den Fehler hier finden.
    Kannst du verifizieren, ob das hier richtig ist? Bzw wo der Fehler steckt (ich vermute in der ganzen Winkelsache, aber ich weiß beim besten willen nicht woran es liegen könnte).



  • randa schrieb:

    Kannst du verifizieren, ob das hier richtig ist?

    Könnte ich, wenn du mich entsprechend bezahlst.

    Bye, TGGC (Reden wie die Großen)



  • TGGC schrieb:

    Könnte ich, wenn du mich entsprechend bezahlst.

    Mir zu helfen ist bezahlung genug.


Anmelden zum Antworten