- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要将 ARSCNView
的 2d 坐标空间中的点转换为 3d 空间中的坐标。基本上是一条从视点到触摸位置的射线(距离设定的距离)。
我想为此使用 arView.unprojectPoint(vec2d)
,但返回的点似乎总是位于 View 的中心
vec2d
是一个 SCNVector3
从这样的 2d 坐标创建
SCNVector3(x, y, 0) // 0 specifies camera near plane
我做错了什么?我怎样才能得到想要的结果?
最佳答案
我认为您至少有 2 种可能的解决方案:
使用hitTest(_:types:)
实例方法:
This method searches for real-world objects or AR anchors in the captured camera image corresponding to a point in the SceneKit view.
let sceneView = ARSCNView()
func calculateVector(point: CGPoint) -> SCNVector3? {
let hitTestResults = sceneView.hitTest(point,
types: [.existingPlane])
if let result = hitTestResults.first {
return SCNVector3.init(SIMD3(result.worldTransform.columns.3.x,
result.worldTransform.columns.3.y,
result.worldTransform.columns.3.z))
}
return nil
}
calculateVector(point: yourPoint)
使用unprojectPoint(_:ontoPlane:)
实例方法:
This method returns the projection of a point from 2D view onto a plane in the 3D world space detected by ARKit.
@nonobjc func unprojectPoint(_ point: CGPoint,
ontoPlane planeTransform: simd_float4x4) -> simd_float3?
或:
let point = CGPoint()
var planeTransform = simd_float4x4()
sceneView.unprojectPoint(point,
ontoPlane: planeTransform)
关于swift - ARSCNView unprojectPoint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49573794/
我需要将 ARSCNView 的 2d 坐标空间中的点转换为 3d 空间中的坐标。基本上是一条从视点到触摸位置的射线(距离设定的距离)。 我想为此使用 arView.unprojectPoint(ve
我正在 iOS 上使用 SceneKit 开发一些代码,在我的代码中,我想确定全局 z 平面上的 x 和 y 坐标,其中 z 为 0.0,x 和 y 由点击手势确定。我的设置如下: overr
是否可以使用 SceneKit 的 unprojectPoint在没有深度值的情况下将 2D 点转换为 3D?我只需要找到 XZ 平面中的 3D 位置。 Y 可以始终为 0 或任何值,因为我没有使用它
我是一名优秀的程序员,十分优秀!