1

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

透视相机在调用camera.setNearClip()时行为正确。camera.setFarClip()

平行相机似乎没有响应camera.setNearClip()camera.setFarClip()。Parallel Camera 确实执行近处和远方裁剪,但我一直无法更改 Parallel Camera 裁剪范围。

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

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

4

1 回答 1

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);
}

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

于 2015-01-07T09:45:53.967 回答