Поворот вокруг определенной точки в Java3D

Я импортирую 2 модели в Java3D, уменьшаю их масштаб, а затем поворачиваю одну из них с помощью RotationInterpolator

Однако это вращает объект вокруг начала координат. Я хочу повернуть объект вокруг ЕГО центра, а не сцены. Проще говоря, я хочу, чтобы он вращался на месте.

Как повернуть вокруг определенной точки?

    TransformGroup rotateTheBlades = new TransformGroup();
    rotateTheBlades.setCapability(
                  TransformGroup.ALLOW_TRANSFORM_WRITE);

    Alpha rotationAlpha = new Alpha(-1,5000);

    RotationInterpolator rotator =
        new RotationInterpolator(
          rotationAlpha,rotateTheBlades);

    Transform3D abc = new Transform3D();
    abc.rotZ(Math.PI/2);

    rotator.setTransformAxis(abc);

    rotator.setSchedulingBounds(new BoundingSphere());

    rotateTheBlades.addChild(rotator);
    rotateTheBlades.addChild(theBlades);

Это мой код для выполнения моей текущей ротации.


person amr    schedule 07.12.2009    source источник
comment
Вы должны перевести в исходное положение, повернуть, а затем перевести обратно.   -  person Daniel Rikowski    schedule 07.12.2009
comment
Д.Р.: Вы должны включить это в ответ, так как это... ответ.   -  person Jonathan Feinberg    schedule 07.12.2009
comment
Итак, перевести в исходное положение, настроить RotationInterpolator, а затем перевести обратно?   -  person amr    schedule 07.12.2009


Ответы (1)


DR ответил переводом объекта в исходное положение, выполнением поворота, а затем переводом объекта обратно в исходное положение. Что сработало.

Мое фактическое решение состояло в том, чтобы просто центрировать модель в начале координат в файле .obj, который я загружал в Java3D, выполнять вращение, а затем переводить объекты в их правильное положение.

person amr    schedule 07.12.2009