繁体   English   中英

在 HoloLens2 中用手在平面上绘制

[英]Draw over plane using hand in HoloLens2

我想在 HoloLens2 应用程序上实现一个功能,它允许用户在用户触摸的每个部分的特定表面上绘制/绘画。

所以我们有一个平面,当我在这个平面上移动我的手时,我手下方的点应该是彩色的。 记住,HoloLens 的处理能力有限并且每帧调用Texture.Apply()是不可接受的,我该如何实现这样的功能?

我尝试采用眼动追踪热图演示场景中脚本来代替手触摸,但没有成功。

我变了

        private void Start()
        {
            if (EyeTarget != null)
            {
                EyeTarget.WhileLookingAtTarget.AddListener(OnLookAt);
            }
        }

        public void OnLookAt()
        {
            if (UseLiveInputStream && (EyeTarget != null) && (EyeTarget.IsLookedAt))
            {
                DrawAtThisHitPos(EyeTrackingTarget.LookedAtPoint);
            }
        }

    public void OnTouchUpdated(HandTrackingInputEventData eventData)
    {
        DrawAtThisHitPos(eventData.InputData);
    }

并使用了IMixedRealityTouchHandler 但随后 HoloLens 非常滞后并崩溃

任何建议如何解决这个问题?

HoloLens 的处理能力有限,每帧调用 Texture.Apply() 是不可接受的吗?

正如 Unity 文档中所说, Apply是一个潜在的昂贵操作,因此您需要在Apply调用之间更改尽可能多的像素。 在DemoVisualizer中,它使用的解决方案是EyeTrackingTarget组件提供的dwellTimeInSec属性,该属性定义了用户需要一直注视目标以通过停留激活选择它的持续时间(以秒为单位),持续时间值默认为0.8s。 它避免了对 Apply 方法的过度使用。

因此,您可以参考 EyeTrackingTarget 的这种做法来改善您的混合现实应用程序获得的性能不佳的帧率。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM