У меня есть код, который использует PickCanvas, чтобы определить, где в 3D пользователь нажал на 3D-модель. Модель сделана из TriangleStrips. Это все работает нормально.
Теперь, если я добавлю Цилиндр в сцену, это тоже нормально. Но если я поверну цилиндр в TransformGroup, я больше не смогу щелкнуть по нему. Любые идеи приветствуются!
Transform3D tr = new Transform3D();
//tr.rotX(Math.PI/2); <--- uncommenting this line breaks PickCanvas
TransformGroup cylGroup = new TransformGroup(tr);
tg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
tg.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
tg.setCapability(TransformGroup.ALLOW_CHILDREN_WRITE);
tg.setCapability(TransformGroup.ALLOW_CHILDREN_READ);
tg.setCapability(TransformGroup.ALLOW_PARENT_READ);
tg.setCapability(TransformGroup.ALLOW_PICKABLE_READ);
tg.setCapability(TransformGroup.ALLOW_PICKABLE_WRITE);
cylGroup.addChild(cyl);
tg.addChild(cylGroup);
Вот как я читаю результат щелчка мышью:
pickCanvas.setShapeLocation(evt);
PickResult result = pickCanvas.pickClosest();
Point3d eyePos = pickCanvas.getStartPosition();
PickIntersection pi = result.getClosestIntersection(eyePos);
Point3d insectPt = pi.getPointCoordinates();