Skip to content
This repository was archived by the owner on Dec 26, 2018. It is now read-only.

[prior to 3.0] シーンとシーンオブジェクト

Yuya Matsuo edited this page Sep 12, 2016 · 1 revision

シーン

<!-- これがシーン -->
<scene>

    <!-- シーンオブジェクト -->
    <object
        texture="@layout/hello_world"
        z="-5.0" >

        <!-- 子シーンオブジェクト -->
        <object
            x="2.0"
            width="1.0"
            height="1.0"
            texture="@drawable/image" />

    </object>

</scene>

シーンはレンダリングされるVRの3D空間を表します。シーンの中には複数のシーンオブジェクトが内包されています。

SceneのインスタンスはMeganekkoApp.getScene()で取得できます。

属性値

<scene>に設定できる属性値です。

属性 説明
class setSceneFromXMLでシーンを設定する際にインスタンス化されるSceneのサブクラス名を指定します。指定しない場合はcom.eje_c.meganekko.Sceneのインスタンスが作成されます。

シーンオブジェクト

シーン内の描画される全てのオブジェクトはシーンオブジェクトとして表されます。描画されるシーンオブジェクトはMeshMaterialを持っています。どちらか(もしくは両方)が設定されていないオブジェクトは描画されません。また、MaterialTextureを持っています。

SceneObject -> Material -> Texture
            -> Mesh

※歴史的な経緯により、内部的にはSceneObjectとMesh,Materialの間にRenderDataというものが入ります。ネイティブの低レベルな描画コードではRenderDataの情報を使って描画を行っています。

XMLの読み込みやSceneObject.from()のメソッドを使っているとMeshの作成は自動的に行われるので、明示的に作ることはあまりありません。

シーンオブジェクトは階層構造を持つことができます。子のシーンオブジェクトは、親の座標変換後の相対座標で配置されます。

属性値

<object>に設定できる属性値です。

属性 説明
id オブジェクトのIDです。Scene.findObjectByIdでオブジェクトを取得するのに使用します。
visible 可視設定です。falseを指定すると画面に表示されなくなります。
opacity 透明度です。0.01.0の範囲で指定します。
position オブジェクトの位置です。スペース区切りの小数3つで指定します。例:1.0 0.0 -3.0
scale オブジェクトの拡大率です。スペース区切りの小数3つで指定します。例:1.1 2.0 1.5
rotation オブジェクトの姿勢を回転軸と角度で指定します。例えばX軸を中心に45度回転させたい場合は45 1.0 0.0 0.0と指定します。
width オブジェクトの幅です。小数で指定してください。heightと一緒に指定しないと無視されます。
height オブジェクトの高さです。小数で指定してください。widthと一緒に指定しないと無視されます。
renderingOrder レンダリング順序を整数で指定します。小さい数字のオブジェクトから描画されます。背景オブジェクトには小さい値、手前にあるオブジェクトには大きい値を指定すると良いです。
texture テクスチャーとして使用するリソース名を指定します。例:@drawable/mytexture,@layout/mylayout
x X座標です。小数で指定してください。
y Y座標です。小数で指定してください。
z Z座標です。小数で指定してください。
scaleX X方向の拡大率です。小数で指定してください。
scaleY Y方向の拡大率です。小数で指定してください。
scaleZ Z方向の拡大率です。小数で指定してください。
Clone this wiki locally