0

我正在使用 android 中的 Kudan SDK 开发增强现实。当手机摄像头指向标记时,我正在尝试生成 3D 模型。我能够做到这一点。但是如果我将相机从标记上移开,模型就会消失。我不希望 3D 模型消失,除非应用程序关闭或相机关闭。我想在移动相机的同时移动 3D 模型。这是插入标记和 3D 模型的代码。

private void addImageTrackable() {

    // Initialise image trackable
    trackable = new ARImageTrackable("Space");
    trackable.loadFromAsset("user_pic.jpg");

    // Get instance of image tracker manager
    ARImageTracker trackableManager = ARImageTracker.getInstance();

    // Add image trackable to image tracker manager
    trackableManager.addTrackable(trackable);
}

private void addModelNode() {
    // Import model
    ARModelImporter modelImporter = new ARModelImporter();
    modelImporter.loadFromAsset("cube.jet");
    ARModelNode modelNode = (ARModelNode) modelImporter.getNode();

    // Load model texture
    ARTexture2D texture2D = new ARTexture2D();
    texture2D.loadFromAsset("cube.png");

    // Apply model texture to model texture material
    ARLightMaterial material = new ARLightMaterial();
    material.setTexture(texture2D);
    material.setAmbient(0.8f, 0.8f, 0.8f);


    // Apply texture material to models mesh nodes
    for (ARMeshNode meshNode : modelImporter.getMeshNodes()) {
        meshNode.setMaterial(material);
    }


    modelNode.rotateByDegrees(10, 1, 0, 0);
    modelNode.scaleByUniform(3f);
    modelNode.setPosition(1, 1, 2000);
    modelNode.play();

    // Add model node to image trackable
    trackable.getWorld().addChild(modelNode);
    modelNode.setVisible(true);

}

这是标记前面的 3D 模型的图像

但即使我将相机从标记处移开,我也想保留这个 3D 模型。

4

1 回答 1

0

当然,模型正在消失,因为没有标记。如果您希望在同一位置继续绘制模型,只需将模型的最后位置保存在每帧上,并在标记检测丢失时在该位置绘制模型。如果您想尝试在世界上完全相同的位置(而不是屏幕上的同一位置)绘制它,您可以尝试使用设备传感器来估计手机的运动并相应地更新模型的位置。

于 2017-03-28T08:05:12.770 回答