Aizu-Progressive xr Lab blog

会津大学のVR部であるA-PxLの部員が持ち回りで投稿していくブログです。部員がそれぞれVRに関する出来事やVRにちなんだことについて学んだことを書いていきます。

「面白法人カヤックVR分室」としても活動しています。詳細はこちら

バーチャルを「仮想」と訳す君に申したい

こんにちは! A-PxL部員の橋本です。もうそろそろ大学生活の3/4が過ぎようとしていることに驚きを隠せない今日この頃です。さて、他の部員がIT分野(主にUnity)に関してのブログを多数執筆しているので、今回は私が世間のVRの認知に対して思うことを書いていきたいと思います。

今回の記事で私が言いたいことは

VRを仮想現実と訳すのは間違いだ!

ということです。では、なぜそう言えるのか順に解説していきましょう。

バーチャルの意味

バーチャル(virtual)は形容詞で、名詞はバーチュー(virtue)となっています。というわけで、まずはバーチューの意味を辞書を引いて調べてみます。バーチューは「徳」、「善行」、「効力」などを意味しますが、さらに原義に戻ってみると、「そのものをそのものとして在らしめる本来的な力」という意味を持ちます。米国継承英語辞典(The American Heritage Dictionary)では、「Existing in essence or effect though not in actual fact or form」と定義されています。これは 「みかけや形はそうじゃないけど、本質や効果としてはそのもの」 という意味を表します。つまり、「バーチャル〇〇」は「みかけや形は〇〇じゃないけど、実質的には〇〇」を意味することになります。

例えば、「バーチャルマネー」はオンライン上で使用することができるお金(MMORPG内の通貨や電子決済)を表しますが、実際に硬貨や紙幣として目で見たり触ったりすることはできません。しかし、現金と同じように価値を有しており、取引に使うことができる。すなわち、「見かけはお金じゃないけど、効果的にはお金」。だからバーチャルマネーなのです。

他にも、2016年から活動開始したキズナアイを筆頭に今でも増え続けている「バーチャルYouTuber」も同じように考えられますね。すなわち「みかけはYouTuberじゃないけど、実質的にはYouTuber」ってことです。ちなみに、私はそこまでバーチャルYouTuberに詳しくはありません。せいぜい四天王の5人+αくらいです。

(四天王なのに5人とはこれいかに...)

バーチャルの類義語、反意語、そして「仮想」

バーチャルの意味が分かったところで、次にバーチャルの類義語、反意語を調べてみたいと思います。まずはじめにバーチャルの反意語ですが、これはノミナル(nominal)「名目上の」となっています。では、ノミナルの反意語はどうなっているかというと、実はこれはリアル(real)「現実の」が相当します。これが意味することはリアルの反対はバーチャルじゃないくて、リアル=バーチャルなんだよということです。ちなみに、リアルの対を成す言葉はイマジナリ(imaginary)「架空の」が相当すると考えられています。

バーチャルの反意語、類義語について理解していただいたところで、「仮想」について考えてみましょう。仮想は読んでそのまま「仮に想定した」という意味を表します。これは英語にするならsupposedなどと表すべきであり、これはvirtualとは異なる概念であると言えます。つまり、概念的な違いによりバーチャルは「仮想」と訳すことができないのです

f:id:aizu-vr:20200218235145p:plain
virtualを取り巻く言葉

バーチャルリアリティの意味と訳し方

以上のことより、バーチャルリアリティとは「見た目的には現実じゃないけど、実質的、効果的には現実」を意味し、「現実に似せた偽物の現実」ではありません。そして、「仮想現実」と訳すこともできません。では一体どう訳すればいいのかということですが、これはそのまま「バーチャルリアリティバーチャルリアリティだ」で十分です。どうしても日本語に訳したいという方は「人工現実感」と訳すのがベストということになっています。

また、話は変わりますが、世間では「VR=アタマになんか被ってやるアレ」という認識をされている方も多くいらっしゃることと思います。確かにOculus RiftやHTC ViveといったHMD(ヘッドマウントディスプレイ)の登場によりVRの人気が出たといっても過言ではないので一概に間違いとは言えないのですが、VRの概念から考えると、HMDはあくまで「VRを体験するための道具」なのでVR=HMDとはなりません。このことについても頭の片隅に置いといてもらえればと思っています。

