java - 在 Javafx 8 中,如何获得 3d 节点的正确屏幕位置?

标签 java 3d javafx javafx-8

我目前正在使用 javafx 8 开发 3D 可视化项目。

由于旋转相机时点太多会很慢,因此我决定隐藏场景中未显示的那些点(在我的例子中为 3d 框)。

问题是当我调用 box.localToScreen(0, 0, 0) 时,坐标有时似乎不正确。例如,有时该点仍然显示在屏幕上,但 localToScreen(0, 0, 0) 返回的坐标可能为负数。我错过了什么吗?或者我滥用了这个方法?

这是我的一些代码:

// where I build these boxes from points
for (point p : mergedList) {
    Box pointBox = new Box(length, width, height);

    boxList.add(pointBox);
    pointBox.setTranslateX(p.getX());
    pointBox.setTranslateY(p.getY());
    pointBox.setTranslateZ(p.getZ());

...

// where I call localToScreen to get its coordinates
for (Box b : boxList) {
    Point2D p = b.localToScreen(0, 0, 0); // I have also tried b.localToScreen(b.getTranslateX(), b.getTranslateY(), b.getTranslateZ())
    double x = p.getX(), y = p.getY();
    System.out.println(x);
    System.out.println(y);
}

提前致谢。

最佳答案

我也在寻找一些 localToScreen 和 screenToLocal 问题的解决方案。 对于您的情况,如果您使用多个显示器,则只有主显示器为您提供正坐标。辅助监视器将为您提供负坐标。 您尝试过 localToScene 而不是 localToScreen 吗?

关于java - 在 Javafx 8 中,如何获得 3d 节点的正确屏幕位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23862514/

相关文章:

JavaFX 颜色选择器表格单元格中的自定义颜色

java - 使用 System.loadLibrary 加载 Python C 扩展 DLL

java - 在 servlet 之间共享配置参数

java - 使用递归从数组中获取具有最大值的对象

java - 无法做出正确的请求 Resttemplate

java - libgdx Bullet 3D 和滚动摩擦导致 NaN

3d - Hadoop 和 3d 图像渲染

java - 转换 ObervableValue

c++ - 如何在 OpenGL 中同时绘制 2D 和 3D 东西?

tabs - JavaFx-选项卡可关闭按钮