2015-05-07 18:16:55 cp790621656 阅读数 11953
  • ARKit视觉风暴

    课程介绍 本套课程从技术理念到项目实践,教大家系统掌握ARKit技术开发,随心打造iOS端AR增强现实应用。由一开始的开发环境搭建,到Unity ARKit Plugin、ARFoundation ARKit等不同时期技术的讲解。从平面模型放置、识别图片、手势交互、3D物体识别、面部AR贴纸、光照估计、环境探针、多人 AR技术,甚至包含ARKit3.0的动作捕捉技术等。除了以上课程内容,更加入了随着技术更新与时俱进更新的ARKit连载技术教学内容。 课程收益 轻松理解ARKit的技术原理,从零到一创建自己的第一个AR项目。 学习Unity ARKit Plugin经典技术,了解ARKit中的常见概念和原理。 学会在 ARFoundation 中使用ARKit,进行企业级AR项目开发。 学会如何在AR项目里播放模型动画,通过触屏手势交互实现模型的旋转和缩放。 了解ARKit的图片识别,掌握AR卡片、AR书籍的实现方法。 学会使用面部增强技术,实现热门短视频应用的AR贴纸效果,实现面部表情追踪。 学会使用ARKit物体检测技术,实现3D物体识别,可以广泛应用于工业、建筑、古董、玩具手办、艺展览等不同场景。 学习ARKit中的经典交互案例,优化AR项目的用户体验。 熟练使用环境纹理、光照估计技术,让AR内容随当前现实场景自动变化调节,看起来更加真实。 基于World Map、Collaborative Session AR技术,实现AR场景的持久化及多人AR体验效果。

    25 人正在学习 去看看 翟喜峰

Unity3d 的新版 UI 系统在给我们带来很大便利的同时,也添加了一些小麻烦。每次从电脑中导入图片到 Unity3d 中都需要手动设置Texture Type为Sprite (2D and UI) 及设置 Packing Tag。对于需要打包为一个图集的图片,我们一般把它们放到一个文件夹中。 基于以上,我们可以让图片的 Packing Tag 自动设置为 文件夹的名字。

转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn

Unity3d 提供了 资源导入 的回调函数,我们 可以使用 AssetPostProcessor 来在Unity3d 对图片进行处理之前、之后 的回调中,再进行一些自己的处理。

转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn

在这里,我们在图片被Unity3d 处理之前,抢先 一步修改它 的 Texture Type 以及 Packing Tag 。

转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn

具体可以参照 Unity3d 官方文档。

http://docs.unity3d.com/ScriptReference/AssetPostprocessor.OnPreprocessTexture.html

/**************************
 * 文件名:AutoSetTextureUISprite.cs;
 * 文件描述:导入图片资源到Unity时,自动修改为UI 2D Sprite,自动设置打包tag 为文件夹名字;
 * 创建日期:2015/05/04;
 * Author:陈鹏;
 ***************************/

using UnityEngine;
using System.Collections;
using UnityEditor;

public class AutoSetTextureUISprite :AssetPostprocessor 
{

    void OnPreprocessTexture()
    {

        //自动设置类型;
        TextureImporter textureImporter = (TextureImporter)assetImporter;
        textureImporter.textureType=TextureImporterType.Sprite;

        //自动设置打包tag;
        string dirName = System.IO.Path.GetDirectoryName(assetPath);
        Debug.Log("Import ---  "+dirName);
        string folderStr = System.IO.Path.GetFileName(dirName);
        Debug.Log("Set Packing Tag ---  "+folderStr);

        textureImporter.spritePackingTag = folderStr;
    }
}

把上面的代码文件放到 Editor 文件夹中 ( 不是规定,只是习惯 ) 。

然后从电脑中拖一张图片到 Project 视图中,可以看到 图片被自动修改 。

转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn

转自http://blog.csdn.net/huutu http://www.thisisgame.com.cn

示例下载:

http://pan.baidu.com/s/1dDcZigT



