THETA Sをブラウザから操作し、無音で写真を撮る
はじめに
この記事はRICOH THETA Advent Calendar 2015の13日目の記事です。
自分は歴代のTHETAをすべて持っているTHETAファンです。
左からTHETA S, THETA m15, THETAです。
今回はTHETA SをPCと接続し、ブラウザから写真を撮る方法を解説します。
それだけではツマラナイので、THETA Sのシャッター音を無音化します。
シャッター音を無音化しますが、決して盗撮等には利用しないでください。
また、一度無音に設定すると、再度音量を上げた設定にするまで無音状態が続きます。
キュイっていうシャッター音がカワイイ感じで好きなので、自分は音量あり設定で使用しています。
PCとTHETAを接続し、HTTP通信してみる
THETAのアドベントカレンダー用の記事どうしようかなーって考えながらネットサーフィンしてたときに、こんなChromeの拡張を見つけました。
コレ使ったら、THETAに簡単にアクセスできる!って思ったので、使ってみます。
- Google Chromeをインストールする
自分は普段からChrome派です。
他のブラウザはほとんど使いません。 - Chrome拡張『Advanced REST client』をChromeに追加
Advanced REST clientをクリックし、CHROMEに追加ボタンをクリック
- THETA SとPCをWi-fiで接続する
接続方法がわからない場合はTHETA Sの接続方法のサイトをご確認ください。
スマホとTHETAの接続方法について書かれていますが、PCとTHETAの接続方法もやり方は同じです。
- Advanced REST clientアプリを起動する
- 下記の設定を行う。
- URL
http://192.168.1.1/osc/commands/execute
- POSTを選択
- Payload
{ "name": "camera.startSession", "parameters": {} }
- Set "Content-Type" header to overwrite this value.でapplication/jsonを選択
- URL
- Sendボタンをクリック
画面下にレスポンスが表示され、下記のようにデータが取得できることがわかる
{ "name": "camera.startSession" "state": "done" "results": { "sessionId": "SID_0001" "timeout": 180 } }
PCのブラウザから写真を撮る
PCのブラウザとTHETA Sの接続ができたので写真を撮ってみます。
- 下記の設定を行う。
- URL
http://192.168.1.1/osc/commands/execute
- POSTを選択
- Payload
ここのsessionIdは『PCとTHETAを接続し、HTTP通信してみる』の最後でレスポンスとして取得したsessionIdを設定する必要があります。
{ "name": "camera.takePicture", "parameters": { "sessionId": "SID_0001" } }
- Set "Content-Type" header to overwrite this value.でapplication/jsonを選択
- URL
- Sendボタンをクリック
『キュイ』と音が鳴り撮影が行われます。
画面下にレスポンスが表示され、下記のように処理が進んでいることがわかります。
{ "name": "camera.takePicture" "state": "inProgress" "id": "1" "progress": { "completion": 0 } }
これでPCのブラウザからの写真撮影が可能です。
このあとは、PCやスマホとTHETA Sを接続し、写真を確認することができます。
THETA Sのデフォルトの音量設定調べる
THETA SのAPI一覧を確認すると_shutterVolumeというAPIがあり、これでシャッター音の調整が出来そうです。
まずはじめにシャッター音のデフォルト値を調べておきます。
後でシャッター音量を戻せるようにするためです。
無音化したいだけの人は読み飛ばしてもらって構いません。
- 下記の設定を行う。
- URL
http://192.168.1.1/osc/commands/execute
- POSTを選択
- Payload
ここのsessionIdは『PCとTHETAを接続し、HTTP通信してみる』の最後でレスポンスとして取得したsessionIdを設定する必要があります。
{ "name": "camera.getOptions", "parameters": { "sessionId": "SID_0001", "optionNames": [ "_shutterVolume" ] } }
- Set "Content-Type" header to overwrite this value.でapplication/jsonを選択
- URL
- Sendボタンをクリック
画面下にレスポンスが表示され、下記のようにデータが取得できる。
シャッター音のデフォルト値は100であることがわかる。
{ "name": "camera.getOptions" "state": "done" "results": { "options": { "_shutterVolume": 100 } } }
THETA Sのシャッター音を0に変更し、無音化する
無音THETA Sを作ります!
- 下記の設定を行う。
- URL
http://192.168.1.1/osc/commands/execute
- POSTを選択
- Payload
ここでシャッター音量を0に設定します。
ここのsessionIdは『PCとTHETAを接続し、HTTP通信してみる』の最後でレスポンスとして取得したsessionIdを設定する必要があります。
{ "name":"camera.setOptions", "parameters": { "sessionId":"SID_0001", "options": { "_shutterVolume":0 } } }
- Set "Content-Type" header to overwrite this value.でapplication/jsonを選択
- URL
- Sendボタンをクリック
画面下にレスポンスが表示され、正常に設定が完了したことがわかる
{ "name": "camera.setOptions" "state": "done" }
この設定が完了後、『PCのブラウザから写真を撮る』で解説した手順で写真を取ると無音で写真を撮ることが出来ます。
セッションを終了する
使ったセッションはキチンと終了しましょう。
- 下記の設定を行う。
- URL
http://192.168.1.1/osc/commands/execute
- POSTを選択
- Payload
ここのsessionIdは『PCとTHETAを接続し、HTTP通信してみる』の最後でレスポンスとして取得したsessionIdを設定する必要があります。
{ "name": "camera.closeSession", "parameters": { "sessionId": "SID_0001" } }
- Set "Content-Type" header to overwrite this value.でapplication/jsonを選択
- URL
- Sendボタンをクリック
画面下にレスポンスが表示され、正常に設定が完了したことがわかる
{ "name": "camera.closeSession" "state": "done" }
これでシャッター音が無音のTHETA Sの完成です。
追伸
冒頭にも書きましたが、シャッター音量の設定を行うまで無音になります。
音量を元に戻す場合は『THETA Sのシャッター音を0に変更し、無音化する』の手順で、音量を100に設定してください。
{ "name":"camera.setOptions", "parameters": { "sessionId":"SID_0001", "options": { "_shutterVolume":100 } } }
THETA Sでは他にも様々な設定ができます。
詳細はAPI v2 Reference (RICOH THETA S)をご確認ください。
明日の担当はpafuhana1213さんの『Thetaはフィギュア撮影の夢を見るか?』です。
Unreal Engine 4.10.1でLeap Motionを使う
はじめに
この記事はUnreal Engine 4 (UE4) Advent Calendar 2015の13日目の記事です。
今回はUE4でデフォルトサポートされているLeap Motionの使い方の記事です。
非公式プラグインを使ったLeap Motionの使い方の記事は多いのですが、公式を使ったLeap Motionの使い方の記事は少ないので書いてみます。
UE4でLeap Motionを扱う
かなり簡単に出来ます。
- Leap Motion Controller Actorを探す
- Leap Motion Controller Actorを追加し、いい感じの位置に配置する
- プレイ!
はい。もう手がでました!
簡単!
素晴らしい!
Leap Motionの情報をBlueprintからアクセスする
- LeapMotionControllerActor1をBlueprint化する
場所やファイル名は適当です。
- 作成したBlueprintを開き、LeapMotionControllerComponentを開く
- 詳細の下の方にあるイベントのOn Hand Added、On Hand Removed、On Hand Updateedを追加する
- 下記のBlueprintを作成し、動作確認
- プレイし、手が増えるとき、手が減るとき、手が出ている間にログが出ていることを確認する
Blueprintから手の位置情報を取得する
- 下記のようにBlueprintを作成してください
- プレイすると、手のひらの位置情報を表示し続けます
- 今回はGet Bone ActorでPalmを選択したため手のひらの位置情報を取得していましたが、他のものを選択するとそれぞれの関節の位置情報を取得できます
Blueprint Referenceには他にも色々と使い方が載っています。
詳しくはそちらをご確認ください。
追伸
今回は簡単な説明だけとなりましたが、実際にLeap Motionを使う場合は色々とクセが強いので対応が大変になります。
特に難しいのはLeap Motion内だけで独自の座標系があるのではないかという挙動が見られます。
Leap Motionを使う際はテストプロジェクトを作って、必要としている要素ができるかどうかを確かめてからの使用をオススメします。
明日はmenononさんの『UE4で科学可視化やってみよう ~ジオメトリキャッシュ』です
Eclipseの設定を変更してコーディング速度をあげる
ゲームプログラマーになる前はEclipseでAndroidアプリを作っていました。
コーディング速度をあげるための設定をイロイロとしてましたので、それについて書きたいと思います。
やり方を解説されているブログ記事の紹介だけですが、これをやっておくだけでコーディング速度がまったく違います。
むしろこの設定を行っていなかったら、以前の職場での業務量は行えなかったです。
- 「.」以外でもEclipseの補完機能を使えるようにする
あらゆる文字から補完できるようになります。
自動有効化遅延(補完機能が有効になるまでの時間)は80に設定していました。
- Eclipseで使用するメモリの上限をあげる
メモリに余裕があれば、設定しておくことでEclipseがサクサク動くようになります。
- Android標準またはJava標準のコードフォーマッターを入れる
これをチーム全体で行うことでコードフォーマットが統一され、ソースコードが読みやすくなります。
Androidアプリを作っていましたので、Android本家のフォーマッターを使ってました。
Android本家のフォーマッターを使ってコードを整形してみる. - Labo Memo
Java本家の方が良い方はこちらから取れるようです。
- Eclipseの保管アクションを設定して、保存時にコードフォーマットとimportが設定されるようにする
ソースコードを保存する度にコードフォーマッターがかかって、いい感じにソースコードを読みやすくしてくれます。
プログラムを書く時はインデントを気にせずに書いて、保管アクションのコードフォーマットにまかせていました。
- Eclipse上からSVNを扱うプラグインSubclipseを入れる
以前の開発のバージョン管理がSVNだったため、Subclipseを使用していました。
SVNだとTortoiseSVNを使用されている方も多いと思いますが、Subclipseの方がEclipse上でSVN管理が出来て便利です。
- エディタ行番号表示
ほとんどの方がやっているハズ
- tabでスペースを挿入
tabとスペースは紛らわしいのでtabは自動でスペース4つになるように設定していました。
チーム全体での設定が必要です。
- 改行・タブ・半角スペース・全角スペースの可視化
全角スペース大嫌い(笑)
不具合の原因になりがちなので、可視化してます。
クラウドサービスプラットフォーム Cosminexus:Eclipse 3.7以降のエディターでは、空白表示を細かく指定できます:ソフトウェア:日立
- Eclipse日本語化
やってる人多いはず。
- 補完候補を使用頻度順に表示する
やり方探してて、今までのまとめ記事みたいなのが引っかかって、ちょっとショックでした。
ここで書かれている他の設定もオススメですね。
- Spotlightとのショートカットバッティングを解消(Macユーザーのみ)
Eclipseで最もよく使うと言っても過言ではないコード補完のショートカット
Ctrl + Spase
がMacのSpotlightのショートカットと被っていて、問題があるんですよね。
自分はSpotlightのショートカットを使えなくする設定にしてました。
Eclipseのコード補完のショートカットキーを変えてしまうのも良いと思います。
- Androidのログの表示最大値を変更する
Androidの開発に限った設定です。
初期設定だとLogCatのログがすぐに流れてしまって見えないことがあるため、最大値を大きく変更する
- Eclipseでgetter/setterを自動追加する
設定ではないのですが、こんな機能もありますよという紹介です。
クラウドサービスプラットフォーム Cosminexus:Eclipseでgetter/setterを追加するには?:ソフトウェア:日立
- オーバーライドメソッドの自動生成
設定ではないのですが、こんな機能もありますよという紹介です。
以下、やったことなかったけど、調べてるうちに見つかった便利そうな設定
- 行の途中で";"、"{"を入力した際に行末に追加する
面白そうな設定ですね。ちょっと気になる。
- フォントとフォントサイズの変更
自分はデフォルト派なのですが、フォントを変えてプログラムを見間違えにくくしてる人もいましたね。
- 背景色やテーマの設定
自分はデフォルト派なので変えてないです。
IMEの環境は白派と黒派でわかれますよね。
- eclipseで自動フォーマットしたときに勝手に改行させない方法
デフォルトではフォーマットした時に80文字で改行されるのですが、改行させないことも出来ます。
ただ、横に長いと読みづらいため、80文字で改行すべきだと思っているので設定しませんでした。
他にもイロイロと設定してた気もするなぁ。。。
ちょっと忘れちゃってます。
他にもオススメの設定があったら教えて下さいー。
あと、ショートカットも駆使してました。
ショートカットキーを駆使し、コーディングに差をつけよう[Java,Eclipse] | キャスレーコンサルティング 技術ブログ
ショートカットキーは使えるとコーディング速度が上がるので、
付箋などにメモしておくと良いと思います。
ここに載ってるショートカットはほとんど覚えてました。
あー、Jacadocの自動生成は覚えてなかったですね。
メソッドの1行上で「/**」と打ってエンターキーを押せば自動生成されるので、そっちの方が覚えやすいと思います。
追伸
Visual Studioでタブ、全角空白、半角空白を可視化する
Visual Studio 2013での設定です。他でもできると思います。
- カスタマイズ前とカスタマイズ後
これが今回見た目のカスタマイズを行う元になるソースコードです。
これがカスタマイズ後です。
僕は普段からタブ・空白は可視化した状態でプログラムを書いています。
タブは→
全角空白は・
半角空白は・
で表示されます。
特に全角空白と半角空白が違って見えるのが良いです。
human.cppの文字列を表示する部分の処理で
”・消去”、”・人です"、":・Hello"となっており、
全角空白と半角空白が混ざっているので、
バグがあるということがひと目でわかります。
プログラムは
の設定後のソースコードを使っています。
メンバ変数の色を既に変えてます。
- 方法
- 編集→詳細→スペースの表示をクリック
UE4でアニメーションを行う
敵に弾を当てた時に、敵が倒れるアニメーションを再生するという処理を作ったので、
その時の作業解説です。
出来上がるのはコレ。
#UE4 クマシューティング https://t.co/rzfAwBsH3z
— 暇人(ゲームプログラマー) (@hima_zinn) 2015, 11月 8
- FirstPersonで新規プロジェクト作成。
今回はUE 4.9.2を利用しています。
- Infinity Blade: Adversariesを作成したプロジェクトに追加
- Blueprintフォルダ作成
- アニメーションBPを追加
- 親クラスAnimInstance、ターゲットスケルトンBear_Export_Skeleton選択
名前はAnimBlueprint_Bearにしました。
- AnimBlueprint_Bearを開いて、Resultを引っ張ってAdd New State Machine...を選択
名前はState Machine Bearにしました。 - State Machine Bearを開き、Entryを引っ張って、ステートを追加を選択
名前はIdleにしました。
-
Idleを開き、アセットブラウザのExoGame_Bears_IdleをIdle(ステート)内にドラッグアンドドロップ
- Resultと繋いで、コンパイル
ここでクマが待機モーションで動いていたら想定通り。
- 倒れるアニメーションを入れる前に、レベル上に待機モーションのクマを出します。
ブループリントクラスを追加
親クラスはCharacter
名前はBlueprint_Bearにしました - Blueprint_Bearを開き、MeshのスケルタルメッシュにEnemy_Bearを設定
- AnimationにAnimBlueprint_Bearを設定
設定後、コンパイルするとIdleモーションが再生されていればOK
- ヨー値に270度を入れておく
- トランスフォームのロケーションZを-80.0に設定
- CapsuleComponentのシェイプの高さとカプセル半径を80.0に設定
本当は球にした方が良いけど、今回はカプセルのまま使ってます。
- レベル上にBlueprint_Bearをドラッグアンドドロップし、向きを修正する
- プレイするとIdleモーションを繰り返すクマが表示される
- AnimBlueprint_BearのState Machine Bearを開き、Death_2ステートを追加する
- Death_2ステートを開き、ExoGame_Bears_Attack_Death_2とResultをつなげる
設定のLoop Animationのチェックを外す
このチェックが付いていると、クマが死亡するアニメーションが繰り返し表示されます。
- IdleからDeath_2のルールをダブルクリック。
文言はUE4が間違ってる。
- マイブループリントで変数を追加
- Integer型のLifeにして、コンパイルする
- Lifeをドラッグアンドドロップし、ゲットを選択
- 0以下と比べるようにしてつなげる
ここでコンパイルするとクマが死ぬアニメーションが再生される
- Lifeのデフォルト値を1に変更する
- Blueprint_Bearを開き、Integer型の変数Lifeを追加してコンパイルし、デフォルト値を1にする
- CapsuleComponentを右クリックし、イベントを追加、OnComponentBeginOverlapを選択
-
ボールがあたった時にライフが0になるように設定する
- FirstPersonBPのBlueprintにあるFirstPersonProjetctileを開く
- Sphere Collisionを追加
- シェイプのサイズを適当な値に設定
今回は22にしました。
- AnimBlueprintのイベントグラフを開く
- Try Get Pawn OwnerのRetuen Valueを引っ張り、Cast To Blueprint_Bearを選択
- As Blueprint_Bearから引っ張り、GetLifeを選択
- マイブループリントの変数Lifeをドラッグアンドドロップし、セットを選択
- 図のように各ノードをつなぐ
- プレイ
うまくいっていれば、弾があたった時にクマが倒れてくれるハズ!
UE4の解説ってキャプチャが多くなって大変。。。
今回はOnComponentBeginOverlapを使って当たり判定を取りましたが、本当はApplyDamageとEvent Any Damageを使ったほうが良いです。
Oculus Rift 勉強会 関西 #02 【OcuBen関西】
Oculus Rift 勉強会 関西 #2 で発表してきました。
発表資料はSlideShareで公開しています。
Oculus Rift 勉強会 関西 1回目に引き続き、2回目でも発表させてもらいました。
ちなみに1回目の資料もSlideShareで公開しています。
togetterはこちら。
発表についてですが、
1つ目の発表が固めの発表だったので、
その空気を壊して笑える空気感にするのが大変でした。
自己紹介でQRコードを使うネタは使わないつもりでしたが、あまりに空気が固かったので直前に資料修正して入れました。
理由は固い空気感で発表をやりたくないからです。
全ての人間が『楽しい事が好き』だと思っています。
なので、『勉強も楽しい方がいいに決まっている』というのが自分の考え方です。
社外発表は何度も経験がありますし、100人規模で喋るのも3回目だったのですが
やっぱり緊張しますね。
笑いは取れたし、評判も良かったみたいで良かったです。
実は当日の朝4時半まで資料が完成してなかったので、ほぼ発表練習なしでプレゼンしてました。
金曜日には8割以上できていて前日に仕上げだけのつもりでした。
実際には土曜日にイロイロこだわってしまい、ギリギリまで資料を作っていました。
(こだわったのは主にネタ部分ですw)
もう少し発表練習の時間取れるようにした方が、もっと良い発表ができたんじゃないかと反省中。
次回以降に活かします。
今回の勉強会はバランスよく網羅された発表になっていたなと思ってます。
初心者向けも上級者向けもあったので、聞きに来たほとんどの人がどれかの発表は興味を持って聞けたと思います。
特に同じ内容でUnityとUnreal Engine 4のどちらも解説がされるというのが凄いなと思いました。
Unityだとこの設定、Unreal Engine 4だとこの設定という様な形です。
自分も含めて3人が両ゲームエンジンでの設定・実装方法を説明していました。
今後の勉強会でのデフォルトスタンダードになったら資料作るの大変だなぁとか考えたりしてました。
追伸
発表資料の作り方ですが、毎回『見やすいプレゼン資料の作り方』を参考にさせていただいています。
自分の発表のしやすさもあるので一部は守れていない部分もありますが、
なるべくこれに準拠して資料を作ってます。
発表資料を作成する時にとても参考になるので、一度目を通しておくことをオススメします。