我是arcore的新手,正在为项目使用Sceneform。具体来说,我正在使用太阳能系统示例,并尝试将其在Planet.java
中的信息卡实施到我的项目中。我已经设置了信息卡(至少我认为是的),但是它们不会出现在水龙头上。我是否缺少某些东西或我做错了什么?预先感谢您的帮助。
private void makeinfoCards(ArFragment arFragment, Anchor anchor, Context context) {
if (infoCard == null) {
AnchorNode anchorNode = new AnchorNode(anchor);
infoCard = new Node();
infoCard.setParent(anchorNode);
infoCard.setEnabled(false);
infoCard.setLocalPosition(new Vector3(0.0f, 2.90f * INFO_CARD_Y_POS_COEFF, 0.0f));
//below would hide/bring up the info card on tap
infoCard.setOnTapListener( //anchorNode.setOnTapListener doesn't make info card appear either
(hitTestResult, motionEvent) -> {
infoCard.setEnabled(!infoCard.isEnabled());
}
);
ViewRenderable.builder()
.setView(arFragment.getContext(), R.layout.card_view) //putting context instead makes no difference
.build()
.thenAccept(
(renderable) -> {
infoCard.setRenderable(renderable);
TextView textView = (TextView) renderable.getView();
textView.setText("random");
})
.exceptionally(
(throwable) -> {
throw new AssertionError("Could not load plane card view.", throwable);
});
}
}
最佳答案
您已在infoCard节点上设置了onTapListener
,默认情况下已禁用它。您应该在包含将要单击的3D模型的节点上使用setOnTapListener,尝试将已将3D模型设置为可渲染的特定节点作为函数的参数而不是Anchor传递。如果您有Node,请说具有3D模型的modelNode。
在您的ARActivity通话中
makeInfoCard(arFragment,modelNode,context);
并在功能上使用
private void makeInfoCard(ArFragment arFragment, Node modelNode, Context context){
//
modelNode.setOnTapListener((hitTestResult, motionEvent) -> {
infoCard.setEnabled(!infoCard.isEnabled());
});
//
}
关于java - ARCORE:点按后不显示 View (信息卡),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59831335/