当前位置: 首页 > 知识库问答 >
问题:

经典ARCore-Sceneform的增强图像示例翻译到Sceneform 1.16.0

卫阳曜
2023-03-14

我正在试着翻译场景表单1.15。要与ARCore 1.18一起使用的0的增强图像示例。0和场景窗体1.16。0。(请注意,GitHub上的Sceneform 1.16.0存储库仅附带gltfio加载程序示例)。

我的目标是使用GLTFIO库加载动画GLTFs/GLBs以在图像上显示。(在Sceneform 1.16.0的早期版本中提供的Android Studio插件机制无法实现此功能)。

通过这种方式,我改变了前面场景表单1.15中所示的旧加载机制。0样本:

...
CompletableFuture.allOf(model)
    .thenAccept((Void aVoid) -> {
        _image = image;
    
        setAnchor(image.createAnchor(image.getCenterPose()));
    
        Node nodeRenderable=new Node();
        nodeRenderable.setParent(this);
        nodeRenderable.setRenderable(modelgetNow(null));
    })
    .exceptionally(
        throwable -> {
            Log.e(TAG, "Exception loading", throwable);
            return null;
        });
    }
...

...像这样的东西...

...
//gltfio
WeakReference<ARActivity> weakActivity = new WeakReference<>((ARActivity) _context);
//
ModelRenderable.builder()
    .setSource(_context,Uri.parse(uriAsset))
    .setIsFilamentGltf(true)
    .build()
    .thenAccept(modelRenderable -> {
        ARActivity activity = weakActivity.get();
        if (activity != null) {
            _image = image;
            _renderable = modelRenderable;
            //
            // Set the anchor based in the center of the image.
            setAnchor(image.createAnchor(image.getCenterPose()));
            //
            Node nodeRenderable=new Node();
            nodeRenderable.setParent(this);
            nodeRenderable.setRenderable(modelRenderable);
        }
    })
    .exceptionally(throwable -> {
        Toast toast =Toast.makeText(_context, "Unable to load renderable", Toast.LENGTH_LONG);
        toast.setGravity(Gravity.CENTER, 0, 0);
        toast.show();

        return null;
    });
...

所有操作都正常运行,在LogCat中没有错误或警告。我的意思是,应用程序完美地跟踪图像,但根本没有显示模型。

仅供参考,我意识到,当我恢复应用程序时,会显示模型(但固定在屏幕上),直到我将设备指向(可增强)图像。

有人经历过这种情况吗?

有什么帮助吗?

共有1个答案

申屠亦
2023-03-14

已解决。提议的gltfio-loader代码运行良好。这只是3D模型的一个问题,导致它显示在剪辑空间之外。

 类似资料:
  • 在我完成附带的代码实验室后,我正在修补Sceneform SDK的增强图像示例代码。完成的示例向AR场景添加了两种类型的对象:一种是使用CAD软件建模,并从二进制文件(即绿色迷宫)加载的对象另一个是红球,它是使用和在运行时构建的。 一个简单的实验是移除绿色迷宫,只有红色的球(当然也移除物理引擎)。然而,在这种情况下,红球不会出现在增强现实场景中。 有趣的是,绿色迷宫不必出现在场景中——我的意思是我

  • 本文向大家介绍Python图像的增强处理操作示例【基于ImageEnhance类】,包括了Python图像的增强处理操作示例【基于ImageEnhance类】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python图像的增强处理操作。分享给大家供大家参考,具体如下: python中PIL模块中有一个叫做ImageEnhance的类,该类专门用于图像的增强处理,不仅可以增强(或减弱)图像

  • 不是每次触摸屏幕都放置一个模型的新实例(就像在quickstart&codelab中那样),而是尝试让每次触摸都将模型重新定位到那个位置,同时仍然保留拖动和缩放交互。 有什么想法吗?

  • 20世纪以来众多研究的一大价值,就是揭开了很多“天赋”的神秘面纱,让大家知道学习和训练的重要性,体育运动是如此,文艺创作是如此,翻译也是如此。我知道有许多人对翻译有兴趣,又担心自己“没有语感”,“没有语言天赋”,结果止步不前。对这样的情况,我时常感到非常惋惜,因为回过头看,自己能做一点翻译,而且译文能有机会出版,运气占很大成分,剩下的就是不断的学习、练习和总结了,“天赋”基本是没有的。如果你对翻译

  • 我试图在摄像机前创建一个节点。 然而,当我先旋转手机(例如沿Y轴旋转90°),然后在位置(Cameron aPosition. x,Cameron aPosition. y,Cameron aPosition. z-远程节点)上创建节点时,它会在相机的旧位置前面创建节点,就好像手机没有旋转。 据我所知,坐标系没有随着手机移动。如何让前面要创建的节点成为摄像机的新位置? 非常感谢你!