Java3D Zoon — объект начинает исчезать, когда я приближаю его

Прежде всего, я хотел бы сказать, что я новичок в Java3D. Пожалуйста, смирись с моим невежеством. Я сделал приложение с Java3D, и у меня есть следующие проблемы с масштабированием.

  1. Кажется, что поведение MouseWheelZoom в Java3D перемещает объект по оси Z. На сцене моя ось Z не выходит за пределы плоскости, поэтому с помощью MouseWheelZoom объект не приближается, а выходит за пределы экрана. Есть ли способ установить направление масштабирования в произвольном направлении?

  2. Я обошел проблему, используя MouseWheelListener и изменив платформу просмотра на основе шагов масштабирования. Но теперь есть другая проблема. По мере того, как объект приближается на определенное расстояние, некоторые части объекта (обычно углы) начинают исчезать, поэтому я не могу увеличить масштаб настолько, насколько хочу.

Не могли бы вы помочь?

С уважением,

Хасан


person Hassan    schedule 15.05.2012    source источник


Ответы (1)


  1. Вопрос: Я думаю, вы используете OrbitBehavior для MouseControl, например:

    orbit = new OrbitBehavior(canvas3d, OrbitBehavior.REVERSE_ALL);
    

Если это так, то попробуйте

    orbit.setZoomFactor(-1d);

Чтобы изменить направление масштабирования (коэффициент масштабирования по умолчанию +1d).

К вашему 2. Вопрос: вы должны установить BoundingLeaf на вашей PlatformGeometry, чтобы инкапсулировать вашу «область просмотра». Попробуйте что-нибудь вроде этого

defaultBounds = new BoundingSphere(new Point3d(radiusGameMap, 0.0, radiusGameMap),
            radiusGameMap * 6.0d);
BoundingLeaf boundingLeaf = new BoundingLeaf(defaultBounds);
PlatformGeometry platformGeom = new PlatformGeometry();
platformGeom.addChild(boundingLeaf);

где radiusGameMap — это двойное значение, определяющее радиус всей вашей карты.

person Karsten Müller    schedule 27.06.2012