2016-01-08 11:35:12 andyhebear 阅读数 8828
  • ARKit视觉风暴

    课程介绍 本套课程从技术理念到项目实践,教大家系统掌握ARKit技术开发,随心打造iOS端AR增强现实应用。由一开始的开发环境搭建,到Unity ARKit Plugin、ARFoundation ARKit等不同时期技术的讲解。从平面模型放置、识别图片、手势交互、3D物体识别、面部AR贴纸、光照估计、环境探针、多人 AR技术,甚至包含ARKit3.0的动作捕捉技术等。除了以上课程内容,更加入了随着技术更新与时俱进更新的ARKit连载技术教学内容。 课程收益 轻松理解ARKit的技术原理,从零到一创建自己的第一个AR项目。 学习Unity ARKit Plugin经典技术,了解ARKit中的常见概念和原理。 学会在 ARFoundation 中使用ARKit,进行企业级AR项目开发。 学会如何在AR项目里播放模型动画,通过触屏手势交互实现模型的旋转和缩放。 了解ARKit的图片识别,掌握AR卡片、AR书籍的实现方法。 学会使用面部增强技术,实现热门短视频应用的AR贴纸效果,实现面部表情追踪。 学会使用ARKit物体检测技术,实现3D物体识别,可以广泛应用于工业、建筑、古董、玩具手办、艺展览等不同场景。 学习ARKit中的经典交互案例,优化AR项目的用户体验。 熟练使用环境纹理、光照估计技术,让AR内容随当前现实场景自动变化调节,看起来更加真实。 基于World Map、Collaborative Session AR技术,实现AR场景的持久化及多人AR体验效果。

    25 人正在学习 去看看 翟喜峰

最近在做项目的过程中遇到这样的一个需求:玩家可以在游戏过程中进行实时存档,在存档过程中会保存当前游戏进度,同时会截取当前游戏画面并加载到游戏存档界面中。当下一次进入游戏的时候,将读取本地存档图片并加载到游戏界面中。这在单机游戏中是特别常见的一种功能,这里主要有两个关键点。首先是截取游戏画面,这个问题大家可以在《Unity教程之-Unity3d游戏开发之截屏保存精彩瞬间》这篇文章中找到答案。其次是从本地加载图片,因为这里要保证可读可写,因此传统的Resources.Load()方式和AssetBundle方式均无法实现这样的功能。那么怎样从外部加载图片到游戏中,这就是我们今天要讨论的内容啦。好了,这里介绍两种方法来实现这一目的。

喜闻乐见的WWW方式

喜闻乐见的WWW方式之所以喜闻乐见,这是因为这是我们最为熟悉的一种,我们都知道通过WWW可以从网络上加载文本、图片、音频等形式的内容,那么通过WWW能否加载本地外部(相对于应用程序)资源呢?答案是肯定的,这是因为WWW可以支持http和file两种协议。我们通常接触到的WWW默认都是指http协议,现在我们来说说file协议,该协议可以用来访问本地资源(绝对路径)。例如我们希望加载文件D:\TestFile\pic001.png这个文件,则此时对应的C#脚本为:

