2017-07-31 13 views
0

the documentation for planeDetectionを読んで、それはあなたが水平面検出を有効にした場合、セッションはARPlaneAnchorオブジェクトを追加し、撮影したビデオ画像の分析があるように思われる領域を検出するたびにARSessionDelegate、ARSCNViewDelegate、またはARSKViewDelegateオブジェクトに通知ARKitでは、ARSKViewDelegateの平面検出デリゲートメソッドは何ですか?

を述べて平面。

ただし、平面検出イベントを受け取るARSKViewDelegateのメソッドが見つかりません。私はARSCNViewDelegateと多くの例を見る。それは方法view(_:didAdd:for:)にありますかもしそうなら、それが平面検出アンカーであるかどうかをどのように検出できますか?

答えて

1

検出されたプレーンはARSessionに追加されたアンカーなので、新しく追加されたアンカーへの応答にデリゲートメソッドを使用します。 Apple's "Providing 2D Virtual Content with SpriteKit" doc

、彼らは新しいアンカーに応じてSpriteKitベースノードを作成するためのいくつかの基本的なコードを示しています。

func view(_ view: ARSKView, nodeFor anchor: ARAnchor) -> SKNode? { 
    return SKLabelNode(text: "") 
} 

あなたは、すべての検出された平面の中心にビルボード絵文字を入れたい場合は、それはすべてのコードあなたです必要。そうでなければ、あなたは以下の一つ以上を行うことができます...

  • は異なるSpriteKitベースノードを提供する - その方法でそれを初期化し、そこにそれを返します。

  • また、シーンに手動でアンカーを追加することもできます。この場合、平面検出ベースのアンカーをソートする必要があるかもしれません(この場合、SpriteKitドキュメント、チュートリアル、その他の質問はSpriteKitの使用方法を参照してください)。残り。

    func view(_ view: ARSKView, nodeFor anchor: ARAnchor) -> SKNode? { 
        if let plane = anchor as? ARPlaneAnchor { 
         // this anchor came from plane detection 
         return SKLabelNode(text: "✈️") // or whatever other SK content 
        } else { 
         // this anchor came from manually calling addAnchor on the ARSession 
         return SKLabelNode(text: "⚓️") // or whatever other SK content 
        } 
    } 
    
  • はSKコンテンツが提供する何かそれを設定する方法を選択するためにARPlaneAnchorのプロパティの一部を使用してください:あなたがそのメソッドの型をテストできるように平面アンカーは、ARPlaneAnchorインスタンスです。その場合は、上記のような条件付きキャスト(as? ARPlaneAnchor)を使用して、これらのプロパティにアクセスできます。

  • ARKitが提供/管理するSKコンテンツの位置/方向を変更するか、各アンカーに複数のSKノードを追加します。その場合は、代わりにview(_:didAdd:for:)を実装し、SKコンテンツの新しいノードを作成し、位置(など)を設定してから、そのメソッドが提供するnodeの子として追加してください。

+0

私は基本的な例を 'view nodeFor'で実行しようとしましたが、トリガされていないようです - 私は床を見ながらカメラをパンしようとしましたが、 'configuration.planeDetection = .horizo​​ntal' – MonkeyBonkey

+0

これ以上調べてみると、設定行' configuration.worldAlignment = .gravityAndHeading'のように見えるので、面検出アンカーが数分間起動されません。それはなぜでしょうか? – MonkeyBonkey

+0

ゆっくりとした世界のアライメントについての質問を別の質問に分け、これを受け入れます。 – MonkeyBonkey

関連する問題