プログラミングで世界を変える

ゲームプログラミングと技術のこと

【イベントレポート】CEDEC2018に3日間 参加してきました。

f:id:splas_boomerang:20180901155744j:plain

あまり盛れてないトップ画

はじめに

CEDEC2018に行ってきました。 今年は20回目となる節目の年で、任天堂の宮本さんによる基調講演などがありました。 テーマは『空想は現実になる』ということで、VRやVTuber、AI系のセッションが注目されていた気がします。

この記事では、聴講した各セッションの感想をまとめたいと思います。 VRやインディーゲーム、描画系に興味がある人には役に立つと思うので、ぜひ参考にしてみてください。

基本的に感想は全部ツイートしたので、ツイートの埋め込みメインです。

続きを読む

Googleカレンダーの過去の予定を全て非公開にする

TL;DR

  1. Export hoge.ics
  2. sed -e 's/TRANSPARENT/OPAQUE/' hoge.ics
  3. sed -e 's/^CLASS:.*?$\n//' hoge.ics
  4. sed -e 's/(^UID:.*?$)/$1\nCLASS:PUBLIC/' hoge.ics
  5. Import hoge.ics

はじめに

f:id:splas_boomerang:20180817223521p:plain

誰かと予定を調整する時にいちいち空いてる日時のホワイトリストを作らなくても済むように、共有Googleカレンダーを作りたいと思いました。

そこで、折角なのでこの機会に自分の予定をすべてオープンにすることにしました。 Googleカレンダーには全体の共有範囲を、「非公開」「時間のみ公開」「全て公開」というように設定することが出来るので、「全て公開」に変更しようと思いました。

support.google.com

ここで一つ問題がありました。 今後登録する予定については公開前提ということを踏まえた上で登録できるし、もし差支えがある場合は個別に非公開に設定すれば良いです。しかし今までの予定は公開することを踏まえずに登録してきたものばかりです。そう大したことが書いてある訳ではないですが、公開することには抵抗があり、とはいえ削除してしまうのも可逆性の観点から微妙です。

そこで掲題のようにGoogleカレンダーの過去の予定を全て非公開設定に書き換えることにしました。

続きを読む

Hugo + GitHub Pagesでポートフォリオを作る

出来たもの

Nakaji Kohki https://nkjzm.github.io/

[f:id:splas_boomerang:20180610230627g:plain

urlの先の内容が変わって趣旨が伝わらなくならないようにするためのgif

github.com

はじめに

知り合いがGitHubにResume(職務経歴書)をまとめていて良さそうに見えた。

土曜日を1日使ってポートフォリオを公開してみた。

続きを読む

ARKitのFace Trackingを使った『私、転がります。』を作った

この記事はOculus Rift Advent Calendar 2017の11日目の記事です。

qiita.com

元ネタ

www.youtube.com

ポノスさんの『私、転がります。』という生首を転がして遊ぶゲームからインスピレーションを得ました。

作ったもの

www.youtube.com

※ ぜひ音量を出してご覧ください!

解説

ARKitのFace TrackingはiPhone Xで追加された前面のTrueDepthカメラ(depthセンサー)を使った機能で、顔の各部位を認識や追跡を行うことができます。

今回はその機能を利用し、自分の口の動きを認識して画面上の生首を操作するゲームを作りました。

開発環境

MacBook Pro (Retina, 13-inch, Early 2015) macOS High Sierra Unity 2017.2.0p2 XCode 9.2

作り方

まず、AssetStoreからUnity ARKit Pluginをインポートしておきます。 https://www.assetstore.unity3d.com/jp/#!/content/92515 (ProjectSettingが上書きされるので、はじめにインポートした方が良さそう)

f:id:splas_boomerang:20171212000512p:plain

Assets/UnityARKitPlugin/Resources/UnityARKitPlugin/ARKitSettings.assetsでチェックを入れないと実機で動かないので注意してください。

インゲームを作る部分は省略します。 マウス押下で生首が飛ぶようなシステムを作りました。 小さな力で右回転をかけてあげるところがポイントです。

f:id:splas_boomerang:20171211234532p:plain

口の状態を取得するためには、Blendshapeを利用します。

UnityARSessionNativeInterface.ARFaceAnchorUpdatedEvent にイベントを登録することで、Dictionaryから約50個ほどの状態を取得することができます。

ARFaceAnchor.BlendShapeLocation - ARFaceAnchor | Apple Developer Documentation

今回はjawOpenというキーを利用して口の動きを取得しています。 これは顎の状態を取得するイベントですが、今回の用途には合致していました。

jawOpen - ARFaceAnchor.BlendShapeLocation | Apple Developer Documentation

ちなみに当初はmouthClosemouthFunnelを利用しようと考えていましたが、うまく値を拾えませんでした。

mouthFunnel - ARFaceAnchor.BlendShapeLocation | Apple Developer Documentation mouthClose - ARFaceAnchor.BlendShapeLocation | Apple Developer Documentation

最後に

今回作成したプロジェクトは以下のリポジトリにpushしてあります。 github.com

ちなみに

ARKitRemoteという実機を繋ぐとUnityのEditor上でテストをできる仕組みが用意されていますが、遅延が酷すぎてビルドしちゃった方が効率がいいように思いました。(今回の規模なら1分くらいで実機ビルドできるので)

最後に

できればリアルタイムに今の自分の顔を転がすところまで作りたかったです。 ちなみに実際に声を出す必要もありませんが、出した方が楽しかったです。

以前DK2で頭を振り回すゲームを作ったのですが、今回のようにセンサーが増えると色々なインプットができるようになって幅が一気に広がるように思いました。

www.youtube.com

参考

ARKit+Unity ARKit PluginでFace Tracking - Qiita https://qiita.com/mybdesign/items/65a11d289c8fb5c4ae57

UnityARKitPlugin FaceTracking FaceBlendshapeで取得できるパラメーター - Qiita https://qiita.com/A_kkie/items/94c6cb0c290f04d55755