public void SetupMapBuilder(SparseSpatialMapController mapControllerPrefab) { builderMapController = UnityEngine.Object.Instantiate(mapControllerPrefab); builderMapController.SourceType = SparseSpatialMapController.DataSource.MapBuilder; builderMapController.MapWorker = MapWorker; builderMapController.ShowPointCloud = true; }
void Start() { //界面控制 panel = GameObject.Find("/Canvas/Panel"); panel.transform.Find("ButtonClose").GetComponent <Button>().onClick.AddListener(() => { HiddenPanel(); }); info = panel.transform.Find("Text").GetComponent <Text>(); svContent = panel.transform.Find("Scroll View/Viewport/Content"); inputField = panel.transform.Find("InputField").GetComponent <InputField>(); dropdown = panel.transform.Find("Dropdown").GetComponent <Dropdown>(); btnAdd = panel.transform.Find("ButtonAdd").GetComponent <Button>(); btnAdd.onClick.AddListener(AddKeyPoint); btnAdd.interactable = false; btnDelete = panel.transform.Find("ButtonDelete").GetComponent <Button>(); btnDelete.onClick.AddListener(DeleteKeyPoint); btnDelete.interactable = false; panel.transform.Find("ButtonSave").GetComponent <Button>().onClick.AddListener(SaveKeyPoints); gameController = FindObjectOfType <GameController>(); session = FindObjectOfType <ARSession>(); mapWorker = FindObjectOfType <SparseSpatialMapWorkerFrameFilter>(); map = FindObjectOfType <SparseSpatialMapController>(); LoadKeyPoints(); HiddenPanel(); LoadMap(); }
private void Awake() { //稀疏空间地图初始 session = FindObjectOfType <ARSession>(); mapWorker = FindObjectOfType <SparseSpatialMapWorkerFrameFilter>(); map = FindObjectOfType <SparseSpatialMapController>(); SavePanel = GameObject.Find("MapName"); inputField = SavePanel.transform.Find("Panel/InputField").GetComponent <InputField>(); btnUpload = SavePanel.transform.Find("Panel/Btn_Upload").GetComponent <Button>(); btnSave = GameObject.Find("Canvas/Map/Btn_SaveMap").GetComponent <Button>(); //显示文本 text = GameObject.Find("Canvas/Map/Text").GetComponent <Text>(); }
void Start() { gameController = FindObjectOfType <GameController>(); panel = GameObject.Find("/Canvas/Panel"); btnNav = GameObject.Find("/Canvas/ButtonNav").GetComponent <Button>(); btnNav.onClick.AddListener(ShowNavUI); btnNav.interactable = false; panel.transform.Find("ButtonClose").GetComponent <Button>().onClick.AddListener(CloseNavUI); svContent = panel.transform.Find("Scroll View/Viewport/Content").transform; session = FindObjectOfType <ARSession>(); mapWorker = FindObjectOfType <SparseSpatialMapWorkerFrameFilter>(); map = FindObjectOfType <SparseSpatialMapController>(); SetLine(); CloseNavUI(); LoadMap(); }
void Start() { //稀疏空间地图初始 session = FindObjectOfType <ARSession>(); mapWorker = FindObjectOfType <SparseSpatialMapWorkerFrameFilter>(); map = FindObjectOfType <SparseSpatialMapController>(); //如果之前有建立过地图且文本框没有预设值 if (inputID.text.Length <= 0) { inputID.text = PlayerPrefs.GetString("MapID", ""); inputName.text = PlayerPrefs.GetString("MapName", ""); } map.MapLoad += MapLoadBack; //注册地图加载事件 map.MapLocalized += LocalizedMap; //注册定位成功事件 map.MapStopLocalize += StopLocalizeMap; //注册停止定位事件 StartLocalization(); }
void Start() { //保存按钮初始 gameController = FindObjectOfType <GameController>(); btnSave = GameObject.Find("/Canvas/ButtonSave").GetComponent <Button>(); btnSave.onClick.AddListener(Save); btnSave.interactable = false; //稀疏空间地图初始 session = FindObjectOfType <ARSession>(); mapWorker = FindObjectOfType <SparseSpatialMapWorkerFrameFilter>(); map = FindObjectOfType <SparseSpatialMapController>(); //追踪状态设置 session.WorldRootController.TrackingStatusChanged += OnTrackingStatusChanged; if (session.WorldRootController.TrackingStatus == MotionTrackingStatus.Tracking) { btnSave.interactable = true; } else { btnSave.interactable = false; } }
void Start() { //稀疏空间地图初始 session = FindObjectOfType <ARSession>(); mapWorker = FindObjectOfType <SparseSpatialMapWorkerFrameFilter>(); map = FindObjectOfType <SparseSpatialMapController>(); //注册追踪状态变化事件 session.WorldRootController.TrackingStatusChanged += OnTrackingStatusChanged; //初始化保存按钮 btnSave = GameObject.Find("/Canvas/Button").GetComponent <Button>(); btnSave.onClick.AddListener(Save); btnSave.interactable = false; if (session.WorldRootController.TrackingStatus == MotionTrackingStatus.Tracking) { btnSave.interactable = true; } else { btnSave.interactable = false; } //初始化显示文本 text = GameObject.Find("/Canvas/Panel/Text").GetComponent <Text>(); }
public void LoadMapMeta(SparseSpatialMapController mapControllerPrefab, bool particleShow) { if (!MapWorker || MapWorker.Localizer == null) { return; } if (Maps.Count > 1) { MapWorker.LocalizerConfig.LocalizationMode = LocalizationMode.KeepUpdate; } foreach (var m in Maps) { var meta = m.Meta; var controller = UnityEngine.Object.Instantiate(mapControllerPrefab); controller.SourceType = SparseSpatialMapController.DataSource.MapManager; controller.MapManagerSource = meta.Map; controller.MapWorker = MapWorker; controller.ShowPointCloud = particleShow; controller.MapLoad += (map, status, error) => { Debug.Log("\t定位中"); Debug.Log( "\t下载信息:" + "\t名称" + map.Name + "\tID" + map.ID + Environment.NewLine); CurrentMapLoad?.Invoke(m); GUIPopup.EnqueueMessage("Load map {name = " + map.Name + ", id = " + map.ID + "} into " + MapWorker.name + Environment.NewLine + " => " + status + (string.IsNullOrEmpty(error) ? "" : " <" + error + ">"), status ? 3 : 5); if (!status) { return; } GUIPopup.EnqueueMessage("Notice: By default (MainViewRecycleBinClearMapCacheOnly == false)," + Environment.NewLine + "load map will not trigger a download in this sample." + Environment.NewLine + "Map cache is used (SparseSpatialMapManager.clear not called alone)." + Environment.NewLine + "Statistical request count will not be increased (more details on EasyAR website).", 5); foreach (var propInfo in meta.Props) { GameObject prop = null; foreach (var templet in PropCollection.Instance.Templets) { if (templet.Object.name == propInfo.Name) { prop = UnityEngine.Object.Instantiate(templet.Object); break; } } if (!prop) { Debug.LogError("Missing prop templet: " + propInfo.Name); continue; } prop.transform.parent = controller.propsParent; prop.transform.localPosition = new UnityEngine.Vector3(propInfo.Position[0], propInfo.Position[1], propInfo.Position[2]); prop.transform.localRotation = new Quaternion(propInfo.Rotation[0], propInfo.Rotation[1], propInfo.Rotation[2], propInfo.Rotation[3]); prop.transform.localScale = new UnityEngine.Vector3(propInfo.Scale[0], propInfo.Scale[1], propInfo.Scale[2]); prop.name = propInfo.Name; m.Props.Add(prop); } }; controller.MapLocalized += () => { Debug.Log("\t定位成功 " + controller.MapManagerSource.Name); CurrentMapLocalized?.Invoke(m); GUIPopup.EnqueueMessage("Localized map {name = " + controller.MapInfo.Name + "}", 3); var parameter = controller.PointCloudParticleParameter; parameter.StartColor = new Color32(11, 205, 255, 255); controller.PointCloudParticleParameter = parameter; controller.propsParent.gameObject.SetActive(true); }; controller.MapStopLocalize += () => { CurrentMapStopLocalized?.Invoke(m); Debug.Log("\t定位结束 " + controller.MapManagerSource.Name); GUIPopup.EnqueueMessage("Stopped localize map {name = " + controller.MapInfo.Name + "}", 3); var parameter = controller.PointCloudParticleParameter; parameter.StartColor = new Color32(163, 236, 255, 255); controller.PointCloudParticleParameter = parameter; controller.propsParent.gameObject.SetActive(false); }; m.Controller = controller; } MapWorker.Localizer.startLocalization(); }
public void LoadMapMeta(SparseSpatialMapController mapControllerPrefab, bool particleShow) { if (!MapWorker || MapWorker.Localizer == null) { return; } if (Maps.Count > 1) { // This will take effect after the next MapWorker Start or OnEnable is called. // In this sample, we are sure about this according to the calling sequence. MapWorker.LocalizerConfig.LocalizationMode = LocalizationMode.KeepUpdate; } Debug.Log("Maps.Count: " + Maps.Count); foreach (var m in Maps) { var meta = m.Meta; var controller = UnityEngine.Object.Instantiate(mapControllerPrefab); controller.SourceType = SparseSpatialMapController.DataSource.MapManager; controller.MapManagerSource = meta.Map; controller.MapWorker = MapWorker; controller.ShowPointCloud = particleShow; controller.MapLoad += (map, status, error) => { GUIPopup.EnqueueMessage("Load map {name = " + map.Name + ", id = " + map.ID + "} into " + MapWorker.name + Environment.NewLine + " => " + status + (string.IsNullOrEmpty(error) ? "" : " <" + error + ">"), status ? 3 : 5); if (!status) { return; } GUIPopup.EnqueueMessage("Notice: By default (MainViewRecycleBinClearMapCacheOnly == false)," + Environment.NewLine + "load map will not trigger a download in this sample." + Environment.NewLine + "Map cache is used (SparseSpatialMapManager.clear not called alone)." + Environment.NewLine + "Statistical request count will not be increased (more details on EasyAR website).", 5); // prop info foreach (var propInfo in meta.Props) { GameObject prop = null; Debug.Log("propInfo.type: " + propInfo.type); switch (propInfo.type) { case MapMeta.PropType.Text: prop = UnityEngine.Object.Instantiate(Globals.instance.templetes[0]); var textTmp = prop.GetComponentInChildren <TextMesh>(); textTmp.text = propInfo.text; break; case MapMeta.PropType.Texture: prop = UnityEngine.Object.Instantiate(Globals.instance.templetes[1]); prop.GetComponent <UrlManager>().SetUrl(propInfo.infoUrl, propInfo.infoFileName, propInfo.type); break; case MapMeta.PropType.Video: break; case MapMeta.PropType.Model: break; case MapMeta.PropType.other: Debug.LogError("error: The PropType is other"); break; } if (!prop) { Debug.LogError("Missing prop templet: " + propInfo.Name); continue; } prop.transform.SetParent(controller.transform); prop.transform.localPosition = new UnityEngine.Vector3(propInfo.Position[0], propInfo.Position[1], propInfo.Position[2]); prop.transform.localRotation = new Quaternion(propInfo.Rotation[0], propInfo.Rotation[1], propInfo.Rotation[2], propInfo.Rotation[3]); prop.transform.localScale = new UnityEngine.Vector3(propInfo.Scale[0], propInfo.Scale[1], propInfo.Scale[2]); prop.name = propInfo.Name; // prop info m.Props.Add(prop); } }; controller.MapLocalized += () => { GUIPopup.EnqueueMessage("Localized map {name = " + controller.MapInfo.Name + "}", 3); var parameter = controller.PointCloudParticleParameter; parameter.StartColor = new Color32(11, 205, 255, 255); controller.PointCloudParticleParameter = parameter; }; controller.MapStopLocalize += () => { GUIPopup.EnqueueMessage("Stopped localize map {name = " + controller.MapInfo.Name + "}", 3); var parameter = controller.PointCloudParticleParameter; parameter.StartColor = new Color32(163, 236, 255, 255); controller.PointCloudParticleParameter = parameter; }; m.Controller = controller; } MapWorker.Localizer.startLocalization(); }