Skip to content

Commit 34c92d4

Browse files
sanzoghenzoMoult
authored andcommitted
fix(bcf): viewport creation functions result in malformed XML
fixes #6244
1 parent 725cb40 commit 34c92d4

File tree

3 files changed

+7
-20
lines changed

3 files changed

+7
-20
lines changed

src/bcf/bcf/geometry.py

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
def camera_vectors_from_element_placement(
88
elem_placement: NDArray[np.float64],
9-
) -> tuple[NDArray[np.float64], NDArray[np.float64], NDArray[np.float64]]:
9+
) -> tuple[list[float], list[float], list[float]]:
1010
"""
1111
Calculate the vectors of a camera pointing to an element.
1212
@@ -22,7 +22,7 @@ def camera_vectors_from_element_placement(
2222

2323
def camera_vectors_from_target_position(
2424
target_position: NDArray[np.float64], offset: Optional[NDArray[np.float64]] = None
25-
) -> tuple[NDArray[np.float64], NDArray[np.float64], NDArray[np.float64]]:
25+
) -> tuple[list[float], list[float], list[float]]:
2626
"""
2727
Calculate the vectors of a camera pointing to a target point.
2828
@@ -38,16 +38,7 @@ def camera_vectors_from_target_position(
3838
camera_direction = unit_vector(-camera_offset) # pylint: disable=invalid-unary-operand-type
3939
camera_right = unit_vector(np.cross(np.array([0.0, 0.0, 1.0]), camera_direction))
4040
camera_up = unit_vector(np.cross(camera_direction, camera_right))
41-
return camera_position, camera_direction, camera_up
42-
# rotation_transform = np.eye(4)
43-
# rotation_transform[0, :3] = camera_right
44-
# rotation_transform[1, :3] = camera_up
45-
# rotation_transform[2, :3] = camera_direction
46-
# translation_transform = np.eye(4)
47-
# translation_transform[:3, -1] = -camera_position
48-
# look_at_transform = np.matmul(rotation_transform, translation_transform)
49-
# mat = np.linalg.inv(look_at_transform)
50-
# return camera_position, -mat[:3, 2], mat[:3, 1]
41+
return camera_position.tolist(), camera_direction.tolist(), camera_up.tolist()
5142

5243

5344
def unit_vector(v: NDArray[np.float64]) -> NDArray[np.float64]:

src/bcf/bcf/v2/visinfo.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -319,9 +319,7 @@ def build_viewpoint(element: entity_instance) -> mdl.VisualizationInfo:
319319
ifc_file = element.wrapped_data.file
320320
unit_scale = ifcopenshell.util.unit.calculate_unit_scale(ifc_file)
321321
elem_placement = ifcopenshell.util.placement.get_local_placement(element.ObjectPlacement)
322-
elem_placement[0][3] *= unit_scale
323-
elem_placement[1][3] *= unit_scale
324-
elem_placement[2][3] *= unit_scale
322+
elem_placement[:3, 3] *= unit_scale
325323

326324
return mdl.VisualizationInfo(
327325
guid=str(uuid.uuid4()),
@@ -381,7 +379,7 @@ def build_camera(elem_placement: NDArray[np.float64]) -> mdl.PerspectiveCamera:
381379

382380

383381
def build_camera_from_vectors(
384-
camera_position: NDArray[np.float64], camera_dir: NDArray[np.float64], camera_up: NDArray[np.float64]
382+
camera_position: list[float], camera_dir: list[float], camera_up: list[float]
385383
) -> mdl.PerspectiveCamera:
386384
"""
387385
Return a BCF camera for an IFC element placement matrix.

src/bcf/bcf/v3/visinfo.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -319,9 +319,7 @@ def build_viewpoint(element: entity_instance) -> mdl.VisualizationInfo:
319319
ifc_file = element.wrapped_data.file
320320
unit_scale = ifcopenshell.util.unit.calculate_unit_scale(ifc_file)
321321
elem_placement = ifcopenshell.util.placement.get_local_placement(element.ObjectPlacement)
322-
elem_placement[0][3] *= unit_scale
323-
elem_placement[1][3] *= unit_scale
324-
elem_placement[2][3] *= unit_scale
322+
elem_placement[:3, 3] *= unit_scale
325323

326324
return mdl.VisualizationInfo(
327325
guid=str(uuid.uuid4()),
@@ -381,7 +379,7 @@ def build_camera(elem_placement: NDArray[np.float64]) -> mdl.PerspectiveCamera:
381379

382380

383381
def build_camera_from_vectors(
384-
camera_position: NDArray[np.float64], camera_dir: NDArray[np.float64], camera_up: NDArray[np.float64]
382+
camera_position: list[float], camera_dir: list[float], camera_up: list[float]
385383
) -> mdl.PerspectiveCamera:
386384
"""
387385
Return a BCF camera for an IFC element placement matrix.

0 commit comments

Comments
 (0)