Deform Curves on Surface Node
The Deform Curves on Surface node translates and rotates each curve based on the difference in its root position. The root position is defined by UV coordinates stored on each curve and the UV Map selected for the purpose in the Curves surface settings.
The transformation is calculated based on the difference of the original mesh (before shape keys and modifiers are evaluated), and the final mesh.
Unlike other geometry nodes, this node has quite a few implicit inputs:
The original and evaluated mesh are retrieved from the modifier object's surface property. This means the node only works for curves objects.
The original and evaluated UV map are also retrieved from the object's surface property.
A 3D vector attribute named
rest_position, used for calculating tangents for rotating curves that are consistent with the tangents calculated on the original mesh (the rotation needs to be calculated from the normal and tangent of the original and evaluated meshes).
A 2D vector attribute on the curve domain named
surface_uv_coordinateto store the location of the root positions on the surface mesh's UV map.
In future development, this node will be generalized so the setup is more flexible.
Parts of the internal operation are similar to the Sample UV Surface Node.
In order to achieve consistent deformation after the Subdivision Surface(サブディビジョンサーフェス)モディファイアー,
the UV Smooth option of the modifier should be set to None. Otherwise the surface UV map will
be subdivided in a way that may invalidate the curve UV attachement points stored in the
Standard curves input.
Standard curves output.