さらに余談ですが、VR技術とは、「コンピュータなどを使って現実と同じ、もしくは現実では起こりえないことを再現する技術」と言えます。それゆえ、VRの研究対象は心理学からロボティクス、CGやヒューマンインターフェースなど多岐に渡っており、とても広大です。将来的に大学ではVRについて研究したいと思っている高校生は、VRの中のどの分野について研究したいのか高校在学中に決めておくことをお勧めします。

まとめ

  • バーチャルはリアルとほぼ同義語である。そして「仮想」と訳すことができない。そのまま「バーチャル」と言いましょう
  • バーチャルリアリティを日本語にするなら「人工現実」と訳しましょう

特に、今A-PxLに所属している部員、そしてこれからA-PxLに所属することになる未来の部員たちには以上のことを最低限知っておいて欲しいものです。

参考

バーチャルリアリティ学

バーチャルリアリティ学

  • 作者:
  • 出版社/メーカー: コロナ社
  • 発売日: 2010/12/16
  • メディア: 単行本(ソフトカバー)

以上の本の内容を試験としたVR技術者認定試験も開かれております。現在のA-PxLにも何名かの合格者がいます。興味がある方はぜひトライしてみましょう!

大学のモーションキャプチャを触ってみた その一

ブログ記事を見なくなって久しい会津大学OBの平川です。

大学を卒業し、老害社会人になり、モーションキャプチャ関係の知識が増えたので、 大学のモーションキャプチャシステムであるViconを夏*1に五日間ほど触ってみました。

それについての所感やフローをつらつらと書いていこうと思います。その三ぐらいまでは続くかもしれません。

*1:随分と立っていますがご容赦ください。

続きを読む

Blenderで簡単ボーンアニメーション

こんにちは!学部一年生の吾妻です。初めてのブログ投稿で緊張しています。今回はBlenderで簡単な犬の作り方、ボーンアニメーション(犬が歩いているアニメーション)の付け方を紹介しようと思います。Blender初心者なため、「ここはもっとこうした方がいい」という点もあるかもしれませんが、暖かい目で見てくださると幸いです。

犬を作る

アニメーションをつけるための犬を作成します。アニメーションをつけるということが目的なので簡単な犬を作ります(言い訳)。正方形からループカット機能「Ctrl + Rキー」と面の押し出し機能「Eキー」を使って作成しました。f:id:aizu-vr:20200122163339p:plain

ボーンを付ける

まず、作成したボーンが見えるように、Zキーからワイヤーフレームを選択します。f:id:aizu-vr:20200122165335p:plain 次にオブジェクトモードに切り替えた後に「Shift + Aキー」でアーマチュアを選択します。f:id:aizu-vr:20200122165842p:plain するとボーンが3Dカーソルの位置にできるので、それを背骨あたりの位置に調整して大きさも調整します。f:id:aizu-vr:20200122170759p:plain また、このままではソリッド表示に切り替えた時にボーンが見えなくなってしまうので、プロパティエディタのオブジェクトデータ→ビューポート表示→最前面を選択してソリッド表示でもボーンが見えるようになります。f:id:aizu-vr:20200122172328p:plain 編集モードに切り替え、ボーンの先端か末端を選択して「Eキー」でボーンを追加していきます。この時にX,Y,Zを押すとその軸に伸ばすことができます。また、x軸ミラーを適用して、「Shift + Eキー」で左右対称にボーンを出すことができるので便利です。f:id:aizu-vr:20200122213748p:plain      このようにボーンを作ってみました。f:id:aizu-vr:20200122214856p:plain これだけだとただボーンがあるだけなので、オブジェクトモードに切り替え、メッシュ→ボーンの順で(Shiftを押しながら)選択した後に「Ctrl + Pキー」から「自動のウェイト」でボーンとメッシュを関連づけますf:id:aizu-vr:20200122220225p:plain これでボーンをつけることができました。

