Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用全息透镜2在平面上绘制_C#_Unity3d_Hololens_Mrtk_Windows Mixed Reality - Fatal编程技术网

C# 使用全息透镜2在平面上绘制

C# 使用全息透镜2在平面上绘制,c#,unity3d,hololens,mrtk,windows-mixed-reality,C#,Unity3d,Hololens,Mrtk,Windows Mixed Reality,我想在HoloLens2应用程序上实现一个功能,允许用户在用户触摸的每个部分的特定表面上绘制/绘制 所以我们有一个平面,当我在平面上移动我的手时,我手下面的斑点应该是彩色的。 记住HoloLens的处理能力有限,调用Texture.Apply()每一帧都是不可接受的,我如何实现这样的功能 我试着用手触摸来代替,但没有成功 我变了 private void Start() { if (EyeTarget != null)

我想在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);
            }
        }

并使用
IMixedRealityTouchHandler
。但是全息透镜是极度滞后和崩溃的

如何解决这个问题有什么建议吗

HoloLens的处理能力有限,调用纹理。Apply()每帧都是不可接受的

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


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

这非常明智。谢谢你的建议,我一定会用的!
    public void OnTouchUpdated(HandTrackingInputEventData eventData)
    {
        DrawAtThisHitPos(eventData.InputData);
    }