問題タブ [scnnode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
894 参照

ios - SceneKit: how to animate multiple SCNNodes together then call completion block once

The goal is to animate multiple SCNNodes at the same time then call a completion block once all the animations complete. The parallel animations have the same duration so will complete at the same time if started together.

This SO answer suggested using the group function for Sprite Kit, but there is no analog in Scene Kit because the SCNScene class lacks a runAction.

One option is run all the actions individually against each node and have each one call the same completion function, which must maintain a flag to ensure it's only called once.

Another option is to avoid the completion handler and call the completion code after a delay matched to the animation duration. This creates race conditions during testing, however, since sometimes the animations get held up before completing.

This seems clunky, though. What's the right way to group the animation of multiple nodes in SceneKit then invoke a completion handler?

0 投票する
1 に答える
1256 参照

ios - SceneKit:親の内側で垂直方向に中央にスケーリングされたSCNNode?

目標は、SCNNode をスケーリングし、その親内で垂直方向に中央揃えにすることです。

ただし、SCNNode をスケーリングしても境界ボックスには影響せず、スケーリングされた高さの計算は機能しません。正確な高さがなければ、ノードを親の内側で垂直方向に中央揃えするにはどうすればよいでしょうか?

スケーリングされた高さを使用する際の問題を説明するには、添付ファイルTiki.daeを参照してください。アセットの元の高さ (境界ボックスで表示) は 324.36 です。ただし、Y スケールを 0.01 に設定すると、高さは ~3.24 になりません。これは、高さ 3 (半径 1.5) の球にうまく収まることで証明できます。

以下のコードは、スケーリングされたノードをその親内の中央に配置しようとしますが、うまくいきません。

注: リファレンス ノードは、WWDC 2015 フォックス デモの fox/panda リファレンス ノードです。

0 投票する
1 に答える
475 参照

ios - Blender の .dae (COLLADA) ファイルを使用して SceneKit でユーザー生成アニメーションを作成する方法

SceneKit で SCNScene オブジェクトの特定の部分をアニメーション化しようとしています (私の場合、手の指をアニメーション化したい)。Blender から .dae (COLLADA) ファイルをそれぞれのボーンとともに簡単にインポートして、モデルにアーティキュレーションを生成します。

私の目標は、ユーザーが生成した 0 から 1 の値を使用して、iOS でこれらのボーンをアニメーション化することです。UISlider を想像してみてください。UISlider では、スライダーの値に応じて特定の指が動くのを確認できます。

これは必要なアニメーションのスクリーンショットです

アニメーションを装った画像

Apple の Fox の例のようなアニメーション ファイルを呼び出して、モデルをアニメーション化しようとしました。

問題は、人差し指だけではなくグローバル アニメーションであることです。さらに、ユーザー入力によって制御されるアニメーションではなく、常に「事前定義された」アニメーションです。最終的には、アニメーションをミックスしたい (たとえば、人差し指と親指を同時に動かしてジェスチャーを明らかにする)

これは可能ですか?メッシュの特定の部分を操作する方法がわからないので苦労しています。私は MetalKit の研究を始めていますが、それが解決策かどうかはわかりません。

どんな助けでも本当に感謝しています。

0 投票する
0 に答える
307 参照

ios - ジオメトリ レンダリングの問題 - SceneKit

SceneKit カスタム ジオメトリのセットがあります。レンダリングすると、特定の視野角の下では、それらは透明であるかのように見えます (外側の表面を通して見ることができ、背後にあるものを見ることができます。または、内側の表面を見ることができます)。それらのマテリアルの透明度とカプセル化ノードの不透明度はすべて正しく設定されています。また、それらのいくつかは交差しており、それらの交差が完全に表示されています。何が問題なのか考えてみませんか?ありがとう。

0 投票する
1 に答える
146 参照

ios - SCNScene / SCNSphereの可視領域

SCNCamera をカプセル化する SCNSphere を含む SCNScene があります (カメラは SCNSphere の @ 中心の内側にあり、その内壁を画面に表示します)。

この球体の可視領域を照会または推測/計算する方法はありますか? ポイント単位の画面の領域、またはシーン自体の領域は必要ありませんが、カメラが特定のデバイスの画面でこの球体からレンダリングできるもの (iPad と iPhone は異なる量の 360 フレームを表示します)

助けていただければ幸いです。

0 投票する
1 に答える
152 参照

ios - SCNAction.rotate は他のノードを介してクリップします

次のように作成された childNode として SCNNode を持つノード (nodeCollection) があります。

また、次のように redbox ノードを作成しています。

次に、以下のコードを実行してノードを回転させます

次に、nodeCollection と redBox の両方を childNodes として SCNScene に追加します。

しかし、nodeCollection で回転を実行するとわかるように、redBox の物理は保持されません。 赤いボックスが停止して青いボックスの上に置かれるときに、赤いボックスがシーンにドロップされると、物理が機能します。

青いボックスが回転したときに redBox を突き抜けないようにするにはどうすればよいですか?

ここに画像の説明を入力

0 投票する
1 に答える
1595 参照

ios - SCNAction とインパルス フォースを SCNNode に適用する方法

ちょっと、力を加えると動くボールがあります。私がやらせようとしているのは、基本的に、空中を移動して目的地に移動するときに重力が作用するという因果関係を持たせることです。基本的に、「移動先」アクションが再生されているときは重力の影響を受けないため、ゆっくりと地面に落ちる代わりに最終位置に移動し、「移動先」アクションが停止するとまっすぐに落下します。シーンの重力に合わせてください。

ボールを弧を描いて投げてターゲットに着地させようとしていますか?

コード:

ここで魔法が起こります:

0 投票する
1 に答える
422 参照

ios - SceneKit nodesInsideFrustumWithPointOfView: 予期せず空を返す

次の方法を使用して、カメラから見える SCNNodes を特定しています。

ただし、返される配列は常に空です。次のようにシーンをセットアップしました。

シーンが作成された後、ランダムに SCNNode をシーンに追加します。

私のデバイスでは、ノード「testnode」が画面に表示されていますが、nodesInsideFrustumWithPointOfView: は何も返しません。

編集: 視点をスポット ライト オブジェクトに変更して、「testnode」が錐台内にあるかどうかをテストしてみました。画面に表示されるのは次のとおりです。http://imgur.com/a/C3XGuそれでも、配列はまだ空を返します。テストノードは白い立方体です。