アニメーションを作る

下準備が終わり、いよいよアニメーションを作っていきます。まずトップバーのAnimationを選択します。f:id:aizu-vr:20200122224654p:plain これでアニメーションを作るのが楽になります。 次にフレームレートについて設定します。デフォルトではフレームレートは24FPSに設定されています。24FPSというのは、1秒間に24フレーム進むということです。歩くという動作は、直立→足を前に出す→戻す→足を後ろに引く→戻すという一連の動作を繰り返しています。今回はこの一連の動作を1秒間に行うことにするので、開始フレームを0、終了を24にします。f:id:aizu-vr:20200122225556p:plain そして画面下のドープシートをアクションに切り替えます。f:id:aizu-vr:20200122230040p:plain 新規を押してアニメーションを作っていきます。f:id:aizu-vr:20200122230426p:plain 足が揃っている状態で足4本のボーンを選択し、0フレーム目に「Iキー」でキーフレームを挿入していきます。今回挿入するのは回転だけです。※この時ポーズモードにしておくことを忘れずに!f:id:aizu-vr:20200122231215p:plain 12、24フレーム目も同様に足が揃っている状態でキーフレームを挿入します。 次に6フレーム目に移動して左の前足と、後ろ足を「Rキー」で回転させて前に出します。「Ctrl」を押しながらマウスを動かすと5°ずつ動きます。f:id:aizu-vr:20200122232152p:plain 同様に右側の前足、後ろ足を「Rキー」で後ろに引き、4本の足を選択して「Iキー」でキーフレームを挿入します。 次に18フレーム目に飛んで今度は逆に、左側の前足、後ろ足を後ろ、右側の前足、後ろ足を前に出してキーフレームを挿入します。 簡単なアニメーションですがこれで完成です。f:id:aizu-vr:20200122235833g:plain

終わりに

拙い文章で長々と書いてあるにも関わらずここまで見てくださり、ありがとうございます。今後は段階を踏んでもっと複雑なモデルや、アニメーションを作れるように日々精進していく所存でございます。

VRモデリングツール Gravity Sketchの機能と使い方

こんにちは、学部一年の髙橋です。
なお過去記事の髙橋さんとは別人の新入部員です。
今回はVR上でモデリングできるGravity Sketchというアプリの紹介をしていきます。

Gravity Sketchはかなり直感的に使えるツールですので、自分で触ったり公式から出ている動画を見たりして機能を覚えることは十分可能です。しかしこのソフトについてのレビュー記事はあまり見かけません。
もし買おうか迷っているという方がいれば、今回の記事が判断の助けになれば幸いです。あるいは既に持っているものの、いまいち使い方がわからないという方も大歓迎です!

特徴

Gravity SketchはOculus、VIVE、Widows Mixed Realityに対応しており、価格は基本的に3,000円ほどです。ただし、年間少なくとも10,000ドル以上の収入を得る場合はさらにpro版、studio版を購入しなければなりません。とはいえ普通に使う分にはそこまで必要ないので、今回はCore版の紹介をします。

*コントローラーはOculus基準で説明します。

基本機能

色の選択

右コントローラーのボタンを見るとやたらカラフルになっているボタンがあるかと思います。
そのボタンを押している間は下記の画像のように色を選択することができます。色や彩度は見ての通り平面的に選択できますが、明度は手前か奥かで決まります。
例えばこの画像では手をもう少し上に上げるともっと明るい色を選択できます。上部に出でいる球は質感、下部の球は履歴です。 f:id:aizu-vr:20200113210402j:plain かなり道徳な操作性です。

ツール

このソフトには6種類のオブジェクト作成ツールがあります。それぞれ簡単に見ていきましょう。

インクツール

インクツールはその名の通りインクで描いたかのような線を引くことができます。 3Dで物体を作るための当たりをつけるのに使えるツールです。f:id:aizu-vr:20200114012257p:plain

