предыдущий вид изображения перезаписывается новым видом изображения после его создания | ARCORE - PullRequest
1 голос
/ 05 апреля 2020

У меня проблема с всплывающим окном моего объекта AR. Я могу разместить один объект AR, а затем его вид показывает правильное изображение. Но затем, если бы я поместил новый объект AR, предыдущие изображения будут перезаписаны новым. Так, например, если я помещу объект ноутбука, его изображение будет ноутбуком. Но затем, если я помещу новый объект, такой как ноутбук, изображение ноутбука будет перезаписано этим новым.

Вот визуальное представление того, о чем я говорю:

visual representation

Я пробовал разные методы, но результат все тот же.

Вот как они объявлены:

private String objectName;
private int resID;

Вот где я размещаю объект:

arFragment.setOnTapArPlaneListener(
                (HitResult hitResult, Plane plane, MotionEvent motionEvent) -> {

                    if (plane.getType() != Plane.Type.HORIZONTAL_UPWARD_FACING){
                        return;
                    }
                    Anchor anchor = hitResult.createAnchor();
                    arranchors.addElement(anchor);

                    placeObject(arFragment, arranchors.lastElement(), selectedObject);

                    if(arranchors.size() >1)
                    {
                        spreadapart();
                    }
                }
        );

Вот как различные объекты, имена объектов, их изображения выбраны: (кстати, имена объектов также имеют эту проблему)

private void InitializeAssetsMenu(){
        LinearLayout gallery = findViewById(R.id.asset_layout);

        ImageView pencil = new ImageView(this);
        pencil.setImageResource(R.drawable.pencil_thumb);
        pencil.setContentDescription("pencil");
        pencil.setOnClickListener(view -> {selectedObject = Uri.parse("Pencil_01.sfb");objectName= "Pencil"; resID= R.drawable.pencil_thumb;});
        gallery.addView(pencil);

        ImageView eraser = new ImageView(this);
        eraser.setImageResource(R.drawable.eraser_thumb);
        eraser.setContentDescription("eraser");
        eraser.setOnClickListener(view -> {selectedObject = Uri.parse("Eraser_01(1).sfb");objectName="Eraser"; resID= R.drawable.eraser_thumb;});
        gallery.addView(eraser);

        ImageView laptop = new ImageView(this);
        laptop.setImageResource(R.drawable.laptop_thumb);
        laptop.setContentDescription("laptop");
        laptop.setOnClickListener(view -> {selectedObject = Uri.parse("Laptop_01.sfb");objectName="Laptop"; resID= R.drawable.laptop_thumb;});
        gallery.addView(laptop);

        ImageView notebook = new ImageView(this);
        notebook.setImageResource(R.drawable.notebook_thumb);
        notebook.setContentDescription("notebook");

        notebook.setOnClickListener(view -> {selectedObject = Uri.parse("Notebook.sfb");objectName="Notebook"; resID= R.drawable.notebook_thumb;});
        gallery.addView(notebook);
    }

И вот где я делаю просмотр изображений:

private Node createInfoCard(TransformableNode parent){
        Node infoCard = new Node();
        infoCard.setParent(parent);
        infoCard.setEnabled(false);
        infoCard.setRenderable(cardRenderable);
        //TextView textView = (TextView)cardRenderable.getView();
        //textView.setText(this.objectName);
        ImageView imageView1 = (ImageView)cardRenderable.getView();
        imageView1.setImageResource(resID); //here we will have a variable that will have different image for each respective object.
        infoCard.setLocalPosition(new Vector3(0.0f, 0.25f, 0.0f));
        parent.setOnTapListener(
                (hitTestResult, motionEvent) -> {
                    infoCard.setEnabled(!infoCard.isEnabled());
                    spreadapart();
                });

        return infoCard;
    }

Я уверен, что проблема имеет делать с переменной resID, но я просто не понимаю, как это вызывает перезапись.

...