【发布时间】:2020-12-11 04:35:20
【问题描述】:
如何使用 RealityKit 在 3d 空间中的两点之间创建一条线?
有creating lines between two points in Scenekit的例子,但是使用RealityKit的基本没有。
为了创建线条,我创建了一个矩形模型实体并将其放置在我的第一个接触点和当前接触点之间。从这里开始,我需要做的就是旋转矩形以面对当前的触摸点。但是,使用 simd_quatf(from: to:) 并没有按预期工作。
rectangleModelEntity.transform.rotation = simd_quatf(from: firstTouchedPoint,
to: currTouchedPoint)
如果我要触摸一个点然后直接向下拖动,矩形模型应该是第一个触摸点和当前触摸点之间的直线,但它保持水平并略微倾斜。
为了解决这个问题,我尝试获取我最初作为矢量的水平线与从第一个触摸点到当前触摸点的矢量之间的角度
let startVec = currTouchedPoint - firstTouchedPoint
let endVec = endOfModelEntityPoint - modelEntityCenterPoint
let lengthVec = simd_length(cross(startVec, endVec))
let theta = atan2(lengthVec, dot(startVec, endVec))
这给了我 3d 空间中两个向量之间的角度,这似乎是正确的,当我检查它时,当我直接在它之间触摸和拖动时它给了我 90 度。
问题是我不知道旋转它的轴应该是什么。由于这是 3d 空间,所以线不需要在 2d 平面上,当前触摸的位置可以在开始触摸位置的下方和前面。
rectangleModelEntity = simd_quatf(angle: theta, axis: ???)
就个人而言,我什至不太确定上述是否是在两点之间创建一条线的正确解决方案。从理论上讲,这是相当基本的,创建一个高度/深度较低的矩形来模拟一条线,将其放置在起始点和当前触摸点的中心,然后旋转它以使其方向正确。
两个向量之间的上述度数的轴应该是什么?
有没有更好的方法使用 RealityKit/ARKit 在 3d 空间中的点之间创建两条线?
【问题讨论】:
标签: swift augmented-reality arkit realitykit