Aizu-Progressive xr Lab blog

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

連絡はサークルTwitterのDMへお願いします。
「面白法人カヤックVR分室」としても活動しています。詳細はこちら

Blenderを使ってみた

こんにちは、VR部2年の町田です。

去年はあまり活動に参加できなかったので今年は何かやってみようと思い、まずはblenderを使ってみることにしました。

今回は、初心者に易しいサイトがあったので、それを参考に転がるサイコロを作ってみました。 とても分かりやすいので、短時間で完成させることができました! ↓

blender-cg.net

ざっくりとした手順は以下の通りです。

①サイコロのモデルを作る

②色々なポーズを保存する 

③アニメーションにする 

f:id:aizu-vr:20180528223533p:plain

f:id:aizu-vr:20180528225607p:plain

1枚目の画像は、静止画のサイコロです。 2枚目は、サイコロを回転させようとした時に、スピンで物体が回転すると勘違いしていた時の様子です←

スピンは回転体を作るものであり、サイコロ自体を回転させるときはオブジェクトを選択した状態でRキーを押して回転させキーフレームを登録するということを理解しました。

そして最終的に回転するサイコロが出来上がったのでよかったです。

まとめ

今回blenderを使ってみてモデリングの楽しさを実感することができたので、今後この機能を使ってもっと本格的なモデルを作ってみたいと思いました。また、他のソフトも勉強してみたいと感じる良いきっかけとなりました。

この勉強意欲を忘れずに、来週からのテストに向けての勉強も頑張れるといいですね。

Unite Tokyo 2018に行って来ました!!

こんにちは。VR部2年の白嶋です。私たちの部活ではUnityをふんだんに使っているのですが、Unityスキルを磨き上げるべくUnite Tokyo 2018に行って来ました。Uniteは3日間に渡って講演が行われました。 f:id:aizu-vr:20180515191155j:plain

1日目

今日の講演は基調講演のみでした。Unityの方針とUnityの現状について仰っていました。Unityの方針は、「開発の民主化」「ハードウェアー問題の解決」「開発者の成功を手助け」です。「開発の民主化」、これはUnityが最初から目指している事で無料で開発が出来、無料でプラットフォームにビルド出来るようにするです。「ハードウェアー問題の解決」はデベロッパーにビルド時の面倒くさいデバイス依存のプログラムを書かずにすませて、Unityがほぼデバイス依存のプログラムを書いてくれます。「開発者の成功を手助け」はリソースが英語しかない、そもそもネットに情報がない。という事を防ぐために積極的にコミュニティを作り、開発者同しの情報交換を出来るようしています。次にUnityの現状は色々な企業が目をつけていてゲーム以外の場面で活用されている様です。例えば、建築系の企業ですと、マイクロソフトのホロレンズで建築予定のモデルを現実世界と合わせて見る事によって実際に見て気づいた改善点などが分かったりします。他には、車の企業ですと、クライアントが何色がいいのかなど実際に見て細かい所をオーダーするという事が出来ます。VTuberのキズナアイさんが出て来ました。驚きました!!f:id:aizu-vr:20180514114441j:plain

2・3日目

さて、Uniteの本番は2、3日からです!頑張って話を聞いてきました。色々な講演でProBuilder推していました。Unityエディター内でモデルの編集が出来ますので色々と便利そうですよね。また、最新バージョンで追加されたJobSystemなど個人的に気になっているので試してみたいと思っております。オーディオ系の講演もあり、今まで簡単に実装出来たオーディオはきちんとした設定にしないと実はメモリを無駄に消費していたら無駄なコンバートでCPUに負荷がかかる様ですので気をつけないとと思いました。f:id:aizu-vr:20180515183955j:plain他にも色々と復習しようと思いますので、公開スライドと動画を合わせて見ます!! →無料でスライド・講演動画がありますので、ぜひご覧あれ!! Unite Tokyo 2018 講演タイムテーブル

個人的GW振り返り

こんにちは。VR部2年の森口です。今回は個人的なGWについて振り返りたいと思います。今年のGWは例年以上にVRに触れたGWとなりましたのでそれについて話していきたいと思います。

ニコニコ超会議2018

ニコニコ超会議2018とは

ニコニコ超会議とはドワンゴが運営する「ニコニコのコンテンツを(だいたい)すべて地上に再現する」をコンセプトに千葉県の幕張メッセで行われたイベントで2日間で約160000人ほどの来場者を記録しました。

