如何让图片贴在墙上?

问题描述 投票:0回答:1

我在使用arkit和realitykit,首先加载一个房间,然后把图片贴在墙上,但是如何让图片贴在墙上,如何让图片正确的旋转,有四种可能,墙的正面:z+,z-,x+,x-。

red frame is wrong,it should be yellow

ios arkit
1个回答
0
投票

场景套件

回答你的第一个问题,要想让节点粘在一个特定的地方,你只需要保留一个想要的位置,然后添加节点,除非你删除它,否则它应该不会消失。当你改变手机方向和位置时,它可能会上下移动一下,但不会太大。

node.position = SCNVector3(x, y, z)

如果你使用润色来定义位置,我建议你考虑一下 sceneView.hitTest()触摸开始() 职能

至于旋转,你可以简单地在你感兴趣的节点上沿着任何轴线,在任何需要的方向上使用欧拉角。

node.eulerAngles.x = -.pi / 2

另外,我强烈推荐你 "用Swift开发应用程序" 由苹果教育,2019年。在这本书中,有整整一章的内容是关于ARKit的,除了解答你的疑问外,还有许多有用的技术和想法。

你可以从《App开发与Swift》一书中找到章末引导项目的实现,但自己做会更有用。

RealityKit

如上所述 此处您可以使用以下两个选项之一进行旋转

let boxAnchor = try! Experience.loadBox()

boxAnchor.steelBox?.orientation = simd_quatf(angle: .pi/4, axis: [0, 0, 1]) 

对于角度属性,你可以插入你想让对象旋转多少弧度,对于轴属性,你可以选择你想旋转的轴。

另一个选择是使用变换

boxAnchor.steelBox?.transform = Transform(pitch: 0, yaw: 0, roll: .pi/4) 

滚动、俯仰和偏航表示沿某一特定轴线的旋转,更多的写法是 此处.

要改变位置,你可以再次使用transform的transform转换。

steelBox.transform.translation = [0, 0, -0.5]

这将根据给定的参数翻译你的对象。这个函数主要依赖于 仿射变换.

关于与其他物体之间的转换问题

SceneKit中的节点和RealityKit中的实体都会相对于父节点或实体进行转换和旋转。

所以,在你的案例中,你有一个大模型,你打算在其中放置较小的对象,你有两个选择,一是在大模型(房子)上使用触摸检测,二是在实体上使用触摸检测。

你有两个选择,要么在大模型(房子)上使用触摸检测,然后他们手动计算对象应该放在哪里,这可能相当麻烦。

另一种选择是在预定义的位置添加小的透明平面,然后在它们上添加触碰检测。这样你就可以省去计算较小的物体应该放在哪里了。

运气好

© www.soinside.com 2019 - 2024. All rights reserved.