Aizu-Progressive xr Lab blog

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

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

VR開発オールとその代償、チーム活動進捗報告 No.3

こんにちは、会津大VR部部長の秋山です。今週は進捗報告の前に私が体験した出来事を書き残そうかと思います。

VR開発オールとその代償

 ついこの間、VR開発を午前中から始めてそのままVR開発オールをしました。VR業界で働いている方々が1日にどのくらいの時間開発を行っているのかわかりませんが、VR開発オールは今後できるだけやらないことを誓いました。開発をオールでやることでたしかに進捗はでたのですが、代償が大きすぎました。
パソコンの前で開発をした時間はご飯を食べる時間を除いて20時間。スマホのゲーム開発とは違いVR開発は実際に自分でHMDを被って、「モノの大きさに違和感を覚えないか」や、「酔わない設計になっているか」、「コントローラでのアクションが自分の欲しい値を出してくれるか」などを気にしながら製作していくので立って作業をすることが多々あります。そのおかげもあってお尻や腰が痛くなったり痺れたりすることは少ないのですが、その代わり目がやられます。
 開発を始めて15時間目までは特に何もなく順調に開発ができたのですが、そこから先が経験したことのない苦行でした。

眼球の裏側が痛痒い

このVR開発オールの半年ちょっと前に、FPSのゲームを同じくらいの時間をかけてオールで開発をしたことがあるのですが、そのときは開発終わったあともただ少し眠いだけでした(腰はちょっと痛かった)。ですがVR開発オールはHMDをつけてデバグ作業をしていくせいか目の疲労感がいつもと比べひどかったです。その眼精疲労からくる痛痒いのがたまらなく辛かったです。私は猫アレルギーを持っているのですが、猫の毛を触った後に目をこすると目がめちゃくちゃ腫れます。そのときの痛痒い感覚に似ている気がしました。多分何かしらのアレルギーを持っている人で目が腫れたことがある人ならその感覚わかるんじゃないでしょうか?

肩が凝り固まって首が回らない

眼精疲労から首に、首から肩にかけて疲労が溜まっていきました。だんだんと首が回る範囲が狭くなっていくのがわかりました。それを無視して数時間開発を続けていたら最終的にはほぼ動かせない状態にまでなっていました。腕を肩の高さまで上げると痛い、首筋がジンジン痛いなどの痛みが現れ、製作の集中力が欠ける原因になりました。

寝付けない

オールしたんだしすぐにバタンと寝れるだろうと思っていたのですが思うように寝付けませんでした。上2つが原因だと思われます。

約一週間疲れがとれない

今までスマホやPCの画面を見ていても疲れを感じることが滅多になかったが、開発が終わってからの一週間は15分画面を見続けられなかった。疲労からか熱もでてきた。頭がぼーっとしてしまい、何事にも集中できなかった。

以上が私が経験したオールVR開発の代償でした。ギネス記録には連続50時間VR体験というギネス記録があったり、25時間連続VRゲームプレイというギネス記録があったりしますが、私には厳しいかなあと感じました。
今回VR開発オールは今後できるだけやらないことを誓いましたが、やっぱりVR開発は楽しいのでまた何度もやってしまうかもしれません。(誓いとは) もし慣れみたいのが存在して全然平気になったらギネス記録にも挑戦してみてもいいかもですねw それに実際のVRエンジニアが連続20時間くらい当たり前のように開発をしているのならばそんなところでへばっている場合じゃありませんしね!もっと頑張っていきます!以上雑談でした。



進捗報告

ここからは各チームの進捗報告となります!

Sチーム

「今週行ったこと」

  • Leap Motionでのアクションの精度を上げる
  • Leap Motionでのアクションを増やす
  • 基本魔法のエフェクトのブラッシュアップともう1つ作る
  • 魔法やUI操作などの音を収集
  • 馬車のモデルを作る
  • ネットワークを通してステータスの同期をする

    馬車のモデルは未完成。今週中に完成予定。

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

    他の進捗は動画にまとめました。
    youtu.be
    「来週行うこと」

  • モデル製作の続き

  • エフェクトに音をつける
  • SE収集の続きと編集
  • Leap MotionでUIメニューを出して、ものを出せるところまで
  • 実際にHMDを被って大きさに違和感を感じないかを確かめる

Kチーム

「今週行ったこと」

  • 話し合い
    • ハードの構造と材料について
    • 必要なアセットについて
    • コンテンツの中身について
  • 視線を取ってきて当たったら何かアクションを起こさせる処理を書く

youtu.be
「来週行うこと」
ソフト面の製作にはいる

G1チーム

「今週行ったこと」

  • 見つけたアセットのアニメーション等を試した
  • ステージ作成者が配置を楽にするためスクリプトで自動配置にした
  • Reyでタイトルやボタンを洗濯できるようにした

「来週の予定」
今回で導入したアセットを入れ、見た目だけでもそろえて簡単に遊べる状態にする
f:id:aizu-vr:20170817123812p:plain

G2チーム

「今週行ったこと」

「来週の予定」

C1チーム

  • プレイヤーが使用する魔法の杖のモデリングの作成
  • マルチプレイ実装の続き(もう少しで完成)
  • タイトルからゲーム画面への遷移の作成
  • 全天球空間上にカードの配置の続き(円形までは完成)

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

「来週の予定」
引き続き各担当の部分の作成
youtu.be

C2チーム

先週の続き中


今週はテスト期間ということもあって進捗すくなかったですが、夏休みに入るのでこっからどんどん進捗出せるように頑張っていきます!

チーム活動進捗報告 No.2

こんにちは、会津大VR部部長の秋山です。
ついにVR ZONE SHINJUKUがオープンしましたね!私も早く体験しに行きたいです…(マリカやりたい)

以下、今週の進捗報告になります!

Sチーム

製作物:1対1対戦ゲーム

「今週行ったこと」

  • Leap Motionでアクションをとってきて何かモノをだす
  • 基本魔法のエフェクトを作る
  • 街のモデルを作り始める
  • ネットワークで位置の同期ができるところまで作る


モノが2つ以上出てしまうときや、何も出ないときがあるのでその正確度をあげていく予定。
youtu.be

sin波など使い、よりブラッシュアップしていく予定。来週には3つほど追加でエフェクトを製作予定。
youtu.be



街のモデルの骨組み
城郭都市のイメージで作ってもらった。1番外側の円が壁、 1番内側の円より内側は広場、他の円と放射状に延びてるのが道
f:id:aizu-vr:20170713115249p:plain


ネットワークで位置の同期をした。
はじめ、UNETを使って位置同期をしたが動きがカクカクしていた。どこかのパラメータが通信の回数を制限しているのかもしれないが、Photonと比べてると遅延が目立ったのでPhotonで実装を試みた。
しかしPhotonでの実装後、UNETの通信回数を制限している箇所が判明し、値をあげて通信してみたところPhotonとほぼ変わらないくらいの早さで同期してくれるので今回はUNETを使って実装をしていこうと決めた。
 来週までにプレイヤーのステータスの同期を行う。
f:id:aizu-vr:20170715152643p:plain

Kチーム

「ソフト」

  • プレイヤーは学生で、ワイヤーアクションで登下校をする設定にした。
  • プレイヤーは自動的に進んでいく
  • 飛ぶ地点の選択肢をマーカーで表示。プレイヤーは飛びたい場所を選択していき学校までたどり着く
  • 視線で選択しViveコントローラのトリガーで飛ぶ場所を決定(ワイヤーを射出)

「ハード」

  • IVRCの規定である横1.8m × 縦1.8m × 高さ2mに収まるサイズ
  • 骨組みは鉄柱で六角形
  • プレイヤーを上に釣り上げるワイヤーと前後左右に揺らすゴム質の紐に分ける
  • ランニングマシン OR 滑る床で屋根の上を走る
  • 向かい風の演出としてサーキュレーターを使用
  • バイブレーション等でワイヤーの射出の振動を再現
  • 飛んでいる最中は床を下げてプレイヤーを吊り、足がつかないようにする。走るタイミングで床をあげ足がつくようにする

  • プレイヤーを吊る装備はハーネスやつなぎなどで試行錯誤。プレイヤーが飛んでいる際、上にワイヤーで吊られている感覚をどう誤魔化すかが課題
  • 前方にプレイヤーを引っ張るときに前から引っ張るのではなくプレイヤーの背面から引っ張る(コルセット等を用いる)

来週は、ハード設計・デザインをする予定

