zawazawa雑記

Unity + ARkit + MMDモデル + MMDモーションの実現

現実とバーチャルを横断したい

今回、習いたてのUnityでタイトルにあるものを作ってみました。 結構ハードル高かったですが、色々な記事を参考にして作りました。

目標

Unity上でMMDモデルとMMDモーションくっつけてそれをARkitで現実世界に召喚しよう!

動作環境

  • macOS 10

  • Unity 2017.4.2

  • iPhoneX iOS 11.3

参考サイト

お借りしたもの

手順

全体の流れとしては、

  • UnityのARkitプラグインをimport

  • お好きなMMDモデルとモーションデータ(vmdファイル)をproject内に移動

  • MMD4Mecanimパッケージをimport

  • MMDモデルとモーションデータをUnity上で動かせるようにMMD4Mecanimで変換(fbxファイルの生成)

  • アニメーションの作成

  • ARkitに対応づけ

です。以下で細かく見てみましょう。

  1. まずARkitプラグインをAssetStoreからimport しましょう。Freeです。素晴らしい。

    f:id:zawazawahtn:20180608010024p:plain

  2. お借りしたキズナアイMMDモデルもフォルダごと持ってきてしまいましょう。

  3. 次にいきなり厄介なのですが、MMD4Mecanimをimport します。どうもこの手順が一癖あるようで(バージョンにもよると思いますが)、丁寧にやっていきます。

  4. まず現時点で最新版のMMD4Mecanim_Beta_20180523のpackageを全てimportしてきます。次に、MMD4Mecanim_Beta_20160815PMX2FBXの項目のみをimportします。こうしないとMMDモデルからUnity上で扱えるFBX形式のモデルに変換が出来ないようです。↓のような具合になると思います

    f:id:zawazawahtn:20180608101908p:plain

  5. ではここからfbxモデルの生成に移ります。キズナアイフォルダの中にkizunaai.MMD4Mecanimというものが出来ていると思うので、規約に同意の上、動かしたいモーションをVMD欄にD&Dしてprocess

    f:id:zawazawahtn:20180608102555p:plain:w300 f:id:zawazawahtn:20180608102704p:plain:w300

  6. 無事fbxモデルが生成されると、指定したパスにモデルが出来上がります。

  7. これをやる必要があるのか検証してないですが、モデルのRigをHumanoidに設定してApplyするとエラーが出る箇所があります(Genericでも動くらしい?)。importメッセージを見ると、joint_hidariteoyayubiが 重複して参照されてしまってるよ、という事なので、configから実際に見てみるといかにもえらってそうな赤が見つかります。これを右手のものと比べながら正しいもの(joint_hidaritekubi)に設定してやると、解消できました。

    f:id:zawazawahtn:20180608113827p:plain:w300 f:id:zawazawahtn:20180608113832p:plain:w300

  8. ここへきてようやくモデルをsceneに移します。各自の嫁を召喚しましょう。HitCubeの子の位置に持ってきてやります。

    f:id:zawazawahtn:20180608182312p:plain

  9. あとは自由にチューニングしてください。自分の場合、このままではモデルが小さすぎると思ったのでscaleを3倍の3に設定して、HitCubeも邪魔なので消しました。あとocclusionも表現したかったので、GereratePlanesオブジェクトのPlane Prefabdebug planeだったものをocclusion planeに変更しました。これによってカメラから検出した平面にモデルが重なったらモデルを隠してくれるようになります。

出来上がり!

おわりに

ARkit2.0が発表されましたね!縦平面の検出とか状態保存とか端末同期とかで実現できることがたくさんありそうでワクワクします!(まだベータ版ですが)

【Unity】始めました

遅ればせながら感がすごい

VR/AR方面の研究や活動をしようとするとやっぱり必要になってくるというか、便利になってくるものがUnityですよね。

自分も今更ながらやり始めました。お手柔らかに。

参考書ベースでやります

 これを読み進めながらやっていきます。

Unity5 3D/2Dゲーム開発実践入門 作りながら覚えるスマートフォンゲーム開発

Unity5 3D/2Dゲーム開発実践入門 作りながら覚えるスマートフォンゲーム開発

 

 

やったこと

今回はこの参考書のChap3に書かれている内容を元にゲームをUnityで作成し、実際に実機(iPhoneX)で動かしてみるところまでやりました。

 

実機に転送する

踏まなければいけない手順がいくつかあります。まずビルドの流れですが、

