一个简单的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

内容都要放置在这里。

 

java 与vr内容开发 vr app开发_android

在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,你就会看到一个白色的立方体在屏幕里了!

 

java 与vr内容开发 vr app开发_java 与vr内容开发_02

Note:如果你使用“VR开发者模式”,但没有头戴显示器,这个方位(orientation)有可能会不同,你可能需要去转一下才能看到这个立方体。

让它动起来

现在,我们让这个立方体转一下。因为我们想看到这个立方体连续地旋转,我们需要在每一帧上都去更新它的旋转角。因此,在这里不是用onInit()函数,我们需要去添加旋转逻辑到onStep()函数里去。

添加下列代码到onStep()函数里去

//Rotate the cube along the Y axis
    mCube.getTransform().rotateByAxis(1, 0, 1, 0);

rotateByAxis()方法有四个参数,第一个选定了旋转角,其他三个定义了旋转法线坐标。(译者注:旋转方向是正向,也就是逆时针。)

java 与vr内容开发 vr app开发_xml_03

运行app,你就会看到一个正在旋转的立方体。

现在,你在虚拟世界里有了一个旋转立方体,现在去试试做不同的事情:改变它的颜色,将它变大和变小或者将他在四周移动。