線の太さや形状の設定は描いた後からでも調整することができ、右コントローラーで物体を選択した状態で左コントローラーの棒グラフのようなマークのあるボタンを押すと調整画面が出てきます。
この状態だと物体中に頂点も表示され、それを動かすことで適当に引いた線を後から修正することができます。この調整機能はインクツールに限らずどのツールでも使えます。f:id:aizu-vr:20200113203955j:plainf:id:aizu-vr:20200113204014j:plain

ラインツール

線を引くという点でインクツールと似ていますが、こちらはロープ状の物体のデザインに向いています。 f:id:aizu-vr:20200113204000j:plain

回転ツール

このツールは軸に沿って円状に物体を作成でき、簡単につぼ状の物体を作ることができます。円の角度、厚さはもちろん、軸を左コントローラーのトリガーを押しながら動かすこともできます。 f:id:aizu-vr:20200113204005j:plain

カーブドサーフェースツール

左右のコントローラーを同時に使うことによって面を描けます。布や無機物の外装などに向いています。 f:id:aizu-vr:20200113210431j:plain このツールの曲線接続モードではインクツールやラインツールで引いた2本の線の間を面で埋めることができます。

フィルドサーフェースツール

囲んだ範囲を埋めて物体にします。 f:id:aizu-vr:20200113204036j:plain

大まかな形を作りたい時に利用できます。また、平面機能をオンにすることで好きな形の板を作成することも可能です。

プリミティブシェイプツール

基本的な形状の物体を作成できます。物体作成時の作り方を選択することができ、

1.2つのコントローラーで物体の大きさと位置を決める
2.中心線に合わせ回転ツールのように作成する
3.片手で対角線状に動かし作成する

の三種類があります。f:id:aizu-vr:20200113204112j:plain

このツールの選択画面の右上にはメッシュの描かれた立方体があると思いますが、これを選択した場合、SubD機能に移ります。

SubD機能

この機能はまだベータ版しか出ていませんが、これを使えばかなり自由度が上がります。 面の押し出しやループカット、細分化といったことができます。

先ほどのメッシュの書かれた立方体を選択した状態で作った物体は初めからSubD対応となってますが、一度作った物体も後からSubDモードにすることができます。
ちなみにSubDでの作成モードにした時、新たにcustamizeという項目が現れますが、これを選択すると物体作成時に、面をいくつに分割するか調整することができます。(画像ではデフォルトでは1面だけのところを4分割しています) f:id:aizu-vr:20200113204126j:plain

押し出し

f:id:aizu-vr:20200113210417j:plain 画像はSubD状態の物体を調整モードにした状態です。メニューの左上の項目を選択することで特定の面を垂直に押し出すことができます。選択しなくても面は押し出されますが、垂直に補正がされません。
また面を伸ばした状態で拡大縮小することは可能です。f:id:aizu-vr:20200113204116j:plain

ループカット

辺の上でトリガーを押すと輪状に分割されます。メニューの右上の項目はループカット風のアイコンですが、選択していなくても分割はされます。その項目の機能は、面の選択時にループ状に選択されるということのようです。そうしない場合は単独の面のみ選択されます。f:id:aizu-vr:20200113210436j:plain

その他のSubDツール

SubD物体の調整状態では、右コントローラーのボタンからさらにツールを呼び出すことができます。f:id:aizu-vr:20200113204041j:plain

シャボン玉風ツール

範囲内の頂点で、飛び出しているものをなだらかにします。 f:id:aizu-vr:20200113204102j:plain

カッターツール

任意の場所で面を分割することが出来ます。

+マークのツール

編集中以外の物体を同一の物体にしてしまうもののようです。一度このツールで同一化すると編集状態から抜けても同一物体扱いとなります。 f:id:aizu-vr:20200113204051j:plainf:id:aizu-vr:20200113210424j:plain

テクスチャ

Gravity Sketchではテクスチャを扱えます。
用意した画像を特定のフォルダ内に入れるとインポートできます。
画像は作業環境の回転や拡大縮小によらず固定して配置することもできるので、資料の表示に使うこともできます。
f:id:aizu-vr:20200113204121j:plainf:id:aizu-vr:20200113204107j:plainテクスチャとして使う場合は、一度画像を場に配置してから色選択メニューを出すと下の履歴に表示されているので、そこから使うことが出来ます。

