This repository has been archived by the owner on Dec 26, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 10
[prior to 3.0] 01 XMLシーングラフ
Yuya Matsuo edited this page Aug 14, 2018
·
2 revisions
Meganekkoでは、VRシーンをXMLで記述します。XMLファイルはリソースとしてres/xml/以下に配置します。
XMLはルート要素として<scene>
を持ちます。
<scene>
</scene>
この中に、描画したいオブジェクトごとに<object>
要素を作ります。以下はres/layout/hello_worldのViewを前方5.0
の距離に、横 x 縦が 1.0 x 1.0 の大きさで描画する記述です。奥方向はZ軸の負の方向なので、z="-5.0"
と指定します。
<scene>
<object
id="@+id/myObject"
texture="@layout/hello_world"
width="1.0"
height="1.0"
z="-5.0" />
</scene>
drawableリソースを描画することもできます。
<scene>
<object
id="@+id/myObject"
texture="@drawable/ic_launcher"
width="0.5"
height="0.5"
y="1.0"
z="-5.0" />
</scene>
drawableやlayoutを描画する際、width
,height
を省略すると描画サイズから必要なwidth
,height
を逆算して自動的に設定します。
<scene>
<object
texture="@drawable/ic_launcher"
y="1.0"
z="-5.0" />
<object
texture="@layout/hello_world"
x="2.0"
y="-1.5"
z="-4.0" />
</scene>
オブジェクトは入れ子(ネスト)にすることができます。その場合、子要素のオブジェクトは親要素のオブジェクトの座標変換を引き継ぎます。
<scene>
<!-- Objects can be nested -->
<object
id="@+id/myObject"
layout="@layout/hello_world"
width="1.0"
height="1.0"
z="-5.0">
<object
id="@+id/leftObject"
texture="@drawable/ic_launcher"
width="1.0"
height="1.0"
x="-3.0" />
<object
id="@+id/upperObject"
texture="@drawable/ic_launcher"
width="1.0"
height="1.0"
y="3.0" />
</view>
</scene>
XMLシーンを作成してres/xml/内に配置したら、MeganekkoApp
を継承したクラスのsetSceneFromXML
を呼び出すことでシーンが描画されるようになります。
public class MyApp extends MeganekkoApp {
public MyApp(Meganekko meganekko) {
super(meganekko);
setSceneFromXML(R.xml.scene);
}
}
シーン内のオブジェクトをプログラムから操作するには、Scene.findObjectById
でSceneObject
を取得します。
public class MyApp extends MeganekkoApp {
public MyApp(Meganekko meganekko) {
super(meganekko);
setSceneFromXML(R.xml.scene);
SceneObject myObject = getScene().findObjectById(R.id.myObject);
}
}
シーンとシーンオブジェクトについての詳細はこちら