ios - ARKit 如何从角落而不是中心绘制平面

标签 ios swift math scenekit arkit

我有垂直平面让我们说墙。在墙上,我必须添加另一个从 point1 到 point2 的平面,其中 point1 和 point2 是来自 Wall 的 HitTest 的 SCNVector。

墙节点以动态值旋转欧拉角 Y。要在墙上画平面,我必须申请

 plane.eulerAngles = wall.eulerAngles

它工作正常。我会画飞机。 但平面是从中心绘制的,这是我不想要的。我想从顶角绘制平面,所以我必须从 point1 减去宽度/2 和高度/2。

但是平面是旋转的,所以通过改变 x , y 值在这里不起作用。我还需要根据 Y 旋转更改 Z 值

问题:如何计算旋转平面的宽/2和高/2?

如何重现

1) 使用 ARKit 应用程序创建 Xcode 项目

2) 在ship.scn文件中添加SCNPlane对象

3) 在右侧面板中将 Y 的角度更改为 30

4) 用红色箭头移动平面,只观察到 X 值也改变了 Z 值

enter image description here

用红色箭头移动后

enter image description here

最佳答案

使用检查器时,您可以将“编辑空间”设置为“世界”(而不是“本地”),使用操纵器(视口(viewport)中的箭头)时,您还可以选择将编辑空间更改为“世界” "或 "parent",这样您的更改就不会考虑节点的旋转。

enter image description here enter image description here

关于ios - ARKit 如何从角落而不是中心绘制平面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53130116/

相关文章:

c# - 是否有任何 C# 数学库可以进行插值/外推

iOS 模拟器第一次启动需要很长时间

ios - 如何一次关闭两个模态视图 Controller ?

ios - 通过 navigationController 使用 segue 传递数据

ios - UIButton 上的圆形渐变边框

matlab - 编写一个递归函数,计算 n >= 0 除以 d > 0 时的余数 r

iphone - 查看过渡动画

iphone - UIScrollView 上具有垂直间距的动态 UIButton

ios - XCUIElement tap() 不工作

math - 中点已知的三次贝塞尔计算