• ブログTOP
  • AI・ディープラーニング
  • AR
  • VR
  • WEBサイト
  • WEBマーケティング
  • SEO
  • SNS
  • その他
  • お問い合わせ

ALAKI株式会社

COZIKEEいつまでも使えるTech情報発信ブログ

リクルートサイトはこちら >

WebVRはじめてみませんか?〜第5回 A-Frameでテキストを扱う〜

2018年7月6日

  • このエントリーをはてなブックマークに追加

こんにちは!
デザイナーの伊東(@ALAKIWebVRAR1)です。

※TwitterでもWebARの事を中心に情報発信中!
よかったらフォローお願いしますm(_ _)m
Follow @ALAKIWebVRAR1

前回に引き続き、WebVRの記事です。
これまで4つの記事をお送りしてきました。

  • 第4回 サンプルで学ぶA-Frameの使い方
  • 第3回 blenderを使って3Dモデリングに挑戦
  • 第2回 three.jsを使って3Dに触れる
  • 第1回 WebVRとは

前回は、WebVRのフレームワークである”A-Frame”の基本的な使い方をご紹介しました。
今回も同じくA-Frameについてですが、さらに深掘りして「テキストの扱い方」を解説していきます。

少し癖がありますが、最終的に日本語をWebVR上で表示するところまでご説明します。

この記事の目次

  • 1 テキストの表示方法
  • 2 日本語の表示方法
  • 3 まとめ

テキストの表示方法

一般的な表示方法

基本的なテキストの扱い方は、A-Frameの公式サイトにドキュメントとして解説されています。
https://aframe.io/docs/0.8.0/components/text.html

一番シンプルなテキストの表示方法は、以下のようになります。

1
<a-entity text="value: Hello World;"></a-entity>

前回の記事でも度々登場した、VRコンテンツの実体を生成する”a-entity”タグを使用します。
テキストとして表示する内容は、textプロパティの値として指定可能です。

オプション

A-Frameのテキストには、数多くのオプションが用意されています。
ここでは比較的利用頻度の高いオプションをご紹介します。

● align
右揃え、左揃えなど、テキストの揃え方を指定します。
value:(left, center, right)

● baseline
テキストの縦方向の揃え方を指定します。
value:(top, center, bottom)

● align
右揃え、左揃えなど、テキストの揃え方を指定します。
value:(left, center, right)

● color
テキストの色を指定します。

● letterSpacing
テキストの字間を指定します。

● lineHeight
テキストの行間を指定します。

● opacity
テキストの透明度を指定します。

● whiteSpace
テキストが折り返しの位置まできた時に、改行するのか、改行せずにそのまま続けるのか指定します。
value:(i.e., normal, pre, nowrap)

フォントを指定する

A-Frameで表現するWebVRのテキストには、あらかじめ数種類のフォントがよういされています。

aileronsemibold https://cdn.aframe.io/fonts/Aileron-Semibold.fnt
dejavu https://cdn.aframe.io/fonts/DejaVu-sdf.fnt
exo2bold https://cdn.aframe.io/fonts/Exo2Bold.fnt
exo2semibold https://cdn.aframe.io/fonts/Exo2SemiBold.fnt
kelsonsans https://cdn.aframe.io/fonts/KelsonSans.fnt
monoid https://cdn.aframe.io/fonts/Monoid.fnt
mozillavr https://cdn.aframe.io/fonts/mozillavr.fnt
sourcecodepro https://cdn.aframe.io/fonts/SourceCodePro.fnt

使用するときは下記のような記述でフォントを指定します。

1
2
3
<a-entity text="font: mozillavr; value: Via stock font name."></a-entity>
<a-entity text="font: https://cdn.aframe.io/fonts/mozillavr.fnt; value: Via URL."></a-entity>
<a-entity text="font: ../fonts/DejaVu-sdf.fnt; text: Via local file."></a-entity>

1つ目は、先ほどの表のフォント名のみを指定する方法です。
2つ目は、cdn上にアップロードされたフォントファイルのURLを指定する方法です。
3つ目は、相対パスでフォントを指定する方法です。

このように、デフォルトで数種類のフォントを扱えるA-Frameですが、大きなデメリットがあります。
どのフォントも日本語に対応していないという点です。

それでは不便すぎるので、日本語を表示させる方法を次の章でご説明します。

日本語の表示方法

テキストを画像化して表示する方法

日本語をA-Frameで表示させる方法は、大きく分けて2つあります。
1つ目は、テキストを含んだHTMLタグを画像化してしまう方法です。

HTML Shaderとhtml2canvasというものを使用します。

HTML Shaderは、通常のHTML要素などの2次元のDOM要素を、3次元のA-Frameオブジェクト上に貼り付けることができます。

html2canvasは、Webページを画像化して、Canvasエレメント上に描画してくれます。

まずは上記の2つのライブラリをダウンロードしましょう。
HTML Shader
html2canvas

ダウンロードが完了したら、A-Frameを読み込んでいる所のすぐ下にライブラリを読み込みます。

1
2
3
<script src="https://aframe.io/releases/latest/aframe.min.js"></script>
<script src="js/aframe-html-shader.min.js"></script>
<script src="js/html2canvas.min.js"></script>

次に、3Dオブジェクトを定義している<a-scene>タグよりも前に、表示させたいHTMLタグを記述します。

1
2
3
<div id="target1" class="target">
<p>日本語表示テスト</p>
</div>

最後に<a-scene>内に以下のコードを追加しましょう。

1
<a-plane width="2" height="2" material="shader:html;target: #target1;"></a-plane>

material属性の”shader”プロパティで、HTML Shaderを利用することを宣言しています。
“target”プロパティには、対象となるHTML要素のクラス名またはID名を指定します。

日本語対応フォントを読み込ませて表示する方法

日本語を画像化して表示する方法をご説明しましたが、この方法にはデメリットがいくつかあります。

一つは描画された結果が少し荒いこと。テキストであれば、少し境界がギザギザしています。
そして、一度画像化した要素は、改行位置の調整、位置の調整などがしづらいことも挙げられます。CSSである程度スタイリングしてから表示するぶんにはとくに影響がありませんが、A-Frameのプロパティでレイアウトを調整するならば、 やはり扱いにくいです。

そこで、今度は生のテキストをそのままA-Frameで扱う方法をご紹介します。

その方法とは、日本語フォントを用意して、A-Frameのオブジェクト内のテキストに反映する方法です。

まずは日本語フォントを用意します。
otf、ttfなど様々なファイル形式がありますが、そのまま読み込ませると少し重たいです。

オススメは、フォントファイルをjsonファイルに変換して使用することです。
jsonファイルへの変換は以下のサイトで可能です。

https://www.henkan-muryo.com/font-converter.php

ファイルの準備ができましたら、そのフォントファイルをアセットファイルとして準備します。

1
2
3
<a-assets>
<a-asset-item id="font" src="/assets/fonts/●●●●.json">
</a-assets>

そのアセットファイルを、今度はテキストに反映します。

1
2
3
4
5
<a-entity
text-geometry="Hello world; font: #font; size: .15;"
material="color: black"
position="1 1 0">
</a-entity>

これで日本語がVR空間に表示されました。

まとめ

A-Frameをはじめ、その他のWebVRフレームワークはまだまだ創世記と言えます。
今回は”日本語が表示されない”というもどかしいところに対応する方法をお伝えしましたが、その他にも通常のコーディングのように思うようにいかない部分もあるかと思います。

そんな時は、WebVR用のライブラリ以外のプラグインなどを併用して対応できることがあるかもしれません。

まだまだ情報が少ないので、英語のドキュメントを翻訳しながら手がかりをつかむのもいいでしょう。

これからもWebVRの情報は発信し続けていきますので、行き詰まった時にはチェックしてみてください!

  • ツイート
  • このエントリーをはてなブックマークに追加

You may also like...

  • スクリーンショット 2018-03-16 0.37.47

    WebVRはじめてみませんか?〜第2回 three.jsを使って3Dに触れる〜

    1 4月, 2018

  • スクリーンショット 2018-03-16 0.37.47

    WebVRはじめてみませんか?〜第6回 Oculus Goから情報を受け取る〜

    23 7月, 2018

  • スクリーンショット 2018-03-16 0.37.47

    WebVRはじめてみませんか?〜第1回 WebVRとは〜

    16 3月, 2018

デザイナー募集
  • Next story WebVRはじめてみませんか?〜第6回 Oculus Goから情報を受け取る〜
  • Previous story JavaScriptのスコープと再宣言を復習しよう!

弊社サービス

MONJI+ MUGHEN ALAKI クラウド型受発注システム さよなら過去のAR。WebARがイベント集客に革命を起こします。

運営会社

ALAKI株式会社 ALAKI株式会社採用サイト

