教程二实际上展示了3种Content Type,姑且叫做内容类型吧
模型,MetaioMan、Truck
图片,Image
视频,Movie
其中MetaioMan 和 Truck 都和上一节没什么差别。
Image 只是普通的渲染Texture (GameObject + MeshRenderer + Unlit/Transport Shader)
Movie 是这一节的重点:
metaioMovieTexture.cs
可以看到,moviePlane上加载了一个metaioMoveTexture 组件
该组件使用了 Assets/StreamingAssets/Toturial2/demo_movie.alpha (通过Metaio自己的AssetsManager管理类进行载入)
可以通过 movieFile 字段来修改其对应的资源。
但是这个例子在Win32上无法运行,查阅API后,确认了Metaio目前不支持Win32上的视频播放(难道是版权之类的问题?)。
Unity自身是支持MovieTexture的,在Win32下,需要先安装QuickTime,才能顺利导入视频文件到Unity(Import操作)。如图
当MovieTexture资源准备好了,下一步就是修改metaioMovieTexture类,以满足我们的需求:
//增加新属性
public MovieTexture mt;
//修改相关方法
public void pause()
{
mt.Pause();
return;
}
public void play(bool loop)
{
mt.loop = loop;
if( !mt.isPlaying)
mt.Play();
return;
}
void Start()
{
renderer.material.mainTexture = mt;
mt.Play();
return;
}
public void stop()
{
mt.Stop();
return;
}
经过以上改造后,就可以顺利播放了。
再回头看metaioMoveTexture这个类,它基本上是做了2件事情
1、通过metaioSDK.createGeometryFromMovie加载demo_movie.alpha视频资源,得到视频流的指针
2、创建一个Texture对象,并通得到其NativeID传递给MetaioSDK来操作贴图对象,metaioSDK.setMovieTextureTargetTextureID(movieGeometry, textureID);
通过这次改造,可以看出2点规律
1、Metaio-Unity在使用上极其简单,基本上就是拖个MetaioSDK,再拖个MetaioTracker就OK了,剩下渲染部分就完全不是Metaio的事了。
2、Image,MetaioMan,Truck和Movie其实在Unity的角度来看都没有什么区别,都属于可渲染对象。
好像懂了点什么,还是赶紧进入第三课的学习吧。