OBJ形式のインポート、エクスポート

Core版でサポートしている形式はobjのみとなります。ここでデータを出力すればBlenderやUnityでも作成したモデルを使用することが出来ます。

オブジェクトの複製

物体を選択したままトリガーを押すと簡単に複製できます。
またobjのインポートができるメニューから作成中の物体をプレハブ化することが出来ます。こうすることで別のプロジェクト内から作った物体を呼び出すことが出来ます。 f:id:aizu-vr:20200113204030j:plain

レイヤー

Core版で利用できるレイヤー数は4つまでです。レイヤーが分かれていると個別に透明度を変えられるので下書きと清書を分けることが出来ます。
レイヤーへの物体の追加方法ですが、レイヤーの右側についている半透明の部分に入れたい物体をドロップしてください。f:id:aizu-vr:20200113204025j:plain

一旦まとめ

ここまで簡単にGravity Sketchについて説明してきました。細かな部分は省略していますが、さわれば理解できることが多いと思います。
一応メモとして、pc版とquest版では少々違いがあるようです。pc版では影の描写があり、一部メニューもquest版より増えています。クロスバイ対応なのでどちらの機種も試せるという方は違いを探してみてください。


それでは、ここまで読んでくださりありがとうございました。

unityの当たり判定について

最初に

皆様、明けましておめでとうございます。私は学部一年の比嘉と申すものです。去年からunityを始めたばかりの初心者の私ですが何卒よろしくおねがします。

本題

さて、今回私は様々なゲームで重要になってくる当たり判定についての仕組みについて考えました。そもそも「当たり判定」とはどんなものかと言いますとゲーム内のオブジェクトが何かにぶつかった時に起こる判定のことです。このぶつかった時の判定というのは多少のズレが存在し実際ぶつかったように見えない場合にも当たり判定が発生します。今回はこのズレがどのくらいで発生するのか検証していきたいと思います。

検証方法

f:id:aizu-vr:20200106005421p:plain 画像のように二つのキューブを使い検証します。このキューブの座標をそれぞれ ( 1.0 , 5.0 , 0 ),( 1.0 + X , 5.0 , 0 )に設定して、後者のキューブを落とし観測します。この時、Xの値を0.1から始めどんどん小さくしていき当たり判定が発生するまで続けます。

当たり判定の付け方について

最初にUnityにおいての当たり判定をつけるための手順を説明します。 Unity内にオブジェクトを作成し、そのオブジェクトに「Rigidbody」と「BoxCollider」をつけます。これでオブジェクトに当たり判定がつきました。その後、下のようなプログラムを書きます。 f:id:aizu-vr:20200106011006p:plain この画像の”void OnCollisionEnter(Collision collision)”で当たった際にConsoleの画面で”HIT”という表示が出るようにします。そしてその下の”this.gameObject.transform.Translate(0, -0.05f, 0)”でこのプログラムがついたオブジェクトをy座標を0.05ずつ落とすようにします。最後にこのプログラムを先ほどの落とす方のキューブにアタッチします。

結果

f:id:aizu-vr:20200106012816p:plainf:id:aizu-vr:20200106012845p:plain 上の画像のようにX=0.1の時は当たり判定が発生しませんでしたが、X=0,01の時には当たり判定が発生しました。ここからXの値を0.01<X< 0.1で値を変化させて観測してみると... f:id:aizu-vr:20200106005712p:plain X=0.02を境に当たり判定が発生していることがわかりました。ちなみにX=0.021やX=0.0201で試した時には当たり判定は発生しませんでした。 以上の結果からUnityにおいての当たり判定は0.02のズレがあることがわかりました。これから実際にゲームをUnityで作る際はこのズレに注意しながら作っていきたいと考えました。

最後に、ここまで記事を読んでくださりありがとうございました。

会津大学VR部の部員が持ち回りで投稿していくブログです。特にテーマに縛りを設けずに書いていきます!