人気の記事

  • alaki1462_A_businessman_who_works_logically_1da80a2e-c297-4911-bdd6-feba0ebf1357

    仕事術

    【書籍要約】数学的な仕事術大全

    4 11月, 2024

  • fv-main-img-min

    空間コンピューティング

    世界初!「空間コンピューティング」を専用端末不要、スマホのWebブラウザのみで実現する『Web XR Site』を公開しました

    22 6月, 2023

  • Virtual reality players isometric vector illustration. VR UI and navigation. Futuristic digital technology. Virtual screen. Mixed reality 3d concept. Person in VR headset. Web banner idea

    AR

    Appleから新世代MRグラス「Vision Pro」の登場 – デジタルと現実世界が融合する新時代へ

    6 6月, 2023

  • AWE

    未分類

    ARアプリ『MUGHEN』が世界最大のAR/VRアワード「AWE」のファイナリストに選出されました!

    26 5月, 2023

  • python-logo-master-v3-TM

    pyhotn / 業務効率化

    「SwinIR」で高画質化した画像を pythonを使用して一括で元のサイズに戻す方法

    2 2月, 2023

カテゴリー

  • AI・ディープラーニング
  • AR
  • BtoB
  • CMS
  • Git
  • Google AdWords
  • gulp
  • Javascript
  • Laravel
  • Photoshop
  • Pug
  • pyhotn
  • Sass
  • SEO
  • SNS
  • Twitter広告
  • VR
  • Web3.0
  • WEBサイト
  • WEBマーケティング
  • YouTube
  • コーディング
  • システム開発
  • スマートフォンサイト
  • セキュリティ
  • セミナー
  • その他
  • ツール
  • デザイン
  • ベトナムレポート
  • 仕事術
  • 未分類
  • 業務効率化
  • 空間コンピューティング
  • 色

アーカイブ

  • 2024年11月
  • 2023年6月
  • 2023年5月
  • 2023年2月
  • 2023年1月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年2月
  • 2021年12月
  • 2021年9月
  • 2021年7月
  • 2021年6月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年6月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年11月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年5月
  • 2018年4月
  • 2018年3月
  • 2018年2月
  • 2018年1月
  • 2017年12月
  • 2017年11月
  • 2017年10月
  • 2017年9月
  • 2017年8月
  • 2017年7月
  • 2017年6月
  • 2017年4月
  • 2017年3月
  • 2017年2月
  • 2017年1月
  • 2016年12月
  • 2016年11月
  • 2016年10月
  • 2016年9月
  • 2016年8月
  • 2016年7月
  • 2016年6月
  • 2016年5月
  • 2016年4月
  • 2016年3月
  • 2016年2月
  • 2016年1月
  • 2015年12月
  • 2015年11月
  • 2015年10月
  • 2015年9月
  • 2015年7月
  • 2015年3月
  • 2015年2月
  • 2015年1月
  • 2014年12月
  • 2014年11月
  • 2014年10月
  • 2014年9月
  • 2014年8月
  • 2014年7月
  • 2014年6月
  • 2013年10月
  • 2013年9月

Facebook

お問い合わせ

お問い合わせ

人気の記事

  • 【書籍要約】数学的な仕事術大全
  • 世界初!「空間コンピューティング」を専用端末不要、スマホのWebブラウザのみで実現する『Web XR Site』を公開しました
  • Appleから新世代MRグラス「Vision Pro」の登場 – デジタルと現実世界が融合する新時代へ
  • ARアプリ『MUGHEN』が世界最大のAR/VRアワード「AWE」のファイナリストに選出されました!
  • 「SwinIR」で高画質化した画像を pythonを使用して一括で元のサイズに戻す方法

カテゴリー

  • AI・ディープラーニング
  • AR
  • BtoB
  • CMS
  • Git
  • Google AdWords
  • gulp
  • Javascript
  • Laravel
  • Photoshop
  • Pug
  • pyhotn
  • Sass
  • SEO
  • SNS
  • Twitter広告
  • VR
  • Web3.0
  • WEBサイト
  • WEBマーケティング
  • YouTube
  • コーディング
  • システム開発
  • スマートフォンサイト
  • セキュリティ
  • セミナー
  • その他
  • ツール
  • デザイン
  • ベトナムレポート
  • 仕事術
  • 未分類
  • 業務効率化
  • 空間コンピューティング
  • 色

検索

ALAKI株式会社 © 2025. All Rights Reserved.