chokaigi.jp

超歌舞伎VR

私はこのニコニコ超会議(以下超会議)にて超歌舞伎VRというコンテンツを体験してきました。超歌舞伎とはこの超会議で展示されたメインブースのひとつで、歌舞伎作品にプロの歌舞伎役者の方とともにVOCALOID初音ミク鏡音リンが出演するという日本の伝統文化と現代の文化が合わさったコンテンツになっています。その作中に登場する初音ミクの舞をVR空間内にて間近に見ることができるのが超歌舞伎VRとなっています。
HMDはPlayStationVRを使い、ユーザ側の操作は見る視点の変更のみといったゲームなどとは違い鑑賞のみのコンテンツでした。当日は参加希望者が殺到し長蛇の列になっていて指定された一つのムービーしか見ることができませんでしたが時間に余裕があれば複数のムービーから選択して様々なものを見ることができたようでした。 f:id:aizu-vr:20180510222311j:plain また、こちらのコンテンツは自前のPlayStationVRでも無料で体験することができるようなので機会があれば体験してみるのはいかがでしょうか。

www.jp.playstation.com

VRムービー作成

我々の部が行っている活動の一つとしてVRキャラバンというものがあります。この活動についてはこちらの記事を参考にしてください。

aizu-vr.hatenablog.com

前回の活動の反省点として、ご年配の方々などあまりVRについてよく知らない方々がとっつきにくいコンテンツばかりを展示してしまったというのがありました。ゲームのような複雑なコンテンツだとこのような問題が発生しがちなので我々は操作を必要としないスマホVRでのムービーコンテンツを作成し次回以降のVRキャラバンにて展示することにしました。そのコンテンツのテーマは「VR内で電車に乗り四季を旅する」です。私はコンテンツの作成に携わっていてGWも実家に帰省しつつ作成を行っていました。
※画像は開発中の夏のシーンのものです f:id:aizu-vr:20180510223834p:plain 私自身Unityはまだまだ勉強中の身でVRムービーも初めて作るのであの手この手で試行錯誤しつつ作業していました(笑)
多くの皆さんに楽しんでいただけるコンテンツを目指して作成していきますので公開まで今しばらくお待ち頂ければと思います。

Blenderモデリング

2月に行われました部内ハッカソンにて3DモデリングソフトのBlenderを触る機会があり、その時にモデリングの面白さを知って以来モデリングを勉強しています。UnityのAsset Storeにも多くの素晴らしい3Dモデルがありますがどうも自分の欲しいモデルが見当たらないとなったときにモデルを自作する能力があれば万事解決です。私の今年の目標の一つとして「なるべく自作したモデルのみで一つVRコンテンツを作る」というものがあるので早くBlenderをマスターしたいと思います。 f:id:aizu-vr:20180510224943p:plain こちらは私が所属しているKチームのコンテンツで使用するためのガスバーナーのモデルです。

まとめ

大学2年になり昨年よりは知識・技術共についてきたとは思いますがまだまだ多くの面で勉強しなければならないことがたくさんあります。そう考えると今年のGWは私にとって視野を広げたり、技術習得のためになる良いGWになったかなと思います。
本記事内で少し触れましたVRムービー含め会津大学VR部の今後の活動に期待と応援をよろしくお願いします!

Timelineを使ってみる

こんにちは、VR部2年の森川です。私は訳あって映像を制作することになったので、Unityにある「Timeline」という機能の基本の機能を調査しました。ですので、今回はTimelineの使い方を簡単に整理していきます。
f:id:aizu-vr:20180505203316p:plain

Timelineとは

 AnimationClip、AudioClip、Camera等を配置して、これらの実行させたい処理を経過時間ごとに操作することができる機能です。
 Timelineを扱う事によって生まれるメリットは、

  • GameObject毎の処理を一々コードを書かなくて済む。
  • ウィンドウを見るだけで、どのような処理が行われてるか分かりやすい。
  • 複雑な処理を行いやすくなる。

    です。それでは早速使っていきたいと思います。

準備・主な機能

準備

まずは、空GameObjectを生成します。名前は適当にRootとしておきます。
次にTimelineエディタを開きます。Window->Timelineから開くことができます。
開いたら先ほど作った空GameObjectを選択し、Timelineエディタに"Create"と出るのでそれをクリック。
すると拡張子がplayableのファイルが生成されます。その後、空GameObjectにPlayable DirectorとAnimetorコンポーネントが追加されている事を確認しましょう。

