LoginSignup
2
0

More than 5 years have passed since last update.

GearVRfアプリケーションの基本

Posted at

※この文書はGearVR FrameworkのドキュメントWriting a Basic GearVRf Applicationの2015年6月9日時点の翻訳です。

GearVRf APIの使用方法に慣れるために、基本的なアプリケーションを書いてみましょう。
このセクションの例として使われているsimplesampleGearVRfサンプルアプリケーションはGearVRfバナーを白い背景のVRワールドに表示します。
GearVRfはフルスクリーンで実行し、単一のViewを持っています。テーマ、メニュー、レイアウトは必要ありません。しかしGearVRfアプリケーションはAndroidリソース(strings, ints, drawables, assets, res/raw など)を使うことができます。

ステップ1 GVRActivityを継承してアクティビティを実装する

アクティビティを実装するために、GVRActivityを継承する必要があります。そしてGVRActivity.setScriptでデバイスXMLファイルとシーングラフを作成するためのGVRScriptオブジェクト(下記サンプルのSampleViewManager)を提供することでアプリケーションを初期化します。

ウィザードによって生成されるアクティビティをGVRActivityを継承するように変更しましょう。そしてonCreate()setContentView()の代わりにsetScript()を呼ぶように変更しましょう。

package org.gearvrf.simplesample;

import android.os.Bundle;
import org.gearvrf.GVRActivity;

public class GalleryActivity extends GVRActivity {

  @Override
  protected void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setScript(new SampleViewManager(), "gvr_note4.xml");
  }

}

ステップ2 GVRScriptを継承してVRワールドを実装する

アプリケーションで主にやることは、スクリプトクラスを継承して必要に応じて変更することです。GVRScriptを継承した新しいクラスを作成してonInit()onStep()コールバックを実装しましょう。

onInitでやるべきことは次の通りです:

  • 背景色の設定
  • シーンオブジェクトで使用するメッシュとテクスチャーの読み込み
  • それぞれのシーンオブジェクトを作成して、そのマテリアルと位置を設定する
  • シーンオブジェクトをシーングラフに追加する
package org.gearvrf.simplesample;

import org.gearvrf.GVRContext;
import org.gearvrf.GVRScene;
import org.gearvrf.GVRSceneObject;
import org.gearvrf.GVRScript;
import org.gearvrf.GVRTexture;
import android.graphics.Color;

public class SampleViewManager extends GVRScript {

  private GVRContext mGVRContext;

  @Override
  public void onInit(GVRContext gvrContext) {

    // onStep()での使用に備えてフィールドに保持する
    mGVRContext = gvrContext;

    // 背景色の設定
    GVRScene scene = gvrContext.getMainScene();
    scene.getMainCameraRig().getLeftCamera()
        .setBackgroundColor(Color.WHITE);
    scene.getMainCameraRig().getRightCamera()
        .setBackgroundColor(Color.WHITE);

    // テクスチャーの読み込み
    GVRTexture texture = gvrContext.loadTexture("GearVR.jpg");
    // シーンオブジェクトの作成(このコンストラクターは標準の'unlit'シェーダーを使用する四角いシーンオブジェクトを作成します)
    GVRSceneObject sceneObject = new GVRSceneObject(gvrContext, 4.0f, 2.0f, texture);

    // シーンオブジェクトの位置を設定
    sceneObject.getTransform().setPosition(0.0f, 0.0f, -3.0f);

    // シーンオブジェクトをシーングラフに追加
    scene.addSceneObject(sceneObject);
  }

}

ステップ3 フレーム毎の処理をonStepメソッドに実装する

シーンオブジェクトをフレーム毎に動かす処理はここに書きます。shader uniformsを更新する時はこのメソッド内で行います。シーンプロパティをフレーム毎もしくは特定のフレームで調整したいなら、onStepメソッドはそれらを変更するのに正しい場所です。OpenGL ESアプリケーションにとって、shader uniformの更新はフレーム毎に起こります。uniformの更新が起こるなら、更新はonStepの中で行われる必要があります。
メモ: onStepメソッドは空にしておくこともできます(頭の動きによる視点の変更のみの静的なシーンを描画するsimplesampleのように)。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0