問題タブ [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 投票する
1 に答える
1246 参照

ios - Scenekit シーンのプリロード

SCNView の準備が整い、実際にビューにレンダリングされるまでに遅延があるようです。ビューが表示される前に、常に一瞬だけ白が表示されます。これを防ぐにはどうすればよいですか?

背景が最終的に表示されると、背景の配置はすべて正しくなります。

現在、この問題の一部を軽減するためにフェードアウトするオーバーレイがありますが、遅いデバイス (iPhone 5) では、scnView がスナップインして完了する前に白が表示されます。

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

ios - SCNText getBoundingBoxMin:max: 常にゼロ

の境界ボックスを決定しようとしていますSCNTextが、 getBoundingBoxMin:max:常にゼロになります。

SCNTextこれは、クラス拡張内で実行されるコードでselfあり、[textNode geometry].

私もこれを試しました

sizeMaxは常にゼロです。

注: 問題が発生する理由を発見しました。

この調整が次のようにブロック内で呼び出されると、問題が発生します。

したがって、メインスレッドからこのコードを呼び出すと、動作します:

しかし、これを別のスレッドから呼び出すと機能しません

問題は、このブロックがディスパッチ ブロックから呼び出されることです。そのため、メイン キューに再ディスパッチする必要がありますが、そうするとコードが機能しなくなります。理論的には、ブロックをメイン キューにディスパッチすることは、メイン スレッドからブロックを実行することと同等のはずですが、明らかにそうではありません。

皆さんは何か回避策を知っていますか?

0 投票する
2 に答える
846 参照

ios - SceneKit:SCNViewの特定の位置にあるノードを見つけるネイティブな方法? そうでない場合は、辞書を使用して位置をノードにマップしますか?

SCNView 内の (0,0,0) などの特定の位置にあるノードを見つけるための SceneKit のネイティブな方法はありますか?

SCNView に、他の SCNNode のレイヤーとして機能する SCNNode が含まれているとします。レイヤー内の特定の位置にあるすべてのノードを見つけるネイティブな方法はありますか?

クラスのドキュメントを読むと、唯一のオプションは、位置をノードにマッピングするカスタム データ構造を作成して維持することのようです。

しかし、これは一般的な問題のように思われるため、ネイティブなものがあることを願っています。

カスタム データ構造が必要な場合、辞書は Swift で 10K ノードのタブを維持する最も効率的な方法でしょうか?

0 投票する
2 に答える
1867 参照

swift - SCNMaterial を使用してネオン マテリアルを迅速に作成するには?

私はSCNMaterials、発光に焦点を当てて、ネオン マテリアルを作成しようと実験してきました。できるかどうかはわかりませんが、発光できればいいですね。ありがとう :)

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

scenekit - SCNGeometryElement プリミティブへの物理演算の追加

私はSceneKitを初めて使用するので、私がやろうとしていることは正しいアプローチでさえない可能性があります. だからここに私の一般的な意図があります:

プレイヤーが移動する「トンネル」を構築しています。これは手続き的に生成されるトンネルです。トンネルのメッシュを表すポイントの位置を決定し、ポイントを三角形で接続してスキンを作成しています。次の方法を使用して、三角形を生成しています。

これは正常に機能し、私のトンネルはトンネルのように見えます。ただし、ノードに PhysicsBody を追加して静的なボディにしようとすると (トンネルに衝突できるはずですが、トンネルの壁は動かない)、アプリケーションが EXC_BAD_ADDRESS でクラッシュし始めます。最初のいくつかの三角形を追加した後に実際にクラッシュするので、この方法でいくつかの三角形を追加するときに発生する問題があると思われます。

これをテストするために、テスト プロジェクトを作成し、三角形を 1 つだけ追加して、その PhysicsBody を静的なボディに設定しました。クラッシュはしませんが、物理体は三角形の形ではなく、原点にある 1 点のように見えます。

それで、いくつかの質問:

  1. 一般的に、これはカスタム ジオメトリを生成するのに悪い方法ですか? やや不規則な形状が本当に必要で、それに PhysicsBody を持たせたい場合、三角形を作成してポイントを接続する以外の方法はありますか?
  2. 三角形の物理ボディの作成が機能しない理由について何か考えはありますか?

ありがとう。

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

ios - SCNScene で座標クロスを回転させてカメラの動きをミラーリングする

私は SceneKit に慣れていないので、次のことについてあなたの助けを借りることができます: 私は 2 つの SCNViews を持っています - 標準の allowCameraControl オプションを有効にしてユーザーが操作できるユーザーのシーンを示す大きなもの (skView) - 別の小さなもの (これは、ユーザーが大きな SCNView で実行するカメラ ナビゲーションをミラーリングしたい座標クロスを示しています。

座標クロス SCNView

両方の SCNViews を保持する ViewController を SCNRendererDelegate にし、レンダラーでクロスの向きを更新することで実装しました: updateAtTime: メソッドは次のようになります。

ここまでは順調ですね。ただし、これは、ユーザーが画面上で大きな SCNView を指で操作している場合にのみ機能します。指が画面から離れたときのスワイプ ジェスチャの後、大きな SCNView 内のオブジェクトは少し回転し続けますが、座標クロスは更新されません。この動作が pointOfView.orientation の変更によってキャプチャされない理由はありますか?

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

ios - 子ノードと親ノードで SCNNode の位置を同じにする方法は?

wc という名前の子ノードを持つシーンがあります。そのノードにdae/modelファイルを追加したい。

次の方法でモデル/デイを追加できました。

  1. バンドルからの dae アセットを使用して親シーンを作成する
  2. 親シーンを scnView に追加し、それを self.view に型キャストします。
  3. dae を追加する必要なノードを取得します。
  4. 必要なノード dae でサブシーンを作成します。
  5. 親シーンの必須ノードの子としてサブシーン ルート ノードを追加します。
  6. 子ノードの位置を、親シーンの必要なノードの位置に設定します。

以下はスニペットです:

コード スニペット (viewDidLoad 内)

ログ出力

wcNode 位置 275.306549、157.163620、0.956176

DAE 位置 284.000000、160.000000、0.959596

前述のログ出力でわかるように、必要なノードとその子 Dae ノードの位置は同じではなく、シーン内でシフトされたモデルをレンダリングします。

なぜ位置が違うのですか?

シフトを補正するにはどうすればよいですか?

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

ios - SceneKit ノードの周囲に境界線を追加する

SceneKit で選択したノードをタップ ジェスチャで強調表示しようとしています。残念ながら、私はそれを達成することができませんでした。私ができる最善のことは、ノードがタップされたときにマテリアルを変更することでした。

ノード全体の色を変更する代わりに、オブジェクトの周りに境界線またはアウトラインを追加する方法を誰かが提案できますか?