BitSummit 4thでVRサイクリングを出展してきた
7/11,12に京都みやこめっせで開かれた『BitSummit 4th』にVRサイクリングを出展してきた。
思えば2回目のBitSummitで初めてOculusRift DK1を体験し、カルチャーショックを受けてVRに傾倒していったので、BitSummitにVRコンテンツで出展するのは感慨深い。
今回のバージョンの目玉としてスズカサーキットと傾き対応の2点をコンセプトとしてみた。ただ今回のBitSummitのように一般人も多い会場ではどちらも不向きだったかな、と最終的には感じた。BitSummitまでには自宅で数人にテストプレイをしてもらった段階でも、スズカサーキット一周はかなり長く、疲労を感じるだろう、ということで念のためショートコースも作っておいた。結果的にこの予想が的中し、当日の朝のセッティング中に別の出展者などにプレイしてもらった結果、すべてショートコースで行こう、ということになった。初日は結構なプレイヤーがバランスを取るのが難しいようでまっすぐ進むことも困難。こちらがハンドルを握ってアシストしないといけない状況が多々あった。2日目は初日の結果を分析し、ハード側の重心の調整、ソフト側の旋回周りを調整した結果、一部ユーザーを除いてほとんどアシストなしでもなんとかゴールにたどり着けることになった。今回の反省点として、やはり現実の自転車とはバランス制御が異なるため、ソフト側でフォローが必要に感じた。今回で言えば最初のシケインが鬼門すぎた。次に展示する場合は急に曲がる必要の無いコースを自作したほうがよさげ。とはいえスズカを走りたい、という自分が作りたいものを作る、というのもインディーズならではのこだわりポイントだと思うけど。慣れれば全然問題ないし。今後はマルチプレイに対応してみたい。たぶん賞があれば確実にいけるだろうし。ただし、もう1セットそろえるにはお金かかりまくるけど。マルチプレイはないかもだけど来月くらいに出展あるかも。
最後にコースモデルの調整をしてくれたKさん、展示を手伝ってくれたMさんに感謝。
記事
“自転車でVR”会場でひときわ存在感を放っていた『VRサイクリング』に試乗してみた【BitSummit 4th】 [ファミ通app]
サイクリング! ドラゴン! スノーボード! 「BitSummit 4th」で気になったVRタイトルをプレイしてみた - 4Gamer.net
【BitSummit 2016】初体験でてんてこまい!自転車にスノーボード、スポーツ体験も超楽しいVRで!|APPREVIEW
PANORA VIRTUAL REALITY JAPAN » 「BitSummit 4th」出展のVRゲームまとめ! ドラゴン、自転車、スパイアクションなどジャンルが豊富
VRサイクリング用センサー類のメモ
ジャイロセンサー MPU-6050
Arduino用のサンプルコードを下記からダウンロード
GitHub - jrowberg/i2cdevlib: I2C device library collection for AVR/Arduino or other C++-based MCUs
コンパス HMC5883L
下記を参考にする
ロボット改修モデリング
コミケも近づいてきたのでマジメにゲームを作るためにロボモデルを改修したのでその過程をまとめ。
ディテールアップ
左が以前作ったモデル。そのモデルにディテールアップとなるポリゴンをざくっと追加。
追加したポリゴンはホントに適当。ここでは作りこまない。
あくまでもディテールの密度などバランスを見ながら足したり引いたり。
さらに諸々追加。
TPSのアクションシューティングなので後ろからの視点となるため、ロボの背面をかっこよくするためにスラスターなどを追加。
バランス調整。ポーズを取らせた状態でかっこよく見えるように各パーツを拡縮したり。結構雑だけどどうせ作り直す予定なので速度重視で。
ゲーム中でスピード感のある動きをさせたいので、速そうなタイプに。
配色
ディテールアップのラフが出来たので配色してバランスを見る。
配色のバランスによってパーツの追加も必要になるため、ある程度できた段階で色を置いてみる。
下図は決定稿。
赤や青などアニメ系ロボのカラーパターンも用意してみたけど、どうしてもオモチャっぽく感じてしまう。兵器に派手な色は必要ない、という考えが払拭できないのもあった。
そもそも塗装はサビ防止や耐熱だったり兵器の場合は迷彩用途だったり。車などは購買意欲を湧かせるためだけど、兵器は一般消費者が買うモンでもないし。
ということでシンプルなモノクロ系にして兵器っぽく。量産機っぽいけど、主人公が最初に乗る機体がいきなりヒーロー機っぽいのもね。設定次第だけど。
以下はカラーパターンの没案。この辺は好みの問題でしか無いと思うけど。
この後は作りこんで行く前に一度Unity側に持って行き、構造に問題ないかやポリゴン数が多すぎないかチェックしてから進める予定。
VRCアワード 一次審査通過の手ごたえ
昨日VRCアワードの一次、二次審査の結果が発表され、「VRサイクリング」が一次審査を通過したということで掲載されました。
VRサイクリングは割りと自身があっただけに、ファイナリストになれなかったのは残念。だけど手ごたえは十分に感じられたので、最初っから狙いに行けばたぶん取れるかなー、とも。
もうちょい賞金とか上がってくれればやる気も出るけど・・・。今の賞金だとファイナリストとしてアワードに行く費用で赤字に。
来年はちょっと狙いにいってみようかな、と。ちょっと周りの手も借りてしまえば可能性はかなり高い。
今回は「VRサイクリング」のほか「ふぉとゆに」も応募してみたけど、こちらは残念ながら1次審査にて落選。
ふぉとゆに自体もViveの持ち味を活かしたコンテンツということでそこそこ自信はあったけど、やっぱりインパクトが少し弱かったかなあ。
これまではキャラクターを表示するだけでも新鮮さによって「スゴイ」ってなってたけど、ただVRにしただけという新鮮さは薄れていくのでコンテンツとしての面白さやVRならではの何かがないとこの先生き残れないと思う。
VRの開発環境はかなり整ってきたので、今後は企画面の方が重要になっていくと思うのでプランナーやデザイナーはUnityなり覚えてVRに挑戦して企画力で勝負してほしいとこ。
【Unity】ユニティちゃん3モデルのインポート
現在配信中のユニティちゃんの3モデルのインポートについて。
・ユニティちゃん(ノーマル)
・ハロウィンバージョン
・キャンディロックスターバージョン
インポートの順番
1.UnityChan_1_2.unitypackage
2.UnityChanHalloween.unitypackage
3.UnityChanScript_ver1.2.1_Unity5only.unitypackage
4.UnityChanShaderVer123_forUnity5.4.unitypackage
とりあえずこの順序に突っ込んでノーマルバージョンとハロウィンバージョンが共存すればOK。
キャンディロックスターバージョンについて
CRSバージョンはモデル単体が無いのでプロジェクトファイルから引っこ抜く。
プロジェクトを開いてUnityChanフォルダ以外をすべて消してからエクスポート。
その後ノーマルとハロウィンを入れたプロジェクトにインポート。
たぶんシェーダーがおかしくなるので、もう一度UnityChanShaderVer123_forUnity5.4.unitypackageをインポートする。
たぶんこの手順でOKのはず。
【Vive】コントローラのボタン入力の取得【Unity】
HTC Vive Preのコントローラのボタン入力について
コントローラのプレハブがシーンに追加した後の設定となります。
その辺りはやのせんさんが作られた以下資料を参照。
http://www.slideshare.net/KojiroYano/vive-59807782
トリガー入力のサンプル
下記サンプルをコントローラのプレハブにアタッチします。
SteamVR_TrackedObject trackedObj; void Awake() { trackedObj = GetComponent<SteamVR_TrackedObject>(); } void Update () { var device = SteamVR_Controller.Input((int)trackedObj.index); if (device.GetPressDown(SteamVR_Controller.ButtonMask.Trigger)) { Debug.Log("GetPressDown Trigger"); } }
たったこれだけです。
SteamVR-Extras フォルダ内の SteamVR_TestThrow のスクリプトを参考にしています。
また、コントローラ周りは SteamVR_Controller スクリプトを見れば大体記載してあります。
上記スクリプトではトリガーを押した瞬間のみ反応します。
「GetPressDown」を書き換えればトリガーのタイミングを変更できます。
GetPress | ボタンを押してる間 |
GetPressDown | ボタンを押したとき |
GetPressUp | ボタンを離したとき |
また、ButtonMask.Triggerの「Trigger」部分を書き換えると別のボタン状態を取得できます。
Touchpad | 中央の大きな円形ボタン。タッチパッドとして座標も取得可能 |
ApplicationMenu | タッチパッドの上のボタン |
Grip | グリップボタン |
Trigger | トリガーボタン |
※System、Axisは現時点ではまだよくわかっていないので割愛
タッチパッドについては、「GetTouch」「GetTouchDown」「GetTouchUp」を使うようです。
ただしタッチパッドに触れただけで反応してしまうので、用途によって使い分けます。
タッチパッドの座標の取得
上記スクリプトに書きコードを追加します。
if (device.GetTouch(SteamVR_Controller.ButtonMask.Touchpad))
{
Debug.Log( device.GetAxis() );
}
タッチパッドに触れている間、座標をデバッグログに表示します。
タッチパッドの中央が (0.0) となり、左と下がマイナス、右と上がプラスになります。
Vector2型なので、X座標だけ取得したい場合は「device.GetAxis().x」のように記述します。
バイブレーション
Viveのコントローラは振動させることができます。
if (device.GetPressDown(SteamVR_Controller.ButtonMask.Trigger)) { device.TriggerHapticPulse(2000); }
「TriggerHapticPulse」で振動させます。
振動の強さは渡す値が大きいほど強くなります。
ただし100~2000内の数値となります。
ひとまずコントローラに関してはここまで。