VRChatで動画を撮影する & Stream Cameraの使い方
VRChatで動画を撮影する方法を紹介します。
動画の撮影
Windows 10ではゲームバーという機能を使って動画を撮影することができます。
①VRChatを起動します。
②VRChatが非アクティブになっている場合、
ウィンドウをクリックしてアクティブにします。
←非アクティブ
←アクティブ
③キーボードのWindowsキーとGを同時押しすると、
ゲームバーが表示され、録画ボタンを押すと録画が開始されます。
←ゲームバー
←録画開始
④録画を停止するとC:¥Users¥[ユーザー名]¥Videos¥Captures内に撮影した動画が保存されます。
←録画中
もしVRChatのウィンドウをクリックした際にマウスのカーソルが消えてしまい、他の操作ができない状態になってしまったら、キーボードの左上にあるescキーで抜けることができます。
また、Windowsキー + Alt + Rを同時に押すことで、すぐに録画を開始することもできます。
Stream Cameraの使い方
VRヘッドセットを使用している場合、Stream Cameraを使用することで、
映像を撮影する視点を変更することができます。
Stream Cameraに写した対象はデスクトップ側のVRChatへ映し出されるので、
これを利用することで自由な位置から映像を録画できます。
メニューを開き、Cameraを選択します。
Stream Cameraを選択します。
すると、持ち歩き可能なカメラが出現します。
このカメラに映し出されているものが、デスクトップ側に表示されます。
カメラはトリガーで持つことが可能で、位置を調整することができます。
オレンジ色のボタンを何度か選択すると、Look at Meモードという常に自分の頭の方向へ撮影を行うモードになり、自撮りが可能です。
(目玉のアイコンです)
このカメラのボタンが結構押しづらいです。右手でカメラを持った状態で位置を調整しながら、左手でボタンの近くをうろうろさせるのがコツです。
カメラには他にもたくさんオプションがあります。詳しくは公式のドキュメントをご覧ください。
VRChat
Blender Cheat Sheet
たまにBlenderを触るとき、いつもショートカットを忘れてしまうので、
個人的によく使うものを備忘録としてまとめておきます。
画面操作
中クリックでドラッグ | 画面回転 |
スクロール | 画面拡大縮小 |
Ctrl + スクロール | 左右スクロール |
Shift + スクロール | 上下スクロール |
1(テンキー) | 前視点 |
3(テンキー) | 右視点 |
7(テンキー) | 上視点 |
Ctrl + 上記の数字(テンキー) | 逆の視点 |
5(テンキー) | パースペクティブ・オーソグラフィック切り替え |
モード切り替え
Tab | モード切り替え(Object/Edit) |
Ctrl + Alt + Q | 四画面分割 |
T | ツールシェルフ |
N | プロパティシェルフ |
選択
A | 全て選択 |
B | 矩形選択 |
C | 塗りつぶし選択 |
Ctrl + I | 選択しているものと選択しないものを入れ替える |
Ctrl + "+" | 選択の範囲を広げる |
Ctrl + "-" | 選択の範囲を狭める |
操作
G | 移動 |
R | 回転 |
S | 拡大縮小 |
H | 非表示 |
Shift + H | 選択中以外のものを非表示 |
Object Mode
P | オブジェクトの分割 |
Ctrl + J | オブジェクトの結合 |
Edit Mode
Ctrl + Tab | 頂点・辺・面の切り替え |
K | ナイフ |
Ctrl + B | 面取り(Bevel) |
Ctrl + R | ループカット |
I | 面の差し込み |
E | Extrude |
Alt + E | Extrudeメニュー |
Ctrl + 左クリック | 辺・面を作る |
F | 面を張る(Fill) |
Alt + F | 三角形で面を張る |
W + 1 | 細分化 |
Shift + Alt + S | 球体化 |
P | 別オブジェクト化 |
その他
Shift + S | 3Dカーソルの位置移動 |
O | プロポーショナル編集モード |
M | レイヤーの移動 |
Shift + A | プリミティブの追加 |
Ctrl + G | グループ化 |
Ctrl + Alt + Shift + M | 穴が空いている部分を一括選択 |
Shift + Ctrl + Alt + F | リンクするフラットな面を選択 |
Unity: Package ManagerからインストールしたPackageのソースコードの場所
最近Packageに追加されたVector GraphicsのAPIの仕様について調べていたのですが、
主要なコードがDLLにコンパイルされており、中身を読むことができなかったので、
コンパイルされる前の中身が置いてある場所を見つけ出しました。
ソースコードの場所
下記のディレクトリ以下にインストールしたPackageのキャッシュが残っており、
DLLファイルにコンパイルされる前のソースコードを読むことができます。
C:\ProgramData\Unity\cache\packages\packages.unity.com
~/Library/Unity/cache/packages/packages.unity.com
情報元:
https://forum.unity.com/threads/vector-graphics-preview-package.529845/#post-3500904
qiita.com
今回の私の場合、探していたVector Graphics(1.0.0 - preview.15)のソースコードは、
com.unity.vectorgraphics@1.0.0-preview.15
という名前のディレクトリの中にありました。
Unity: Vector Graphics APIでSpriteに動的にColorを設定する方法
Vector Graphics APIで描く図形に色を設定するには、
StrokeクラスのColorフィールドにColor型の変数を代入し、
それをIDrawableを実装したクラスのPathPropertiesフィールドに代入しておくことで設定できます。
しかし、執筆時点(2018/07/22)では、
Spriteに対して動的に色を変更したい場合には、通常の設定方法ではうまくいきません。
(publicやSerializeFieldをつけた変数にインスペクタ上から色を設定したときなども同様)
今回はこの問題について、原因と解決方法を見つけたので書き記しておきます。
使用した環境
OS: macOS High Sierra
Unity: 2018.1.1f1
Vector Graphics: 1.0.0 - preview 13
解決方法
情報元は、Vector Graphics Preview PackageのForumです。
https://forum.unity.com/threads/vector-graphics-preview-package.529845/page-2#post-3533043
Unityの中の人によると、この問題はSprite RendererがSVG spriteによって既に使われている頂点カラーチャンネルを使用しようとすることによって起こるそうです。
そして、GPU Instancingを有効にすることによって、これを回避できるそうです。
具体的な回避の流れは、
- 新しいMaterialを作成し、ShaderにUnlit/Vectorを割り当てる(Gradientを使用している場合はVector/Gradient)
- MaterialのEnable GPU Instancingにチェックを入れ、SpriteRendererを持つGameObjectに割り当てる
- SpriteRendererに変更したいColorをセットしたMaterialPropertyBlockを渡す
といった感じになります。
3に関しては、こんな感じのコードで渡すことができます。
MaterialPropertyBlock block= new MaterialPropertyBlock(); SpriteRenderer sr = GetComponent<SpriteRenderer>(); //NewColorは変更したい色のColor型の変数 block.SetColor("_Color", NewColor); sr.SetPropertyBlock(block);
Oculus Go: Unityでゲームパッドを使ったアプリを開発する手順
巷で話題のOculus Go、皆さんはもう買いましたか?
Oculus GoはAndroidを積んでいるので、Unityで自作VRアプリを作って手軽にインストールして遊べます。
というわけで、少し試してみました。
去年unity1weekで作ったゲームを、VR空間上で動かしてみた!Bluetoothでゲームパッドが使えるらしいので、繋いで操作してみたが、めっちゃ入力が遅延して使い物にならない...(詳しい人、情報求む)#OculusGo #OculusGoDev pic.twitter.com/J4nCKBKgoe
— きり (@KiliWare) 2018年5月29日
こちら、去年ゲームジャムで作ったゲームを、Oculus Goに移植したものです。
数時間で、割と簡単に移植できました。
(去年の私が書いた変なコードのせいで手間取りましたが、本当に簡単にできます)
このゲーム、Oculus Go付属のコントローラーの代わりに、
Bluetoothでゲームパッドを繋いだもので操作を行なっています。
今回は、このゲームのようにゲームパッドを使用したアプリをOculus Goで動かす際に参考にしたサイトを紹介します。
(残念なことに私が使用したPS4のコントローラーは、入力に遅延が生じてしまうので実用性はありません)
kiliware.hateblo.jp
Unityでゲームパッドを使用する
Unityで開発するゲームでゲームパッドを使えるようにします。
こちらのサイトがわかりやすいと思います。
【Unity】Input Managerの使い方まとめ。PS3やPS4のコントローラの入力を取得しよう - おもちゃラボ
http://inter-high-blog.unity3d.jp/2017/07/04/gamepad/
Controller Testerは便利です。
Unityでアプリをビルドし、Oculus Goで動かす
Unityで作ったアプリをOculus Goで動かす方法については、以下の記事がわかりやすいです!
[Unity] Oculus Goで3Dキャラクターを眺めよう | Cocoamix.jp
UnityでOculusGo向けVRゲームをつくろう!【設定編】 - ぞヴ記
地味にここが一番難関です。
私はJDKのバージョンが10だとビルドがうまくいかず、8に下げたら通るようになりました。
他にも、Android SDK Toolsのバージョンが高いとうまくいかず、古いものに置き換えるとビルドが通るようになるという現象が他の人の環境で起きていました。
(Androidのビルドは、環境によって何故かうまくいかなかったりといったことが結構あるので、上記の記事でうまくいかなかった場合、各自頑張って解決方法を探してください...)
Oculus GoにBluetoothでゲームパッドを繋げる
Oculus Goでゲームパッドを使えるようにします。
こちらのサイトが参考になります。
[Oculus Go] Bluetoothゲームパッドを繋げてみる/Netflixで使えた
私はPS4のコントローラーで行いましたが、他のコントローラーでも手順はほぼ同じはずです。
Oculus Goにビルドしたアプリを転送する
Windowsなら、USBケーブルで繋いで適当なフォルダに.apkファイルを入れれば良いと思います。
私の環境(macOS)では、Oculus Goを繋いでもMac側で認識できず、ファイルを転送できませんでした。
その際にはAndroid File TransferというアプリがAndroid公式から出ていますので、こちらが使えると思います。
Android File Transfer
遊ぶ
スマホアプリからOculus Goを開発者モードに変更し、ゴーグルを被り、
Oculus Goのライブラリ
ー>提供元不明のアプリ
この中に先ほど転送したアプリがあるはずなので、それを起動すれば、遊べるはずです!
質問・間違いの指摘などはきり (@KiliWare) | Twitterまで!
Oculus Go: 使えるゲームパッド(コントローラー)についての調査
Oculus GoはBluetoothでゲームパッドを繋いで、対応しているゲームを遊べます。
今回は、Oculus Goで使用できるゲームパッドについて調べてみました。
<注意>
実機で確認できていない情報が多いので、鵜呑みにせず、
参考程度にしていただけると幸いです。
実際に購入される際は自己責任でお願いします。
家庭用ゲームコントローラー
www.youtube.com
こちらの動画が非常に参考になりました。
(実際にゲームをプレイした感想や、コントローラーの感触などの感想まで詳細に語られています)
記事執筆時点(2018/06/14)では、PS4のコントローラーであるDUALSHOCKは入力に遅延が発生するため、
Oculus Goではまともに使える状態ではありません。
PS4のコントローラー以外は実機で確認ができていないのですが、
調べたところによるとNintendo SwitchのProコントローラーも同様のようです。
家庭用ゲーム機のゲームパッドでは、Xbox One Sコントローラーが遅延なく動作するようです。
Xbox Oneのコントローラーは、Sであることが重要らしく、
それより古いコントローラーだとBluetooth通信ができないなど、正常に動かないようです。
動画内では、Xbox One Sがとても良い!という結論になっていました。
持っている方は試してみてはいかがでしょうか。
その他コントローラー
そして、家庭用ゲーム機のコントローラー以外では、こちらの3つが適しているようです。
- Samsung EL-GP20
- SteelSeries Status XL
- Moga Pro
Is the Oculus Go compatible with any other controllers? — Oculus
こちらのフォーラムによれば、Oculus Supportによる回答とのこと。
SteelSeries Status XLは、先ほどの動画でも正常に動作すると紹介されていました。
Moga Proは、フォーラムにOculus Goに繋げなくて困っている人の書き込みがありました。
これはその人の特有の環境によるものなのか、Oculus Goとコントローラーの相性によるものなのかは不明です。
他にも、8BitDoというコントローラーが正常に動作するという情報を何件か見かけました。
追記(2018/07/29)
ゲームパッドではなく、Oculus Go付属のコントローラーをもう一台追加したいと思っている人へ。
予備のコントローラーは公式サイトから購入することができますが、一度に接続できるのは一台のみのようです。
なので、Oculus Riftなどの高級なヘッドセットのように、両方の手にコントローラーを持って同時に使うといったことはできないようです。
www.oculus.com
#unity1week に参加した ~ギリギリ編~
こんにちは。
unityroom主催のUnity 1週間ゲームジャムに参加しました。
今回は第8回目の開催で、お題は「ギリギリ」でした。
Unity 1週間ゲームジャム | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう
今回はjun-kiさんとコンビを組んで参加しました。
jun-ki (@jun_3453) | Twitter
作ったゲームはこんな感じです。
#unity1week で作成したゲームが公開されました!https://t.co/vNDHJn9R2r
— きり (@KiliWare) 2018年6月10日
上司に見つかるギリギリまで隠れてゲームで遊ぶゲームです。
今回のゲームはjun-ki(@jun_3453)さんとチームで作りました。自分の担当は主に上画面です。ぜひ遊んでみてください! pic.twitter.com/412MqXHyye
1週間、どんなことを行なってきたのかをブログに記しておこうとおもいます。
1日目(月)
とりあえず二人で話し合って、作るゲームを決めました。
- トイレでギリギリ漏れそうな男性が、閉まっている個室を叩きまくる音ゲー
- 喫茶店で店員が怒るギリギリまで水を頼んで時間を潰すゲーム
- ギリギリなポッキーゲーム
みたいな変なアイディアばかりでました。
途中でjun-kiさんが発した、「QTEをゲームに取り入れたい」という意見を受けて、
「上司にギリギリ見つからないようゲームで遊ぶ」というゲームを作ることに決定。
(結局QTEとはちょっと違った形になりました)
開発にはGitとTrelloを使うことに決まり、とりあえずその日は環境を作って終了。
2日目(火)
この日から実際にゲームを作り始めました。
「上司から隠れるゲーム」と「ゲームの中のミニゲーム」の二種類のゲームが必要になったので、
私は後者の方を開発することになりました。
2~3時間くらい作業して、簡単なプラットフォーマーが完成。
今日はここまで #unity1week pic.twitter.com/2fqmZTXQ9c
— きり (@KiliWare) 2018年6月5日
このミニゲームも、端のブロックから端のブロックへジャンプすると高得点がもらえるという、
ギリギリ要素を入れています。
3日目(水)
3日目ですが、この日はとても眠かったので、あまり作業できず早めに寝てしまいました。
実はこの時期、夜あまり眠れなく、睡眠不足な日々が続いていたのですが、
この日はぐっすりと眠ることができ、割と気分は良かったです。
4日目(木)
前日たくさん寝たおかげで、気力が満ちていたので、5~6時間作業できました。
作業の途中で、こんな発見がありました。
Unityで、ここから四角とか三角みたいな基本図形のスプライトを作れることを今知った pic.twitter.com/v97KwdjE8c
— きり (@KiliWare) 2018年6月7日
それはともかく、私が作ったゲームの部分で、「ジャンプの感触が変」という指摘が入りました。
ジャンプの高さを、キーを押した長さによって変化させるような仕様だったのですが、
初速が足りず、気持ちがよくない感触になっていたようです。
ここがなかなか難しく、追加で実装した二段ジャンプを含め、結構なハマりどころでした。
5日目(金)
この日も眠く、あまり捗らず寝てしまいました。
6日目(土)
この日は午後からずっと開発をしていました。
その甲斐もあり、夕方くらいに、下画面との統合を行い、システム部分はほぼ完成しました。
会社で仕事をするフリをして、ゲームで遊ぶというゲーム。上司に見つかるギリギリで画面を切り替えるとスコアが高くなる。あとは見た目のみ! #unity1week pic.twitter.com/nX62RJO8Dc
— きり (@KiliWare) 2018年6月9日
それ以降は、見た目の部分や細かい手触りを整える時間になりました。
7日目(日)
最終日。タイトル実装や細かい見た目の作成などを行いました。
ゲームジャムに参加するときは、大体いつも時間が足りなく、
最終日には泣きながら必須の機能を実装するということが多かったのですが、
今回は割と余裕があり、タイトル画面など、細かい場所をいじることができました。
(それでも、もっと時間は欲しかったですが...)
この日までこのゲームのことを「上司ゲーム(仮)」と呼んでいたのですが、本番の名前を決める必要がありました。
タイトル案は「上司の居ぬ間にゲー活」と「ギリギリーマン金太郎」という二つの案が出ました。
前者は「鬼の居ぬ間に洗濯」のもじりで、後者は...(略)
最終的に、ゲームの内容を説明できている前者に決まりました。
そういうことで、ゲームが完成しました!
完成したゲームへのリンクはこちら
上司の居ぬ間にゲー活 | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう
以下、今回完成したゲームについて、
「工夫したこと」と「できなかったこと」を挙げておきます。
工夫したこと
・いらすとやの素材を加工する!
上司から隠れるゲームには、いらすとやの素材を使用しました。
プレイヤーの素材は、緑色の服を着た男性が白いパソコンで寿司のイラストを描いているものを使用したのですが、そのままでは使えなかったため、加工しました。
画像全体を黒っぽくすることにより、上画面の黒いパソコンと下画面の白いパソコンの色を合わせ、男性の画像を切り取り、服の色だけ変えたものを上から被せるようにしました。
これにより、スーツで仕事してるっぽい雰囲気を出せました。
パソコンの画面は、Render Textureというものを使用して、別の場所にあるミニゲームを撮影して映しています。
・仕事画面
仕事画面は、某OSっぽい感じに作りました。
ここに書いてあるコードは、私が書いて、実際にこのゲームで使われているクソコードです。
・操作の簡単さ/タイトルでのチュートリアル
操作方法はわかりやすくするため、二種類だけにしました。
- Zキーで仕事画面とゲーム画面の切り替え
そして、タイトル画面で、実際にその操作を行えるようにしました。
このゲームは、「ミニゲームで遊ぶ」と「上司から隠れる」という二種類のゲームが内包されており、
初見の人がいきなりこの二つを把握するのは難しいかなと思い、前者のゲームに慣れてもらうために用意しました。
分業して作っていたので、それぞれのゲームの依存性が低く、簡単に実装できました。
・ツイッター/ランキング機能
jun-kiさんが実装してくれました。
今まで時間がなくて、ランキング機能を入れたことがなかったのですが、追加できてよかったなと思いました。
私より高いスコアを取っている方もいて、驚いています...
遊んでいただいてありがとうございました...!
できなかったこと
・ミニゲームのエフェクト
全てのブロックを塗りつぶすとボーナスが入るのですが、
見た目上なんの演出もないので(音は違う音が鳴る)、わかりづらいかなと思いました。
積極的に全て塗りつぶしたくなるようなエフェクトや、加算されるスコアを表示したかったなと思っています。
・ゲームオーバー時の演出/リザルト画面
上司に当たると、即ゲームオーバー画面に入るのですが、
他の方のゲームを見ると、敵と当たった際に一瞬スローモーションにするなど、
「当たってしまった感」を出す演出があったりして、そういう演出を入れるべきだったなと後悔しています。
・上司の当たり判定の調整
上司の当たり判定は、赤いエリアに入ってくるとき以外はかなり緩くしています。
なので、上司が赤いエリアにいる状態でミニゲーム画面に戻しても、アウトにならずゲームが続行する場合があります。
これは意図的なものなのですが、どこまでアウトでどこまでセーフかが、プレイヤーにとってわかりづらいかなと思いました。
当たり判定を可視化したかったな〜と終わった後に思いました。
・ゲームバランスの調整
このゲームのテーマがギリギリということで、
上司がギリギリまで近づいているほど、ミニゲームで遊んでいるメリット(スコアの倍率が高くなる)があるようなゲームデザインにしました。
しかし、上司が発生する間隔や、ブロックが発生する間隔がランダムなので(ある程度の調整はしているが)、
いい感じにスコアを取れるかどうかが運任せになってしまうのが問題かなと思いました。
・設計
例によって私の書いたコードがクソコードだったので、
きちんと設計して綺麗なコードを書けるようになりたい...
思ったこと
今までゲームジャムには何回か参加していますが、今回は初のチーム参加ということで、得るものが多かったと思います。
なにより、最後まで完成させることができてよかったです!
次回のunity1weekにも参加しようと思いました。
(今度はデザイナーとか作曲家のような、プログラマー以外の人もチームに入れて参加とかしてみたい...!)