Problem bei der Ausrichtung der Normalen

  • GM 8

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

  • Problem bei der Ausrichtung der Normalen

    Folgendes Problem:
    Ich will ein beleuchtetes Dreieck(mit den 3d Funktionen) zeichnen. Dazu muss ich die Normalen entsprechend der Dreiecksoberfläche ausrichten. Wie kann ich dies Automatisch durch die Vertexkoordinaten erreichen.

    z.B
    normaltriangleX(x1,y1,z1,x2,y2,z2,x3,y3,z3) gibt dann den X Wert des normal Vektor für das Dreieck zurück. Alle Vektoren bei jeder Ecke des Dreieckes sollen in die gleiche Richtung schauen wie das Dreieck.


    Ihr würdet mir sehr helfen.
  • Das erreicht man mithilfe des Kreuzprodukts. Deine gewünschte Funktion könnte z.B. so aussehen

    GML-Quellcode

    1. var v1x, v1y, v1z, v2x, v2y, v2z, nx, ny, nz, l;
    2. v1x = argument3-argument0;
    3. v1y = argument4-argument1;
    4. v1z = argument5-argument2;
    5. v2x = argument6-argument0;
    6. v2y = argument7-argument1;
    7. v2z = argument8-argument2;
    8. // Kreuzprodukt
    9. nx = v1y*v2z-v1z*v2y;
    10. ny = v1z*v2x-v1x*v2z;
    11. nz = v1x*v2y-v1y*v2x;
    12. // normieren
    13. l = sqrt(sqr(nx)+sqr(ny)+sqr(nz));
    14. if (l == 0) {
    15. show_error("Degenerated triangle",false);
    16. } else {
    17. nx /= l;
    18. ny /= l;
    19. nz /= l;
    20. }
    21. return nx; // oder ny oder nz
    Alles anzeigen
  • Benutzer online 1

    1 Besucher