在 HoloLens 2 中用手在平面上绘制
Posted
技术标签:
【中文标题】在 HoloLens 2 中用手在平面上绘制【英文标题】:Draw over plane using hand in HoloLens2 【发布时间】:2021-02-13 16:34:33 【问题描述】:我想在 HoloLens2 应用程序上实现一项功能,该功能允许用户在用户触摸的每个部分的特定表面上绘制/绘画。
所以我们有一个平面,当我将手移到这个平面上时,我手下方的点应该是彩色的。
如何实现这样的功能,记住 HoloLens 的处理能力有限并且每帧调用Texture.Apply()
是不可接受的?
我尝试采用script from Eye tracking Heat map demo scene 来代替手触摸,但没有成功。
我变了
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 非常滞后和崩溃
有什么建议可以解决这个问题吗?
【问题讨论】:
【参考方案1】:HoloLens 处理能力有限,每帧调用 Texture.Apply() 是不可接受的?
正如 Unity 文档中所说,Apply
是一项潜在的昂贵操作,因此您需要在 Apply
调用之间更改尽可能多的像素。在 DemoVisualizer 中,它使用的解决方案是EyeTrackingTarget 组件提供的dwellTimeInSec
属性,该属性定义了用户需要持续查看目标以通过停留激活选择它的持续时间(以秒为单位),持续时间值默认为 0.8 s。它避免了过度使用 Apply 方法。
因此,您可以参考 EyeTrackingTarget 的这种做法来改善您的混合现实应用程序获得的性能不佳的帧速率。
【讨论】:
这很聪明。谢谢推荐,一定会用!以上是关于在 HoloLens 2 中用手在平面上绘制的主要内容,如果未能解决你的问题,请参考以下文章