Unityでビルド(プラットフォームをiPhoneにswitchした上で) => ビルドして作成されたフォルダからXcodeプロジェクトを開く => Xcodeから実機に移す

 

この際に困ったことを数点挙げます

 

・エラー箇所

ビルドしたプロジェクトをXcodeで開くとこのようなエラーが出ました。

f:id:zawazawahtn:20180530121025p:plain

 

自分の場合、これはiTunesを開いていたので発生してしまいました。

 

おしまーい

だいぶ雑な内容を書いてしまった。反省。

それにしてもこの参考書は結構役に立って、最低限必要な知識は付けさせてくれるように思います。

次回は面白い内容なので文章の方も頑張って書きます(いつも途中からめんどくさくなってしまう)。

 

【論文紹介】すごいと思った機械学習の論文

概要

Neural Best-Buddies- Sparse Cross-Domain Correspondence

著者:Kfir Aberman, Jing Liao, Mingyi Shi, Dani Lischinski, Baoquan Chen, Daniel Cohen-Or

こちらの論文を読みました。 これは、cross-domainな2つの画像のマッチするポイントを高精度に導出してくれる手法です。 たとえ入力した2つの画像同士の詳細な形や色、姿勢が違っていても、下の図のように対応点を示してくれます。

f:id:zawazawahtn:20180601185356p:plain

アルゴリズム

ざっくり言うと、下の図(a)の左下のような"深い"層から、2つの画像の"意味的"に一致する箇所(仮にpとする)を導出します。それを"浅い"層に持ち上げていくに従って点から面に範囲の広がったpに対してまた更に一致する箇所を導出していく、といった感じです。浅い層に行けば行くほど”意味的”な一致からエッジやコーナーといった"形式的"なシフトする、みたいな記述もありました。

f:id:zawazawahtn:20180601190529p:plain

すごいと感じた点

単純に、これだけの精度が上がると実現する社会実装の数が(image morphingの分野において)前例がないだろうと思いました。要するにこの技術に触れるユーザー数的な観点でインパクトが大きい、という意味です。

image morphingやHybridizationとcross-domain correspndenceは深く関わり合っています。以下に論文中で紹介されていたアプリケーションを示します。 画像全体のmorphingはもちろん、画像間の対応点も高精度に導出できているので、任意の範囲でのmorphingも可能になっています。

f:id:zawazawahtn:20180601191939p:plain

【VRChat】始めました

なんか流行ってるっぽい

f:id:zawazawahtn:20180531134831j:plain:w100

VRChatが巷(少なくとも自分のSNSではその流れが来てる)で流行ってるっぽいので自分も始めました(まだ遅くないはず...)。

そもそもVRChatとは

自分の知ってる限りで記述すると

  • ジャンルとしてはメタバース(meta + universe)と呼ばれるものらしいです

  • 自分はアバターになってWorldと呼ばれる仮想空間上で行動し、あれやこれやするといったコミュニケーションプラットフォームです

  • 要するに"Second Life"的なものです、やったことないから知らないけれど

参考にさせていただいたサイト

VRChat 日本wiki

こんな感じでアバターが作成されます。画像はUnityちゃん f:id:zawazawahtn:20180531140747j:plain

世界中の人がいるthe Hubと呼ばれるworldです。コミュニケーションはVoiceのみでtextベースのやり取りはできないみたいでした。 ちなみに自分はここでデッドプールにりんご食べさせてもらったり、虹色ミクにひたすらハート投げつけてたりしました(友達になりたかった)。 f:id:zawazawahtn:20180531140752j:plain

おわりに

今回は単に使ってみたってだけの記事でした。次は

  • 3Dモデルを実際に作る

  • HMDをかぶった上で遊んでみる(今回はPCディスプレイで遊んだ)

をやってみようと思います。

ちなみに某フリマアプリの研究開発?部門がVRChat上での採用面接活動を開始したみたいですよ笑

エンジニア向け2018夏インターンまとめ

神まとめです

大学の知り合いからこんなものをもらったので、せっかくなので共有・発信しておきます。(おそらくネットに載せて大丈夫だと思われる)

以下のGoogleスプレッドシートを参考に↓

docs.google.com

みなさん良い夏を。

[WordPress]MAMPで無料テンプレートを使ったHPを作ってみた

2018年の3分の1が終わりました

こんにちは、もう5月です。

機会があったので今更ながら、Wordpressのテンプレを使ったHPを作ってみました。 結論から言うと、コツさえ掴めば割と簡単にHP作れて良さげだな、って感じです。

