前言

最近学习的东西都是一些零零散散的,看了一下笔记,了解了一个地图插件Minimap之类的;还有一些C#语法:委托、Lambda表达式。另外还有有关vuforia,EasyAR Sense,AVProVideo,屏幕位置转射线之类的零零碎碎的东西,但是由于内容太零散了,有些内容也没有实际案例操作,加之我最近心情不太好,所以学的模棱两可,笔记做的也不全。
这两天做了一个AR涂涂乐的应用,也是根据别人的案例修改做的,现在记录一下主要步骤。

主要框架

这个应用是用vuforia制作的,首先要有ARCamera,以及用ARImage作为父物体存各个模型。

案例

建立ARImage

如图,子物体包括一个Plane,和一个对应的模型,以及用来控制动作的三个碰撞器,调整到合适位置。

添加Database图片

登录vuforia

创建Datebase名为Y20

添加需要识别的图片

下载并且导入到项目中

这时就可以使用了:

Plane的设置

将需要涂鸦的模型拖入:

创建动画控制器

创建动画控制器并拖到模型上,这里的动画都是素材中给出的。

动作控制代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Y20Animator : MonoBehaviour {public GameObject[] Y20Bodys;public GameObject Y20Obj;private Animator Y20_Animator;public GameObject shadowObj;//private Transform root1;//private Transform root2;//tishi//private float setTime;//private float currentTime;//private SkinnedMeshRenderer mRender;//public int index=0;//current Index//public GameObject uiHand;// Use this for initializationvoid Awake() {foreach (GameObject obj in Y20Bodys){EventHandler.Get(obj).mDown += mDownHandler;}Y20_Animator = Y20Obj.GetComponent<Animator>();//root1 = transform.Find("root").Find("2").Find("1");//root2 = transform.Find("root").Find("2");//mRender = transform.Find("S_HY_shayu").GetComponent<SkinnedMeshRenderer>();//currentTime =0f;//setTime = 5f;}//private void Update()//{//    if ((mRender.material.name.Equals("Color (Instance)") || mRender.material.name.Equals("Color"))&&ProjectManager.Instance.isFirst)//    {//        if (uiHand.activeInHierarchy == false)//            uiHand.SetActive(true);//        currentTime += Time.deltaTime;//        if (currentTime> setTime)//        {//            currentTime = 0f;//            index++;//            if (index == J10Bodys.Length)//            {//                index = 0;//            }//        }//    }//    if (uiHand.activeInHierarchy)//    {//        uiHand.transform.position = Camera.main.WorldToScreenPoint(J10Bodys[index].transform.position);//    }//}void mDownHandler(GameObject obj){//cancel tiShi//if (uiHand.activeInHierarchy == true)//{//    uiHand.SetActive(false);//    ProjectManager.Instance.isFirst= false;//}if (obj.name.Equals("headCollider")){//shadowTrans.parent = root2;Y20_Animator.Play("chuchang");//AudioManager.Instance.AudioPlay(AudioManager.Instance.audioSource,(int)AudioEnum.Z10Attack);shadowObj.SetActive(false);Invoke("shadowShow", 2f);}if (obj.name.Equals("bodyCollider")){//shadowTrans.parent = root1;Y20_Animator.Play("kongjiangzhuangjiache");//AudioManager.Instance.AudioPlay(AudioManager.Instance.audioSource,(int)AudioEnum.Z10Move);if(shadowObj.activeInHierarchy==false)shadowObj.SetActive(true);}if (obj.name.Equals("weiCollider")){//shadowTrans.parent = root2;Y20_Animator.Play("tiaosan");//AudioManager.Instance.AudioPlay(AudioManager.Instance.audioSource,(int)AudioEnum.Z10Splash);}//取消点击提示//transform.Find("S_HY_shayu").GetComponent<OneRenderTotal>().J10BeClick();}//J10 birth Animationpublic void PlayY20BirthAnimation(){Y20_Animator.Play("chuchang");shadowObj.SetActive(true);//GameObject.Find("root").transform.GetChild(1).transform.gameObject.SetActive(true);}void shadowShow(){CancelInvoke("shadowShow");shadowObj.SetActive(true);}public void shadowClose(){CancelInvoke();shadowObj.SetActive(false);}
}