//请求WWW
WWW www = new WWW("file://D:\\TestFile\\pic001.png);
yield return www;        
if(www != null && string.IsNullOrEmpty(www.error))
{
    //获取Texture
    Texture texture=www.texture;   
    //更多操作...       
}

注意到这里出现了yield return结构,这表示这里使用到了协程,因此我们需要付出的代价就是需要在项目中使用StartCoroutine等协程相关的方法来调用这些协程。虽然在Unity3D中使用协程是件简单的事情,可是如果我们随随便便地使用协程而不注意去维护这些协程,那么这些让我们引以为傲的简单代码可能就会变成我们痛苦不堪的无尽深渊。

亘古不变的传统IO方式

好了,下面我们隆重推出亘古不变的传统IO方式,这种方式相信大家都没有接触过,所以这里将这种方法和大家分享。既然是传统的IO方式,那么无非就是各种IO流的处理啦。好,我们一起来看下面这段代码:

//创建文件读取流
FileStream fileStream = new FileStream(screen, FileMode.Open, FileAccess.Read);
fileStream.Seek(0, SeekOrigin.Begin);
//创建文件长度缓冲区
byte[] bytes = new byte[fileStream.Length]; 
//读取文件
fileStream.Read(bytes, 0, (int)fileStream.Length);
//释放文件读取流
fileStream.Close();
fileStream.Dispose();
fileStream = null;

//创建Texture
int width=800;
int height=640;
Texture2D texture = new Texture2D(width, height);
texture.LoadImage(bytes);

可以看到在使用这种方式读取图片文件的时候主要是将图片文件转化为byte[]数组,再利用Texture2D的LoadImage方法转化为Unity3D中的Texture2D。这种方法需要在创建过程中传入图片的大小,在这里我们创建了一张800X640的图片。经过博主的研究发现,这种方式加载外部图片相对于使用WWW加载外部图片效率更高,所以如果大家遇到类似的需求,博主个人推荐大家使用这种方式进行加载。

到目前为止我们解决了如何从外部加载图片到Unity3D中,现在我们回到最开始的问题,我们从外部读取到这些图片以后需要将它们加载到游戏界面中。比如当我们使用UGUI的时候,UGUI中的Image控件需要一个Sprite来作为它的填充内容,那么此时我们就需要将Texture转化为Sprite.号了,下面我们给出一个简单的例子:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.IO;

public class TestLoading : MonoBehaviour 
{
    /// <summary>
    /// Image控件
    /// </summary>
    private Image image;

    void Start () 
    {
        image = this.transform.Find("Image").GetComponent<Image>();

        //为不同的按钮绑定不同的事件
        this.transform.Find("LoadByWWW").GetComponent<Button>().onClick.AddListener
        (
           delegate(){LoadByWWW();}
        );

        this.transform.Find("LoadByIO").GetComponent<Button>().onClick.AddListener
        (
          delegate(){LoadByIO();}
        );
    }

    /// <summary>
    /// 以IO方式进行加载
    /// </summary>
    private void LoadByIO()
    {
        double startTime = (double)Time.time;
        //创建文件读取流
        FileStream fileStream = new FileStream("D:\\test.jpg", FileMode.Open, FileAccess.Read);
        fileStream.Seek(0, SeekOrigin.Begin);
        //创建文件长度缓冲区
        byte[] bytes = new byte[fileStream.Length];
        //读取文件
        fileStream.Read(bytes, 0, (int)fileStream.Length);
        //释放文件读取流
        fileStream.Close();
        fileStream.Dispose();
        fileStream = null;

        //创建Texture
        int width = 300;
        int height = 372;
        Texture2D texture = new Texture2D(width, height);
        texture.LoadImage(bytes);

        //创建Sprite
        Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f));
        image.sprite = sprite;

        startTime=(double)Time.time-startTime;
        Debug.Log("IO加载用时:" + startTime);
    }

    /// <summary>
    /// 以WWW方式进行加载
    /// </summary>
    private void LoadByWWW()
    {
        StartCoroutine(Load());
    }

    IEnumerator Load()
    {
        double startTime = (double)Time.time;
        //请求WWW
        WWW www = new WWW("file://D:\\test.jpg");
        yield return www;        
        if(www != null && string.IsNullOrEmpty(www.error))
        {
            //获取Texture
            Texture2D texture=www.texture;

            //创建Sprite
            Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f));
            image.sprite = sprite;

            startTime = (double)Time.time - startTime;
            Debug.Log("WWW加载用时:" + startTime);
        }
    }
}

现在我们运行程序可以发现两种方式均可以让图片加载进来,为了对比两种方式在执行效率上的高低,我们在脚本中加入了相关代码,通过对比可以发现使用IO方式加载一张227k的图片需要的时间为0s,而使用WWW方式加载需要0.0185s,因此传统的IO方式具有更高的效率,建议大家在遇到这类问题时尽可能地使用这种方式。

