- ・ VR Quiz (VRゲーム) : 2019年夏
- ・ 水管理アプリ : 2019年春
- ・ 顔合成ガチャ(Face Swapping) : 2018年夏
- ・ Krlab Management System (研究室管理システム&電子マネー) : 2017年夏~2018年春
- ・ Change The World (VRゲーム) : 2017年春~夏
- ・ マッチムーブ : 2016年冬
- ・ その他
(制作物の数が増えてきたらページを分割します。)
VRQuiz (VRゲーム)
内容
2019年のオープンキャンパスで展示した作品です。
コンセプトとしては、最新技術のレトロゲーム、ということで昔ながらの絵作りをしています。
自動車のボンネットの上でクイズに回答して、正解すれば加速、不正解なら減速して、2ラップの早さを競います。 もともと助手席でクイズに答えて、運転席には教授が座っているとする予定だったのですが、作っている途中に助手席だと窮屈で面白くなく、さらに普通に酔ったのでボンネット上に変更しました。
クイズの問題マスタデータはサーバに置いてあり、ゲーム開始時にサーバからJSON形式で取得します。また、クリア後のタイムもサーバに送信されます。
下の画像は実際の展示の様子で、手持ちのノートPC片手にクリアデータを見ながら展示を紹介していました。
開発環境 | Unity 2018.4.2f1 Oculus GO |
---|
水管理アプリ
内容
研究室にはポットやコーヒーメーカーがあります。 このポッドやコーヒーメーカーに入っている水が何時変えられたものなのか知りたい!という要望から2019年の春に水管理アプリを作成しました。
RaspberryPi 3とタッチスクリーンを使用しています。機能としては、
- ・ いつ、水が交換されたのか
- ・ いつ、掃除されたのか
- ・ 交換、掃除の回数、日時などの統計をグラフ表示
があります。なお、ポットとコーヒーメーカーの2つの機器の情報を管理することが出来ます。
水を交換したらボタンを押す、機器を掃除したらボタンを押す、というシンプルな実装になっています。センサーを取り付けて自動化したいと思ったのですが予算が…。(ラズパイとスクリーンで1万円超え…)
ボタンを押すとPOSTがサーバに対して投げられDBに登録されます。
この機能だけだとあまり面白くありません。そこで、
websocketを使って、リアルタイムで水交換情報の更新を見ることができる機能
が付いています!(いらない)
ラズパイ内のアプリのプログラムはPythonで書かれています。タッチ動作を検出すると、機器情報と日時情報がHTTPリクエストとしてDBサーバに送られます。
この後に、redisのKVSにpublishされます。ラズパイ上で元々動作させていたnodejsがこのredisに対してsubscribeさせていて、受け取ったらwebsocketで通信している先に機器情報と日時情報を送信します。
ブラウザ上での表示は管理画面等でよく使われるBootstrapとChartjsを使用して仕上げました。
ラズパイのケースは友人に制作を依頼して作ってもらいました。
krlabでのブログ記事はこちら。
顔合成ガチャ(Face Swapping)
内容
2018年のオープンキャンパスで展示した作品。
Webカメラで撮影した画像の中にいる人物の顔を、有名人の顔に置き換えるプログラムです。
顔検出・特徴量計算を行い、『撮影画像から算出した特徴量』と『テンプレート顔画像から算出した特徴量』のノルムの差を取り、最も差が小さいテンプレート画像と合成しています。
※"顔合成ガチャ"という名前ですが、計算に基づく結果なので厳密にはガチャではありません。
出力は、『合成済み画像』・『誰と合成されたかの一覧表』・『配布用QRコード』の3つです。
オープンキャンパスでは、私物のペンタブレットのサブボタンにショートカットキーを割り当てて使用しました。
もしキー設定を変更する場合は各OSのキーコードを参照の上、プログラムのキーコードの部分の数字を書き換えればできます。
Github(ソースコード) : https://github.com/honkatsu/OpenCampus2018
開発環境 | Python 3.7.0 OpenCVなどライブラリ多数 |
---|
Krlab Management System (研究室管理システム&電子マネー)
※ 字幕付きで御覧ください。
内容
『研究室内でコーヒーを飲むときに毎回小銭を触るのは面倒だ!』との意見がこの制作のきっかけ。
高知工科大学の学生証がFeliCaであることを利用したシステムで、NFC機能付きのAndroidで動作します。
制作を進めていく中で、
- ・ 今、研究室に誰が居るのか(サインイン機能)
- ・ 今月最も研究室に来た人は誰か(ランキング機能)
などの機能追加を重ねており、現在もなお増築中。(コーヒー購入後にネコが鳴く等)
下図は、基本的なシステム構造を表しています。
Github(Unity側ソースコード) : https://github.com/honkatsu/KMS
Github(サーバ側ソースコード) : https://github.com/honkatsu/KMS_PHP
OneDrive(アプリ本体) : OneDrive共有
※普段はUnityのクラウドを使っているのでGitの更新ペースは低いと思います。
動作環境 | Android 7.1(Xperia Touch) |
---|---|
開発環境 | Unity 2017.3.1f1 (64-bit) |
システム構造について
プログラムに関しては書いてある通りなので、サーバとアプリのやり取りを中心に説明します。Unityで制作したアプリは上図のようなシーン遷移によって構成されています。
枠が青い場合は、NFC機能を使用するシーンであることを意味し、
枠が赤い場合は、管理者用パスワードを必要とするシーンであることを意味しています。
基本的には、DBからデータを取ってくるためにWebサーバ上の特定のPHPファイルを実行し、応答に則した出力を行っています。
セキュリティ対策としては、『アプリ側で設定したパーミッションデータ』と『サーバ内に置かれてあるパーミッションデータ』が 一致した場合にのみ、DBにアクセスするようになっています。他にも、SQLインジェクション対策として特殊記号のエスケープ処理も行っています。
サーバからアプリへの返答はechoコマンドを用いています。複数のデータを送る場合には、* を区切り文字とした文字列連結を行ってデータを1つにまとめています。 そのため、C#スクリプト内では配列(name = data[0], money = data[1]等)を用いた表現になっており少し読みづらいかもしれません。
ちなみにこれは、自作アミッドスクリーンに投影しており、この制作方法については機会があれば書きます。(4000円程度でできます)
Change The World (VRゲーム)
※ 字幕付きで御覧ください。
内容
Unityでの処女作。VR機器を使ったのも初めてであったため、想像以上に時間がかかった作品です。
内容としては、プレイヤーがHMD(Oculus Rift)を被り、
コントローラ(Oculus Touch, Xboxコントローラ)で操作し様々な風景を体験するといった旨。
メインのスクリプトファイルは1つだけということで非常に単純なゲーム。このゲームは、大学のオープンキャンパスで展示するために作られたので、 『1プレイが長すぎず、VR酔いも発生しにくく、そしてVRの魅力が伝わるゲーム』をモチーフに制作に当たりました。
操作方法は下図のようになっており、プログラムの大部分がプレイヤーの入力に対する応答となっています。
Github(ソースコード) : https://github.com/honkatsu/Change_The_World
OneDrive(アプリ本体) : OneDrive共有
動作環境 | Windows10 |
---|---|
開発環境 | Unity 5.6.x (64-bit) (2017では動きません) |
プログラムについて
初めてのUnityであったということもあり、不必要なアセット類も含まれているかもしれません。
『絶対に必要ないな…』と思われるものに関しては削除しましたが、まだ残っていると思います。
(例えば、Asset内のSceneデータ)
マッチムーブ
内容
ある日ふとAR的なものを作りたくなり、その関連技術を調べている中で出来そうなものを見つけて行ったのがマッチムーブ。
この頃はまだ大学1年生で知識面が非常に未熟であり(今もまだまだですが…)、こういった技術理論を学びたく大学の早期配属制度を用いて 画像情報工学研究室への配属を希望した、というきっかけの作品でもあります。
まず、MMDでモデルにアニメーションをつけ、Alembicで出力。その後、Mayaにてマテリアルの割り当てを行い、再びAlembicで出力。 それをゲームエンジンであるCryEngineで読み込み、ライティング等を調整し緑色背景でレンダリング。レンダリング画像群を Nukeに読み込み、ノードを組み出力。
作った頃はあまり意味がわかりませんでしたが、画像処理を学ぶにつれて"特徴量を抽出して処理しているのか"といったことが少しずつ分かってきたような気がします。
使用ソフト | MMD(MMDBridge) Maya2016 CryEngine5.3 NukeX Non-commercial スマートフォン(カメラ) |
---|---|
使用素材 | 暁改二(536様) 暁モーション(あー、とり様) パワプロ君&モーション(ジロー様) |
参考にしたサイト | http://ch.nicovideo.jp/kuroinari/blomaga/ar288976 (luna様) |
CryEngineは自然の表現(木や水)が非常に綺麗なので、好きなゲームエンジンです。
今ならAmazonのLumberyardの方が良いかもしれませんね。
その他
アミッドスクリーン
アミッドスクリーンをホームセンターの素材を使って作成。研究室内で鑑賞会を執り行う。(2018年春)
また、後日卓上アミッドスクリーンも作成。
参考にしたサイト : http://textalk.moe-nifty.com/amid/2012/05/post-66e6.html鑑賞会のブログ(2018年3月) : http://krlab.info.kochi-tech.ac.jp/?p=1596
使用動画 : https://youtu.be/DDvdujAqIEc
授業課題など
基本的には非公開なので、概要だけ紹介。
- ・ RaspberryPiでの音楽プレイヤー(アセンブリ言語)
- ・ Processingを用いたゲーム制作課題(学年1位)
- ・ マインスイーパ制作課題(Java)
- ・ C言語を用いた基本的な学習