0

SCNScene から抽出するノードがあります。私はそれについていくつかの情報を持っていますが、境界ボックスがどのように計算されるかという 1 つのことについて混乱しています。ノードは、次を使用してベクトル 0,0,0 にロードされると配置されます。

[myNode setPosition: SCNVector3Make(0, 0, 0)];

ただし、バウンディング ボックスは依然として -1 の min.x を報告します。

ちょうど 0 に配置した場合、これはどのようになりますか? さらに、どのようなベクトル値を指定しても問題ありません。ノードが実際に画面上を予想どおりに移動しているにもかかわらず、min.x は常に -1 です。

4

1 に答える 1

2

シーンに何があり、何をしているのかについての情報がなければ、明確に答えることは困難ですが、おそらく次のいずれかまたは両方の問題です。

バウンディング ボックスは、ノードの位置ではなく、ノードのコンテンツの範囲を示します。たとえば、幅 2 単位の立方体が に配置されている場合(0, 0, 0)、そのバウンディング ボックスの最小コーナーと最大コーナーは と に(-1, -1, -1)なり(1, 1, 1)ます。

ノードを移動するために使用しているトリックによっては、ノード自体SCNActionの位置が変化しない場合があります。 、CAAnimation、および物理はすべて、ノード階層の別のコピーで機能します。(部分的には、これは暗黙のアニメーションをサポートするためです。たとえばposition、ノードの を設定すると、現在の位置から設定した位置までアニメーション化されているように見えますが、読み戻してposition、設定した値にすることができます。 )

ノードのプロパティを使用してこの別の階層に到達しますpresentationNode。プレゼンテーション ノードにバウンディング ボックスを要求すると、その位置/範囲がアクション/アニメーション/物理の影響を受け、現在レンダリングされていることがわかります。

于 2015-02-06T18:59:10.003 に答える