From bbd06a7f3e5314011162bc4665d93a8088b97ebd Mon Sep 17 00:00:00 2001 From: Victor Malaret Date: Tue, 7 Mar 2023 09:14:27 -0500 Subject: [PATCH] Use scaledDirectionToPoint in occlusion computations --- quantized_mesh_encoder/occlusion.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/quantized_mesh_encoder/occlusion.py b/quantized_mesh_encoder/occlusion.py index db69e5d..bcaf76a 100644 --- a/quantized_mesh_encoder/occlusion.py +++ b/quantized_mesh_encoder/occlusion.py @@ -41,11 +41,13 @@ def occlusion_point( # Scale positions relative to ellipsoid positions /= cartesian_ellipsoid - # Scale center relative to ellipsoid - bounding_center /= cartesian_ellipsoid + # Scale center relative to ellipsoid and normalize + # see https://github.com/CesiumGS/cesium/blob/9295450e64c3077d96ad579012068ea05f97842c/packages/engine/Source/Core/EllipsoidalOccluder.js#L398 + scaledSpaceDirectionToPoint = bounding_center / cartesian_ellipsoid + scaledSpaceDirectionToPoint /= np.linalg.norm(scaledSpaceDirectionToPoint) # Find magnitudes necessary for each position to not be visible - magnitudes = compute_magnitude(positions, bounding_center) + magnitudes = compute_magnitude(positions, scaledSpaceDirectionToPoint) # Multiply by maximum magnitude and rescale to ellipsoid surface - return bounding_center * magnitudes.max() * cartesian_ellipsoid + return scaledSpaceDirectionToPoint * magnitudes.max() * cartesian_ellipsoid