私はJavaFXで3Dモデルを作成しています。私はthis guideに続き、私自身のデータを追加するときを除いて、すべてがピーチで動作しています。 buildMolecule()
関数本体を交換する:JavaFX 3D for> 100万ボックスオブジェクト
Random rand = new Random(System.currentTimeMillis());
int dim = 10;
int dimhalf = dim>>1;
for (int i = 0; i < dim; i++) {
for (int j = 0; j < dim; j++) {
for (int k = 0; k < dim; k++) {
Box b = new Box(10, 10, 10);
b.setTranslateX((i-dimhalf)*10);
b.setTranslateY((j-dimhalf)*10);
b.setTranslateZ((k-dimhalf)*10);
b.setMaterial(new PhongMaterial(new Color(rand.nextFloat(), rand.nextFloat(), rand.nextFloat(), 1.0)));
root.getChildren().add(b);
}
}
}
最小限の作業例として、ガイド(
double modifierFactor = 0.1;
:あなたがガイドから欠落していた以下のクラス変数を追加する必要があります
ノート)から前記サンプルアプリケーションを考えますアプリケーションを実行します(私は追加のフラグ-Xmx6g -Xms6g
を使用します)、その効果を見るためにdimの値で遊びます。ちらつきが発生した場合(Scene
インスタンスのdepthBuffering = true
のために)、CAMERA_NEAR_CLIP = 100
を設定してみてください。また、より大きな値のdimに対してCAMERA_INITIAL_DISTANCE
を-1500
のように設定することもできます。
dim = 012の場合、初期レンダリングはまだ高速ですが、標準操作(LMBで回転、RMBで回転、MMBで変換)は不安定です。これは、最初のレンダリングには数秒かかるが、シーンとのやりとりは基本的に不可能になるまで、70になるまで暗くなるにつれて悪化し、悪化する。
私は100万〜1000万の間のどこかでレンダリングする必要がある状況に直面しています。(dim> = 100)Box
これは可能ですか?パフォーマンスを向上させるために私が使用できるトリックはありますか?
興味のある人にとっては、基礎となるモデルはオクトリーです。
パフォーマンスを向上させるためのトリックはありますか?はい。とにかく他の 'Box'sで覆われているすべての' Box'sを削除してください。これにより、dim = 20(3 *50²<20³) – fabian
@ fabianのシーンのパフォーマンスでdim = 50のシーンをレンダリングすることができますが、残念なことにその形状は完全に直方体ではなく、ミニキューボイドは簡単な作業ではありません。しかし、まだ役立つかもしれません...一方で、私はまだdim 100に達することができません:( – Warkst