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

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Unity中实现AR功能,我们通常需要在手机上进行测试。当我们需要分享或保存AR场景时,我们可以使用AR手机截图的功能实现AR手机截图的步骤如下: 1. 在Unity中创建一个Canvas和一个RawImage对象。这个RawImage对象将用于显示AR截图。 2. 在需要截图的时候,我们可以使用Unity的Application.CaptureScreenshot()函数来进行截图。这个函数将会把当前的屏幕内容保存到一个png文件中。 3. 使用Unity的IO函数读取这个png文件,并将其转换成Texture2D对象。 4. 将这个Texture2D对象设置为RawImage对象的texture属性,从而显示AR截图。 下面是一个示例代码: ```C# public class ARScreenShot : MonoBehaviour { public Canvas canvas; public RawImage rawImage; public void TakeScreenShot() { // Capture screenshot string fileName = "ARScreenShot.png"; string path = Application.persistentDataPath + "/" + fileName; ScreenCapture.CaptureScreenshot(fileName); // Load screenshot into texture byte[] bytes = File.ReadAllBytes(path); Texture2D texture = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false); texture.LoadImage(bytes); // Set texture to RawImage component rawImage.texture = texture; // Show canvas and RawImage component canvas.gameObject.SetActive(true); } } ``` 在这个示例代码中,我们首先在Canvas上添加了一个RawImage对象。然后,在TakeScreenShot()函数中,我们使用ScreenCapture.CaptureScreenshot()函数进行截图,并将截图保存到本地文件中。接着,我们使用IO函数读取这个png文件,并将其转换成Texture2D对象,并将这个Texture2D对象设置为RawImage对象的texture属性,从而显示AR截图。 最后,我们需要在Canvas上设置为Active,从而显示AR截图。 这就是如何在Unity中实现AR手机截图的基本步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

耳朵里有只风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值