如何使用Unity和ARkit在信标的帮助下显示室内导航路径?

时间:2018-08-22 07:36:33

标签: c# unity3d ibeacon arkit indoor-positioning-system

我正在使用信标通过Unity增强现实功能显示室内路径。我从资产商店购买了一个插件。从信标中获得了RSSI(强度)。我仅使用了一个信标。我可以弹出在范围内时显示一条消息或模型。

1)如何显示从设备到信标所在的方向?我应该使用三角剖分法(需要深入的数学知识吗?)?如何实现?

2)除了使用信标之外,还有其他方法吗?我认为这是未来不使用信标的方法。 Blippar已经在为此工作(2019年)。

BluetoothLEHardwareInterface.ScanForPeripheralsWithServices(null, null, (address, name, rssi, bytes) =>
            {


                    BluetoothLEHardwareInterface.Log("item scanned: " + address);
                    if (_scannedItems.ContainsKey(address))
                    {
                        var scannedItem = _scannedItems[address];
                        scannedItem.TextRSSIValue.text = rssi.ToString();
                        BluetoothLEHardwareInterface.Log("already in list " + rssi.ToString());

          if (rssi > -50 && address == "65F9196B-96FE-98E5-B971-1A8EBCEAB08D")
                        {
                            Debug.Log("Near beacon is " + name + "  " + rssi + "  :" + address);

                            ShowPrefab();


                        }

                        else if (rssi < -50)
                        {
                            Debug.Log("Far");
                            HidePrefab();

                        }


                    }
                    else
                    {
                        BluetoothLEHardwareInterface.Log("item new: " + address);
                        var newItem = Instantiate(ScannedItemPrefab);
                        if (newItem != null)
                        {
                            BluetoothLEHardwareInterface.Log("item created: " + address);
                            newItem.transform.parent = transform;

                            var scannedItem = newItem.GetComponent<ScannedItemScript>();
                            if (scannedItem != null)
                            {
                                BluetoothLEHardwareInterface.Log("item set: " + address);
                                scannedItem.TextAddressValue.text = address;
                                scannedItem.TextNameValue.text = name;
                                scannedItem.TextRSSIValue.text = rssi.ToString();

                                _scannedItems[address] = scannedItem;
                            }
                        }
                    }


            }, true);

0 个答案:

没有答案