これにより、RootというGameObjectを基準にタイムライン制御を行う事ができるようになりました。
f:id:aizu-vr:20180505203414p:plain

主な機能

Timelineには"Track"というものがあり、Timelineエディタの行に相当するものです。TrackはエディタのAddをクリックすると追加できます。また、Trackの右側に表示されるグラフのようなものをアセットと言います。ここでどのタイミングで処理を行うかをフレーム毎、または時間毎に操作する事ができます。
今回は代表的な5つのTrackの説明をします。

1. Activation Track

f:id:aizu-vr:20180505203340p:plain
指定したGameObjectのActiveを切り替えるTrackです。

2. Animation Track

f:id:aizu-vr:20180505203348p:plain
指定したGameObjectのアニメーションを操作できるTrackです。
ここでのクリップはAnimation Clipなので、GameObjectにClipが付いているならば、それを再生する事ができます。また、エディタ内でClipを作る事ができます。作成方法はAnimationウィンドウでの操作と同様です。

3. Audio Track

f:id:aizu-vr:20180505203354p:plain
指定した音楽ファイルを再生、停止する事ができるTrackです。

4. Control Track

f:id:aizu-vr:20180505203401p:plain
指定したPrefabを表示、非表示にできるTrackです。
アセットを右クリックし、クリップをAddすることにより使う事ができます。このクリップのInspectorから、親オブジェクトと生成するPrefabを指定できます。
パーティクルでの演出をするときに使えそうな感じですね。

5. Playable Track

f:id:aizu-vr:20180505203409p:plain
スクリプト制御を行うTrackです。私が今回調べていて行き詰まったのはここのTrackです。
ここではPlayableBehaviorクラスとPlayableAssetクラスのサブクラスを用いて実装します。
簡単にこの2つの関係を説明すると、PlayableAssetクラスは処理を行うGameObjectの参照を保持させておくもの、PlayableBehaviorクラスは参照したオブジェクトにどのような処理を行うのか命令をするものです。
これらのスクリプトのデフォルトはAssets->Create->Playablesより生成できます。

ここにサンプルコードを載せておきます。カメラがLookAt関数で対象物を見続けるものです。
コードは主に他サイトを模倣して書いたものなので、私の理解した範囲のみ説明します。その以外に関しては、後ほど参考サイトのリンクを貼るのでそちらで確認してください。
TimelinePlayableAsset.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Playables;

[System.Serializable]
public class TimelinePlayableAsset : PlayableAsset
{
    public ExposedReference<GameObject> charaObj;
    public ExposedReference<GameObject> target;

    public override Playable CreatePlayable(PlayableGraph graph, GameObject go) {
        var behaviour = new TimelinePlayableBehaviour();
        behaviour.charaObject = charaObj.Resolve(graph.GetResolver());
        behaviour.target = target.Resolve(graph.GetResolver());
        return ScriptPlayable<TimelinePlayableBehaviour>.Create(graph, behaviour);
    }

}
  • public ExposedReference<GameObject> charaObj;
    ここではシーン上にある参照するオブジェクトを格納してます。また、Project内に存在するオブジェクトを参照する場合は通常通り以下のように書けます。
public GameObject charaObj;
  • public override Playable CreatePlayable(PlayableGraph graph, GameObject go){ }
    私はここに関してはおまじないと思って書いてます(笑)。

    TimelinePlayableBehavior.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Playables;

public class TimelinePlayableBehaviour : PlayableBehaviour
{
    public GameObject charaObject;
    public GameObject target;

