問題タブ [scenekit]

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 に答える
6394 参照

objective-c - SceneKit を使用して 3D 空間で SCNode オブジェクトを回転させる

私は SceneKit の使い方を学ぼうとしています。例として、SDK を使用して太陽系を構築しようと考えました。SCNode オブジェクトを追加して、パターンや照明などのマテリアル プロパティを構成できます。また、惑星を回転させることはできますが、特定の経路に沿って惑星を「回転」させる方法がわかりません。

これまでの私のコードは次のようになります。

AppleDocs のどこかで、ルート ノードではなく太陽の座標系に惑星を追加する必要があることを読みましたが、とにかくそれを正しく理解しているかどうかはわかりません。

これを行う方法を教えてください。

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

ios - SceneKit の最適化

同じものを 1000 回表示したいのですSCNGeometryが、特定のアニメーション (回転、移動などの SCNActions など) と拡散マテリアルとして別の画像を使用します。

ドキュメントと素晴らしい WWDC プレゼンテーションを確認した後、1 つのノードを作成するための最良の方法を見つけました (つまり、1000 回呼び出されます)。

ただし、iPad Air では 40 fps にしか達しません (また、 firstMaterial.diffuse.contents を更新するブロックを使用して SCNAction を介してテクスチャをアニメーション化する場合は 27 fps に達します)。

私は、SKTextureAtlas を使用して (すべての画像が同じテクスチャ上にあるように)、同じジオメトリを使用すると考えました (明らかに、ジオメトリをコピーすると、データが共有されます - Build a Game with sceneKit を参照)。 OpenGL の最適化を許可します。SceneKit の多くのパラメーターで遊んでみましたが、成功しませんでした。

注意: SceneKit 統計は、1000 の描画呼び出しがあることを示しており、Xcode のグラフィック統計は、CPU 18 ミリ秒、GPU 22 ミリ秒、タイラー 18%、レンダラー 80%、デバイス 88% です (新しい SceneKit 統計が待ちきれません)。 Xcode のモジュール!)

私の質問は次のとおりです。それは通常のパフォーマンスだと思いますか、それとも SceneKit でやりたいことを最適化する方法はありますか? ありがとう!

編集:実際には SKTextureAtlas はレンダリングを最適化していないようですが、フレームレートを低下させているようです。SKTextureAtlas から取得した SKTexture の代わりに UIImage を使用すると、25% の改善 (50fps) が得られます。SKTextureAtlas または UIImages を使用してテクスチャをアニメーション化する (各オブジェクトのテクスチャを 0.2 秒ごとに更新する) と、実際にはパフォーマンス (20fps) が低下します。SKTextureAtlas は通常最適化に使用されるため、ここで何かが欠けていると思います。

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

cocoa - Swift での SCNScene の問題: SCNView に何も表示されない

私はこれをSwiftでやろうとしています。ただし、私の SCNView には何も表示されません。IB で接続を確認しましたが、すべて問題ありません。ソース コードをObjective CからSwiftに変換する際にエラーが発生したと思います。これが私のコードです:

0 投票する
4 に答える
9375 参照

swift - Scenekit.scene の上に HUD を作成する方法

Swift と Scenekit を試しています。Mac OS X アプリの構築。3D シーンを機能させるのは非常に簡単に思えます。しかし、ある種の 2D ハイスコア、レーダー表示、速度計などのないシーンとは何ですか? SpriteKit シーンが SceneView にシームレスに統合されることを期待していますが、これについてのドキュメントはあまり明確ではありません..

私が考えることができる最も明白で唯一の方法は、SceneView の上に SKView を配置し、それぞれを個別にレンダリングすることです。しかし、もっとエレガントな方法はありますか?

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

objective-c - SceneKit モデルの一定回転

外部デバイスから 10 倍/秒の加速度計データを取得しており、それを 3-D SceneKit モデルに反映させたいと考えています。つまり、加速度計のデータに応じてモデルを回転させたいのです。3D モデルは、SketchUp に組み込まれた .dae ファイルで、SceneKit シーンにロードしています。

現在、SceneKit シーンのルート ノードを回転させようとしています (ここでselfはカスタムSCNViewクラスを参照しています)。

self.scene.rootNode.transform = CATransform3DMakeRotation(angle, x, y, z);

これにはいくつかの問題があります。

  • 各軸に沿って特定の量を回転させるのではなく、特定のベクトルに沿って固定量を回転させます。相対ベクトル値を変更することで、特定の軸が何度回転するかを操作することは可能ですか? CATransform3DRotate各軸に 1 つずつ、3 つの を使用して変換を実装することは理にかなっていますか?
  • 前回の読み取り値からの角度の違いだけを回転させるのではなく、毎回新しい回転を作成します。たとえば、加速度データがx: 60˚, y: 40˚, y: -30˚最後に読み取られ、現在はx: 65˚, y: 45˚, y: -35˚である場合、モデルは x 軸に沿って 65 度回転します。前回との差が 5 度だけではありません (そうあるべきです)。これは、現在の読み取り値から最後の読み取り値を差し引くことで簡単に修正できるようですが、回転で数学がどのように機能するかはわかりません.