05_使用自定义的3D模型

为什么要使用自定义的3D模型

  ARKit以及Unity自带的3D模型往往是不能够满足日常开发使用的,但是对于新手小白来说,制作一个3D模型又比较困难,因此,我们往往通过一些3D模型资源网站下载,并加入到我们的项目中。

如何下载免费的3D模型

资源网站:

网站名称网址描述
CG模型网https://www.cgmodel.com/部分免费 不可商用
爱给网http://www.aigei.com/完全免费 部分商用
Unity资源商店https://assetstore.unity.com/部分免费 模型和账号绑定
Free 3Dhttps://free3d.com/免费区免费 网站打开慢
mixamohttps://www.mixamo.com/完全免费 动画绑定 推荐
Unity Chanhttps://unity-chan.com/完全免费 开源 推荐

导入自定义3D模型

在当前Assets中新建文件夹Model,通过 Import New Asset 将下载好的模型导入进来。
导入自定义模型

默认导入后的自定义3D模型是没有贴图的,需要选中该模型,在Inspector中选择Materials,点击Textures的选择菜单,选择模型所在目录,点击Choose,如果提弹出Fix提示框,选择Ignore。

导入模型贴图

将模型放入场景,如出现没有头发或者衣物材质异常的问题,在Model路径下新建Material,进行相关配置,将配置好的材质拖到场景中的模型上。
Material

效果展示:
3D模型展示

在当前场景目录下,新建Prefabs文件夹,并将场景中的3D模型放入Prefabs作为预制,并删除当前场景中的模型
预制模型

因为模型与现实是等比例大小,所以需要将模型等比例缩小。
缩小模型

把前两节项目中的cube更换为配置好的3D模型。
更换模型

效果展示

image.png

播放模型动画

在当前场景目录下,新建Scripts文件夹,并在文件夹中创建Animator Controller,点击该文件,并自定义3D模型的动画拖拽到场景中。
image.png
进行相关配置
动画配置

参数说明:
    loap time: 循环播放
    loap pose: 原地播放

将动画脚本加入到模型
将动画脚本加入到模型

编译运行,得到效果

模型脱卡

脱卡,即卡片消失后模型依然存在。编辑GenerateImageAnchor脚本

void UpdateImageAnchor(ARImageAnchor arImageAnchor)
{
    // Debug.LogFormat("image anchor updated[{0}] : tracked => {1}", arImageAnchor.identifier, arImageAnchor.isTracked);
    if (arImageAnchor.referenceImageName == referenceImage.imageName)
    {
        if (arImageAnchor.isTracked)
        {
            if (!imageAnchorGO.activeSelf)
            {
                imageAnchorGO.SetActive(true);
            }
            imageAnchorGO.transform.position = UnityARMatrixOps.GetPosition(arImageAnchor.transform);
            imageAnchorGO.transform.rotation = UnityARMatrixOps.GetRotation(arImageAnchor.transform);
        }
        else if (imageAnchorGO.activeSelf)
        {
            // 脱卡. 取消找不到识别对象时让模型消失
            // imageAnchorGO.SetActive(false);
        }
    }

}

效果展示

本章总结

注意事项

  1. 关掉平面检测
  2. 设置识别图、调整识别图的大小
  3. 设置相对目录
  4. 设置相机相关
  5. 设置模型大小和距离图片的位置,模型太大可能会出现看不到的情况
  6. 绑定模型动画
  7. 设置按钮点击事件
  8. 模型脱卡

注:本ARKit系列博客是根据 【子羽老师】发布在腾讯课堂的ARKit视觉风暴课程学习整理总结:https://ke.qq.com/course/575145

# AR  ARKit 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×