私は、SceneKitを使用して通常の再生とVRの両方をサポートするゲームに取り組んでいます。正常に再生するときは、ビューのオーディオリスナーにも対応する1台のカメラSCNView
が1つあります。 VRモードに切り替えると、2つの別のカメラから同じシーンを再生する2つの画面に分割され、オーディオリスナーを挟んで2つに分割されます。問題はありません。複数のSCNViewオーディオエラー
私はSCNAction
を使用してSCNAudioSuorce
を使用してサウンドエフェクトを再生するためにポジションオーディオが必要ですが、同じシーンが両方のビューで再生されているので、どのようにそれらの1つをミュートして、私はウェブとドキュメントを検索しましたが、これについては何も見つかりませんでした。
iOS版11更新:その音、アクションからそれを削除する(iOSの11に私のアプリをテストし、VRモードで__UpdateAudioTransform
でレンダリングキューのスレッドでアプリがクラッシュし、私が遊ぶためながらサウンドを再生しようとした後、どの他のノードの変換を含む)はゲームをうまく動かす。
アップデート1:アドバイスを@ricksterのおかげで私はstereoCameraLeftName
とstereoCameraRightName
を文字列として別の場所で定義されたノードの名前として使用されているこの
SCNTechnique(dictionary: [
"passes" : [
"leftView": [
"draw": "DRAW_SCENE",
"pointOfView": stereoCameraLeftName,
"viewport": "(0, 0, 400, 400)"
],
"rightView": [
"draw": "DRAW_SCENE",
"pointOfView": stereoCameraRightName,
"viewport": "(200, 0, 400, 400)"
]
],
"sequence": [ "leftView", "rightView" ]
])
を得たSCNTechnique
を実装し、アップルのマニュアルを参照して、次の試してみましたビューポートの寸法はテスト用です。私はこのテクニックをシーンに適用しても機能しません。シーンpointOfView
がどのように設定されているかによって、背景色でいっぱいのシーンが表示されます(pointOfView
は、非VRモードに使用されるカメラに設定されます。シーングラフ)、または2台のカメラ(pointOfView
がnil
に設定されています)のいずれかを使用してレンダリングされたフルサイズで、何が欠けていますか?
アップデート2:そこ
let technique = SCNTechnique(dictionary: [
"passes" : [
"leftView": [
"outputs": [ "color": "COLOR" ],
"draw": "DRAW_SCENE",
"colorStates": [
"clear": true,
"clearColor": "sceneBackground"
],
"pointOfView": stereoCameraLeftName,
"viewport": "0 0 \(w) \(h)"
],
"rightView": [
"outputs": [ "color": "COLOR" ],
"draw": "DRAW_SCENE",
"colorStates": [
"clear": false
],
"pointOfView": stereoCameraRightName,
"viewport": "\(w) 0 \(w) \(h)",
"blendStates": [
"colorOp": "add",
"alphaOp": "add"
]
]
],
"sequence": [ "leftView", "rightView" ]
])
しかし:いくつかの試行錯誤の後、私は、カスタムビューポートのためのシンプルなパスを定義するための正しい方法はw
とCGFloat
として定義h
で、次のようであることが判明問題は2パス目がレンダリングされたときに画面の左側が黒色(クリアカラー)になり、右側が正しくレンダリングされます。このパスを除外して最初のものだけを残すと、左側が正しくレンダリングされ、右側シーンの背景色が期待どおりに表示されます。奇妙なのは、iOS 11を実行しているiPhone 6でテストするのではなく、シミュレータ(iOS 11)でテストしてもうまくいくように見える場合、2つのパスを組み合わせる際に何か不足していると確信しています。
更新2.1:blendStates
を2番目のパスから削除すると同じ結果が得られます。
アップデート3:私は私のアプローチが正しいことを発見した問題を再現するためにMWEを再作成しようとしているは、私が問題だ場所を見つけるために私のプロジェクトの他の部分を調査しようとするでしょう。
最終更新:の問題、それはSCNTechnique
が正常に動作させる無効化、ビューにアクティブになるアンチエイリアシングに起因すると思われるが、iOSの11のバグのように思えるし、私はすでにバグレポートを提出してきました。
ありがとう、私はそれを調べるでしょう、あなたはこれについて読むべきチュートリアル/ガイドがありますか? –
私は、あなたが私の質問で見ることができるように、テクニックを定義する際にいくつかの進歩を遂げました。なぜ正しく動作していないのか分かりませんか? –
最終更新について:マルチサンプリング(アンチエイリアス)に関するバグを提出しています。テクニックでは、パス単位でマルチサンプリングを制御できるので、問題の一部には、ビュー固有の設定とパス固有のマルチサンプリング設定の間の競合が含まれる場合があります。 – rickster