public override void Setup() { base.Setup(); // 設定する AR コンテンツをここに記述 ////////////////////////////////////////////////////////////////// // デバイスの向きを検出 var wallOrientation = WallOrientationForDeviceOrientation(); ////////////////////////////////////////////////////////////////// // ターゲットとして使用されるノードを作成 var targetPosition = new Vector3f(0, 0, -1000); // スクリーンから1000離れた場所に置く var wallScale = new Vector3f(0.5f, 0.5f, 0.5f); this.WallTargetNode = CreateImageNode(MainPageViewModel.ImageNodeInfo.Value, wallOrientation, wallScale, targetPosition); ////////////////////////////////////////////////////////////////// // ターゲットノードをコンテンツビューポートに関連付けられたカメラノードの子として追加 this.ARView.ContentViewPort.Camera.AddChild(this.WallTargetNode); ////////////////////////////////////////////////////////////////// // ArbiTrack ワールド空間に配置する画像ノードを作成 var trackingImageNode = CreateImageNode(MainPageViewModel.ImageNodeInfo.Value, Quaternion.Identity, Vector3f.UnitXyz, new Vector3f(0.0f, 0.0f, 0.0f)); //var trackingImageNode = CreateModelNode(Quaternion.Identity, Vector3f.UnitXyz, new Vector3f(0.0f, 0.0f, 0.0f)); // ArbiTrack のセットアップ SetUpArbiTrack(this.WallTargetNode, trackingImageNode); }
public void OnAnchorRemoved(ARAnchor p0, ARNode p1) { var anchorId = p0.AnchorId; if (mImageTarget.Id != anchorId) { return; } mBlackPantherNode.Visible = false; }
private void AddNodeToGyroPlaceManager(ARNode node) { // ジャイロスコープの配置を初期化 var gyroPlaceManager = ARGyroPlaceManager.Instance; gyroPlaceManager.Initialise(); // デバイスのジャイロスコープとともに移動するように、 // ジャイロスコープ配置マネージャーのワールド空間にターゲット ノードを追加 gyroPlaceManager.World.AddChild(node); }
public void OnAnchorRemoved(ARAnchor p0, ARNode p1) { var anchorId = p0.AnchorId; if (!mTargetedNodesMap.ContainsKey(anchorId)) { return; } var imageTargetNode = mTargetedNodesMap[anchorId].Value; imageTargetNode.Visible = false; }
private void SetUpArbiTrack(ARNode targetNode, ARNode childNode) { // ArbiTrack を初期化 var arbiTrack = ARArbiTrack.Instance; arbiTrack.Initialise(); // ターゲットノードを設定 arbiTrack.TargetNode = targetNode; // ArbiTrack のワールド空間に子としてノードを追加 arbiTrack.World.AddChild(childNode); }
// Finally, hide isTracking UI if we haven't done so already. public void OnAnchorUpdated(ARAnchor arAnchor, ARNode arNode) { if (arAnchor.GetType() == ARAnchor.Type.Plane) { var planeAnchor = (ARPlaneAnchor)arAnchor; // Update the mesh surface geometry var node = surfaces[arAnchor.AnchorId]; var plane = (ViroCore.Surface)node.Geometry; var dimensions = planeAnchor.Extent; plane.Width = dimensions.X; plane.Height = dimensions.Z; } }
public void OnAnchorFound(ARAnchor arAnchor, ARNode arNode) { // Spawn a visual plane if a PlaneAnchor was found if (arAnchor.GetType() == ARAnchor.Type.Plane) { var planeAnchor = (ARPlaneAnchor)arAnchor; // Create the visual geometry representing this plane var dimensions = planeAnchor.Extent; var plane = new ViroCore.Surface(1, 1) { Width = dimensions.X, Height = dimensions.Z }; // Set a default material for this plane. var material = new Material { DiffuseColor = Color.ParseColor("#BF000000") }; plane.Materials = new List <Material>() { material }; // Attach it to the node var planeNode = new Node { Geometry = plane }; planeNode.SetRotation(new Vector(-Math.ToRadians(90.0), 0, 0)); planeNode.SetPosition(planeAnchor.Center); // Attach this planeNode to the anchor's arNode arNode.AddChildNode(planeNode); surfaces.Add(arAnchor.AnchorId, planeNode); // Attach click listeners to be notified upon a plane onClick. planeNode.Click += (s, e) => { foreach (var listener in mPlaneClickListeners) { listener.OnClick(e.P0, e.P1, e.P2); } }; HideIsTrackingLayoutUi(); } }
private void Update3DModelProduct() { // Hide the product if the user has not placed it yet. if (mStatus != TrackStatus.SelectedSurface) { mProductModelGroup.Opacity = 0; return; } if (mHitArNode != null) { return; } mHitArNode = mScene.CreateAnchoredNode(mCrosshairModel.PositionRealtime); mHitArNode.AddChildNode(mProductModelGroup); mProductModelGroup.Opacity = 1; }
public void OnAnchorFound(ARAnchor p0, ARNode p1) { var anchorId = p0.AnchorId; if (mImageTarget.Id != anchorId) { return; } Vector anchorPos = p0.Position; Vector pos = new Vector(anchorPos.X, anchorPos.Y - 0.4, anchorPos.Z - 0.15); mBlackPantherNode.SetPosition(pos); mBlackPantherNode.SetRotation(p0.Rotation); mBlackPantherModel.Visible = true; mImageTargetFound = true; StartPantherExperience(); }
public void OnAnchorFound(ARAnchor p0, ARNode p1) { var anchorId = p0.AnchorId; if (!mTargetedNodesMap.ContainsKey(anchorId)) { return; } var imageTargetNode = mTargetedNodesMap[anchorId].Value; var rot = new Vector(0, p0.Rotation.Y, 0); imageTargetNode.SetPosition(p0.Position); imageTargetNode.SetRotation(rot); imageTargetNode.Visible = true; AnimateCarVisible(mCarModelNode); // Stop the node from moving in place once found var imgTarget = mTargetedNodesMap[anchorId].Key; mScene.RemoveARImageTarget(imgTarget); mTargetedNodesMap.Remove(anchorId); }
public void OnAnchorUpdated(ARAnchor p0, ARNode p1) { //no op }
public void OnAnchorRemoved(ARAnchor p0, ARNode p1) { // no-op }
public void OnAnchorFound(ARAnchor p0, ARNode p1) { // no-op }
public void OnAnchorRemoved(ARAnchor arAnchor, ARNode arNode) { surfaces.Remove(arAnchor.AnchorId); }