🦔
AR.jsでWebARしてみる(5) Text (2D and 3D)
はじめに
WebARで分かったことメモしていく
参考
※Text (2D and 3D)(text.html)
を勉強する
デモ
- 以下の環境で動作を確認
- iOS 13.7 Safari
- Android 9 Chrome
- Windows10 Firefox 81.0.1
ソース
参考で紹介したサイトのText (2D and 3D)(text.html)のソース
<!doctype HTML>
<html>
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
<script src="js/aframe.min.js"></script>
<script src="js/aframe-ar.js"></script>
<!-- support 3D text -->
<script src="js/aframe-text-geometry-component.min.js"></script>
<body style="margin: 0px; overflow: hidden;">
<a-scene embedded vr-mode-ui="enabled: false;" arjs="debugUIEnabled: false;">
<a-assets>
<a-asset-item id="exoFont" src="fonts/exoBlack.typeface.json"></a-asset-item>
<img id="pixels" src="images/pixels.png" />
</a-assets>
<!-- 2D text -->
<a-marker type="pattern" url="data/kanji.patt">
<!-- positioning a plane directly below text for increased visibility; need to adjust position to avoid z-fighting. -->
<a-plane color="white" rotation="-90 0 0" position="0 -0.25 0" width="3" material="transparent: true; opacity: 0.90"></a-plane>
<!-- for more properties, see https://github.com/aframevr/aframe/blob/master/docs/components/text.md -->
<a-text value="Hello, world!" font="fonts/Exo2Bold.fnt" color="red" rotation="-90 0 0" align="center" scale="2 2 2"></a-text>
<!-- positioning a second copy to attempt drop-shadow effect; need to adjust position to avoid z-fighting -->
<!-- <a-text value="Hello, world!" font="fonts/Exo2Bold.fnt" color="black" rotation="-90 0 0" align="center" scale="2 2 2" position="0.01 -0.2 0"></a-text> -->
<!-- avoiding z-fighting is difficult; may want to render canvas to text instead -->
</a-marker>
<!-- 3D text -->
<a-marker type="pattern" url="data/hiro.patt">
<!--
using aframe-text-geometry component
can set: bevelSize, bevelThickness, curveSegments, font, height, size, style, value.
alignment (centering) may be tricky; try calculating bounding box and repositioning.
for more info, see: https://www.npmjs.com/package/aframe-text-geometry-component
-->
<a-entity text-geometry="value: Hello, world!; font: #exoFont;"
material="color: yellow; src: #pixels; repeat: 0.5 0.5;"
rotation="-90 0 0">
</a-entity>
</a-marker>
<a-entity camera></a-entity>
</a-scene>
</body>
</html>
確認したこと
2D text
Exo2Bold.fnt
がフォントのデータらしい。ためしにネットでみつけた.fnt(osaka_u.fnt, MSKG.FNT)をつかったけど文字が表示されなかった、まだ理解が足りてない。
<a-text value="Hello, world!" font="fonts/Exo2Bold.fnt" color="red" rotation="-90 0 0" align="center" scale="2 2 2"></a-text>
3D text
a-asset-itemタグでフォントを読み込むらしい。
<a-asset-item id="exoFont" src="fonts/exoBlack.typeface.json"></a-asset-item>
<img id="pixels" src="images/pixels.png" />
<a-entity text-geometry="value: Hello, world!; font: #exoFont;"
material="color: yellow; src: #pixels; repeat: 0.5 0.5;"
rotation="-90 0 0">
materialに画像(pixels.png)を設定してちょっとした模様をのせてる。画像の有/無の違いはこんな感じ ↓ 下にあるのが画像が無い場合、たしかにツルっとしてる。
Discussion