Ich versuche ein "3D-Band" mit einer einzigen 3D-kubischen Bézier-Kurve zu rendern (die Breite des Bandes ist konstant). Dem ersten und letzten Kontrollpunkt ist ein Normalenvektor zugeordnet (der immer senkrecht zu den Tangenten an diesen Punkten steht und die Oberflächennormale des Bandes an diesen Punkten beschreibt), und ich versuche, den Normalvektor gleichmäßig zu interpolieren der Verlauf der Kurve.Wie berechnet man die Normalen von Punkten auf einer 3D-kubischen Bézier-Kurve bei Normalen für ihre Start- und Endpunkte?
Zum Beispiel sollte bei einer Kurve, die den Buchstaben "C" bildet, der erste und der letzte Kontrollpunkt beide Flächennormalen nach oben zeigen, das Band flach, parallel zum Boden, langsam drehen und dann flach enden wieder, in der gleichen Weise wie der erste Kontrollpunkt. Um dies "reibungslos" zu tun, müsste es nach der Hälfte der Kurve nach außen zeigen. Im Moment (für diesen Fall) konnte ich nur alle Oberflächen nach oben (und nicht nach außen in der Mitte) bringen, was einen hässlichen Übergang in der Mitte erzeugt.
Es ist ziemlich schwer zu erklären, ich habe einige Bilder von diesem Beispiel mit dem, was es derzeit aussieht (alle Oberflächen nach oben, scharfe Flip in der Mitte) und wie es aussehen sollte (sanfter Übergang, Oberflächen langsam drehen Sie sich um). Silberne Gesichter stehen für die Vorderseite, schwarze Gesichter für die Rückseite.
falsch, was es sieht derzeit wie:
Correct Ribbon http://img211.imageshack.us/img211/4659/ribbonincorrect.th.png
Richtige, was es sollte wie folgt aussehen:
Incorrect Ribbon http://img515.imageshack.us/img515/2673/ribboncorrect.th.png
Alles, was ich wirklich brauchen, um in der Lage zu berechnen dieser "hybride Normalvektor" für irgendeinen Punkt auf der kubischen Bézier-3D-Kurve, und ich kann die Polygone kein Problem erzeugen, aber ich kann nicht herausfinden, wie man kommt Sie drehen sich wie abgebildet gleichmäßig um. Völlig fest, wie es weitergeht!
Das Bild scheint darzustellen, was ich suche, aber ich habe Schwierigkeiten, die verwendeten Gleichungen zu verstehen. Insbesondere bin ich nur mit C-ähnlichen Sprachen vertraut ... Ich nehme nicht an, dass Sie die Gleichungen etwas mehr erklären könnten? – Robert
@Robert Kein Problem, aber ich möchte kein Buch schreiben. Das sind mathematische Funktionen. Wenn Sie mich wissen lassen, wo Ihr Problem ist, könnte ich versuchen zu helfen! –
Okay, ich bekomme deine mathematischen Funktionen - ich war verwirrt auf deiner Kreisgleichung. Habe ich richtig gedacht, dass die erwähnte orthogonale Ebene mehr oder weniger das ist, was ich berechnen muss? Ist die Oberflächennormale dieser Ebene (an einer Position t) derselbe Vektor, den ich zu berechnen versuche? Ich habe die parametrischen Gleichungen meines Bézier zur Hand und habe ihre Ableitungen berechnet, um die Tangente zu finden, also werde ich vielleicht morgen, wenn ich nicht müde bin, versuchen, sie in die Praxis umzusetzen. In der Zwischenzeit, vielen Dank für Ihre Hilfe! – Robert