そしてやはりHPを管理するにあたって、やはりローカル環境を構築したくなりますよね。そこで今回はMAMPを使ってみました。 MAMPはwebサーバを用いずに、自分のPCを擬似的なサーバとしてローカルでwordpressを使えるようにするやつです。 基本的に参考サイトの流れで良いが、詰まったところを記述します。

参考にしたサイト

MAMPを使ってローカル環境にWordPressをインストールする方法

ローカルで管理するのに必要なツール

MAMPの構築

f:id:zawazawahtn:20180501173355p:plain:w100

基本的に参考サイトの流れで大丈夫ですが、詰まったところとか差異のあった箇所を記述します。

  • おそらくverの違いで、preferenceから開いて設定します
  • ポート設定の時に、8888を使ったら「既に使ってるからダメだよ」と言われたので「ApacheMySQL のポートを 80 と 3306 に設定」を選択
  • document rootはデフォルトだとアプリケーション>MAMP>htdocsになりますが、githubで管理させたかったので、gitと連携させたディレクトリのwordpressを格納するディレクトリを用意し、選択

wordpressをローカルレポジトリで展開

document rootに設定したディレクトリにwordpressのファイルを全コピペする。 MAMPからサーバを起動させるとDB設定に移るので、適当な名前のDBを作成する。

Templateをwordpress内に配置

wp-content/themes/内に選択したテンプレのフォルダを設置

最終的にこのようなディレクトリ構成になりました f:id:zawazawahtn:20180501171752p:plain:w300

おわりに

以上でサクッと終わらせます。

HTMLとかCSSとかの基本的なwebコーディングの知識さえあればテンプレートのphpファイルもいじれます。

某大手総合コンサルのIT部門の人にOB訪問してみた

さて、雑記です。

先日、機会があったのでITコンサルタント(Tさん)のお仕事をしている方に連絡をとってOB訪問させていただきました。OB訪問1人目です。 そこで話したあれやこれやについて書きます。

おそろしく雑なOB訪問申請

f:id:zawazawahtn:20180425164634j:plain:w350

コンサルことはじめ

そもそも自分は「コンサルって何やるの?そもそも必要なの?」というところから入ったド初心者でした(ここでコンサルタントに殺される)。 そしてこのバカ失礼な質問をしてしまいました。そこでTさんはこのバカ失礼な質問に嫌な顔一つせず答えてくれました。

コンサルが必要な理由は3つある。まず、クライアントに時間がなくて、時間をお金で買う場合。次に、クライアントにそもそも知識がない場合。最後に...

3つ目忘れちゃいました。とここで、私はまたもバカ失礼に「なるほど。ってことは2つ目に関しては、ググればわかることをわざわざお金かけて人に頼んでるってことは、クライアントは自分より頭悪いってことでしょ?一緒に仕事してて楽しい?」という爆弾を投下しました(ここでクライアントからも殺される)。

これに対して、

クライアントは自分のドメインに特化していうる反面、外部からの視点というものが不足している。戦略とか新規事業提案とか、ドメインに凝り固まった脳ではそれを絞り出せない。それを補うためにコンサルがいる。

とのこと。なるほどなあ。さらに

コンサル側は逆にドメインについて詳しくないから依頼を受けたら必死でリサーチする。業務のうちの1割が会議、1割が資料作り、8割がGoogle検索だよ。

ともおっしゃっていました。もはやGoogle社員より検索回数多そうだな...

コンサルの種類

無知な私もこれでコンサルの実態が掴めてきました。次に気になるのが、その種類です。 そもそも、コンサル会社と呼ばれる会社は3つに分けられるとのことです。それは

  • 戦略コンサル
  • 総合コンサル
  • 専門コンサル

です。確かに**戦略コンサルとか**総合なんちゃらとか聞いたことある。というのも、コンサルは

戦略 -> 計画 -> 実行 -> 運用

という流れで業務が発生していて、戦略部分のみを行う会社が戦略コンサル、一連の流れを包括的に行う会社が総合コンサルって感じだそうです。

雑談

あとはまあ雑談です(疲れてきた)。

  • 攻めのITと守りのITがあること
  • 年収は最初は500くらいで30代では1000超えること
  • メディアは読んでおくこと
  • 事業会社のやってることが羨ましい
  • コンサルでもコーディングする部署はあること

とかとか。最後の方雑になっちゃいました。

とりあえず、美味しいご飯をありがとうございました!!!

次は誰にOB訪問しようかな!!!