xeokit-sdk icon indicating copy to clipboard operation
xeokit-sdk copied to clipboard

FIX: Synch MarqueePicker frustum far plane to camera projection's far plane

Open julio-cavallari opened this issue 2 years ago • 2 comments

Describe the bug Using our own model, selection by marquee picker does not work correctly, with the camera far away nothing is ever selected, and with the camera close to an object, the selected objects are not those within the selection area

To Reproduce Steps to reproduce the behavior:

  1. Reproduce the example to configure marquee picker
  2. Use the xkt model contained in this link
  3. Use both inside and intersect selection
  4. See the objetcs are not selected

Expected behavior Select objects correctly based on selection area

Screenshots Video with the problem

Desktop (please complete the following information):

  • OS: macOS
  • Browser Chrome
  • Version 120.0.6099.109

Additional context Add any other context about the problem here.

julio-cavallari avatar Dec 26 '23 21:12 julio-cavallari

Probably fixable by extending Marqueepicker._buildMarqueeFrustum to set the picking frustum's far plane distance to the same distance as the Camera's active projection:

https://github.com/xeokit/xeokit-sdk/blob/master/src/extras/MarqueePicker/MarqueePicker.js#L306

eg.

       math.frustumMat4(
            left,
            right,
            bottom * ratio,
            top * ratio,
            near,
            far: this.scene.camera.projection.far,
            this._marqueeFrustumProjMat,
        );

Where the far plane is provided by these projection components:

https://github.com/xeokit/xeokit-sdk/blob/master/src/extras/MarqueePicker/MarqueePicker.js#L306 https://github.com/xeokit/xeokit-sdk/blob/master/src/extras/MarqueePicker/MarqueePicker.js#L306

xeolabs avatar Dec 27 '23 15:12 xeolabs

I noticed that the problem is related to the canvas size, when the canvas is the full size of the screen, the selection works perfectly

julio-cavallari avatar Dec 27 '23 19:12 julio-cavallari