一个简单的VR app
概观
在搭建好GearVR框架后,让我们一起来创建第一个VR app
并且学习一点在过程中非常重要的概念。
创建工程
通过复制模版工程,创建一个GearVR架构工程。
执行下列步骤,来确保你的工程能正确地运行:
1、下载Oculus的签名文件,并且将它复制到app\src\main\assets文件夹下。
2、用一个独特的名字重命名在build.gradle下的applicationID来避免以后测试新应用是发生不必要的冲突。
3、改变在res/values/strings.xml下的app_name去避免在你在测试app时产生混乱。
工程框架
在我们开始之前,让我们看一些GearVR架构app的必要部分
这个模板工程包含了两个类,MainActivity和MainScene
·MainActivity是这个app的入手点,如同android.app.Activity,它操纵着VR app的启动和生命周期。
·MainScene是场景的容器,如同电影中的屏幕一样,它包含了很多东西,如相机,角色,虚拟效果(effects)等,你所有的VR
内容都要放置在这里。
在assets文件夹中,这里有两个文件:gvr.xml和oculussig
·在gvr.xml文件里,你可以去配置GearVR 架构(GearVR framework)的各种行为;因此,在未来的教程里我们将要详细讨论这个xml文件(gvr.xml)。
·oculussing是Oculus的签名文件,它允许你在VR设备调试你的app,因此你要经常保证在你的工程里有一个签名文件。
场景(scenes)
通常,一个VR app/game 会包含一个或更多的场景(scenes)。这个模板工程已经创建好了一个场景,叫做MainScene;它是你的VR工程的起点。
Note:MainSenen是从GVRMain扩展的,如果你已经建立了入口点类,你要保证它是从GVRMain扩展的。
在MainScene里有两个函数;他们两个对这个场面能否工作起着重要的作用。
·onInit();当场景被读取时,这个函数就会被调用,并且它能够被用来去执行一些动作,如对象创建,资源读取等。
·onStep();这个函数在每个架构都会被调用一次,它能够被用来去调用一些资源,如动画,AI或者用户互动等。
添加对象
添加一个对象到这个场面里是很简单的,创建一个对象并且确定它的素材(specify the material),然后添加到场面里就好了。
第一步,让我们添加一个新的立方体成员变量到MainScene中GVRSceneObject mCube
然后,在onInit()函数中,用下列的的代码把这个立方体添加到我们的屏幕里。
//Create a cube
mCube = new GVRCubeSceneObject(gvrContext);
//Set position of the cube at (0, -2, -3)
mCube.getTransform().setPosition(0, -2, -3);
//Add cube to the scene
gvrContext.getMainScene().addSceneObject(mCube);
运行这个app,你就会看到一个白色的立方体在屏幕里了!
Note:如果你使用“VR开发者模式”,但没有头戴显示器,这个方位(orientation)有可能会不同,你可能需要去转一下才能看到这个立方体。
让它动起来
现在,我们让这个立方体转一下。因为我们想看到这个立方体连续地旋转,我们需要在每一帧上都去更新它的旋转角。因此,在这里不是用onInit()函数,我们需要去添加旋转逻辑到onStep()函数里去。
添加下列代码到onStep()函数里去
//Rotate the cube along the Y axis
mCube.getTransform().rotateByAxis(1, 0, 1, 0);
rotateByAxis()方法有四个参数,第一个选定了旋转角,其他三个定义了旋转法线坐标。(译者注:旋转方向是正向,也就是逆时针。)
运行app,你就会看到一个正在旋转的立方体。
现在,你在虚拟世界里有了一个旋转立方体,现在去试试做不同的事情:改变它的颜色,将它变大和变小或者将他在四周移动。