我实际上是在尝试使用我自己的代码来完成BasicCursor及其相应的脚本Cursor.cs在使用Microsoft Toolkit之后所做的事情。我相信它的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);
}
答案 0 :(得分:1)
Unity单位应该是1米。
请注意,如果你的hololens相机的视野非常宽或非常狭窄,那么会人为地影响你所看到的东西(事物看起来更近/更远)。在我正在进行的一个项目中,我的同事将远离摄像机的全息图物体放置了500个单位,然后将FOV设置为10,这使得它们不会坐在真实世界的墙壁和地板所在的空间中。 。如果你试图绕着物体走动,你就无法做到。
将视野设置为60度以获得最佳体验,我相信预制的hololens相机具有51的视野。
我不确定为什么尝试从米转换为英寸会给你一个以10的幂为单位的值(应该是~39.37的乘数)