尊敬的SteamVR和Unity社区:
我现在已经搜索了很多关于Unity中如何接收被跟踪设备的信息,但似乎没有足够的文档记录,或者只是不可能,除了一些例外,比如设备类型。
我正在使用SteamVR 2.6.1和Unity2019.4.8,我想要获取我跟踪的设备的名称,或者如果它是灯塔,我想获取灯塔正在工作的频道。
例如,是否有机会通过API获得SteamVR系统报告生成的所有信息?
最好的。
发布于 2020-09-24 21:42:19
至少我找到了一个解决方案来获取设备id,它是唯一的,可以用来识别灯塔:
var id = new System.Text.StringBuilder(64);
OpenVR.System.GetStringTrackedDeviceProperty((uint)i, ETrackedDeviceProperty.Prop_RenderModelName_String, id, 64, ref error);
Debug.Log(id);其中i是被跟踪设备的编号。
发布于 2021-11-07 08:02:27
SteamVR在SteamVR_RenderModel中有一个函数UpdateModel(),用于确定控制器并在游戏中更新模型。我复制并修改如下:
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();
}这将返回给定索引的字符串。
https://stackoverflow.com/questions/64041044
复制相似问题