From d3b9e53252e5051bf5b45b459c410d8641b3f073 Mon Sep 17 00:00:00 2001 From: Michal Dybizbanski Date: Thu, 23 Jan 2025 22:04:50 +0100 Subject: [PATCH] XCD-242 Fix near and far values for ray picking --- src/viewer/scene/webgl/Renderer.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/viewer/scene/webgl/Renderer.js b/src/viewer/scene/webgl/Renderer.js index 33541a6c1..03f17e985 100644 --- a/src/viewer/scene/webgl/Renderer.js +++ b/src/viewer/scene/webgl/Renderer.js @@ -935,6 +935,9 @@ const Renderer = function (scene, options) { pickProjMatrix = scene.camera.projMatrix; projection = scene.camera.projection; + nearAndFar[0] = scene.camera.project.near; + nearAndFar[1] = scene.camera.project.far; + pickResult.canvasPos = params.canvasPos; } else { @@ -948,6 +951,9 @@ const Renderer = function (scene, options) { pickProjMatrix = scene.camera.projMatrix; projection = scene.camera.projection; + nearAndFar[0] = scene.camera.project.near; + nearAndFar[1] = scene.camera.project.far; + } else { worldRayOrigin.set(params.origin || [0, 0, 0]); @@ -967,6 +973,9 @@ const Renderer = function (scene, options) { pickProjMatrix = scene.camera.ortho.matrix; projection = "ortho"; + nearAndFar[0] = scene.camera.ortho.near; + nearAndFar[1] = scene.camera.ortho.far; + pickResult.origin = worldRayOrigin; pickResult.direction = worldRayDir; } @@ -1021,9 +1030,6 @@ const Renderer = function (scene, options) { if (pickable.canPickWorldPos && pickable.canPickWorldPos()) { - nearAndFar[0] = scene.camera.project.near; - nearAndFar[1] = scene.camera.project.far; - gpuPickWorldPos(pickBuffer, pickable, canvasPos, pickViewMatrix, pickProjMatrix, nearAndFar, pickResult); if (params.pickSurfaceNormal !== false) {