1

私は、JavaFX 8 3D を使用してビジュアル モデルを操作するアプリケーションを構築するチームの一員です。パースペクティブ カメラとパラレル カメラの両方を使用します。パースペクティブ カメラは期待どおりに機能しています。現在、isEyeAtCameraZerofalseで動作しています。これは、Parallel Camera との互換性を最大限にするために行われました。

camera.setNearClip()およびcamera.setFarClip()が呼び出されたときに、パース ビュー カメラが正しく動作します。

camera.setNearClip()平行カメラがとに反応していないようcamera.setFarClip()です。Parallel Camera は近距離クリッピングと遠距離クリッピングを実行しますが、Parallel Camera のクリッピング範囲を変更できませんでした。

JavaFX 8 javadocs ページの疑似コードに基づくアルゴリズムを使用して、およびCameraに渡される値を計算しています。これは、パースペクティブ カメラでは正しく動作するように見えますが、パラレル カメラでは正しく動作しません。camera.setNearClip()camera.setFarClip()

Parallel Camera のクリッピング範囲を管理する方法についてアドバイスをいただけますか?

4

1 に答える 1

2

ParallelCamera は、正射影を計算するときにクリッピング距離を無視しているようです。代わりに、Scene/SubScene の幅または高さが、パッケージのプライベート メソッドに従って、ファー クリッピング プレーンとニア クリッピング プレーンを決定します。

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 に答える