有没有好听的轻音乐人听过AR涂涂乐

揭秘!AR涂涂乐真的能赚钱吗?我用亲身经历告诉你!
很久没有认真的写过一篇文章了,今天我给大家来讲一个故事,故事的内容有点长,希望大家能看完
我是一个孩子的妈妈,我的女儿快一岁半了,她很可爱。小名叫橙子。(我的V号:Luckfeifei2013)
我喜欢别人叫我橙子妈,没有什么特别的原因,只是想告诉自己,我已为人母,再也不是以前那个疯起来就任性妄为的小姑娘了⋯
我出生在一个美丽的小县城,从小我就特别向往外面的世界。我走过很多地方,北京,上海,深圳,云南,珠海…外面的世界很精彩,可是最终我还是回到了我出生的小县城,结婚,生子。安安稳稳的过着小日子。我想,很多人也许都是和我一样在外面兜兜转转,转了一圈,到最后却还是回到了起点,也说不出是为什么,也许就是恋家吧。
&在结婚之前,我的工作是一名售楼员。但近两年来,楼市不景气,加上我又生活在小县城里,所以每个月的工资也就三千多。婚前自已一个人,无拘无束,加上自己又不是特别会花钱的那种类型,日子倒也还过得去。
&结婚后,我因为怀孕就没有上班,全职待产,生完孩子,又全职宝妈,带孩子做家务变成我的全部。
&我其实特别不愿意做家庭主妇,但凡有一点机会,我都会选择去上班。可惜的是,我婆婆身体不好,橙子除了我自己带,没人帮我。
老公是一名普通的上班族,每个月的工资,仅够日常开销。加上与父母同住,老人家又特别节俭,日子久了,诸多矛盾,但却都离不开一个“钱”字。
&我经常在想,如果有一份工作,既能赚钱,又能在家带孩子,而且还不用投资,那该有多好。所以,我尝试过淘宝刷单,但是因为要交会费而放弃了,之后我经表弟介绍,又做起了一件代发,卖衣服卖包包。说实话,一件代发,确实好,没有投资,没有风险,只要每天刷屏就可以。可是非常遗憾的是,我做了半个月,却没有卖出去一套,反而因为每天刷屏而让别人心生厌倦,直接屏蔽了我。
直到后来,加入了涂涂乐之后我才知道,原来做微商是有方法的,一味的刷屏不会有任何效果。
&我是在去年年底的时候,一个宝妈群中看到涂涂乐的,当时就被吸引了。让孩子的涂鸦变动画,这也太不可思议了。如果我能够加入涂涂乐,让更多的孩子来体验画什么动什么。那孩子们一定会高兴坏了。
其实我有这样的想法,和我自己的童年有很大的关系。小时候我特别喜欢画画,经常在班里画黑板报,但是因为因为家庭条件不好,我从来没有买过一本像样的绘画书…
如今,科技在进步,生活也提高了,孩子们有机会当神笔马良,我想所有的家长都不会拒绝。
我在详细的了解和考察了涂涂乐之后,在今年的3月1号,正式加入了AR涂涂乐,加入我们AR科技团队。
&当时的我,并没有想到这个决定会成为我人生的一个新的起点,短短两个月不到的时间,我就从一个从来没有做过的小白蜕变成了一级总代。那么,我是怎么做到的呢?别急,先让我来介绍一下,这款让我疯狂着迷的早教产品,AR涂涂乐。V:Luckfeifei2013
涂涂乐是什么?它是国家十二五科技支持的一款早教项目,专为2岁以上孩子精心设计的4D互动涂色绘本,结合AR技术,将孩子的涂鸦绘画作品变成跃然纸上的3D动画,有声有色能互动,“视·听·说·触·想”多感体验,触发孩子无限艺术灵感。让孩子喜闻乐见,爱不释手。
每幅图都配有汉字描红,中英文发音,儿歌童谣,可以让小朋友们一边画画一边学习汉字英文单词
&涂涂乐如何使用?第一步,就是让孩子选择自己喜欢的颜色来涂色。因为色彩能够反映孩子的内心世界。
&第二步,当孩子涂色完成,在家长的引导下实现立体效果。家长及时的鼓励夸奖孩子,涂鸦变动画,满足孩子画画的成就感,增加孩子的自信心,促进亲子关系。
&除此之外,还可以让孩子进行手工DIY创作,让孩子脑洞大开,尽情发挥想象了。
&涂涂乐一套分为4本,包括《奇妙的自然》《有趣的物品》《多样的职业》《多彩的社会》书中精选儿童喜闻乐见的动物、交通工具、人物等形象,并配有琅琅上口的儿歌,引导孩子养成良好的生活习惯,内容丰富有趣,涵盖了儿童认知世界的方方面面,大大开阔了孩子的眼界。让孩子在轻松快乐的涂色过程中获得认知,建立起识字认读的兴趣。
全套总共可以创造76次,送一盒12色环保油画棒。孩子每天画一幅图,就相当于学习了2到3个汉字描画,一个英文单词,一段童谣。
还有一点就是使用公司配套的环保油画棒是可以用橡皮擦擦掉的。也就是说一次购买,可以让孩子反复使用。
&说到这里,相信大家对于涂涂乐都有了一定的了解?那么如何代理涂涂乐呢?
&其实非常的简单,拿一套给孩子玩就可以成为代理,孩子玩的同时发发朋友圈,有人要货再考虑拿货。也可以直接拿货,5套以上享受批发价。具体详情➕V:Luckfeifei2013
加入团队之后,团队每周二四六晚上8点都有培训课程,每节课至少一个小时,全是经验分享,每节课的内容都不一样。只要你认真去听去执行,就没有做不好的事。
&说到现在,我之所以能从微商小白跳跃到一级总代,相信大家心里都明白了吧。离不开团队的培训,也离不开我的老大细心教导。
我们AR科技团队是公司最大的团队,去年8月份成立,到目前为此,600多个分群,近10万代理商,之所以能成长的那么快,就是因为我们的宗旨是,让每一套涂涂乐都真真实实的到达消费者手中,而不是囤在代理手上。不囤货不压货,是我们每一个AR科技团队的心声,只有真正达到消费者手中的产品才能走的更加长远。
团队培训课程
&到如今,AR涂涂乐已经在短短几个月的时间取得了惊人的成绩,很多幼儿园都把涂涂乐当作了课件让孩子们来学习,游乐场,育婴店,玩具店,书店,早教中心…都能看到涂涂乐。
&国家二胎政策开放,早教市场空白,涂涂乐已然成为2016年最火的早教产品。详询V:Luckfeifei2013
&最后给大家分享一个小故事,请大家看下图。
父母的爱,仅仅是希望孩子梦想成真,就这么简单。&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。您所在的位置:
谁买过AR涂涂乐多少钱?哪里有卖的
4D儿童早教产品涂涂乐是什么?看到这个问题,相信很多宝妈们已经开始跃跃欲试了,4D儿童早教产品涂涂乐产品一推出,就逐项获得各种大奖。(官方加盟电话: 微信:huangying330789 QQ: )并被国家列为十二五国家支持项目。那么涂涂乐到底神奇在什么地方呢?下面小编带大家了解一下。产品简介全套共有八册,其中《涂涂乐Ⅰ》分4个主题,包括“有趣的动物”、“奇妙的农场”、“多样的交通工具”和“多彩的生活”。《涂涂乐Ⅱ》分4个主题,包括“多样的职业”、“奇妙的自然”、“多彩的社会”、“有趣的物品”。书中精选儿童喜闻乐见的动物、交通工具、人物等形象,并配有琅琅上口的儿歌,引导孩子养成良好的生活习惯,内容丰富有趣,涵盖了儿童认知世界的方方面面,大大开阔了孩子的眼界。让孩子在轻松快乐的涂色过程中获得认知,建立起识字认读的兴趣。官方加盟电话: 微信:huangying330789 QQ: 产品亮点1.涂鸦变动画:采用实时贴图技术,把孩子的作品变成绘声绘色的立体动画,还可以用手指触动、拉近画面,跟鲜活的卡通形象进行全方位的互动。2.图案简单生动,主题丰富多样,涵盖孩子感兴趣的方方面面。3.每个画面提供两次创作机会,激发孩子想象力和创造力。4.能画又能学:动画中配有中英双语标准发音,在绘画过程中建立起识字、认读的兴趣。5.每幅图都配有朗朗上口的童谣,让孩子在听一听、读一读中轻松学常识。6.圆角设计、环保油墨印刷。7.使用便捷:手机/平板电脑扫描二维码下载安装APP,随时随地可用。产品功能1. 开发右脑功能,培养审美能力。2到8岁是儿童右脑功能开发的黄金期。幼儿美术的启蒙教育对儿童早期智力开发起着至关重要的作用。《涂涂乐》不仅能让儿童感受到色彩世界的奇妙与丰富,还能充分锻炼儿童涂、画的技能,对儿童审美能力的培养及右脑形象思维的发育都有积极的促进作用。2. 锻炼手部肌肉,养成握笔习惯。儿童涂色的过程也是锻炼手眼协调性的过程。《涂涂乐》可以帮助儿童锻炼手指的精细肌肉,练习控笔,强化肌肉记忆。早期的握笔经验能够帮助孩子树立书写的自信心。3. 融合增强现实技术,3D数字艺术成就儿童创造天赋。使用本书自带的App,儿童可以在手机、平板电脑上看到自己涂鸦的画作变成了绘色绘声的动画,静态的涂鸦作品跃然纸上,交互式的体验瞬间点燃儿童的创作激情,为想象力营造了一个立体的创作空间。此外,《涂涂乐》特为儿童提供了二次创作的机会,更多配色的可能,让儿童爱不释手,画了又画,每次都有进步!那么有宝妈要问了,AR涂涂乐为什么要给孩子两次创作机会呢?涂涂乐是专业做儿童早教产品的,对于如何培养、提高孩子各方面的能力做的非常棒,提供两次创作机会是为了给孩子一个对比、思考、和观察的空间让孩子在第二次创作中弥补第一次的美中不足,做到超越自己,细致入微!同时还可以利用二次创作的机会和其他小朋友交流各自的想法,相互学习,共同进步哦!官方加盟电话: 微信:huangying330789 QQ:AR涂涂乐是一款开启孩子艺术梦的早教产品,所有的涂鸦都能变成动画,让孩子真正能体会到神笔马良梦想成真,画什么变什么,尽情挥洒,肆意创作,增强孩子的成就感。中、英双语发音,让孩子在玩乐的同时轻松学单词。二十一世纪,创意与才情很重要,如果在孩子幼年之时便被传统的条条框框扼杀了他的创意与才情,那么到了后期想要重新培养是根本不可能的。很多家长都是因为知道这一点,所以才会选择涂涂乐作为孩子的涂鸦玩具。怎么样?听完小编的话,您是否心动呢?快快加盟吧!认准官方授权哦!官方加盟电话: 微信:huangying330789 QQ:
的热门文章阅读
版权与免责声明:
①凡本网注明"来源:深圳热线"的所有作品,均由本网编辑搜集整理,并加入大量个人点评、观点、配图等内容,版权均属于深圳热线,未经本网许可,禁止转载,违反者本网将追究相关法律责任。
②本网转载并注明自其它来源的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品来源,并自负版权等法律责任。
③如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,我们将在您联系我们之后24小时内予以删除,否则视为放弃相关权利,读者热线:5 。手把手教你做个AR涂涂乐 - 简书
手把手教你做个AR涂涂乐
前段时间公司有一个AR涂涂乐的项目,虽然之前接触过AR也写过小Demo,但是没有完整开发过AR项目.不过经过1个多星期的学习,现在已经把项目相关的技术都学会了,在此向互联网上那些乐于分享的程序员前辈们致敬.学习的过程中我发现好多博客只有代码没有讲解,在这里我就写一个详细一点的涂涂乐教程吧.
一.AR涂涂乐原理
目前市场上所有的AR产品中,涂涂乐是一个做的比较成功的产品,因为其形象 生动 新奇的特点,在早教行业内很受欢迎.其实AR涂涂乐的原理非常简单,就是把被当作画画工具的识别图上的颜色材质渲染到空白的模型上.
二.制作流程
我大概总结了下从模型到AR应用涉及到的具体流程,如下:
美术制作AR应用中需要用到的模型和动画
模型制作好之后,对照识别图上的模型外形匹配好UV
UV匹配好之后把模型和识别图交付程序,程序登录Vuforia官网添加证书和目标数据
程序把Vuforia插件和目标数据分别下好并导入工程
删除默认场景中的摄像机,添加ARCamera和ImageTarget到场景并配置好参数
把涂涂乐需要用到的模型放入场景,把模型的动画切好
求识别图4个顶点的位置,获取一帧图像,把这些参数传给Shader,Shader处理过后,识别图上的颜色就渲染到模型上了
导出的手机,我这里是安卓平台
三.图文教程
这里以我最近写的项目为例:
1.美术不是自己亲自做的,就写下我当时做项目时对美术的要求吧:
UV要展好,和识别图匹配好
带动画的模型要保持独立,不能和其他模型在一起
模型动画要有周期性2遍为一个周期
识别图要对比强烈
命名规范要有意义同一模型的不同组件要分组
这个模型只有花是用来画画的,因此识别图是一个空白的花.
2.Vuforia准备工作(许可证 和 识别图数据)
没有注册过的先注册下,注册时要注意的一点是密码要包含大小写和特殊符号
注册后点击Develop ---&Add License Key
正常测试选Development就行了,然后取个名字点Next
然后确认就好了
这里的License Key是待会项目中要用到的 先用记事本保存下来备用
Paste_Image.png
到了添加识别图的时候了,先创建一个Target Database
Paste_Image.png
Paste_Image.png
然后点击刚才创建的Target Database
Paste_Image.png
添加识别图
Paste_Image.png
静静等待 不要关闭
Paste_Image.png
下载识别图数据备用
Paste_Image.png
下载Vuforia插件备用
Paste_Image.png
3.Unity配置阶段
配置安卓开发环境(之前写过的博客,很具体)
转换开发平台(不提前转换导出时有可能会报错)
Paste_Image.png
依次导入Vuforia插件包,识别图数据包,美术资源
Paste_Image.png
删除场景中的Camera,在场景中添加AR Camera和Image Target
Paste_Image.png
配置AR Camera
Paste_Image.png
配置Image Target
Paste_Image.png
把模型拖入Image Target并调整好位置
Paste_Image.png
4.编程阶段
总体思想:编程阶段做的主要工作是把识别图上的材质信息经过计算赋给模型,这里因为动画的原因,每个模型可能涉及很多单个小模块,每个单个的模块都要经过这个计算,在这里,花的7个花瓣是独立的,也就需要7次运算.
using UnityE
using System.C
public class ARRender : MonoBehaviour
public GameObject S
private Animator flowerA
//七色花的七个花瓣
public GameObject flower1;
public GameObject flower2;
public GameObject flower3;
public GameObject flower4;
public GameObject flower5;
public GameObject flower6;
public GameObject flower7;
private Texture2D
//申请Texture2D变量储存屏幕截图
private int screenW
//保存屏幕宽度
private int screenH
//保存屏幕高度
//拾取真正贴图的四个点的坐标
Vector3 targetAnglePoint1;
//左上角坐标
Vector3 targetAnglePoint2;
//左下角坐标
Vector3 targetAnglePoint3;
//右上角坐标
Vector3 targetAnglePoint4;
//右下角坐标
public GameO
//储存确定贴图大小的面片物体
Vector2 halfS
//记录plane宽高的一半值
void Start()
screenWidth = Screen.
screenHeight = Screen.
texture = new Texture2D(screenWidth, screenHeight, TextureFormat.RGB24, false);//实例化空纹理
flowerAnimator = this.GetComponent&Animator&();
//截屏函数
public void ScreenShot()
Scene.SetActive(true);
flowerAnimator.SetTrigger("FlowerRainbow");
texture.ReadPixels(new Rect(0, 0, screenWidth, screenHeight), 0, 0);
//读取屏幕像素信息
texture.Apply();
//存储为纹理数据
halfSize = new Vector2(plane.GetComponent&MeshFilter&().mesh.bounds.size.x, plane.GetComponent&MeshFilter&().mesh.bounds.size.z) * 50.0f*0.5f;
//获取Plane的长宽的一半值
//确定真实贴图的世界坐标
targetAnglePoint1 = transform.parent.position + new Vector3(-halfSize.x, 0, halfSize.y);
targetAnglePoint2 = transform.parent.position + new Vector3(-halfSize.x, 0, -halfSize.y);
targetAnglePoint3 = transform.parent.position + new Vector3(halfSize.x, 0, halfSize.y);
targetAnglePoint4 = transform.parent.position + new Vector3(halfSize.x, 0, -halfSize.y);
//获取VP值
Matrix4x4 P = GL.GetGPUProjectionMatrix(Camera.main.projectionMatrix, false);
Matrix4x4 V = Camera.main.worldToCameraM
Matrix4x4 VP = P * V;
//给地球的Shader传递贴图四个点的世界坐标,VP,以及贴图
flower1.GetComponent&Renderer&().material.SetVector("_Uvpoint1", new Vector4(targetAnglePoint1.x, targetAnglePoint1.y, targetAnglePoint1.z, 1f));
flower1.GetComponent&Renderer&().material.SetVector("_Uvpoint2", new Vector4(targetAnglePoint2.x, targetAnglePoint2.y, targetAnglePoint2.z, 1f));
flower1.GetComponent&Renderer&().material.SetVector("_Uvpoint3", new Vector4(targetAnglePoint3.x, targetAnglePoint3.y, targetAnglePoint3.z, 1f));
flower1.GetComponent&Renderer&().material.SetVector("_Uvpoint4", new Vector4(targetAnglePoint4.x, targetAnglePoint4.y, targetAnglePoint4.z, 1f));
flower1.GetComponent&Renderer&().material.SetMatrix("_VP", VP);
flower1.GetComponent&Renderer&().material.mainTexture =
flower2.GetComponent&Renderer&().material.SetVector("_Uvpoint1", new Vector4(targetAnglePoint1.x, targetAnglePoint1.y, targetAnglePoint1.z, 1f));
flower2.GetComponent&Renderer&().material.SetVector("_Uvpoint2", new Vector4(targetAnglePoint2.x, targetAnglePoint2.y, targetAnglePoint2.z, 1f));
flower2.GetComponent&Renderer&().material.SetVector("_Uvpoint3", new Vector4(targetAnglePoint3.x, targetAnglePoint3.y, targetAnglePoint3.z, 1f));
flower2.GetComponent&Renderer&().material.SetVector("_Uvpoint4", new Vector4(targetAnglePoint4.x, targetAnglePoint4.y, targetAnglePoint4.z, 1f));
flower2.GetComponent&Renderer&().material.SetMatrix("_VP", VP);
flower2.GetComponent&Renderer&().material.mainTexture =
flower3.GetComponent&Renderer&().material.SetVector("_Uvpoint1", new Vector4(targetAnglePoint1.x, targetAnglePoint1.y, targetAnglePoint1.z, 1f));
flower3.GetComponent&Renderer&().material.SetVector("_Uvpoint2", new Vector4(targetAnglePoint2.x, targetAnglePoint2.y, targetAnglePoint2.z, 1f));
flower3.GetComponent&Renderer&().material.SetVector("_Uvpoint3", new Vector4(targetAnglePoint3.x, targetAnglePoint3.y, targetAnglePoint3.z, 1f));
flower3.GetComponent&Renderer&().material.SetVector("_Uvpoint4", new Vector4(targetAnglePoint4.x, targetAnglePoint4.y, targetAnglePoint4.z, 1f));
flower3.GetComponent&Renderer&().material.SetMatrix("_VP", VP);
flower3.GetComponent&Renderer&().material.mainTexture =
flower4.GetComponent&Renderer&().material.SetVector("_Uvpoint1", new Vector4(targetAnglePoint1.x, targetAnglePoint1.y, targetAnglePoint1.z, 1f));
flower4.GetComponent&Renderer&().material.SetVector("_Uvpoint2", new Vector4(targetAnglePoint2.x, targetAnglePoint2.y, targetAnglePoint2.z, 1f));
flower4.GetComponent&Renderer&().material.SetVector("_Uvpoint3", new Vector4(targetAnglePoint3.x, targetAnglePoint3.y, targetAnglePoint3.z, 1f));
flower4.GetComponent&Renderer&().material.SetVector("_Uvpoint4", new Vector4(targetAnglePoint4.x, targetAnglePoint4.y, targetAnglePoint4.z, 1f));
flower4.GetComponent&Renderer&().material.SetMatrix("_VP", VP);
flower4.GetComponent&Renderer&().material.mainTexture =
flower5.GetComponent&Renderer&().material.SetVector("_Uvpoint1", new Vector4(targetAnglePoint1.x, targetAnglePoint1.y, targetAnglePoint1.z, 1f));
flower5.GetComponent&Renderer&().material.SetVector("_Uvpoint2", new Vector4(targetAnglePoint2.x, targetAnglePoint2.y, targetAnglePoint2.z, 1f));
flower5.GetComponent&Renderer&().material.SetVector("_Uvpoint3", new Vector4(targetAnglePoint3.x, targetAnglePoint3.y, targetAnglePoint3.z, 1f));
flower5.GetComponent&Renderer&().material.SetVector("_Uvpoint4", new Vector4(targetAnglePoint4.x, targetAnglePoint4.y, targetAnglePoint4.z, 1f));
flower5.GetComponent&Renderer&().material.SetMatrix("_VP", VP);
flower5.GetComponent&Renderer&().material.mainTexture =
flower6.GetComponent&Renderer&().material.SetVector("_Uvpoint1", new Vector4(targetAnglePoint1.x, targetAnglePoint1.y, targetAnglePoint1.z, 1f));
flower6.GetComponent&Renderer&().material.SetVector("_Uvpoint2", new Vector4(targetAnglePoint2.x, targetAnglePoint2.y, targetAnglePoint2.z, 1f));
flower6.GetComponent&Renderer&().material.SetVector("_Uvpoint3", new Vector4(targetAnglePoint3.x, targetAnglePoint3.y, targetAnglePoint3.z, 1f));
flower6.GetComponent&Renderer&().material.SetVector("_Uvpoint4", new Vector4(targetAnglePoint4.x, targetAnglePoint4.y, targetAnglePoint4.z, 1f));
flower6.GetComponent&Renderer&().material.SetMatrix("_VP", VP);
flower6.GetComponent&Renderer&().material.mainTexture =
flower7.GetComponent&Renderer&().material.SetVector("_Uvpoint1", new Vector4(targetAnglePoint1.x, targetAnglePoint1.y, targetAnglePoint1.z, 1f));
flower7.GetComponent&Renderer&().material.SetVector("_Uvpoint2", new Vector4(targetAnglePoint2.x, targetAnglePoint2.y, targetAnglePoint2.z, 1f));
flower7.GetComponent&Renderer&().material.SetVector("_Uvpoint3", new Vector4(targetAnglePoint3.x, targetAnglePoint3.y, targetAnglePoint3.z, 1f));
flower7.GetComponent&Renderer&().material.SetVector("_Uvpoint4", new Vector4(targetAnglePoint4.x, targetAnglePoint4.y, targetAnglePoint4.z, 1f));
flower7.GetComponent&Renderer&().material.SetMatrix("_VP", VP);
flower7.GetComponent&Renderer&().material.mainTexture =
Shader "AR paint/ToMaterial" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
_Uvpoint1("point1", Vector) = (0 , 0 , 0 , 0)
_Uvpoint2("point2", Vector) = (0 , 0 , 0 , 0)
_Uvpoint3("point3", Vector) = (0 , 0 , 0 , 0)
_Uvpoint4("point4", Vector) = (0 , 0 , 0 , 0)
SubShader {
Tags { "Queue"="Transparent" "RenderType"="Transparent" }
Blend SrcAlpha OneMinusSrcAlpha
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
sampler2D _MainT
float4 _MainTex_ST;
float4 _Uvpoint1;
float4 _Uvpoint2;
float4 _Uvpoint3;
float4 _Uvpoint4;
float4x4 _VP;
struct v2f {
pos : SV_POSITION;
uv : TEXCOORD0;
fixedPos : TEXCOORD2;
v2f vert (appdata_base v)
o.pos = mul(UNITY_MATRIX_MVP,v.vertex);
o.uv = TRANSFORM_TEX(v.texcoord,_MainTex);
float4 top = lerp(_Uvpoint1, _Uvpoint3, o.uv.x);
float4 bottom = lerp(_Uvpoint2, _Uvpoint4, o.uv.x);
float4 fixedPos = lerp(bottom, top, o.uv.y);
o.fixedPos = ComputeScreenPos(mul(UNITY_MATRIX_VP, fixedPos));
float4 frag (v2f i) : COLOR
float4 top = lerp(_Uvpoint1, _Uvpoint3, i.uv.x);
float4 bottom = lerp(_Uvpoint2, _Uvpoint4, i.uv.x);
float4 fixedPos = lerp(bottom, top, i.uv.y);
fixedPos = ComputeScreenPos(mul(_VP, fixedPos));
return tex2D(_MainTex, fixedPos.xy / fixedPos.w);
//FallBack "Diffuse"
首先在ImageTarget下新建一个Plane和识别图大小一致,核心代码的功能就是把场景中Plane(也就是识别图)的世界坐标转换到屏幕坐标,然后截图形成纹理,最后把这些数据传给Shader处理.
Paste_Image.png
把模型拖入ImageTarget,装饰场景也拖进去先隐藏,然后把需要渲染的模块拖入ARRender的代码参数,然后新建一个材质,Shader选择ARpaint/ToMaterial,把这个材质赋给所有要涂色渲染的模块,也就是7个花瓣.
新建一个Button,添加事件拖入Flower,方法选择ScreenShot
导出安装包到手机,测试,这是我的测试结果:
动画拿到之后根据需要进行切割并Apply
Paste_Image.png
新建一个动画控制器,把刚才切好的动画拖到动画状态机里面,右键建立Transition,Parameters选项卡中创建Trigger,这样就可以在程序中控制动画了
新建一个空物体,起名Audio
添加AudioSource组件
拖入ImageTarget
找到ImageTarget下的 DefaultTrackableEventHandler 脚本 声明AudioSource变量然后分别在 OnTrackingFound() 和 OnTrackingLost()这两个方法里添加声音暂停和开始方法
public class DefaultTrackableEventHandler : MonoBehaviour,
ITrackableEventHandler
public AudioSource clothesAudioS
#region PRIVATE_MEMBER_VARIABLES
private TrackableBehaviour mTrackableB
#endregion // PRIVATE_MEMBER_VARIABLES
#region UNTIY_MONOBEHAVIOUR_METHODS
void Start()
mTrackableBehaviour = GetComponent&TrackableBehaviour&();
if (mTrackableBehaviour)
mTrackableBehaviour.RegisterTrackableEventHandler(this);
#endregion // UNTIY_MONOBEHAVIOUR_METHODS
#region PUBLIC_METHODS
/// &summary&
/// Implementation of the ITrackableEventHandler function called when the
/// tracking state changes.
/// &/summary&
public void OnTrackableStateChanged(
TrackableBehaviour.Status previousStatus,
TrackableBehaviour.Status newStatus)
if (newStatus == TrackableBehaviour.Status.DETECTED ||
newStatus == TrackableBehaviour.Status.TRACKED ||
newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
OnTrackingFound();
OnTrackingLost();
#endregion // PUBLIC_METHODS
#region PRIVATE_METHODS
private void OnTrackingFound()
//gameObject.transform.FindChild ("Earth").gameObject.SetActive (true);
Renderer[] rendererComponents = GetComponentsInChildren&Renderer&(true);
Collider[] colliderComponents = GetComponentsInChildren&Collider&(true);
// Enable rendering:
foreach (Renderer component in rendererComponents)
component.enabled =
// Enable colliders:
foreach (Collider component in colliderComponents)
component.enabled =
if (!clothesAudioSource.isPlaying)
clothesAudioSource.Play();
Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " found");
private void OnTrackingLost()
Renderer[] rendererComponents = GetComponentsInChildren&Renderer&(true);
Collider[] colliderComponents = GetComponentsInChildren&Collider&(true);
// Disable rendering:
foreach (Renderer component in rendererComponents)
component.enabled =
// Disable colliders:
foreach (Collider component in colliderComponents)
component.enabled =
clothesAudioSource.Pause();
Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " lost");
#endregion // PRIVATE_METHODS
Vuforia默认不会自动对焦,新建一个脚本,把下面代码复制进去,把脚本拖到ARCamera上面就好了
using UnityE
using System.C
public class Duijiao : MonoBehaviour
// Use this for initialization
void Start()
GameObject ARCamera = GameObject.Find("ARCamera");
Vuforia.CameraDevice.Instance.SetFocusMode(Vuforia.CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);
// Update is called once per frame
void Update()
Vuforia.CameraDevice.Instance.SetFocusMode(Vuforia.CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);
关于多图识别
设置目标上限
Paste_Image.png
拖入更多的ImageTarget,每个ImageTarget下配置不同的识别图和模型就能多图识别了
Paste_Image.png
Paste_Image.png
更多内容在我的博客园/qiaogaojian/
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金 相信有很多...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金相信有很多朋友...
AR动画可放大缩小平移旋转可自行下载项目运行到真机上演示由于项目以及下文用到的素材较大 GItHub 无法上传 故传到百度云LLGameAR 文章目录一 AR 和 VR 概念二 软件简介Unity 3DVuforia SDK三 开发环境的配置1 注册和安装 Unity3D2...
注:本次用的AR SDK是vuforia,所以用这个SDK做开发解释说明,并且采用循序渐进的方式,逐步做出扫描出图可交互图片,视频和模型动画。 首先来看效果: 识别出现图片的做法: 1:先登录vuforia官网,没有账号的要先注册 2:登录网站后,下载vuforia for...
-- 作者 谢恩铭 转载请注明出处公众号「程序员联盟」ProgrammerLeague原文:/p/47b22e4fcced 这一课内容实在太多,如果写成文章,我需要截图几百张,因此我把这套课程录制成了视频教程,发布在慕课网上,完全...
《皇甫缘》
文/张兆辉 春满家乡百华艳,绿树成荫街井然。 禾苗青青天碧蓝,民心纯朴貌日变。 现代农业连成片,果香飘飘生态园。 水利设施配套全,家庭居室城人羨。 商业网点货齐全,图书文卫加戏院。 年年古会赛周边,走亲购物人头蹿。 祖祠...
先说下重载,(1)方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。(2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的...
这是心灵自由30天写作群第三期的第十五篇作业。 此刻我坐在了回家的巴士上,回想着昨天发生的一切,真是太不可思议了! 终见真人 昨天上午,我终于面对面见到了“老朋友”——李欣频。那个曾经只在书上、视频上看到的人,那个促进我改变的人,那个我通过书见证她成长的人,如今真的就活生生...
【伯1:21】我赤身出于母胎,也必赤身归回。赏赐的是耶和华,收取的也是耶和华;耶和华的名是应当称颂的。 最近经常会问一些朋友:有什么需要我帮你祷告的吗?其中有一位朋友说到:让我赚得钱多多。 当我在祷告殿中默想,该如何为这位朋友祷告时,忽然我看到了这位朋友有理财的能力、管理的...

我要回帖

更多关于 宝宝快乐涂色 的文章

 

随机推荐