    public override void OnGraphStart(Playable playable) {
    }
    public override void OnGraphStop(Playable playable) {
    }
    public override void OnBehaviourPlay(Playable playable, FrameData info) {
    }
    public override void OnBehaviourPause(Playable playable, FrameData info) {
    }
    public override void PrepareFrame(Playable playable, FrameData info) {
        charaObject.transform.LookAt (target.transform);
    }
}
  • OnGraphStartクラス
    タイムライン開始時実行される。
  • OnGraphStopクラス
    タイムライン停止時実行される。
  • OnBehaviourPlayクラス
    PlayableTrack再生時実行される。
  • OnBehaviourPauseクラス
    PlayableTrack停止時実行される。
  • PrepareFrameクラス
    PlayableTrack再生時毎フレーム実行される。

    これを実装すると、ちゃんとカメラが追尾してる事が確認できますね。
    f:id:aizu-vr:20180505204038p:plain
    f:id:aizu-vr:20180505204046p:plain
    f:id:aizu-vr:20180505204052p:plain

    まとめ

    使って見て感じたことは、細かい設定(実行したいタイミングをいじる等)を容易にする事ができて便利だと感じる事ができました。また他にも調べて見て"Cinemachine"というものと組み合わせて使うと、カメラによる演出の幅が広がり躍動感のある映像が作りやすくなると思いました。今後はCinemachineを使ってTimelineで動かせるように調査を続けて行きたいと思います。


今年度の目標と方針

こんにちは! 今年度から会津大VR部部長になりました橋本です。まだまだ未熟者ですが精一杯努力していきます。

さて、入学式も終わり新入部員も入ってきたことなので、今年度の目標を紹介したいと思います。

目次

それぞれがやりたいことを見つける

今年度も昨年同様にチーム開発をメインとした活動を行う予定です。しかし、チーム開発を始める前に自分がしたいことを見つけておかないと、チームを組んだ時に自分が何をしたらよいのかが分からなくて困ってしまいます。特に、一年生はまだ経験が浅いのでそのようになる可能性が高いです。そこで、今回は本格的なチーム開発を始める前に3Dモデルとサウンドについて2週に渡ってワークショップを開こうと思っています。それによって、プログラミング以外にも道があることを知った上で、自分が本当にしたいことを見つけられるようにします。

VRの概念を理解した上でコンテンツを作るようにする

昨年度はVRコンテンツを作る際に注意することについて勉強したのですが、今年度はVRの概念を理解してコンテンツを作れるようにします。勉強の教材に使うのはこちらの教科書です。

バーチャルリアリティ学

バーチャルリアリティ学

この本にはVRを学ぶ者にとって大切なことが記されています。中でも、第1章はVRの概念についての章となっているので、ここを使用して勉強会をしていきます。

今週の復習 : バーチャル = 仮想ではない?

VR(バーチャルリアリティ)は世間一般では仮想現実と呼ばれていますね。ところで、バーチャル(virtual)は「見かけはそのものではないが本質的にはそうである」という意味の形容詞というのは知っていましたか? また、仮想は英語で「supposed」という意味になりますが、この意味はそのまんま「仮に想定した」という意味になります。つまり、「virtual」と「suppsed」は全く異なる意味になり、「virtual」 = 仮想という訳もできなくなるということですね。バーチャルはそのままバーチャルと呼べばいいんです!もしくは、「人工現実感」と言うこともできます。この記事を読んだあなたは今後は間違ってもバーチャルリアリティを仮想現実と訳さないようにしてくださいね!

洗練された部活にする

洗練された部ってなんだろう…と考えていました。そんなとき


Gitを使うのが当たり前な部活ってとても洗練されているのではないか?


そんな気がしたので、チーム開発ではGitを使うようにします。昨年はチーム開発をする前にGitを勉強する機会がなかったため、個別で作ったUnityのシーンをGoogle driveで共有しながらシーンを合成するなどして苦労して作成していました(笑)

今年は部員全員がGitを使えるようにするために2週に渡ってSource Treeを使ったGit勉強会を開きます。1週目でざっくりとしたGitの使い方の説明、2週目で実際に5人のチームを組んで一つのUnityプロジェクトを操作しながらGit Flowの説明をする予定です。

会津若松を盛り上げる

昨年から始まった会津大VR部キャラバン活動。しかし、昨年は一度しか活動できなかったこともあり、 あまり盛り上げられなかったと感じたところがありました。そこで、今年度はもっとたくさんの場所を訪れるようにします。(日新館とか鶴ヶ城みたいな観光地に行けたらいいなぁ...)また、ご年配やお子さんでも楽しめるように、「見て楽しむコンテンツ」を作成していく予定です。

キャラバン活動についてはこちらを参考

aizu-vr.hatenablog.com

以上の目標を掲げ、今年度は進行していきます。今年で2年目を迎えるVR部ですが、部員が昨年以上の経験値を得られるように、また、会津をVRコンテンツで盛り上げられるように頑張っていきますので、今後とも応援よろしくお願いします!

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