Apache OpenOffice (AOO) Bugzilla – Issue 102956
difficult to select series in 3D charts
Last modified: 2017-05-20 11:42:17 UTC
Open sample file, double clink on chart, try to select series (3D cylinders). It is possible only if clicking on bottom or left _edge_ of each cylinder. Since issue 93663 claimed as fixed in 3.1, then its a regression
Created attachment 63097 [details] sample
Confirm on Linux (OOo 3.1).
Confirmed on windows also. It seems that the fix of issue 93663 was not complete. Set regression flag as this has worked properly with OOo 3.0.
Created attachment 63699 [details] another example
@aw, the method getAllHit3DObjectsSortedFrontToBack() does not return the correct result under all circumstances. I've attached another example 'another-3D-select-example.ods were it fails. A click on the right side of the red boxes should select the red series, but it doesn't. Please have a look. Thanks!
AW: Problem found (afer some debugging, poooh). The helper getAllHit3DObjectsSortedFrontToBack uses a drawinglayer::processor3d::CutFindProcessor which processes the primitives from a single 3D object and checks for cuts with the given ray. Those sequences of primitives can (and do) contain 3D transformations themselves, e.g. the local 3D transformation of a 3D object. These are processed by entering that transformed sub-geometry by adapting the ray and the used transformations. When a cut between ray and a 3D plane of the object geometry is found, the result is remembered. At this point i had forgotten to back-transform the result relative to entered 3D transformations; thus, the results were in different 3D coordinate systems as soon as a 3D object uses it's local 3D transform. When keeping track of the current entered 3D transforms and back-transforming the results to all use the 3d coordinate system the processor has started with, all works well. Added change, checked, works well. Also added to process all cuts (e.g. when a closed object has two cuts with the ray, the first OR the second may be the frontmost one; this can be decided after all results are back-transformned to camera coordinates, not before).
AW: checked, commited, done.
AW: Checked in test version, okay.
AW->WG: Please review. IHA may help, but description is pretty clear.
Verified in CWS.