周末没更新,原因是因为大叔参加了西雅图华人创业协会举办的Start up weekend,都是一些对VR/AR有兴趣的人周末做一些有趣的项目,把一些想法放在VR或者AR的项目上开发。这个年纪在国内写代码可能被小朋友们鄙视,不过在米国好像像我这样的写代码的比比皆是。出生率那么低,年轻人越来越少,愿意写代码的估计也越来越少了。周末两天写一个Bar Chart,写了一些点击操作,语音控制,还有拍照连到后台去做图像处理,非常有趣。不过开发过程中也踩了很多坑,先是写了些代码在visual studio上跑过了,到了unity上不work,然后是unity部署到hololens上又不好用,各种crash,各种重启。深刻体会到这个价值3000美元的东西的确是开发板,开发版本啊!!泪千行有没有。周末我们主要做了一个对象扫描的小app,可以扫描虚拟对象或者拍张照扫描实际对象,然后展示数据,例如Barchart, Pie等等。这个主要可以用在仓储,零售等等行业。
今天来讲讲hololens的开发配置。说到底Hololens上跑的就是Windows 10。所以支持UWP和全屏模式。UWP就是一个窗口浮动在墙上,你可以用手指和Gaze做一些放大缩小,点击,拖拽,右击等等操作,那个就跟写windows 10 store的app一样。Hololens下最绚烂的,其实是Unity写的全屏程序,当然也可以用DirectX来写,只要在Visual Studio里面创建Holographic DirectX 11 App就可以了。不过微软推荐使用Unity 5.4开发,所以今天我们简单看看怎么用Unity创建一个简单的Hololens程序。
首先装完Visual Studio 2015 Update 2, Hololens 模拟器以及Hololens for Unity的插件,我们就可以启动Unity了。Unity是一个跨平台的开发工具,上周末举办的Startup Weekend,所有的组都需要找Unity的开发者。不管是在Oculus Rift, Samsung Gear VR,HTC Vive还是在Hololens上开发,都需要用到Unity,足以见得这个平台以后会大热。Unity主要是用来写游戏的,可以直接部署到iOS,Android,Windows, Web等等各种平台上。
首先启动Unity,注意这个系列不是Unity的教程,所以我们不会对unity做太多讲解,有兴趣的码农可以前往http://unity3d.com/了解详情。打开以后和以前一样创建一个Unity项目,给项目起个名字,然后选择3d,位置等等。
创建完成以后就会看到主界面了。
中间是用来画复杂对象的,左边是对象层次,右边是属性,下面是项目文件和输出。和Visual Studio大同小异。我们可以在3d的场景里插入一个3d对象,例如Cube, Sphere,还可以调整光源,视角等等。说到这里又要提一下血泪史。昨天我们要动态生成3d的barchart,用程序来实现3d对象,这个本身是不难。不过要复习各种3d几何概念,什么正投影,透视投影,投影的视角大小,光源的距离都要进行调整。作为一个一直写服务器端后台代码的大叔,好久没有碰图形学的代码,突然要上手实在有点汗。另外为了让bar chart的位置好看,还要算等差数列。。。。要当码农,从小学好数学是必不可少的。现在算等差数列的水平跟高中比还是差了一大截。
首先我们先放一个3d Cube进去,选择GameObject->3d Object -> Cube,为了让这个Cube变成红色,我们在Project的Assets目录里面创建一个子目录,叫Resources,添加一个新的Material,改名为Red。同时在右上方的Albedo里面,选择红色。最后将这个Meterial从下面的Resources目录拖动到Cube上,这样一个红色的Cube就出现了。
在Hololens里面,视角总是0,0,0,看的方向总是Z方向,所以我们需要选中左边Hierarchy里面的Main Camera,将视角Position改为0,0,0。另外Unity背景默认是天际线,而hololens里面是现实场景,所以我们改为黑色背景,把Clear Flags设置为Solid Color,背景颜色修改为黑色,0x00000000,另外要修正裁切面的最近距离,Hololens推荐改为0.85米。
此外由于我们刚才的Cube在空间坐标系原点位置,而视角也在原点位置,所以这样是看不到方块的,要将方块的位置向Z的正方向移动,我们选中Cube,然后将Y改为-0.5,Z改为3。这样就可以看到方块了。
搞定之后可以点击File -> Save Scene, 保存下场景。这个简单的项目就算是完成了。
接下去是在hololens上配置的关键:
1,选择Edit -> Project Settings -> Quality
在Inspector里面,把Windows Store Logo最下面的那个Default,选成Fastest,这样渲染的帧数会最快,Hololens里看到的效果也会最好。
2,选择File -> Build Settings, 左边选择windows store,然后点击Switch Platform,将当前项目切换为Windows Store项目。
3,点击Add Open Scenes将当前场景加到编译配置中。
4, 点击Player Settings,在inspector窗口里面有些设置,点击那个Windows Store的绿色按钮,拖到最下面有一个Publish Settings -> Capability, 可以选择支持的功能。Hololens常用的功能包括WebCam,支持拍照或录像;Spartial Perception,空间感知,支持空间表面分析和空间定位。Microphone,可以支持录音,语音控制,语法纠正,关键词识别等等。最后是picturesLibrary / videosLibrary / musicLibrary,可以访问一些本地资源。还有InternetClient,可以访问网络。
另外在Other Settings里面要确保Virtual Reality Supported选中,且支持Windows Holographic。
5,右边Windows Store里面把SDK设置为Universal 10, Build Type是D3D。
搞定了之后就可以点击Build,生成C#项目了。创建一个新的目录叫App,把所有Visual Studio的文件都放在这个目录里面就可以了。
然后Unity会在这个目录里面创建一大堆各种各样的文件,用visual studio打开这个sln文件,启动项目就是这个Hotcan-Demo-Unity-On-Cnblogs.proj。在编译选项里面选中Release,x86。然后选择Hololens模拟器。Ctrl+F5, Start Without Debugging。这个方块程序就在模拟器上跑起来了。如果要在真机上运行,什么你们还没有真机?那么去www.hololens.com上买一个吧,现在预定大概要3个月以后才到货,仅对北美地区地址供货。。。。居然敢歧视我们天朝,要知道我的Hololens是从苏州某个地方生产然后发货到美国来的,不给中国发货以后苏州工厂就不要生产了,价格3000美金,国内大概要加17%增值税。Brexit以后人民币又暴跌了100个点创历史新低达到1:6.66,折合人民币23376.6。可以买到上海外环边房子半个平方。北京宇宙中心五道口1/5个平方。
为什么扯了久是因为这个编译和部署还是很耗时间的,大概需要3-5分钟。Hololens一个项目动则1个GB,没有强大的机器还是不要跑了。就这个破方块编译以后大概占了46M的空间。
最后给大家分享一下周末写的那个bar chart的样子。如果想要深入学习hololens,我在考虑是不是开门课教大家开发另带体验hololens,把hololens的成本赚回来。