2015-06-12 08:54:23 leoleocs 阅读数 4079
  • ARKit视觉风暴

    课程介绍 本套课程从技术理念到项目实践,教大家系统掌握ARKit技术开发,随心打造iOS端AR增强现实应用。由一开始的开发环境搭建,到Unity ARKit Plugin、ARFoundation ARKit等不同时期技术的讲解。从平面模型放置、识别图片、手势交互、3D物体识别、面部AR贴纸、光照估计、环境探针、多人 AR技术,甚至包含ARKit3.0的动作捕捉技术等。除了以上课程内容,更加入了随着技术更新与时俱进更新的ARKit连载技术教学内容。 课程收益 轻松理解ARKit的技术原理,从零到一创建自己的第一个AR项目。 学习Unity ARKit Plugin经典技术,了解ARKit中的常见概念和原理。 学会在 ARFoundation 中使用ARKit,进行企业级AR项目开发。 学会如何在AR项目里播放模型动画,通过触屏手势交互实现模型的旋转和缩放。 了解ARKit的图片识别,掌握AR卡片、AR书籍的实现方法。 学会使用面部增强技术,实现热门短视频应用的AR贴纸效果,实现面部表情追踪。 学会使用ARKit物体检测技术,实现3D物体识别,可以广泛应用于工业、建筑、古董、玩具手办、艺展览等不同场景。 学习ARKit中的经典交互案例,优化AR项目的用户体验。 熟练使用环境纹理、光照估计技术,让AR内容随当前现实场景自动变化调节,看起来更加真实。 基于World Map、Collaborative Session AR技术,实现AR场景的持久化及多人AR体验效果。

    25 人正在学习 去看看 翟喜峰

我们知道,Unity3d会将Assets folder下的图片进行编译预处理,在程序打包完成后,我们是无法动态的修改图片内容,所以,如果能动态的从非Assets 目录下加载图片就是一个非常好的方法。

我们可以使用Unity3d WWW类提供的方法来完成这个工作,WWW类经常是用来下载网络服务器上的资源,其实它也可以加载本地的资源。 参考http://docs.unity3d.com/ScriptReference/WWW.html

