C# Unity全息镜头光标跟随用户视线偏离中心?

C# Unity全息镜头光标跟随用户视线偏离中心?,c#,unity3d,hololens,C#,Unity3d,Hololens,我基本上是在尝试使用自己的代码来完成BasicCursor及其对应的脚本Cursor.cs使用。我相信它的UpdateCursorTransform()方法是我试图模仿的,但我感到困惑 此时此刻,我让光标跟随用户的视线,但它似乎偏离了中心。光标位于用户实际凝视位置的下方和左侧。有什么好处 这是我的密码 // Do a raycast into the world based on the user's // head position and orientation. var headPosit

我基本上是在尝试使用自己的代码来完成BasicCursor及其对应的脚本Cursor.cs使用。我相信它的UpdateCursorTransform()方法是我试图模仿的,但我感到困惑

此时此刻,我让光标跟随用户的视线,但它似乎偏离了中心。光标位于用户实际凝视位置的下方和左侧。有什么好处

这是我的密码

// Do a raycast into the world based on the user's
// head position and orientation.
var headPosition = Camera.main.transform.position;
var gazeDirection = Camera.main.transform.forward;

RaycastHit hitInfo;
Ray ray;
Camera c = Camera.main;

ray = c.ScreenPointToRay(headPosition);

if (Physics.Raycast(headPosition, gazeDirection, out hitInfo))
{


    // If the raycast hit a hologram...
        objHit = hitInfo.transform;

    // Move the cursor to the point where the raycast hit.
        this.transform.position = hitInfo.point;

    // Rotate the cursor to hug the surface of the hologram.
        this.transform.rotation = Quaternion.FromToRotation(Vector3.up, hitInfo.normal);
}

单位应该是1米

记住,如果你的全息相机的视野很宽或很窄,那会人为地影响你所看到的东西(东西看起来会更近/更远)。在我正在进行的一个项目中,我的同事将全息图中的物体放置在离相机500个单位的地方,然后将FOV设置为10,这使得它们不能坐在真实世界的墙壁和地板所在的空间中。如果你试着绕着物体走,你就做不到

将视野设置为60度以获得最佳体验,我相信预制全息镜头相机的视野为51度


我不知道为什么尝试从米到英寸的转换会给你一个10次方的值(应该是~39.37的乘数)

如果光线没有击中什么东西(即凝视太空),你会怎么做?
光线。方向是。。。。方向您可能不想将其设置为某个位置…
headPosition+gazeDirection*某些距离的单位应为1米。记住,如果你的全息相机的视野很宽或很窄,那会人为地影响你所看到的东西(东西看起来会更近/更远)。将视野设置为60度以获得最佳体验。请稍后发布答案。至于使用这个设备,我有!它现在在我书桌的抽屉里。迫不及待地要等到这项技术变得更小、更轻、更强大和更大的全息视图区域。尝试使用
NavigationRails\uu
如果不起作用,请检查哪个轴的值较大(不要忘记
Abs()
is),并将其他值设置为零。