2017-02-09 5 views
0

現在、私は、グループ化されたオブジェクトまたはより良い階層型のオブジェクトに深く浸透しようとしています。しかし、私はobject3Dとそれらの子どもたちの位置と可視性に奇妙な問題がありました。Three.js Position and visibile issue

私はオブジェクトのセットを持っています。これまでのメインオブジェクトは光源で、メインオブジェクトの子はいくつかの球です。

問題は、(カメラビューからの)別のオブジェクト(兄弟)の背後にある子オブジェクトが見えることです。すべての子オブジェクトは主オブジェクトの前に表示され、子オブジェクトは主オブジェクトの後ろに表示されます。

悲しいことに私はcodePenでこれを再現できないので、私はシーンの写真をいくつか撮らなければならなかった。

写真では、カメラが光源(時計の主目的物)を中心に時計回りに回転します。

  1. enter image description here
  2. enter image description here
  3. enter image description here

だから、基本的に私がやっているものです:

mObj = new THREE.Object3D(); 
mObj.add(new THREE.Mesh(someGeometry, someMaterial); 
cObj = new THREE.Object3D(); 
cObj.add(new THREE.Mesh(someGeometry, someMaterial); 
mObj.add(cObj); 
scene.add(mObj); 

は、オブジェクトhierachic順序または何か他のものへの関連ですか?

もう少し無視できる問題は、私のPCのうち、暗い(照明がないため)物体の部分が、私が説明できない奇妙な黒/灰色の面を生成することです。たぶんグラフィックカード/ドライバーか何か?

+0

また、[jsfiddle](https://jsfiddle.net/prisoner849/fees9768/)のような動作も再現できません。 「太陽」が主目的であり、「惑星」はその子です。 – prisoner849

+0

ああ...できました! ([jsFiddle](https://jsfiddle.net/fees9768/5/))。 1つのLightyear(Km単位)で、すべてのサイズと距離を乗算しました。説明したのと同じ結果が得られます。ありがとうございました! –

答えて

1

これらのオブジェクト間の距離はどのくらいですか?それは浮動小数点の丸めの問題かもしれません。私は自分自身にそれを実行しました。

ちらつき模様のモデルがある場合は、カメラとアクティブなモデルを原点に保ち、周囲の宇宙を移動して重要な場所(プレーヤーの近く)に精度を保つ必要があります。 。

+0

ヒントをありがとう。距離とサイズが大きすぎるので、私は本当に扱いにくい新しいスケールを見つけなければなりません。 –

+0

Three.jsの非常に大きな浮動小数点(> 10^9)または非常に小さな浮動小数点(<10^-7)に対処するソリューションがありますか? –

+0

私が言及したように、通常は、ユーザを原点に保ち、その周りを宇宙を動かすのではなく、宇宙を動かすことが重要です。 プレーヤーから> 10^9離れたオブジェクトは、とにかくWebGLのレンダリング可能な陥凹の外側にあります。 新しいWebGLRendererを作成するときは、ニアウォールとファークリッピングプレーンを指定します。これらの設定が大きすぎると、シャーダリングが発生する可能性があります。ハードウェアを強制的に使用するのではなく、これらの制限を使用して作業することをお勧めします。 – Will