[Bf-blender-cvs] [fae68ec651c] master: Fix T99464: Curves sculpt add 3D brush symmetry broken

Hans Goudey noreply at git.blender.org
Wed Jul 6 18:53:56 CEST 2022


Commit: fae68ec651c8717da09089cae324d20c76db6318
Author: Hans Goudey
Date:   Wed Jul 6 11:53:18 2022 -0500
Branches: master
https://developer.blender.org/rBfae68ec651c8717da09089cae324d20c76db6318

Fix T99464: Curves sculpt add 3D brush symmetry broken

The brush transform was not applied to the view direction.

===================================================================

M	source/blender/editors/sculpt_paint/curves_sculpt_add.cc

===================================================================

diff --git a/source/blender/editors/sculpt_paint/curves_sculpt_add.cc b/source/blender/editors/sculpt_paint/curves_sculpt_add.cc
index e5e6cfef8ae..401550b3b3a 100644
--- a/source/blender/editors/sculpt_paint/curves_sculpt_add.cc
+++ b/source/blender/editors/sculpt_paint/curves_sculpt_add.cc
@@ -353,17 +353,21 @@ struct AddOperationExecutor {
                                      view_ray_start_wo,
                                      view_ray_end_wo,
                                      true);
-    const float3 view_direction_su = math::normalize(
-        transforms_.world_to_surface * view_ray_end_wo -
-        transforms_.world_to_surface * view_ray_start_wo);
+
+    const float3 view_ray_start_cu = transforms_.world_to_curves * view_ray_start_wo;
+    const float3 view_ray_end_cu = transforms_.world_to_curves * view_ray_end_wo;
 
     const Vector<float4x4> symmetry_brush_transforms = get_symmetry_brush_transforms(
         eCurvesSymmetryType(curves_id_->symmetry));
     for (const float4x4 &brush_transform : symmetry_brush_transforms) {
       const float4x4 transform = transforms_.curves_to_surface * brush_transform;
+
       const float3 brush_pos_su = transform * brush_3d->position_cu;
+      const float3 view_direction_su = math::normalize(transform * view_ray_end_cu -
+                                                       transform * view_ray_start_cu);
       const float brush_radius_su = transform_brush_radius(
           transform, brush_3d->position_cu, brush_3d->radius_cu);
+
       this->sample_spherical(
           rng, r_added_points, brush_pos_su, brush_radius_su, view_direction_su);
     }



More information about the Bf-blender-cvs mailing list