LoginSignup
0
0

More than 1 year has passed since last update.

Orthoverse∅使い方 その2

Last updated at Posted at 2022-12-03

Orthoverse∅のコンテンツの作り方

Orthoverse∅のコンテンツ作成の方法を説明します。

基本

マークアップテキストを書いてWebでアクセスできるように公開するだけです。
とりあえず手っ取り早い方法として、GithubPagesがお勧めです。
もちろん、自分でWebサーバーをたててもよいでしょう。
書いたテキストがそのまま公開されるようにしてください。
広告のタグ挿入や、その他のヘッダーなどが勝手に追加されるものでは動作しない可能性が高いです。

以下のリポジトリで試験用のコンテンツを公開しています。
https://github.com/oho-sugu/ovtestpages

参考情報

タグはMozillaのA-Frameを参考にしています。

使えるタグ・機能

Cubeを出す

<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>Hello World</title>
<meta name='description' content='Hello World'>
</head>
<body>
<a-scene>
<a-box color='white' depth='1' height='1' width='1'>
</a-scene>
</body>

DOCTYPEとか見てないのでなんでもいいんですが、htmlに一応擬態します。
うまくやればA-Frameと互換性のある仕組みができそうなので、今後の課題です。
HTMLと同じタグは適当。パーサーでは読み飛ばしています。
重要なのは、<a-scene><a-box>で、
<a-scene>で囲まれた領域が3Dコンテンツで解釈されレンダリング・実行されます。
<a-box>の属性で、サイズや色を指定しています。
これで、原点に1m四方の白いキューブが表示されます。

座標系は?

現在のOrthoverse∅のコンテンツから見える座標系は、コンテンツを配置した空間IDの矩形の中心点の地表が原点0となります。
単位はmになるので、ここで指定した大きさがそのまま現実空間に重畳されます。

位置

<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>Hello World</title>
<meta name='description' content='Hello World'>
</head>
<body>
<a-scene>
<a-box color='white' depth='10' height='10' width='10' position='0 20 0'>
</a-scene>
</body>

position属性で位置を指定します。
上の例では10m四方の大きなキューブが20m上空に重畳されます。

アニメーション

<a-box  position='  0 0 0' animation='property: object3D.position.z; to: 2; dur: 3000; loop: true; easing: easeinsine;' color='white' depth='0.2' height='0.2' width='0.2'></a-box>

こんな感じでアニメーションを属性で設定することもできます。
Z軸に初期位置から+2mまで、3000msで移動、ループする、サインカーブでイージング、などの設定が可能です。
上記のURLの例のファイルには対応しているイージングパターンを網羅して挙げてあります。

画像を貼り付け

<a-scene>
<a-assets>
<img id="test" src="https://3.bp.blogspot.com/-Qgaed374Dcs/VtlMwoqu74I/AAAAAAAA4VU/JNzq8TSeQ-4/s800/ar_kakuchou_genjitsu.png">
</a-assets>
<a-entity geometry="primitive: plane" material="src: #test" rotation="0 180 0"></a-entity>
</a-scene>

<a-assets>タグを使って、外部リソースを参照することができます。
試しにいらすとやさんのARの画像を板ポリに貼ってみています。
id属性を参照のために使います。

モデルの読み込み

<a-scene>
<a-assets>
<a-asset-item id="gltf" src="https://aframe.io/aframe/examples/assets/models/tree1.glb">
</a-assets>
<a-entity gltf-model="obj: #gltf"></a-entity>
</a-scene>

3Dモデルを読み込むこともできます。対応しているのは、gltf/glb、VRM、obj(テクスチャなし)などです。

スクリプティング

<script type='text/lua'>
i = 0;
function start()
return
end
function update()
    i=i+1
    document:GetEntityByID('test'):GetComponentBase('rotation'):Set('x',''..i)
return
end
</script>
</head>
<body>
<a-scene scale="0.1 0.1 0.1">
<a-box id='test' color='blue' depth='1' height='1' width='1' position='1 1 1' rotation='30 0 30' scale='1.5 1.5 1.5'>
</a-scene>
</body>

スクリプトも動きます。現在は位置や回転をスクリプトから操作できます。

おわりに

一部でA-Frameとの互換性が取れていなかったり奇妙な動作があったりと、
まだ開発途中な状況ですが、今後より使えるものになるようにしていきます。

0
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
0
0