Member 10960567 Ответов: 1

Как отслеживать или визуализировать один за другим объекты, используя разные цели каждый раз в vuforia android или unity?


Я хочу показывать другой объект каждый раз, когда цель сканируется с помощью vuforia SDK.
В настоящее время я могу показать объект на конкретной цели.

Что я уже пробовал:

    public ImageTargetRendererObj(ImageTargets activity, SampleApplicationSession session) {
        mActivity = activity;
        vuforiaAppSession = session;
        //Instantiating a virtual world
        world = new World();
        world.setAmbientLight(100, 100, 100);
        // Set the ambient light source intensity. Negative: the entire scene will be darkened; positive: will illuminate everything.

        world.setClippingPlanes(2.0f, 3000.0f);

        sun = new Light(world);
        sun.setIntensity(250, 250, 250);

        // Set the color of the display
        if (!TextureManager.getInstance().containsTexture("texture")) {
            Texture texture = new Texture(BitmapHelper.rescale(BitmapHelper.convert(
                    mActivity.getResources().getDrawable(R.drawable.a)), 64, 64));
            TextureManager.getInstance().addTexture("texture", texture);
        }
        FileUtils.copayAssetsToSdCard(activity.getAssets());
        try {
            tmp = Loader.loadOBJ(new FileInputStream(FileUtils.path+ "sphere.obj"),new FileInputStream(FileUtils.path+ "sphere.mtl"), 1);
//            tmp = Loader.loadOBJ(new FileInputStream(FileUtils.path+"DeadTree.obj"),new FileInputStream(FileUtils.path+"DeadTree.mtl"), 1);
        } catch (IOException e) {
            e.printStackTrace();
        }

        if(tmp != null && tmp.length >= 1){
            cylinder = tmp[0];
        }
        cylinder.strip();
        cylinder.build();

        for (Object3D o3 : tmp) {

            o3.calcTextureWrapSpherical();

            if (null != o3.getMesh()) {
                //Color the model

                o3.setTexture("texture");

            }
            o3.strip();
            o3.build();
        }


// Transform (scale, rotate, translate) the object: Depends on your need.
// cylinder.scale(scale);
// cylinder[0].rotateX(90.0f);
// cylinder.rotateY(w); cylinder.rotateZ(w);
// cylinder.translate(x, y, z);
  

        Object3D[] hi = null;

        try {
            hi = Loader.load3DS(activity.getAssets().open("bounce.3DS"), 1);
        } catch (IOException e) {
            e.printStackTrace();
        }


        for (Object3D o3 : hi) {

            o3.calcTextureWrapSpherical();

            if (null != o3.getMesh()) {

                o3.setTexture("texture");

                if (o3.getAnimationSequence() != null) {
                    mesh = o3.getAnimationSequence().getKeyFrames();

                }

            }
            o3.strip();
            o3.build();
        }
        */


        world.addObjects(cylinder);
        // world.addObjects(hi);

        cam = world.getCamera();

        SimpleVector sv = new SimpleVector();
        sv.set(cylinder.getTransformedCenter());
        sv.y -= 100;
        sv.z -= 100;
        sun.setPosition(sv);

       /* sv = new SimpleVector();

        // sv.set(hi[0].getTransformedCenter());
        sv.y -= 5000;
        sv.z -= 5000;
        sv.rotateX(180);
        sun.setPosition(sv);*/

        // for older Android versions, which had massive problems with garbage collection
        MemoryHelper.compact();

    }

1 Ответов

Рейтинг:
1

Arthur V. Ratz

Если это приложение для Android, попробуйте визуализировать каждый объект в отдельном фрагменте.

Руководство по использованию фрагментов вы можете найти здесь:

Фрагментарный  |  Разработчики Android[^] и Создание фрагмента  |  Разработчики Android[^]


Member 10960567

Спасибо за ответ, но фрагменты не решают проблему, и я обновил конфигурации vuforia и обновил настройки базы данных, экспортированные из консоли разработчика vuforia.