我正在尝试制作一个按钮,在选择 3D 模型后将其从场景中删除。
我知道删除 3d 对象的方法是使用anchor.detach()。我可以使用 node.select() 选择单个模型。但是,我不确定选择节点后如何访问锚点。
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
deleteObject(//I'm not sure how to get the anchor from the selected node//);
}
});
private void deleteObject(Anchor anchor){
anchor.detach();
}
如果您想删除特定的可渲染对象并且您已经知道锚节点(我相信您的情况来自问题),那么下面的代码将删除可渲染对象和锚节点:
private void removeAnchorNode(AnchorNode nodeToremove) {
//Remove an anchor node
if (nodeToremove != null) {
arFragment.getArSceneView().getScene().removeChild(nodeToremove);
nodeToremove.getAnchor().detach();
nodeToremove.setParent(null);
nodeToremove = null;
Toast.makeText(LineViewMainActivity.this, "Test Delete - anchorNode removed", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(LineViewMainActivity.this, "Test Delete - markAnchorNode was null", Toast.LENGTH_SHORT).show();
}
}
吐司只是为了帮助测试,因此可以根据您的选择删除或保留。
更新 - Kotlin 版本(2020 年 4 月测试):
private fun removeAnchorNode(nodeToRemove: AnchorNode) {
//Remove an Anchor node
arFragment.getArSceneView().getScene().removeChild(nodeToRemove);
nodeToRemove.getAnchor()?.detach();
nodeToRemove.setParent(null);
nodeToRemove.renderable = null
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)