我正在努力扩展我的ARCore知识。
我的问题类似于(但不同于)这个问题
我想确定我的设备相机节点是否与其他节点相交/重叠,但到目前为止我没有什么好运气。
我尝试像这样做(相机是另一个节点):
scene.setOnUpdateListener(frameTime -> {
Node x = scene.overlapTest(scene.getCamera());
if (x != null) {
Log.i(TAG, "setUpArComponents: CAMERA HIT DETECTED at: " + x.getName());
logNodeStatus(x);
}
});
首先,这是否有意义?
我可以使用以下方法检测场景中所有节点的碰撞:
for (Node node : nodes) {
...
ArrayList<Node> results = scene.overlapTestAll(node);
...
}
假设相机节点没有可渲染项(即没有默认的碰撞形状),我尝试设置自己的碰撞形状,但这实际上捕捉了我想要执行的所有点击事件,所以我觉得我可能做错了。我考虑的是将一个已停用的节点固定在相机前面。也许我对ARCore要求过高,但有人发现了检测“用户”(即相机节点)和另一个节点之间碰撞的方法吗?或者我应该通过室内定位来进行“碰撞检测”?提前感谢:)更新:这真的很麻烦且性能负担很重,但你实际上可以在节点内部的onUpdate中比较相机和节点的世界空间位置,你可能需要处理一些容差和其他事情来平滑交互。