Three.js: Object3Dを表示/非表示にしますか?

作成日 2011年06月10日  ·  14コメント  ·  ソース: mrdoob/three.js

Object3Dと彼の子供たちをいつでも表示/非表示にする方法を見つけようとしています。

  • 目に見えるプロパティで?
  • 錐台からそれを翻訳しますか?
  • 何か案が ?
Question

最も参考になるコメント

あなたはただ呼び出すことができます
myObj3D.visible = false。 これにより、Object3Dの子であるすべてのものが非表示になります。

myObj3D.visible = trueを呼び出すすべてを表示します。

全てのコメント14件

現在、次のように行うことができます。

THREE.SceneUtils.traverseHierarchy( object, function ( object ) { object.visible = false; } );

ありがとう! それは魅力のように機能します。

参考までに-myObject3Dのすべての子を非表示にするには、上記のスニペットは次のようになります。

myObject3D.traverse( function ( object ) { object.visible = false; } );

この機能はまだ解決されていないと思います。 オブジェクトを非表示(すべての子を非表示)にしたいのですが、子の表示ステータスを維持したいので、現在の方法(トラバース)は実行できません。 たとえば、表示されている子と表示されていない子があります。 親を非表示にすると、すべての子が非表示になりますが、もう一度表示すると、以前に表示されていた子が表示されます。

同意する。 WebGLRendererはそれに対応する必要があります。 それは私がやらなければならないことです。

参考:親に表示される設定は、子にも影響するようになりました。 (r71でテスト済み)

r72を使用します。 親に表示される設定は、子には影響しないようです。 機能は再び変更されましたか?

@agnivadeいいえ、変更されていません。 visiblefalseすると、子visibleに関係なく、オブジェクトもその子もレンダラーになりません。 visibletrue設定されている場合、子はvisibletrue設定されている場合にのみレンダリングされます。

ありがとう。 それなら私のコードに何か問題があるに違いない、チェックします。

ありがとう

あなたはただ呼び出すことができます
myObj3D.visible = false。 これにより、Object3Dの子であるすべてのものが非表示になります。

myObj3D.visible = trueを呼び出すすべてを表示します。

これは古い議論ですが、ここで重要な注意点があります。falseに設定すると、オブジェクトとその子はカメラの「のみ」非表示になりますが、2つの異なるレイヤーを使用してレイヤーから無効にしない限り、レイキャスターには引き続き表示されます。レイキャスターが観察しています。 それらを完全に非表示にしたい場合は、レイキャスターが使用するレイヤーでそれらを無効にする必要があります。
カメラにはレイヤー0と1を使用し、レイキャスティングにはレイヤー0のみを使用しているので、オブジェクトを表示してレイキャストすることができます。
obj.layers.enable(0); obj.visible = true;

表示されているがレイキャストされていないオブジェクト:
obj.layers.disable(0); obj.layers.enable(1); obj.visible = true;

隠されていてレイキャストされていないオブジェクト:
obj.layers.disable(0); obj.layers.enable(1); obj.visible = false;

@ jscastro76あなたはhttps://github.com/mrdoob/three.js/pull/19012に興味があるかもしれません

ありがとう、私はそれを見てみます!

このページは役に立ちましたか?
0 / 5 - 0 評価