Fixed clearing scales (after 3345d7e)

It was producing a bug with text rotation in elevation view
Added fix to make matrix normalization work for the cases when matrix is rotated and I've just found that mathutils.Matrix.normalize(d) is very conveniently ignoring 4th column (translation) (same for mathutils.Vector)
This commit is contained in:
Andrej730
2023-08-18 12:05:53 +05:00
parent 42316f9591
commit e1db448bad
3 changed files with 3 additions and 12 deletions
@@ -525,10 +525,7 @@ class BaseDecorator:
return matrix.inverted()[i].to_3d().normalized()
text_dir_world_x_axis = get_basis_vector(obj.matrix_world)
camera_matrix = camera.matrix_world.copy()
camera_matrix[0][0] = 1
camera_matrix[1][1] = 1
camera_matrix[2][2] = 1
camera_matrix = camera.matrix_world.normalized()
text_dir = (camera_matrix.inverted().to_quaternion() @ text_dir_world_x_axis).to_2d().normalized()
pos = location_3d_to_region_2d(region, region3d, text_world_position)
@@ -802,11 +802,7 @@ class SvgWriter:
text_dir_world_x_axis = get_basis_vector(text_obj.matrix_world)
# RCP cameras may be scaled, so reset scales.
camera_matrix = self.camera.matrix_world.copy()
camera_matrix[0][0] = 1
camera_matrix[1][1] = 1
camera_matrix[2][2] = 1
camera_matrix = self.camera.matrix_world.normalized()
text_dir = (camera_matrix.inverted().to_quaternion() @ text_dir_world_x_axis).to_2d().normalized()
angle = math.degrees(-text_dir.angle_signed(Vector((1, 0))))
+1 -3
View File
@@ -59,9 +59,7 @@ class Geometry(blenderbim.core.tool.Geometry):
# Note that clearing scale has no impact on cameras.
if (obj.scale - Vector((1.0, 1.0, 1.0))).length > 1e-4:
if not obj.data:
obj.matrix_world[0][0] = 1
obj.matrix_world[1][1] = 1
obj.matrix_world[2][2] = 1
obj.matrix_world.normalize()
elif obj.data.users == 1:
context_override = {}
context_override["object"] = context_override["active_object"] = obj