AR捡取纹理功能实现 colARmix&涂涂乐

来源:互联网 发布:mac系统word下载地址 编辑:程序博客网 时间:2024/05/18 01:58

1 准备工作,对于AR开发人员这个都是废话

a)        确定开发环境Unity(32位)+Vuforia(vuforia现在暂时不支持unity64的编辑)            b)        构建工程,创建场景

2 注册用于图画的线框标识图,作为识别对象,在三维制作软件(3dsMax、maya等)里面把线框图作为纹理赋给你的增强对象

3 获取ImageTarget四个角点,利用Camera的函数WorldToViewportPoint从世界坐标转换到视口坐标,加以判断,目的就是做到ImageTarget全部在视口内。

如果是NGUI,NGUI使用自己独立的正交摄像机,转换步骤如下: 1. 使用透视摄像机把世界坐标转换到屏幕坐标        Vector3 pos = Camera.main.WorldToScreenPoint(worldPos);        pos.z = 0f;   //z一定要为0.        2. 使用UI摄像机转换到NGUI的世界坐标        Vector3 pos2 = UICamera.currentCamera.ScreenToWorldPoint(pos);        3. 赋值给NGUI控件        temp.transform.position = pos2; //temp为NGUI控件.

4 保证识别对象全部显示在视口内之后,利用Vuforia API提供的函数GetCameraImage()提取运行时图片,具体做法
见:https://developer.vuforia.com/forum/faq/unity-how-can-i-reset-frame-format-scene-reload

5 这里得到的图片就是手机屏幕看到的,里面应确保ImageTarget全部显示在视野内,获取图片的同时,确定ImageTarget四个角点在图片中的位置,把得到的图片数据以像素的形式保存到颜色数组(Color32[])中

6 写一个图像展开(就是图形图像学里面的一些变换)算法,就是根据ImageTarget四个角点在图片中的位置,获取颜色数据中的有效像素点,根据Imagetarget纹理大小,新创建一个Texture2D,以利用算法得到ImageTarget时时纹理,用什么算法具体自己研究,不在这里公开

7 把纹理替换掉增强对象上的纹理即可。


【个人广告】
希望大家可以支持我的个人微信号“小游戏情报局

这里写图片描述

1 0
原创粉丝点击