問題タブ [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.
ios - カスタム SceneKit キャラクターが正しく複製されない
完全にカスタム化された SCNNode をプログラムで作成しました。このノードは、カスタム ジオメトリ、子ノードの階層としてのスケルトン リグ、およびスケルトンとジオメトリを結合するための SCNSkinner オブジェクトを備えています。問題は次のとおりです。カスタム ノードのクローンを作成するとすぐに、ジオメトリとスケルトンの間のバインドが失われます。
この問題の根本にたどり着くために、かなり複雑なキャラクター ノードを、考えられる最も単純なジオメトリとリグの組み合わせ (12 頂点のジオメトリ ブロックと 3 ジョイントの骨格リグ) に置き換えました。
この時点で画像を共有したかったのですが、まだ十分な評判がないのでできません...
このカスタム SCNNode は、シーンに直接追加する限り、完全に機能します。さて、現在のアプリケーションでは、このノードをシーンに数回追加する必要があります。そのため、ノードのクローンを作成し、代わりに結果のクローンをシーンに追加する必要があります。しかし、カスタム ノードのクローンを作成した結果、何かが大きく間違っています。上で述べたように、ジオメトリとスケルトンの間の結合が失われているように見えます。クローン ノードのスケルトンは引き続きシーンに配置できますが、ジオメトリはスケルトンの位置または変換に従わなくなります。
私がすでに試したこと:
1.) 新しいノードを作成し、元のジオメトリのコピーをそれに追加しました。次に、スケルトン ルート ノードのクローンを作成し、これを新しいノードにも追加しました。最後に、オリジナルのスキナーを新しいノードのスキナーとして設定します。残念ながら役に立ちません。結果は、直接複製されたノードとまったく同じように動作します。
2.) ジオメトリとスケルトンの間のバインディングを再作成しようとして、SCNSkinner のディープ コピーを作成し、それを新しいノードのスキナーにしました。しかし、これは C3DSourceAccessorGetMutableValuePtrAtIndex でクラッシュを引き起こしただけで、修正できませんでした。
ios - collada ファイル node.geometry の SCNScene が nil です
問題はタイトルにあります。の にアクセスしてから のコレクションを編集する必要がありますがSCNGeometry
、ノードSCNNode
を調べると、ほとんどすべてのプロパティがプロパティを含むように設定されています。奇妙なことに、すべてのノードがファイルからロードされており、シーン内ですべて正常にレンダリングされています。どんな洞察も大歓迎です。SCNMaterial
SCNGeometry
nil
geometry
.dae
ios - SceneKit の 3 人称カメラ
ノード (ボール) が移動するたびにカメラが追従するように、SCNCamera
をにアタッチする必要があります。SCNNode
これまでのところ、物理演算が更新されたときにカメラを常に動かすことで何とかできましたが、あまり効率的ではなく、遅延が発生します。
SCNTransformationConstraint
カメラをノードに「取り付ける」ことができるという情報をいくつか読みましたが、実際の例は見つかりませんでした。
カメラの位置を調整したいので、カメラをノードに取り付けるだけではいけません。
ありがとう。
編集:(口ひげへ)
私はそれを使用してそれをやろうとしました:
しかし、次のようなエラーが表示されます。Extraneous '_' in parameter: 'rendered' has no keyword argument name
編集2(作業中):
Moustach のアドバイスにより、この作業を効率的に行うことができました。
カメラの位置が更新されるようになりました:
さらに、SCNNode
その位置を保持するために、カメラ ノードの rootNode として新規作成されました。
カメラのセットアップは次のようになります。
そして、カメラ移動関数は次のようになります。
ios - iOS デバイスの移動に合わせて cameranode が回転する
360 度ビデオ プレーヤー プロジェクトです。
ルートノードに cameranode( SCNNode
) を追加すると、 cameranode が の中心(0,0,0) に配置され、SCNSphere
動画を再生できるようになりました。
次に、devicemotion を使用する必要があります。デバイスが動いたときにカメラを回転させる必要があります。特定の角度を回転させるだけではありません。(デバイスの移動だけでなく、デバイスを持っているとき、私の移動はデバイスが動いていると見なします。 を使用するdeviceMotion.attitude.roll
と、カメラノードは、デバイスを持って周回するときではなく、デバイス自体が移動するときにのみ移動することがわかりました)
デバイスが (x1,y1,z1) の位置にある場合、cameranode はデバイスの移動に合わせて回転し、デバイスが再び (x1,y1,z1) の位置にある場合、ビューは最後に残したものと同じになります。 .
これが私がやったことです:
計算が間違っている可能性があります。なぜ 60 を割るのかわかりませんが、使用するときに必要な最も近い値のようです[self.cameraNode runAction:[SCNAction rotateByX:-tempY y:tempX z:tempZ duration:0]];
ここに問題がありますか?
- どのデータを使用すればよいですか?
CMGyroData
またはCMDeviceMotion
。を使用する場合CMDeviceMotion
、どの特定の値を使用すればよいですか? deviceMotion.attitude
、deviceMotion.attitude.quaternion
、deviceMotion.gravity
- cameranode を回転させる正しい方法はどれですか? 方法はたくさんありますが、よくわかりません。
+ (SCNAction *)rotateByX:(CGFloat)xAngle y:(CGFloat)yAngle z:(CGFloat)zAngle duration:(NSTimeInterval)duration;
+ (SCNAction *)rotateToX:(CGFloat)xAngle y:(CGFloat)yAngle z:(CGFloat)zAngle duration:(NSTimeInterval)duration;
swift - SceneKit カメラ アニメーションの移動と減速
次のコードを使用して、SCNScene シーンのカメラ ノードを z 軸に沿って移動しています。
カメラを停止するまでスムーズに減速するイベント (ゲームによって発生する GameOver イベントなど) を指定したいと思います。
カメラの動きをスムーズに止めるには?
xcode - 背景画像を ScnScene に追加する
SpriteKit とエミッタ パーティクル (sks) を使用するアプリがありますが、これはシーン キットのパーティクル (scnp) ほど現実的ではありません。それをSKSceneに組み込みたいのですが、それが可能かどうかはわかりません。そこで、SCNScene とパーティクル (scnp) を作成することにしました。ただし、背景画像を追加したいのですが、3D効果はパーティクルだけです。SCNScene に背景画像を設定するのを手伝ってくれる人はいますか? 伝統的に、このように SKScene に追加していましたが、SceneKit のオンライン ヘルプは見つかりませんでした。
前もって感謝します