1

Java3Dでのマウスの動きに合わせて立方体に回転させてみます。立方体の回転に関係なく、カーソルを上にドラッグすると、立方体が同じ方向に回転するようにします。そして、これはすべての可能な動きのためです。

どうすれば続行できますか?カメラの座標に配置する必要があると思います...

これが私の関数です:

public void objectRotate(TransformGroup objectInInteraction, double dh,
        double dp, double dr) {

    Transform3D oldT3D = new Transform3D();
    objectInInteraction.getTransform(oldT3D);       

    Transform3D tx = new Transform3D();
    Transform3D ty = new Transform3D();
    Transform3D tz = new Transform3D();

    Transform3D tc = new Transform3D();
    //camera.getTransform(tc);

    double x = 0, y = 0, z = 0;
    x = Math.PI * dh / 180;
    y = Math.PI * dp / 180;
    z = Math.PI * dr / 180;

    tx.rotX(x);
    tc.mul(tx);

    ty.rotY(y);
    tc.mul(ty);

    tz.rotZ(z);     
    tc.mul(tz);

    oldT3D.mul(tc);


    objectInInteraction.setTransform(oldT3D);
}

dhは左右の動き、dpは上下です

ありがとう !

4

1 に答える 1

2

それは私のために働く...

public void objectRotate(TransformGroup objectInInteraction, double dh,
    double dp, double dr)
{

    // Transform3D oldT3D = new Transform3D();
    // objectInInteraction.getTransform(oldT3D);       

    Transform3D tx = new Transform3D();
    Transform3D ty = new Transform3D();
    Transform3D tz = new Transform3D();

    Transform3D tc = new Transform3D();
    //camera.getTransform(tc);

    double x = 0, y = 0, z = 0;
    x = Math.PI * dh / 180;
    y = Math.PI * dp / 180;
    z = Math.PI * dr / 180;

    tx.rotX(x);
    tc.mul(tx);

    ty.rotY(y);
    tc.mul(ty);

    tz.rotZ(z);     
    tc.mul(tz);

    // oldT3D.mul(tc);

    objectInInteraction.setTransform(tc);
}

;-)

于 2014-04-29T08:48:36.023 に答える