JavaFX如何获得3D场景中对象的坐标

问题描述 投票:0回答:1

例如,有这样的代码

    //create new cylinder
    Cylinder cylinder = new Cylinder(2, 6);
    ...
    //somewhere add transform
    cylinder.getTransforms().add(new Translate(0, -5, 0));
    ...
    //and somewhere i call
    cylinder.setTranslateX(3);
    cylinder.setTranslateY(-2);

结果,圆柱体在场景{3,-7,0}上移动并且它的坐标

为了获得实际的坐标,我尝试这样的事情:

    double coordY = 0;

    for(Transform t : cylinder.getTransforms() ){
        coordY += t.getTy();
    }

    coordY += cylinder.getTranslateY();

它起作用了,但这显然不是最合理的方法...更新1

正确标记为fabian

如果相对于原点以外的点进行了旋转,则该方法不考虑在内

例如:

        Rotate rotate = new Rotate();
        rotate.setAngle(60);

        rotate.setPivotX(2);
        rotate.setPivotY(1);
        rotate.setPivotZ(3);

        cylinder.getTransforms().add(rotate);

在这种情况下,结果将不正确

如何获得此圆柱体或任何其他对象(例如Shape3d或MeshView)的真实坐标{x,y,z}

谢谢!

例如,有这样的代码// //创建新的圆柱体Cylinder cylinder = new Cylinder(2,6); ... //在某处添加变换圆柱体。getTransforms()。add(new Translate(0,-5,0))...

java javafx 3d
1个回答
0
投票

查询Node#getBoundsInParent属性:

© www.soinside.com 2019 - 2024. All rights reserved.