首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取Unity中被跟踪设备的SteamVR设备信息

获取Unity中被跟踪设备的SteamVR设备信息
EN

Stack Overflow用户
提问于 2020-09-24 14:57:06
回答 2查看 365关注 0票数 0

尊敬的SteamVR和Unity社区:

我现在已经搜索了很多关于Unity中如何接收被跟踪设备的信息,但似乎没有足够的文档记录,或者只是不可能,除了一些例外,比如设备类型。

我正在使用SteamVR 2.6.1和Unity2019.4.8,我想要获取我跟踪的设备的名称,或者如果它是灯塔,我想获取灯塔正在工作的频道。

例如,是否有机会通过API获得SteamVR系统报告生成的所有信息?

最好的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-24 21:42:19

至少我找到了一个解决方案来获取设备id,它是唯一的,可以用来识别灯塔:

代码语言:javascript
复制
var id = new System.Text.StringBuilder(64);
OpenVR.System.GetStringTrackedDeviceProperty((uint)i, ETrackedDeviceProperty.Prop_RenderModelName_String, id, 64, ref error);
Debug.Log(id);

其中i是被跟踪设备的编号。

票数 1
EN

Stack Overflow用户

发布于 2021-11-07 08:02:27

SteamVR在SteamVR_RenderModel中有一个函数UpdateModel(),用于确定控制器并在游戏中更新模型。我复制并修改如下:

代码语言:javascript
复制
        public string GetDeviceProperty(int index)
        {
            var system = OpenVR.System;
            if (system == null || index < 0) {
                return null;
            }

            var error = ETrackedPropertyError.TrackedProp_Success;
            uint capacity = system.GetStringTrackedDeviceProperty((uint) index, ETrackedDeviceProperty.Prop_RenderModelName_String, null, 0, ref error);
            if (capacity <= 1) {
                _logger.Verbose("Failed to get render model name for tracked object {index}", index);
                return null;
            }

            var buffer = new System.Text.StringBuilder((int) capacity);
            system.GetStringTrackedDeviceProperty((uint) index, ETrackedDeviceProperty.Prop_RenderModelName_String, buffer, capacity, ref error);

            return buffer.ToString();
        }

这将返回给定索引的字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64041044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档