仮想コンテンツを配置する
次の情報を参照して、共有AR体験において仮想コンテンツを配置し、方向を合わせる方法を理解する。
ピアのポーズ
ARNetworking
セッションでは、すべてのピアが自身の座標系で開始します。この際、 ARSession
の実行を開始した時点のデバイスの位置が原点(0,0,0)になります。位置が安定すると、ピアのポーズはホストの座標系にスナップされます。
デフォルトでは、安定したピアはすべて、他のすべてのピアに自分のポーズをブロードキャストします。ポーズのブロードキャストは、アプリケーションの要件に基づいて設定できます。
using Niantic.ARDK.AR.Networking; IARNetworking arNetworking; // To enable arNetworking.EnablePoseBroadcasting(); // To disable arNetworking.DisablePoseBroadcasting(); // To configure how often poses are broadcast arNetworking.SetTargetPoseLatency(latency);
各ピアで利用可能な最新のポーズは、IARNetworkingインターフェイスを使用して取得できます。
var allPeerPoses = arNetworking.LatestPeerPoses; var myPeerPose = arNetworking.ARSession.CurrentFrame.Camera.Transform;
また、ローカルデバイスのポーズを含め、ピアのポーズのアップデートをサブスクライブすることもできます。
using Niantic.ARDK.Utilities; IARNetworking _arNetworking; Dictionary<IPeer, GameObject> _peerGameObjects; void SubscribeToPeerStateUpdates() { _arNetworking.PeerPoseReceived += OnPeerPoseReceived; } void OnPeerPoseReceived(PeerPoseReceivedArgs args) { var peer = args.Peer; var pose = args.Pose; // Use this information to attach a GameObject to a player, // have in-game characters look at a player, have an AI // shoot at a player, etc. var peerGameObject = _peerGameObjects[peer]; peerGameObject.transform.position = pose.ToPosition(); peerGameObject.transform.rotation = pose.ToRotation(); }