那具体如何实现呢, 大体分成下面几步:

  • 创建WWW类,主要参数,www = new WWW(“file://” + path)) ,其中path为图片路径的存放位置。
  • 调用WWW类的方法完成加载。参考下面的示例代码:
 // PNG file, 注意图片的大小一定要是2的n次幂,尽量往大的用。
 texture = new Texture2D(1024, 512, TextureFormat.ARGB32, true, true) 
    {
         //下面是图片的一些具体参数
        filterMode = FilterMode.Trilinear,
         wrapMode = TextureWrapMode.Clamp,
         anisoLevel = 1
     };

     www.LoadImageIntoTexture(texture);

现在Unity3d动态加载只支持PNG或是JPG格式,具体参考文档http://docs.unity3d.com/ScriptReference/WWW.LoadImageIntoTexture.html

2015-01-13 22:56:14 caoboya 阅读数 955
  • ARKit视觉风暴

    课程介绍 本套课程从技术理念到项目实践,教大家系统掌握ARKit技术开发,随心打造iOS端AR增强现实应用。由一开始的开发环境搭建,到Unity ARKit Plugin、ARFoundation ARKit等不同时期技术的讲解。从平面模型放置、识别图片、手势交互、3D物体识别、面部AR贴纸、光照估计、环境探针、多人 AR技术,甚至包含ARKit3.0的动作捕捉技术等。除了以上课程内容,更加入了随着技术更新与时俱进更新的ARKit连载技术教学内容。 课程收益 轻松理解ARKit的技术原理,从零到一创建自己的第一个AR项目。 学习Unity ARKit Plugin经典技术,了解ARKit中的常见概念和原理。 学会在 ARFoundation 中使用ARKit,进行企业级AR项目开发。 学会如何在AR项目里播放模型动画,通过触屏手势交互实现模型的旋转和缩放。 了解ARKit的图片识别,掌握AR卡片、AR书籍的实现方法。 学会使用面部增强技术,实现热门短视频应用的AR贴纸效果,实现面部表情追踪。 学会使用ARKit物体检测技术,实现3D物体识别,可以广泛应用于工业、建筑、古董、玩具手办、艺展览等不同场景。 学习ARKit中的经典交互案例,优化AR项目的用户体验。 熟练使用环境纹理、光照估计技术,让AR内容随当前现实场景自动变化调节,看起来更加真实。 基于World Map、Collaborative Session AR技术,实现AR场景的持久化及多人AR体验效果。

    25 人正在学习 去看看 翟喜峰

       欢迎来到unity学习unity培训unity企业培训教育专区,这里有很多U3D资源U3D培训视频U3D教程U3D常见问题U3D项目源码,我们致力于打造业内unity3d培训、学习第一品牌。

 

       今天做项目的时候发现我加的GUI Text和背景图片GUI Texture相互覆盖,这个问题困扰了我这个初学Unity3D新手好久,后来问了老师才知道,原来只需要把背景图片的位置调整一下就不会覆盖了。

       首先添加GUI Text和GUI Teture

      

       然后再调整GUI Texture的transform的Z轴为-1就可以了哦。

       这样就可以做到GUI Text不被GUI Texture覆盖了。

2015-01-19 17:09:50 book_longssl 阅读数 5347
  • ARKit视觉风暴

    课程介绍 本套课程从技术理念到项目实践,教大家系统掌握ARKit技术开发,随心打造iOS端AR增强现实应用。由一开始的开发环境搭建,到Unity ARKit Plugin、ARFoundation ARKit等不同时期技术的讲解。从平面模型放置、识别图片、手势交互、3D物体识别、面部AR贴纸、光照估计、环境探针、多人 AR技术,甚至包含ARKit3.0的动作捕捉技术等。除了以上课程内容,更加入了随着技术更新与时俱进更新的ARKit连载技术教学内容。 课程收益 轻松理解ARKit的技术原理,从零到一创建自己的第一个AR项目。 学习Unity ARKit Plugin经典技术,了解ARKit中的常见概念和原理。 学会在 ARFoundation 中使用ARKit,进行企业级AR项目开发。 学会如何在AR项目里播放模型动画,通过触屏手势交互实现模型的旋转和缩放。 了解ARKit的图片识别,掌握AR卡片、AR书籍的实现方法。 学会使用面部增强技术,实现热门短视频应用的AR贴纸效果,实现面部表情追踪。 学会使用ARKit物体检测技术,实现3D物体识别,可以广泛应用于工业、建筑、古董、玩具手办、艺展览等不同场景。 学习ARKit中的经典交互案例,优化AR项目的用户体验。 熟练使用环境纹理、光照估计技术,让AR内容随当前现实场景自动变化调节,看起来更加真实。 基于World Map、Collaborative Session AR技术,实现AR场景的持久化及多人AR体验效果。

    25 人正在学习 去看看 翟喜峰
关于灯光贴图,烘焙贴图如何在中导入及使用的基本教程。

1,当您完成uvw保存到您的模型。 uvw文件


2,创建新uvw并将其更改为通道2。加载uvw前面创建。这比给你更好的使用自动uvw结果。


3,打( 0 )打开渲染到纹理窗口。选择“使用现有的渠道“ ,更改频道,以“2 “,选择添加“ Lightingmap “。


    当你看到的图像呈现是不是真正的结果。真正的图像存储在您的3dsmax的文件夹。通常它存储这样(我Documents/3dsmax/sceneassets/images )为您的型号名称看待“ LightingMap “背面。通常这样的TGA文件。本文出自【狗刨学习网】


4,在简单的办法是“从材料选择对象“,然后复制“烤材料“到一个空槽。由于。 Fbx输出目前不支持“壳材料“ 。


5,在您指定的新出炉的材料模型,导出的FBX与推广模式。在这里,我使用厘米,嵌入的纹理,转换为可移植格式(TIFF ) 。


6,当您打开您的统一计划,并导入模式,你会看到它的只有弥漫纹理从3dsmax的出口。而且没有光影质感。我的方法是导入光影纹理3dsmax的存储在(我Documents/3dsmax/sceneassets/images ) 。然后添加到您的模型fBm特征的文件夹。


7,在此之后进行。改变你的模型材料,以1 Lightmapped材料。并添加到插槽光影质感。

unity3d UI设置

阅读数 83

Unity 3D 学习积累

阅读数 30

没有更多推荐了,返回首页