其他代码

 if (isY20){GetComponent<SkinnedMeshRenderer>().material = ModelMaterial;//play birth Animationtransform.parent.GetComponent<Y20Animator>().PlayY20BirthAnimation();//particularWater.SetActive(true);GameObject waterParClone = (GameObject)Instantiate(particularWater, new Vector3(0, 0, 0), Quaternion.identity);Destroy(waterParClone, 3f);// ShowSceneTotal("haiyang", new Vector3(1.5f, 1.5f, 1.5f));//shark shadow//GameObject.Find("ImageTargetShark").transform.Find("S_HY_shayu_atk").Find("root").Find("2").Find("shadow").gameObject.SetActive(true);}

其他操作

在GameManger中添加模型和Plane:

别忘记ARCamera中打开数据库,不然扫描会没有反应。

发布

做好之后就可以发布了:


调整Canvs和屏幕的分辨率和手机一致,就可以发布了。

Unity_6 涂涂乐案例相关推荐

  1. EasyAR_实现AR涂涂乐

    实现AR涂涂乐 需要建模的时候 展UV 识别图 和 模型需要匹配好 官方案例 在 Assets --> Samples --> Resources --> HelloAR_Color ...

  2. unity3D 涂涂乐使用shader实现上色效果

    之前我博文里面发过一个简单的通过截图方式来实现的模型上色方法,但是那个方法不合适商用,因为你需要对的很准确才可以把贴图完美截取下来,只要你手抖了一下就会发现贴歪了.那么有没有更好的方法来实现这个效果呢 ...

  3. 涂涂乐的详细实现之四--unity3d调用EmguCV实现图片识别

    涂涂乐严格来说有两个版本,一种是前面详细介绍过的,鼠标控制画图截图发送给服务端实现模型上色:另一种是通过实物图彩笔绘图之后通过扫描仪生成图片发送给服务端来实现模型上色. 动物模型有多种,贴图有多种,在 ...

  4. EasyAR涂涂乐代码分析

    来说一下对EasyAR sdk中自带的unity Samples中的Coloring3D这个项目的理解(例子程序可以去官网下载 最后会列出所有用到网站的网址). 这个项目的效果就是我们常见的" ...

  5. (示例3)涂涂乐开发教程

    涂涂乐开发教程 本文将向您介绍如何使用 HiAR SDK 创建一个简单的涂涂乐应用. Step 1.基础开发及设置 请先按照"创建 Hello World"中的 Step1-Ste ...

  6. 手把手教你做个AR涂涂乐

    前段时间公司有一个AR涂涂乐的项目,虽然之前接触过AR也写过小Demo,但是没有完整开发过AR项目.不过经过1个多星期的学习,现在已经把项目相关的技术都学会了,在此向互联网上那些乐于分享的程序员前辈们 ...

  7. Unity 涂涂乐(不使用shader)

    一般来说他们做涂涂乐都用到shader,可惜渣渣的我不会shader,就算用了shader,我看不懂里面的原理,会让我很烦,所以就另寻他法 无意中看到unity的商店里有一个涂涂乐的免费教程 最终的实 ...

  8. 涂涂乐的详细实现之一--画笔核心功能

    涂涂乐绘图板算是我独立完成的第二个项目,从无到有算起来大概花了一个多月的时间.其中碰到了许许多多的坑,同时也补充了各种各样的知识,总之收获挺大.接下来大概分成五个部分详细介绍各部分功能的实现方法. ( ...

  9. 涂涂乐的详细实现之三--文件IO操作

    这篇内容旨在详细介绍我在完成涂涂乐这个项目中用到的关于文件存储命名等的思路和操作. (一)截图操作 截图的基本思路:在绘图区域确定一个矩形,创建一个Texture2D获取这部分像素并生成图片存储在文件 ...

最新文章

  1. 继续昨日计划: 2022-2-16
  2. python编程if语法-Python中的if语句——参考Python编程从入门到实践
  3. boost::hana::adjust用法的测试程序
  4. C++打印0到N的Catalan数卡特兰数(附完整源码)
  5. C# 获取文件MD5值的方法
  6. 企业管理器控制台本地无法访问
  7. 周期性工作crontab
  8. myeclipse修改控制台Console面板
  9. 没有文化可以学php吗,宋威龙深夜发文感慨,却被吐槽文化低,学历真的重要吗?...
  10. 求解带时间窗的车辆路径问题(matlab实现)
  11. 美洽客服-移动应用 SDK for iOS开发指南
  12. 音频硬件发展史,以及DSD是如何产生的 一起说一说音频
  13. cmd查看电脑启动项
  14. 竞价单页设计需要了解的知识
  15. windowsGHO镜像系统winXPwin7win8win10正版下载
  16. 无线路由器不能产生信号
  17. Latex公式内行间距,字体大小控制
  18. 【iOS开发】ipa安装到手机上的三种方式
  19. 知到网课葡萄酒的那些事儿考试试题(含答案)
  20. 扭矩扭力测量——扭矩传感器

热门文章

  1. RIP和IGRP实验
  2. Error response from daemon conflict unable to delete 3f37e5daf5bd (cannot be forced) - image is bein
  3. Java 基础学习之字符串的简单操作和适配器设计模式
  4. learning java AWT Pannel
  5. 酶促反应动力学_酶促反应动力学讲解.ppt
  6. 和Ajax斗志斗勇的日子
  7. HTML/CSS 常用单词整理
  8. 营销第一人:富军相信网络营销神器能够“博”出未来
  9. matlab定步长ode,[转载]matlab ode45 函数传自定义参数用法及定步长ode
  10. 笔记本电脑外接显示器显示不全