XanderXu / HandVector

Match hand gesture for Apple Vision Pro, Test Hand Tracking on simulator

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

我想要在识别出手势之后在手的右侧显示一个view

junpingfu opened this issue · comments

我想要在识别出手势之后在手的右侧显示一个view,同时这个view可以跟随手进行移动。
`var pos = latestHandTracking.left?.position(relativeTo: rootEntity) ?? SIMD3(-0.5,1.1,-0.2)

            pos = pos + [0.1, 0.18, -0.25]
            menu.setPosition(pos, relativeTo: rootEntity)`

我通过这个方法将我的view设置在 [0.1, 0.18, -0.25] 偏移这个的位置上。 在正面时是正常的,但是当转动头部,移动手以后,view的位置会出现很大的差异,正面和侧面时的差异相差很大。知道是什么原因吗。还是说我这样直接做偏移的方法是不对的

因为你只考虑了左手的位置移动,没有考虑旋转。
一般比较简单的做法是,将 view 加入 latestHandTracking.left 下面,成为它的子级 Enity,就会自动跟随父级移动和旋转。
第二种,将 view 添加到 rootEnity 下面,然后利用 Entity 的矩阵转换函数:

var matrix =  latestHandTracking.left?.matrix(relativeTo: rootEntity) 
matrix = matrix * your_offset_matrix_to_left_hand
menu.setTransformMatrix(matrix, relativeTo: nil)

第三种,还可以单纯利用 matrix 手动计算位置。

好的,我试试直接add到left上吧, 自己计算位置这个不会算😮‍💨

请问您有什么论坛,或者交流群吗,关于vision pro的