Page MenuHome

WIP: new normal mode based on curvature vector (minimal energy)
Needs ReviewPublic

Authored by Weizhen Huang (weizhen) on Jan 10 2023, 3:29 PM.

Details

Summary


Compute curve normal direction by minimizing the total potential energy due to torsion (twist) and bending. The end effect is a linear interpolation between the curvature vector and the minimal twist normal.

For a fixed deformation angle, the change in potential energy depends on the material and the cross-section shape. This normal mode is intended for elliptical hairs, the exact values of which can be looked up in the literature. By manually specifying an interpolation weight, this normal mode can be used for other shapes and materials.

This normal mode is only implemented for Catmull-Rom curve type, as in Cycles control points are interpolated via Catmull-Rom. Can be generalized to other curve types if proved useful.
Computing the minimal energy involves numerial root finding, implemented in function find_root_newton_bisection(). Typically 3 iterations are required to find the root, larger values of 10+ are possible.

Diff Detail

Repository
rB Blender
Branch
master
Build Status
Buildable 25303
Build 25303: arc lint + arc unit