G1チーム

役割分担の決定をした。

  • ステージ作成やアセットの導入
  • サウンド
  • ゲームマネージャの作成とデザインを考える
  • ステージ周りのプログラム
  • 敵、ステージ管理 といった感じで分けた
    そのほかの進捗として、

  • Source Tree の導入

  • Bitbucketの設定
  • プロトタイプの作成
  • 生徒からでる音(書く、めくる、タイプ音)などの完成

    「来週の予定」

  • ミーティング

  • 各自作業

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

G2チーム

使うアセットを決めた。

  • 鉛筆
  • 先生

未定のもの

各メンバーで担当を分け作業をした。

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


「来週の予定」

  • 個人製作を進める
  • 学生のアセットを決める
  • ニューロンの使い方を確認

C1チーム

各担当に分かれて開発をした。
神経衰弱でプレイヤーがカードをめくる動作をするとこまでの動画

youtu.be


C2チーム

「今週行ったこと」

  • チーム内での世界観の統一
  • ゲームの仕様見直し
  • 神経衰弱のCPUの作成
  • 3Dモデルの作成(途中)
  • カードの配置場所の変更(途中)
  • 召喚ゲームの作成(途中)


「来週の予定」

  • カードの配置場所の変更
  • 3Dモデルの作成
  • 召喚ゲームの作成


f:id:aizu-vr:20170715173214p:plain
f:id:aizu-vr:20170715173226p:plain
f:id:aizu-vr:20170715173232p:plain
f:id:aizu-vr:20170715173218p:plain
f:id:aizu-vr:20170715173222p:plain

youtu.be
youtu.be

チーム開発が始まりました

今回のブログの担当をします三河です。 ブログの投稿が少々遅れて申し訳ありません。 ブログを書くのは初めてなので慣れていませんがよろしくお願いします。

今回はタイトルにもある通りチーム開発が始まったのでそれについて話したいと思います。 (前の投稿にもありますが)aizu-vr.hatenablog.com

ついに先日からチーム開発が始まりました! 自分たちのチームがどんなテーマになったかというと †学級崩壊† です。

学級崩壊というテーマを聞いてみなさんはどんなことを思い浮かべますか? 自分は不良が暴れていたり、生徒が教室を歩き回ってたり、授業中に騒いだり、とにかく授業が成り立っていない教室が思い浮かびました。 自分たちのチームはこんな崩壊しているクラスを救う教授(先生)視点のゲームを作ることにしました!

具体的にどんなゲームかといいますと、

  • プレイヤーは教授

  • 教室には真面目な生徒と授業態度の悪い(不真面目な)生徒がいる

  • 制限時間の間に学級崩壊が起きずに授業をやりきったらゲームクリア

  • 学級崩壊が起きたら負け

  • プレイヤーは不真面目な生徒にチョークなどの道具を投げて制裁を与える

  • 制裁を与えることにより不真面目な生徒は真面目になる

  • 逆に真面目な生徒に制裁を与えると不真面目になる

  • 余裕があったら難易度もいくつか作る

という感じになってます。

それで、これのどこにVR要素があるのかといいますと、教授が制裁を与えるときにものを投げます。 この動作を、HTC VIVEを使ってVRで世界にあるものを拾って生徒に投げるというゲームを作っていきたいと思います。

HTC VIVEを使いものを投げるゲームで「Dead Hungry」というものがあるのですが、 こんな感じで作っていけたらいいなと思っています! このゲームは迫りくるゾンビたちにハンバーガーを作って投げて食べさせるゲームで満腹になったゾンビは人間に戻るというなかなか不思議なゲームです。

音量がやや大きめなので注意です。


Dead Hungry - Launch Trailer [VR, Oculus Rift, HTC Vive]


いままでの活動でチームメンバーそれぞれの役割は決まったので、これからの活動では実際に開発に入っていきたいと思います。期限がとりあえず、学祭までということなのでそれまでには楽しんで遊べるゲームを作りたいと思います! もうすでにメンバーの一人がVIVEを使ってものを掴んで投げる動作を実装していて驚きましたが、私も頑張っていきたいと思います!!

VR部チーム分け

