首页 > 解决方案 > 模型未在我的 arcore 应用程序中呈现?

问题描述

E/ACameraMetadata:getConstEntry:找不到元数据标签 65578 E/ACameraMetadata:getConstEntry:找不到元数据标签 65578 E/native:hit_test.cc:381 generic::internal:没有命中。I/native:performance_monitor.cc:115 事件:FeatureExtraction 耗时太长,耗时 118.033ms W/native:motion_tracking_context.cc:838 generic::failed_precondition:调用 GetFeatureTracks,但 FeatureTracks 不可用。

检测到平面并将模型放置在平面上,但是当我单击动画按钮时,它不会动画。

package com.example.aranimation;

import androidx.appcompat.app.AppCompatActivity;
import android.net.Uri;
import android.os.Bundle;
import android.widget.Button;
import com.google.ar.core.Anchor;
import com.google.ar.sceneform.AnchorNode;
import com.google.ar.sceneform.SkeletonNode;
import com.google.ar.sceneform.animation.ModelAnimator;
import com.google.ar.sceneform.rendering.AnimationData;
import com.google.ar.sceneform.rendering.ModelRenderable;
import com.google.ar.sceneform.ux.ArFragment;

public class MainActivity extends AppCompatActivity {

private ArFragment arFragment;
private ModelAnimator modelAnimator;
private int i = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    arFragment = (ArFragment)getSupportFragmentManager().findFragmentById(R.id.framgment);

    arFragment.setOnTapArPlaneListener((hitResult, plane, motionEvent) -> {
        if (hitResult.getTrackable() != null)
        {
            createModel(hitResult.createAnchor(),arFragment);
        }
    });
}

private void createModel(Anchor anchor, ArFragment arFragment) {

    ModelRenderable.builder()
            .setSource(this, Uri.parse("53_SkeletonSystem_LODa.sfb"))
            .build()
            .thenAccept(modelRenderable -> {

                AnchorNode anchorNode = new AnchorNode(anchor);

                SkeletonNode skeletonNode = new SkeletonNode();
                skeletonNode.setParent(anchorNode);
                skeletonNode.setRenderable(modelRenderable);

                arFragment.getArSceneView().getScene().addChild(anchorNode);

                Button button = findViewById(R.id.button);

                button.setOnClickListener(view -> animateModel(modelRenderable));

            });
}

private void animateModel(ModelRenderable modelRenderable) {

    if(modelAnimator != null && modelAnimator.isRunning())
        modelAnimator.end();

    int animationCount = modelRenderable.getAnimationDataCount();

    if (i == animationCount)
        i = 0;

    AnimationData animationData = modelRenderable.getAnimationData(i);

    modelAnimator = new ModelAnimator(animationData, modelRenderable);
    modelAnimator.start();
    i++;
}

}

标签: androidarcore

解决方案


推荐阅读