C# 我如何才能找到佩戴VR耳机的用户在360视频播放insider Unity Skybox中看到的坐标?
我试图找到一个用户的凝视坐标,他穿着HTC Vive,内置Tobii眼动跟踪器。用户正在Unity Skybox内观看360度视频播放。我正在使用Tobii Pro SDK 我使用了Tobii的VREyeTracker预置,并在XML文件中获取参数和值(更多详细信息见下文结果)。Unity数据与原始数据有何不同?因为我找不到任何具有相关描述的文档,所以我不确定在XML中获得的结果是否包含我要查找的信息 统一数据:C# 我如何才能找到佩戴VR耳机的用户在360视频播放insider Unity Skybox中看到的坐标?,c#,unity3d,virtual-reality,skybox,C#,Unity3d,Virtual Reality,Skybox,我试图找到一个用户的凝视坐标,他穿着HTC Vive,内置Tobii眼动跟踪器。用户正在Unity Skybox内观看360度视频播放。我正在使用Tobii Pro SDK 我使用了Tobii的VREyeTracker预置,并在XML文件中获取参数和值(更多详细信息见下文结果)。Unity数据与原始数据有何不同?因为我找不到任何具有相关描述的文档,所以我不确定在XML中获得的结果是否包含我要查找的信息 统一数据: GazeDirection Value="(-0.05267334, 0.0154
GazeDirection Value="(-0.05267334, 0.01541138, 0.99848940)" Valid="True" />
<GazeOrigin Value="(-0.03057870, 0.00478235, -0.04329382)" Valid="True" />
<PupilDiameter Value="0.00168019" Valid="True" />
<GazeRayWorld Origin="(-0.40116220, 1.04663500, -0.38193990)" Direction="(0.24876200, 0.05519217, 0.96699090)" Valid="True" />
GazeDirection Value=“-0.05267334,0.01541138,0.99848940)”Valid=“True”/
原始数据:
<GazeDirection UnitVector="(0.05267334, 0.01541138, 0.99848940)" Validity="Valid" />
<GazeOrigin PositionInHMDCoordinates="(30.57870000, 4.78234900, -43.29382000)" Validity="Valid" />
<Pupil PupilDiameter="1.68019100" Validity="Valid" />
PupilPosition PositionInTrackingArea="(0.55140850, 0.63337760)" Validity="Valid" />
PupilPosition PositionInTrackingArea=“(0.55140850,0.63337760)”Validity=“Valid”/
如果比较两个数据集,您可以很容易地看到以下关系:
- 统一数据
<GazeDirection Value="(-0.05267334, 0.01541138, 0.99848940)" Valid="True" />
<GazeOrigin Value="(-0.03057870, 0.00478235, -0.04329382)" Valid="True" />
<PupilDiameter Value="0.00168019" Valid="True" />
<GazeRayWorld Origin="(-0.40116220, 1.04663500, -0.38193990)" Direction="(0.24876200, 0.05519217, 0.96699090)" Valid="True" />
与 原始数据<GazeDirection UnitVector="(0.05267334, 0.01541138, 0.99848940)" Validity="Valid" />
<GazeOrigin PositionInHMDCoordinates="(30.57870000, 4.78234900, -43.29382000)" Validity="Valid" />
<Pupil PupilDiameter="1.68019100" Validity="Valid" />
但是X轴是倒转的 - 统一数据
<GazeDirection Value="(-0.05267334, 0.01541138, 0.99848940)" Valid="True" />
<GazeOrigin Value="(-0.03057870, 0.00478235, -0.04329382)" Valid="True" />
<PupilDiameter Value="0.00168019" Valid="True" />
<GazeRayWorld Origin="(-0.40116220, 1.04663500, -0.38193990)" Direction="(0.24876200, 0.05519217, 0.96699090)" Valid="True" />
与…有关 原始数据<GazeDirection UnitVector="(0.05267334, 0.01541138, 0.99848940)" Validity="Valid" />
<GazeOrigin PositionInHMDCoordinates="(30.57870000, 4.78234900, -43.29382000)" Validity="Valid" />
<Pupil PupilDiameter="1.68019100" Validity="Valid" />
但X轴倒置,系数为1000(单位为米,tobii单位为毫米)。这个名字听起来像是凝视光线相对于头部/hmd设备的原点->左一点(3cm),略高于hmd中心(1.5cm),设备后面4cm - 统一数据
<GazeDirection Value="(-0.05267334, 0.01541138, 0.99848940)" Valid="True" />
<GazeOrigin Value="(-0.03057870, 0.00478235, -0.04329382)" Valid="True" />
<PupilDiameter Value="0.00168019" Valid="True" />
<GazeRayWorld Origin="(-0.40116220, 1.04663500, -0.38193990)" Direction="(0.24876200, 0.05519217, 0.96699090)" Valid="True" />
与 原始数据<GazeDirection UnitVector="(0.05267334, 0.01541138, 0.99848940)" Validity="Valid" />
<GazeOrigin PositionInHMDCoordinates="(30.57870000, 4.78234900, -43.29382000)" Validity="Valid" />
<Pupil PupilDiameter="1.68019100" Validity="Valid" />
再加上因子1000
<GazeDirection Value="(-0.05267334, 0.01541138, 0.99848940)" Valid="True" />
<GazeOrigin Value="(-0.03057870, 0.00478235, -0.04329382)" Valid="True" />
<PupilDiameter Value="0.00168019" Valid="True" />
<GazeRayWorld Origin="(-0.40116220, 1.04663500, -0.38193990)" Direction="(0.24876200, 0.05519217, 0.96699090)" Valid="True" />
听起来它与
GazeOrigin
相关,但这次不是与HDM相关,而是在世界坐标中,其中方向也是世界空间中的固定向量。这意味着在世界坐标中,你在世界空间中向左看25厘米,向上看6厘米,在位置前方看1米。(-0.4011620,1.04663500,-0.38193990)
(听起来像你坐着或者很小;)。Unity数据和原始数据有什么不同?
->你得到的标签不同。。。两者的“凝视”方向相同(X符号除外)。。这可能是头部定位吗?此外,瞳孔直径和瞳孔来源似乎使用了不同的尺度。。可能单位以米为单位,而瞳孔原始测量单位以毫米为单位。感谢@derHugo的输入。您使用Unity和Tobii度量单位()是非常正确的。我正在试图了解我可以使用哪一个来计算1)头部位置和2)用户在运行360度视频的Unity Skybox中观看的屏幕坐标。我忘了写输出的这一部分:问题是:你得到注视(凝视)了吗绝对世界坐标中的位置/方向或相对于头部位置和方向的位置/方向?(我知道,例如MagicLeap以绝对世界坐标提供一切,而不考虑头部变换)。到1)您通常不必计算头部位置/方向。。HTC Vive的API应该已经提供给Unity->Camera position。谢谢@derHugo。相对于头部的位置和方向,人们如何获得它们?令人敬畏的解释。非常感谢!我试图通过方位角和仰角来理解用户正在查看的对象的位置,相机位置在(0.0.0)处,即球体的中心,而GazeRayWorld方向的世界坐标是向左25厘米,向上6厘米,相对于相机位置1米,即(0.24876200,0.05519217,0.96699090)