こんにちは、VR部部長の秋山です。つい最近私たち会津大学VR部はチームに分かれ活動し始めました。チームは1チームにつき4〜5人で、

  • 技術力的に強い人だけを集めたチーム(Sチーム)
  • 最終的にIVRCに参加することを目標とする研究チーム(Kチーム)
  • 学級崩壊をテーマに制作するグループ × 2 (G1,G2チーム)
  • カードを使ったゲームを制作するグループ × 2 (C1,C2チーム)

の計6チームに分かれました。テーマに沿って制作していくチームのテーマはみんなでブレストをして決めました。チーム分けをする前の週に面白法人カヤック様がブレスト研修をしてくださったので習ったことを使ってブレストをしました。
(ブレストをする前に先輩後輩間の緊張感を和らげるためにアイスを食べながらアイスブレイクをしましたw 写真撮っとけばよかった…)

1チームだけ技術的に強いチームにしたのは、近くに目標になるようなチームがあった方がそこを目標にまわりも頑張れるかと思ったからです。これもカヤック様からのアドバイスでした。
 同じテーマにつき2チーム制作をするのは、作るもの自体は違えどもテーマが同じだったら必ず同じような箇所がでてくるのでコードの共有ができるかと考えたからです。研究チーム以外は制作のゴールをデジゲー博に展示することを目標にしています。デジゲー博は11月に開催されるので時間があまり残っていません。そこで考えたのがコードの共有をできるようにして時間の削減をするという案でした。
 技術力の高いチームは、プレイヤー同士で戦えるようなネットワークを利用したゲームを作っていきます。  展示の機会としてはデジゲー博の1ヶ月前に学祭があるので、そこでのフィードバックをデジゲー博前のブラッシュアップするべき箇所の確認の機会にしていきます。

各チームの進捗

Sチーム

1対1対戦ゲームを制作していく。
(最終的な目標は多人数でできるようにすること)

「ゲーム内容」

  • 魔法を使ったプレイヤー同士のバトルゲーム(2人用)
  • 基本属性が3種類あり、HMDをかぶる前にプレイヤーに決めてもらう
  • 基本魔法(無属性)はだれでも放てる
  • 最初ゲーム開始したら街を探索し魔法を強化できるアイテムを収取する(アイテムも同期し奪い合いができるようにする?)
  • ある程度の時間が経ったら戦闘用エリアに強制移動し戦闘開始
  • プレイ時間は1プレイ5分(3分探索、2分戦闘)
  • 探索が終わると集めたアイテムが集計され数に応じてレベルアップする
  • 街のどこかにいる住人や師匠(NPC)に会えれば低コストでレベルアップさせることができる
  • 基本魔法以外も自分の好きなスキルにポイントを割り振って覚えることができる
  • お金と同じような概念を作り、それを使ってNPCと買い物ができるようにする

HMDはHTC Viveを使用するが、Viveコントローラの代わりにLeap Motionを使って製作していく予定。

「先週行ったこと」

  • 世界観を合わせる

 作っていく際にチームのメンバー同士が同じ世界観を持っていないとバラバラになってしまうので、まずはじめに世界観の統一から始めた。具体的にはSlackのチームチャンネルで自分の中の想像を伝えられるような画像、動画を送りあった。

  • Leap MotionをHTC Viveでどのくらい干渉、遅延があるかの確認

Leap MotionとHTC Viveのセンサーはどちらとも赤外線なので何かしら干渉が起こるのではないかと思い、実際に確かめた。結果とくになにも感じられなかったのでLeap Motionで作っていこうと決めた。実機テストをしたときにわかった問題点として、
Leap Motionは有線でしか使えないのでコードが邪魔になってしまう」
Leap MotionをHTC Viveにどのようにして固定するか」
があがった。

  • 1週間の役割決め

チームメンバー1人1人の1週間での課題を決めた。

Kチーム

最終的にIVRCを目標に製作していくチーム。 活動計画の話し合いをした。
ワイヤーアクションをよりリアルに体験できるような作品を製作予定。

  • ゴールの設定
  • ゴールの分解
  • 何が必要かの洗い出し

「来週の予定」
物理的な物から取りかかっていく予定
f:id:aizu-vr:20170708195129p:plain

G1チーム

学級崩壊をテーマにしたチームその1。
ゲームの方向性、企画、必要なもの(グラフィック、音、プログラムなど)の洗い出しをした。

「来週の予定」
 決めた役割でプロトタイプ作成をする。
