JavaFX 8 - 如何在并行相机上设置NearClip和FarClip?

Den*_*her 5 3d camera clipping javafx-8 javafx-3d

我所在的团队正在构建一个使用 JavaFX 8 3D 操作视觉模型的应用程序。我们同时使用透视相机和平行相机。透视相机按预期工作。目前正在使用isEyeAtCameraZerofalse。这样做是为了最大限度地兼容并行相机。

调用camera.setNearClip()和时,透视相机会正确运行。camera.setFarClip()

并行相机似乎没有响应camera.setNearClip()camera.setFarClip()。并行相机确实执行近距和远距剪切,但我无法更改并行相机剪切范围。

我正在使用基于 JavaFX 8 javadocs 页面上的伪代码的算法来计算传递到和 的Camera值。这似乎适用于透视相机,但不适用于平行相机。camera.setNearClip()camera.setFarClip()

任何人都可以提供有关如何管理并行相机的剪辑范围的建议吗?

小智 2

ParallelCamera 在计算正交投影时似乎忽略了裁剪距离。相反,场景/子场景的宽度或高度根据包私有方法确定远近剪裁平面:

void computeProjectionTransform(GeneralTransform3D proj) {
    final double viewWidth = getViewWidth();
    final double viewHeight = getViewHeight();
    final double halfDepth = (viewWidth > viewHeight) ? viewWidth / 2.0 : viewHeight / 2.0;

    proj.ortho(0.0, viewWidth, viewHeight, 0.0, -halfDepth, halfDepth);
}
Run Code Online (Sandbox Code Playgroud)

这使得 ParallelCamera 对于 JavaFX 中的 3D 渲染来说毫无用处。