This is mainActivity.java:
public class MainActivity extends AppCompatActivity implements Scene.OnUpdateListener {
private CustomArFragment arFragment;
public DataBaseHelper mydb;
public TextView mytext ;
private Button button;
AnchorNode anchorNode;
Anchor anchor;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
arFragment=(CustomArFragment)(Object)getSupportFragmentManager().findFragmentById(R.id.scene_frag);
assert arFragment != null;
arFragment.getArSceneView ().getScene ().addOnUpdateListener (this);
}
Here I am adding images to Db
public void setupdataBase(Config config, Session session){
Bitmap mark1= BitmapFactory.decodeResource(getResources(),R.drawable.marks1);
AugmentedImageDatabase aid=new AugmentedImageDatabase(session);
Bitmap mark2= BitmapFactory.decodeResource(getResources(),R.drawable.marks2);
Bitmap mark3= BitmapFactory.decodeResource(getResources(),R.drawable.marks3);
Bitmap mark4= BitmapFactory.decodeResource(getResources(),R.drawable.marks4);
Bitmap mark5= BitmapFactory.decodeResource(getResources(),R.drawable.markss5);
//add marker
aid.addImage("mark1",mark1);
aid.addImage("mark2",mark2);
aid.addImage("mark3",mark3);
aid.addImage("mark4",mark4);
aid.addImage("mark5",mark5);
config.setAugmentedImageDatabase(aid);
}
Main Code (on update)
@Override
public void onUpdate(FrameTime frameTime) {
Frame frame=arFragment.getArSceneView ().getArFrame ();
assert frame != null;
Collection<AugmentedImage> images=frame.getUpdatedTrackables (AugmentedImage.class);
for (AugmentedImage image:images) {
String marker=image.getName ();
String[] tempname={"mark1","mark2","mark3","mark4","mark5"};
for (String s : tempname) {
if (s.equals (marker)) {
createModel (image, marker);
}
}
}
@SuppressLint("SetTextI18n")
private void createModel(AugmentedImage image, String marker) {
ViewRenderable
.builder ()
.setView (this,R.layout.text_main)
.build ()
.thenAccept (viewRenderable -> setupModel(viewRenderable,image,marker));
}
Renderable code
@SuppressLint("SetTextI18n")
private void setupModel(ViewRenderable viewRenderable, AugmentedImage image, String marker) {
mytext=(TextView)viewRenderable.getView ().findViewById (R.id.planetInfoCard);
anchor=image.createAnchor (image.getCenterPose ());
anchorNode=new AnchorNode (anchor);
anchorNode.setRenderable (viewRenderable);
anchorNode.setParent (arFragment.getArSceneView ().getScene ());
arFragment.getArSceneView ().getScene ().addChild (anchorNode);
}
This Code is working fine but when I am moving the camera out of the marker/image "anchor is not getting removed", if I am scanning more than 2 markers app getting slow-down and crashes.
I have tried detaching anchors and removing children in the LastKnown_POSE state. But I am not able to do it perfectly. How can I solve it so anchors will be removed when the image gets out of camera focus?