- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
完全依赖 ARKit
自动平面检测是我不想做的事情,因为它需要时间来检测表面,然后现实生活中的表面应该有足够的纹理,因此我需要考虑一些事情提供一个选项,如果我愿意,我应该能够通过点击按钮随意添加 anchor 。
这就是 renderer(nodeFor:)
派上用场的地方。只需在点击按钮时添加一个 anchor ,使用 hitTest
确定 anchor 的位置,然后使用 nodeFor:
方法添加节点。
但是,在其他情况下,当我不想手动点击按钮时,renderer(didAdd:)
应该可以工作。我制作了一个共享对象,通过它我可以确定平面检测是否需要“自动”或“手动”。如果是自动的 planeDetection
将设置为 .horizontal
而如果是手动的,planeDetection
将设置为 []
。
问题在于测试委托(delegate)下的两种方法中的任何一种似乎都可以工作。 有什么方法可以实现我想要的吗? 有一个开关,我可以使用它来切换是要自动检测平面还是要先添加 anchor 然后再添加平面。我很想有这两种选择。
是否可以使用两个不同的代表来实现它,只是一个想法......在那种情况下它会如何工作。指针将不胜感激。
最佳答案
是的,renderer(didAdd: )
和 renderer(nodeFor: )
是互斥的。根据文档,如果我们想在场景中实现我们自己的添加节点的方法,我们可以继续使用 renderer(nodeFor: )
,或者我们可以代替选择 ARKit 使用 renderer(didAdd: )
为我们做同样的事情。
管理这两种情况的方法,即。 planeDetection = []
时手动添加节点;当 planeDetection = .horizontal
时自动添加节点可以通过使用 renderer(nodeFor: )
方法本身来实现。不需要 renderer(didAdd: )
。
在 renderer(nodeFor: )
中,如果 planeDetection = .horizontal,anchor 可以被转换为 ARPlaneAnchor
,其center 和 extent 可用于更新添加的节点。
如:
func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
if let planeAnchor = anchor as? ARPlaneAnchor {
let node = SCNNode()
let plane = SCNPlane(width: CGFloat(planeAnchor.extent.x),
height: CGFloat(planeAnchor.extent.z))
let planeNode = SCNNode(geometry: plane)
planeNode.name = "anchorPlane"
planeNode.simdPosition = float3(planeAnchor.center.x, 0, planeAnchor.center.z)
node.addChildNode(planeNode)
return node
同时,可以对planeDetection = []
施加另一个条件,当anchor不能被转换为ARPlaneAnchor
时,节点下的geometry可以是根据需要给定尺寸。
} else {
let node = SCNNode()
let plane = SCNPlane(width: 0.5, height: 0.5)
plane.firstMaterial?.diffuse.contents = UIColor.white
let planeNode = SCNNode(geometry: plane)
node.addChildNode(node)
return node
}
}
关于ios - ARKit:渲染器(didAdd:)和渲染器(nodeFor:)独占,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48947791/
当我在其中一个扬声器上打开独占模式音频流时,会发出奇怪的嗡嗡声。这种嗡嗡声不会在我的其他设备上的相同条件下发生,也不会在一般的独占推送模式或共享模式下发生。 问题似乎是 WASAPI 将周期设置为比我
我的一个类中有一个 double 值,并且有一个上限。 问题是当我尝试将此变量设置为大于其限制的值时。当发生这种情况时,我想将其设置为限制内最接近的值。 当我尝试时,尴尬的情况发生了 .getLimi
我有锁定每个函数(某个库的)的代码,我想对其进行优化。给定函数A和B ,我不介意A与任何其他同时运行 A ,或任何 B与任何其他同时运行 B ,但没有A可以在任何 B 时运行正在运行,反之亦然。线程计
当 XML 必须根据 http://www.w3.org/TR/xml-exc-c14n/ 规范化时,下面的 XML 片段应该相等吗?(注意,. 字符代表一个 ' ' 空格) . ..data .
我想限制对整个应用程序的访问 /*但对于某些 Servlet 则不然。它们应该是公开的。 有没有一种方法可以轻松做到这一点(我想象有一些排除或可能覆盖?)或者我是否必须将文件排列在子文件夹中并允许访问
在一个 spring-mvc 项目中,我对索引/主页的内容进行了测试: @RunWith(SpringRunner.class) @SpringBootTest @AutoConfigureMockM
完全依赖 ARKit 自动平面检测是我不想做的事情,因为它需要时间来检测表面,然后现实生活中的表面应该有足够的纹理,因此我需要考虑一些事情提供一个选项,如果我愿意,我应该能够通过点击按钮随意添加 an
我是一名优秀的程序员,十分优秀!