Changeset View
Changeset View
Standalone View
Standalone View
source/blender/nodes/geometry/nodes/node_geo_input_tangent.cc
| Show All 18 Lines | |||||
| #include "BKE_spline.hh" | #include "BKE_spline.hh" | ||||
| #include "node_geometry_util.hh" | #include "node_geometry_util.hh" | ||||
| namespace blender::nodes { | namespace blender::nodes { | ||||
| static void geo_node_input_tangent_declare(NodeDeclarationBuilder &b) | static void geo_node_input_tangent_declare(NodeDeclarationBuilder &b) | ||||
| { | { | ||||
| b.add_output<decl::Vector>("Tangent"); | b.add_output<decl::Vector>("Tangent").field_source(); | ||||
| } | } | ||||
| static void calculate_bezier_tangents(const BezierSpline &spline, MutableSpan<float3> tangents) | static void calculate_bezier_tangents(const BezierSpline &spline, MutableSpan<float3> tangents) | ||||
| { | { | ||||
| Span<int> offsets = spline.control_point_offsets(); | Span<int> offsets = spline.control_point_offsets(); | ||||
| Span<float3> evaluated_tangents = spline.evaluated_tangents(); | Span<float3> evaluated_tangents = spline.evaluated_tangents(); | ||||
| for (const int i : IndexRange(spline.size())) { | for (const int i : IndexRange(spline.size())) { | ||||
| tangents[i] = evaluated_tangents[offsets[i]]; | tangents[i] = evaluated_tangents[offsets[i]]; | ||||
| ▲ Show 20 Lines • Show All 139 Lines • Show Last 20 Lines | |||||