チーム開発への準備(環境など)や確認

「どのようなものを作るかの詳しい文献」

†学級崩壊† - HackMD

G2チーム

学級崩壊をテーマにしたチームその2。
仕様をまとめた。

敵・・・体力、0になるとクリア
プレイヤー・・・注目度、上がるにつれて警戒される。注目度MAXになると追放。
警戒される動作・・・物を持つ、攻撃失敗、視線が合う、見られている際の攻撃(即OUT)、関係ないものがある(ケータイなど)
投げる動作・・・狙いを定めてコントローラを振る、加速度を検知して物を投げる
時間制限について・・・敵が白板を埋めるまで(約3分)

「メンバーのタスクを決めた」
・ステージ構成
モデリング
スクリプト

C1チーム

カードを使ったゲーム製作チーム1。
今週は製作するカードゲーム(神経衰弱)の仕様、デザインの構想を相談し概ね決定。チーム内で4つに分かれ、各担当を決定。来週は担当ごとにゲームを製作。

C2チーム

カードを使ったゲーム製作チーム2。
ゲームの仕様を決めた。
普通の酔拳衰弱から一つの模様を除いて行う。つまり一枚余るカードがある。そのペアにならなかったカードを取得し、属性と数字で戦う。
それぞれのカードにキャラクターを決めて召喚して戦う。
f:id:aizu-vr:20170708220307p:plain
「来週の予定」
円柱の側面にカードを配置して、自分で回しながら選択できるようにする。
モデリングのブラッシュアップ
f:id:aizu-vr:20170708220524j:plain

youtu.be


今週はこんな感じでしたっ!来週も進捗報告していきます!

全天球画像描写に挑戦してみた。

先週担当のはずでした、学部3年の飯田です。
LTをやって安心してしまい、ブログ担当のことをすっかり忘れてしまっていました。投稿が遅れてしまいすみません。
気を取り直して、初めてのブログを始めて行きたいと思います。

360°の全天球画像描写

これからチームでゲームを作っていくにあたって、個人的に必要なので取り組みました。
やったことを要約すると、
1. 球体を作る
2. shaderをちょこっといじる
3. マテリアルを作り、shaderを適用
4. 球体にマテリアルを貼る
これだけです。
どうです?簡単ですよね?
Unity初心者の私でもできたので、皆さんもすぐにできます!
では、細かい部分をみていきましょう。

球体を作成
これはすぐにできますね。球体の内側から画像が見られるようにsphereの中にこれらを入れましょう。(FPSControllerではなく、Cameraでいいです。)
f:id:aizu-vr:20170703005202p:plain

shaderを設定する

shaderを以下のように作成し、
f:id:aizu-vr:20170703005200p:plain textをちょっと追加。

Shader "Unlit/Sphereview"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        Cull Front//add text
        LOD 100

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            // make fog work
            #pragma multi_compile_fog
            
            #include "UnityCG.cginc"

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0;
                UNITY_FOG_COORDS(1)
                float4 vertex : SV_POSITION;
            };

            sampler2D _MainTex;
            float4 _MainTex_ST;
            
            v2f vert (appdata v)
            {
                v.uv.x = 1-v.uv.x;//add text
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                UNITY_TRANSFER_FOG(o,o.vertex);
                return o;
            }
            
            fixed4 frag (v2f i) : SV_Target
            {
                // sample the texture
                fixed4 col = tex2D(_MainTex, i.uv);
                // apply fog
                UNITY_APPLY_FOG(i.fogCoord, col);
                return col;
            }
            ENDCG
        }
    }
}

コメントアウトでaddtextと書かれている、
Cull Front
v.uv.x = 1-v.uv.x;
を書いただけです。

最後にマテリアルを作り、上記のshaderをマテリアルに入れ、さらにそれをSphereに入れて完成です。
f:id:aizu-vr:20170703005158p:plain f:id:aizu-vr:20170703013120p:plain

まだ自分の知識では、荒っぽくて綺麗に描写できませんがこれからもっと学んでいきたいと思います。
もし、『俺の方が綺麗にできる。』 『このほうがよくない?』という方がいましたら教えてください。待ってます。

参考リンク(というよりほぼ丸写しですw)
Sphereモデルを天球として利用するシェーダー - Qiita

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