Metaio SDK 6.0.2自带Example自己实现(三)

前言:本文实现的是Example中的TutorialEdgeBasedInitialization功能,如果Metaio不知道怎么在Unity中进行简单的开发,请参考我的另一篇文章     Metaio在Unity中的简单使用

Metaio的Example位于    安装目录下  ~\Metaio SDK 6.0.2\_Unity\Example

实现的功能: 3D 模型识别 CAD

本人对3D识别CAD模型的理解。根据现实中的3D物体生成的CAD模型,对CAD模型进行一部处理,然后识别CAD模型,如果CAD模型和现实物体相符,则就可以修改CAD模型的颜色,动画等,具体请参考     http://www.arinchina.com/video/show-1275.html

 

正文:

准备资源:

目录下:

~\Metaio SDK 6.0.2\_Unity\Example\Assets\TutorialEdgeBasedInitialization

rim.obj   作用:车轮子的模型

VizAid.obj   作用:车轮子的框

EdgeBasedInitializationGUI.cs   作用:GUI显示

rim.png    作用:车轮子的贴图

将这些资源,拖放到TutorialEdgeBasedInitialization 文件夹

1:制作CAD制图识别

打开Meatio Creator,

Metaio SDK 6.0.2自带Example自己实现(三)_第1张图片



选择的模型,是车轮的模型,也就是rim.obj 

Metaio SDK 6.0.2自带Example自己实现(三)_第2张图片

然后点击OK

Metaio SDK 6.0.2自带Example自己实现(三)_第3张图片

然后回到模型设置界面,总共有三部分,第一部分是对模型初步处理,初始化

 Metaio SDK 6.0.2自带Example自己实现(三)_第4张图片

点击Next继续,会进行都模型的处理

 Metaio SDK 6.0.2自带Example自己实现(三)_第5张图片

 Metaio SDK 6.0.2自带Example自己实现(三)_第6张图片Metaio SDK 6.0.2自带Example自己实现(三)_第7张图片

Metaio SDK 6.0.2自带Example自己实现(三)_第8张图片


然后点击Finish,模型的设置就基本上完事了,然后导出包到项目中,该文件要放置在StreamingAsstes文件夹下,也就是TutorialEdgeBasedInitialization文件夹下

 

 Metaio SDK 6.0.2自带Example自己实现(三)_第9张图片

 

2:把两个预设体托到Hierarchy视窗中,复制metaioTracker,并分别修改名称为RimTrackerVisualizationTracker,设置SDK Signature,设置层,设置Select source,设置程序Bundle Identifier,这些如果不知道怎么设置的,请参考 Metaio在Unity中的简单使用

注意,Select source选择,把导入的压缩包直接拖放TutorialEdgeBasedInitialization文件夹下,Select source选择这个压缩包就可以了,不需要解压,把VisualizationTrackerCoordinate System ID更改为2,如图

Metaio SDK 6.0.2自带Example自己实现(三)_第10张图片


Coordinate System ID会根据Tracker的增多而改变,

 

 

3:把车轮和车轮框的预设体分别托进去,并分别添加灯光

 Metaio SDK 6.0.2自带Example自己实现(三)_第11张图片

4:创建空物体,并重命名为GUI,为其添加两个脚本,如图

 Metaio SDK 6.0.2自带Example自己实现(三)_第12张图片

这两个脚本都是GUI的显示,其实也可不用,但为了和Demo一致,所以使用

 

5:可能在创建CAD模型中,有些操作不当,看起来效果不咋样,自己写一个脚本,手动旋转物体就可以看得清楚

创建C#脚本,Movement ,脚本如下

public class Movement : MonoBehaviour
{
 
    public GameObject gameObj;
    float horizontalSpeed = 0f;
    bool flag = true;
 
 
    void Update()
    {
        if (Input.touchCount == 1)
        {
            if (Input.GetTouch(0).phase == TouchPhase.Moved)
            {
                flag = false;
                float h = Input.GetAxis("Mouse X");
                float v = Input.GetAxis("Mouse Y");
 
                if (Mathf.Abs(h) >= Mathf.Abs(v))
                {
                    if (h < 0)
                    {
                        horizontalSpeed = 6;
                        gameObj.transform.RotateAround(gameObj.transform.position, Vector3.up, horizontalSpeed);
                    }
                    if (h > 0)
                    {
                        horizontalSpeed = 6;
                        gameObj.transform.RotateAround(gameObj.transform.position, -Vector3.up, horizontalSpeed);
                    }
                }
            }
        }
    }
}


 

 Metaio SDK 6.0.2自带Example自己实现(三)_第13张图片

 

然后发布就可以了,由于现实中,我没有这个车轮,所以,我扫描在Unity编辑器中的模型,就可以查看效果,效果如图

 

 Metaio SDK 6.0.2自带Example自己实现(三)_第14张图片

 

当然,你也可以添加脚本,点击车轮的是,让播放什么动画等等。

你可能感兴趣的:(Metaio)