Ankündigung

Einklappen
Keine Ankündigung bisher.

Berechnung der 'Form' von Haar-Partikeln

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Python Berechnung der 'Form' von Haar-Partikeln

    Hallo zusammen,

    ich versuche mich gerade an einem Skript was Haar-Partikel in Kurven konvertieren kann. Gibt es m.W.n nicht und: 'hair -> mesh -> curve' ist nicht das Selbe.
    Jetzt wird die Breite der Partikel in der Länge über einen 'Shape'-Wert eingestellt dessen Tun ich nicht verstehe.

    Die Doku sagt dazu nur: "Shape
    A shape parameter that controls the transition in thickness between the root and tip. Negative values make the primitive rounded more towards the top, the value of zero gives makes the primitive linear, and positive values makes the primitive rounded more towards the bottom."

    Und in der API steht auch nichts.
    Hier sieht man noch schön wie das Ergebnis aussieht:
    https://docs.blender.org/manual/en/l...trands-shading

    Weiß jemand zufällig wie die Berechnung dazu aussehen oder wo ich die Definition dazu finden kann?

  • #2
    Also da in der Dokumentation wird das ansich gut erklärt. Was fehlt, ist eine Grafik, wie diese Shapes zustande kommen. Die Form wird durch eine Kurve mit zwei Ankerpunkten und einem Handle bestimmt. Also genauso wie bei einer Nurbs oder einem Path - nur eben mit lediglich drei Punkten. Der Wert unter Shape bestimmt die Z-Position des Handles. Je höher der ist, desto stumpfer wird die Spitze bzw. der Tip. Im Grunde ist das eine einfache Taper-Curve, wie sie jeder anderen Kurve auch gegeben werden kann. Das müsste natürlich auch per Python und mit etwas komplexerem Taper gehen, indem du den Haar-Kurven bzw. dem Bevel dieser Kurve einen Taper zuweist.

    Die Einstellung für den im Partikelsystem verbauten Hair-Taper findest du beim Cycles Render im Partikelsystem ganz unten. Wie in der Dokumentation beschrieben, ist der Wert für Shape entscheidend. Die Ankerpunkte sind praktisch Root und Tip.

    Ich habe hier noch ein Beispiel gefunden, wie das aussieht. Gleich oben links, das erste Beispiel: https://pomax.github.io/bezierjs/
    Aktuell: W E I H N A C H T S W I C H T E L N Mein Blog: Downtown Blendpolis.

    Kommentar


    • #3
      Hi,
      danke für die schnelle Antwort.

      Das es etwas mit einer Kurve zu tun hat dachte ich mir auch schon. Allerdings ist mir der Aufbau dieser nicht klar um damit die Form zu den Shape-Werten zu beschreiben.
      Ich hab mal ein wenig mit den Kurven in Blender rumexperimentiert und denke eine einigermaßen passende Beschreibung gefunden zu haben.
      Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Anmerkung 2018-12-06 144941.jpg Ansichten: 1 Größe: 7,3 KB ID: 21144
      Von Oben nach unten wäre das jetzt der Shape: (0.999*, 0.5, 0, -0.5, -1)
      *) Bei einem Shape von 1 setzt er tip-width auf root-width

      Jetzt muss ich nur noch das ganze irgendwie ins Skript einbauen.

      P.S. ich las das Thema noch mal offen falls sich meine Idee doch als Falsch entpuppt.

      Kommentar


      • #4
        So ganz passt das leider noch nicht.
        Wie man in dem Testrender sieht ist die rechte Form insgesamt etwas breiter.
        Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Hait2Curve-test1.png
Ansichten: 1
Größe: 8,9 KB
ID: 21147
        (Shape 0.667; Links: Partikel-Haar; Rechts: nach Konvertierung)

        Das Problem ist, dass ich meine Kontrollpunke der Kurve nicht weriter nach außen bringen kann ohne im Intervall 0-1 zu bleiben.

        Kommentar


        • #5
          Also wenn du ein komplexes Haar-Script schreiben willst, sollte dir klar sein, dass das irre viel Rechenkapazität braucht. Ich hoffe daher, du verfügst über eine gute Grafikkarte. Ich habe mich selbst nur kurz mit Haaren befasst, wein meine Mittelklasse-Karte da gar nicht damit zurecht kommt. Es gibt auch einfachere Wege, natürliche Haare zu simulieren. Oder hast du etwas ganz Spezielles vor?
          Aktuell: W E I H N A C H T S W I C H T E L N Mein Blog: Downtown Blendpolis.

          Kommentar


          • #6
            Ne das geht schon. Bisher läuft mein Notepad selbst auf 4K ruckelfrei.

            Scherz beiseite. Hab ne dicke GK, die auch größere Mengen an Kurven flüssig angezeigt bekommt.
            Ich benötige die Berechnung zur Dicke aber nur einmal und kann die Werte für die Knoten Cachen. Alle Haare eines Partikelsystems haben dieselbe Anzahl an Knoten.
            Leider hat die Knotenanzahl mal wieder überhaupt nichts mit der Darstellung der Haare zu tun. Ein Problem mit dem ich mich später befassen werde.

            Mir geht es bei dem Skript primär um 2 Dinge:
            1. Ein brauchbares UV-Mapping der Haare zu erziehlen. Da Kurven automatisch UV-gemappt werden können ist das ideal.
            2. Die Dicke der Haare beizubehalten, was durch die Funktion: Partikel -> Mesh verloren geht.

            Kommentar

            Lädt...
            X