あるみにメモ

技術的なメモをかくかもしれない

Unityでキズナアイ(Vtuber)を動かしたい-2-(歩く編)

前回の続き。

aluminum-pepe.hatenablog.com

今回はUnity内で「キズナアイが動かせたら最高でしょ!!!!!」という話です。

Mecanimにアニメーション適応して動かすのはUnityのお話

初心者だったけどキズナアイを動かしたい一心でそれなりに動かせるようになったあるみにの軌跡。


まずは前回記事の状態から。


f:id:aluminum_pepe:20180619013653p:plain


?なんか美少女がいるな……!

キズナアイちゃんだ!!!(茶番)


Unityでキズナアイを動かしたい

タイトル回収(゚∀゚)キタコレ!!

UnityにMMDデータをインポートし、キズナアイが降臨なされたので、今度は実際に動かしたい。

同じくMMDのモーションのデータ(vmd)をキズナアイに適用して動いてもらおう。


アイちゃんは人型です

前準備。

前回Assetsの部分に放り込んだキズナアイのデータを見てみる。

hierarchyの方じゃない元のデータ(prefab)の方。

クリックすればinspectorウィンドウに詳細が表示される。


f:id:aluminum_pepe:20180619013907p:plain

ここでインポートしたMMDデータの管理・設定ができる。ここでは「Rig」を選択。


f:id:aluminum_pepe:20180619014346p:plain

図のように、「Animation Type」を「Generic」から「Humanoid」に変更。

これは「キズナアイは人型だよー」って設定してます。

MMDを動かすアニメーション、もっというと「骨格(ボーン)」を動かすアニメーションデータは、適用したオブジェクトが「Humanoid」設定されてないと、ウンともスンとも言わなくて絶望するので気を付けよう。

マジでどうしようかと頭を抱えていた時期もありました


vmdデータをプロジェクト内に入れる

前回ダウンロードしたMMD4Mecanimに既に入っている「歩き.vmd」を適用してみる。

f:id:aluminum_pepe:20180619015219p:plain

コレコレ↑


f:id:aluminum_pepe:20180619022201p:plain

というわけで例にもよってD&Dでこのvmdファイルをプロジェクト内に放り込む。


f:id:aluminum_pepe:20180619015557p:plain

あっさり入りました


f:id:aluminum_pepe:20180619015618p:plain

操作しやすくするためにキズナアイのfbxとかがあるとこに入れとくといいかも


vmdデータからアニメーションを作成

pmxデータがそのままUnityで使えないのと同じく、vmdデータも入れたら使えるわけではないので、これもMMD4Mecanim様の力を使ってアニメーションを作成していく。

ほぼ手順は前の操作とおんなじ。

改めてMMD4Mecanimを選択します。規約とかを読んでチェックを入れて進む。


f:id:aluminum_pepe:20180619021133p:plain

そして「歩き.vmd」をVMDの場所に入れて、プロセス!!

またキズナアイのオブジェクトごと作っちゃうんじゃない?かというとそんなことはないので。


f:id:aluminum_pepe:20180619021425p:plain

初期ポーズが歩いてそうな感じになった。別にここは手を広げてくれてるだけいいのだけど……


f:id:aluminum_pepe:20180619021540p:plain

fbxの▽を開いてみてみると、いかにもムービーなアイコンのアニメーションデータが作成されてる!

試しに右下の窓で再生できそうなんでみてみよ


ほほーーー歩いてるねえ(かわいい)

なんか歩き方が

よーし

じゃあまあ実行しようか!


f:id:aluminum_pepe:20180619023234p:plain

……動かないです。かわいいけど。


Animation Controller をキズナアイに適用

アニメーションデータ作っただけで動くわけないでしょ。動きそうなポーズしてるけど。

キズナアイがどんなときに、どんなアニメーションを再生するか、そういったことを管理する何かが必要。

というわけで、Unityパワーを使っていこう。


f:id:aluminum_pepe:20180619023423p:plain

project押して


f:id:aluminum_pepe:20180619023754p:plain

Animation Controllerを選択!


f:id:aluminum_pepe:20180619023820p:plain

適当にKizunaai Animation Controller と名付けた


Animation Controller って?

Unityのコンポーネントの一つ。

Animator Controller ビュー (メニュー: Window > Animator Controller) でキャラクターの挙動を表示、設定することができます。 アニメーターコントローラーを利用すると、キャラクターやオブジェクトのアニメーションクリップや関連するアニメーション遷移のセットを配置し管理できます。

だって。


続くよ


f:id:aluminum_pepe:20180619024208p:plain

クリックすると虚無空間に二つブロックがある画面が出るんで、虚無を右クリックして虚無ステイトを作る。


f:id:aluminum_pepe:20180619033922p:plain

虚無ステイトにWalkとでも名前を付けて、作成した「歩き_vmd」をMotionのところにD&D。

たぶん「Entry」から矢印が伸びて「Walk」が黄色くなってるはず。このコントローラでは状態の開始から「Walk」状態に移行して適応されてるモーションを再生してくれるという感じになる。


f:id:aluminum_pepe:20180619035300p:plain

あとはこれを、Scene内にある(hierarchy)の実際のキズナアイのオブジェクトに適応させるだけ。

今度こそ動くよ!!!!!!!実行!!!!!!!!!!


……ちょっと歩いた。

アニメーションの長さがここまでなので、ここで終了。

流石に解せない。


どこまでも歩いて貰おう

最後にいつまでも歩いてくれるようにする。

もう一度fbxの方のkizuaaiを選択して、「Rig」でなく「Animation」に切り替え。


f:id:aluminum_pepe:20180619040158p:plain

ここでClipsで「歩き_vmd」が選択されていることを確認して、赤枠で示した「Loop Time」をチェック。

ここでは色々とアニメーションの細かな設定が出来るのでお世話になる。


すかさず実行


「歩き_vmd」のアニメーションがループ仕様なのでいつまでも歩いてくれるぞ!!!!!



ああ~どこいっちゃうのアイちゃん~~~~~~



……



まとめ

てなわけで、vmdを適用させてキズナアイが動かせた。

Animator Controller にも触れたので、「止まってる」、「歩いてる」を条件によってアニメーションを設定したり、向きや移動速度なんかを与えてどうのこうのすれば自由に動かせそうだね!

それについてもいつか書くとして……


vmdが適用できる……ってことは

踊らせてみたができるんすよねえ

じゃあ躍らせよう!!!!!!!!!!!!!!!!!!!!!

長くなったから分ける!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!





次回、踊る編






画像の文章をテキストに起こせる便利な世の中

日記的でもいいから適当に更新したいだけ。

aluminum-pepe.hatenablog.com

この記事の途中で、Unityで出てきた英文メッセージを翻訳したいってなって、

f:id:aluminum_pepe:20180527034900p:plain

じゃあまあ、コピペして……



って出来ねえじゃねえか



ってなったので、直接Google翻訳に打とうかと思ったのだけど……





f:id:aluminum_pepe:20180527043735p:plain





あるみには弱小タイピングなので0文字目でやる気を失った。そして「画像から文字」で検索したら出てきました。いっぱい。便利な世の中になったもんだ。

参考にしたのはこ↑こ↓

www.marineroad.com

なんでも、Googleドライバにあげた画像を、Googleドキュメントを使ってテキスト化できるんだって。



マ?  やろう。



テキスト化したいのはこれ。

f:id:aluminum_pepe:20180527034900p:plain

コピペできねえぜ。

スクショなりして切り取ってきた画像を、Googleドライバのファイル内に貼り付け。

f:id:aluminum_pepe:20180527042349p:plain

そして「アプリで開く」から「Googleドキュメント」を選択。

f:id:aluminum_pepe:20180527042503p:plain

f:id:aluminum_pepe:20180527042756p:plain

まつ。





f:id:aluminum_pepe:20180527042844p:plain

うわ、ホントにできた。なんか見やすいし。



f:id:aluminum_pepe:20180527042927p:plain

ヘッダにある「ツール」を選択したら「翻訳」があって……



f:id:aluminum_pepe:20180527042940p:plain

あれ、なんも起きない。



f:id:aluminum_pepe:20180527042959p:plain

あー、日本語「に」翻訳ってことね()



f:id:aluminum_pepe:20180527043017p:plain

はい、できた。便利~~~~

まあ、なんか変な表現にはなってるけどね、「いいえ感謝を」。



f:id:aluminum_pepe:20180527043029p:plain

とはいえ、おこしたテキストをコピペして検索する方のgoogle翻訳にかけた方が精度は高いみたいね。

画像をテキストに起こせる……いい時代に生まれたものだ。ほかにもきっといい方法もあるかもね。

こうしてあるみにの脳は退化していくのであった。

おわり。











独り言で滑ってるのとても虚無。きょむきょむプリンになった。

Unityでキズナアイ(Vtuber)を動かしたい-1-

最近流行りのVirtualYouTuber、有名なのはキズナアイとかミライアカリとか?

動画もおもしろいし、何よりかわいい。

聞くところによると一部のVtuberはそのモデルを公開してるとか!是非とも自分の好き勝手あんなことやこんなことをだな

是非ともUnityなんかで動かしてみたい!!というあるみにの軌跡。

あと、用語だったり、厳密な表現をしないようにしてるつもり(カッコでやんわり言及してるかも)。

VtuberたちのMMDモデルが一般に公開されている

URLは↓↓



キズナアイ

f:id:aluminum_pepe:20180525020008p:plain

http://kizunaai.com/download-page/



ミライアカリ

f:id:aluminum_pepe:20180525020445p:plain

3d.nicovideo.jp



ねこます(みここ)

f:id:aluminum_pepe:20180525020323p:plain

nekomasu.wixsite.com



シロ

f:id:aluminum_pepe:20180525020515p:plain

3d.nicovideo.jp





ざっと四天王?あげてみました(輝夜月ちゃん公開されてまへん)



注意!!

もちろん彼女たちのデータを使わせてもらうからには……

しっかり利用規約を読んで、守ることが必要!!!

ライセンス表記や、再配布、商用利用等について書かれているので、うっかり訴えられないように気を付けないと……

ダウンロード先や、ダウンロードした先には利用規約について書かれたテキストがあるはずなので確認する。



MMDモデルをUnityにインポートする

むしろここが知らなきゃできないだけでこの後のことはただのUnityの話になる。

参考にしたサイトはここ↓↓

korechi.hatenablog.com

まず、MMDデータすなわちpmxファイル(とそれプラス色々)というものは、Unityで直接サポートされているわけではありません。

上記のねこますさんの「みここ」はunityで読み込める、fbx形式のデータも配布されていますが、それ以外はD&Dしても簡単にキズナアイちゃんは現れてくれないのです。

そのために、MMDデータをUnityにインポートし、操作可能にするためのツールが必要ということになります。

0.MM4DMecanimを使う

ということで使用するのが「MM4DMecanim」というツール(スクリプト等)です。

Noraさんという方が作成した、MMDデータをUnityで動作するfbxファイル(Mecanim)に変換してくれるもので、インポートしたMMDモデルの細かいコントロールができます。(めっちゃ助かった)

1.MM4DMecanimをダウンロード

ダウンロード先 http://stereoarts.jp/

f:id:aluminum_pepe:20180525024624p:plain

リンク先の2項目?ですかね。

あれっ、おととい更新されてるやんけ!!!(5/24執筆中)

2.UnityのプロジェクトにMM4DMecanimをインポートする

Plane(床)だけを設置した空虚な空間にキズナアイちゃんを降臨させたいと思います。



あ、





ちょっとまって







(c)Kizuna AI



ライセンス表記しておこうな。

f:id:aluminum_pepe:20180527025159p:plain

えっと……大丈夫なはず……モデル配布しないし……品位も多分……ないなくない。

よし

多分大丈夫なはず。





失礼しました、続けます。

まず、先ほどダウンロードしたファイルを見てみると、

f:id:aluminum_pepe:20180525191027p:plain

Unityなマークをした「MMD4Mecanim.unitypackage」というファイルがあるので、UnityのプロジェクトのAsset部分にD&Dでぶち込みましょう。

f:id:aluminum_pepe:20180525191656p:plain

初回はいくらか処理が必要かも

f:id:aluminum_pepe:20180525192554p:plain f:id:aluminum_pepe:20180525192647p:plain

上は「追加の前にちょっとしたアップグレードが必要だからバックアップを取るよ」ってので、下はUnityにインポートする内容選べるよって感じなのでとりあえずGo ahead と全部Importで。

(上について詳しいgoogle翻訳(たよるな)は最後に)

f:id:aluminum_pepe:20180525192835p:plain

Assets部分がこうなれば入ったことになるはず。

3.ダウンロードしてきたMMDファイルをUnity用に変換

あとからダウンロードしてきたMMDファイルも入れるだけ!

f:id:aluminum_pepe:20180525193419p:plain

入れたファイルに勝手に項目が追加されているので選択してみます。

f:id:aluminum_pepe:20180525193508p:plain

別ウィンドウに利用規約等が記載され、いくつかの項目にチェックを入れれば、変換が可能になります。

f:id:aluminum_pepe:20180525193840p:plain

データ配布なんてする気サラサラねぇ!!!processを押して変換開始!!

f:id:aluminum_pepe:20180527023710p:plain

黒い画面でなんかやってるので見守る。

f:id:aluminum_pepe:20180527024238p:plain

ちょっと待てば……





f:id:aluminum_pepe:20180527033150p:plain

なんか青いブロックつきのファイルが新しく生成されました!

下の方に「KizunaAI.fbx」とあるので、fbx化に成功!

4.いざアイちゃんをUnityの世界へ

これでUnityで使用できます、さっそく放り込んでいきたいのですが、fbx化したものを見てみましょう。

f:id:aluminum_pepe:20180527033606p:plain

よく見ると▽がありますが、クリックするとなんか色々出てきます。

いくつかの必要なデータをまとめて持っているということなので、一番上を持ってまとめてSceneへD&D!

f:id:aluminum_pepe:20180527034354p:plain

すると……





f:id:aluminum_pepe:20180527024256p:plain

!?

f:id:aluminum_pepe:20180527024324p:plain

おお!!!!

f:id:aluminum_pepe:20180527024338p:plain

かわいい!!!!!!!!!!!



……というわけでVtuberのMMDモデル、キズナアイちゃんをUnityに召喚することができました!

まとめ

というわけで、MMDデータをUnityの世界に引っ張ってこれました。

適用出来ればこっちのもの、MMDモデルの動かし方についてはUnityの領分。

せっかくなので、簡単な動かし方と、表情の変え方くらいまでブログにしようと思っています。

というかそれしか書くことはない

インポートの仕方だけだとn番煎じ感あるしひとと通りにまとめてみようね。









説明飛ばしたとこ

f:id:aluminum_pepe:20180527034900p:plain

まあいろいろ適当なくせにちゃんとしておきたいということで。

API更新が必要 このプロジェクトには、廃止されたAPIを使用するスクリプトアセンブリが含まれています。 Go Aheadを選択すると、Unityは古いAPIを使用して見つかったAssetsフォルダ内のスクリプト/アセンブリを自動的にアップグレードします。続行する前にバックアップを作成する必要があります。 (「Assets / Run API Updater」メニューコマンドを使用して、いつでもAPIアップデータを手動で実行できます)。 バックアップを作成する。先に行く! 結構です 』

by Google翻訳

これくらいさらっと訳してくれ俺(まあ訳が間違ってたほうが恥ずかしいので自衛)

UnityでかつてあったAPIを使用してのスクリプトのため、その部分を最新で使えるようにしてくれるってことなんですかね、すげー(適当)

そういえばさっきの文章、直接文字をコピーできなかったんでGoogleドキュメントで画像から文字におこして翻訳したんですよ。便利な時代になりましたね。



今度はきっとキズナアイを動かすやつをかこう



理想的なGitフローを目指したい -1-

サークル活動なんかでチームプロジェクトをする機会があり、そこでGitを活用したので、 Gitフローに関して会得したこととか分かったことのメモ。

はじめてのチームプロジェクト with Git

あるみに初のGitを活用してのチームプロジェクト。

まあ、燃えた。よく燃えました。

かつ、おそらく結構な迷惑をかけたかもしれないし、その割に貢献度すら薄いという感じだった気がするね……

自分が弱いのはもちろんのこと、他のチームメンバーについてもGitフローにはかなり苦しんでいた。

具体的に言えばコンクリフト地獄だった。

そんな反省を活かし、ほどなくしてGitフロールールが決められた。

失敗から学んだ「僕たちの考えた理想的なGitフロー」を自分の理解の及ぶ範囲でまとめておくという話。

お前は何も考えてねぇだろ

理想的なGitフロー

詳細な用語についても、自分の理解が怪しいのでいくつか整理してまとめたいなあ

あと、1人1ブランチということでfuture使ってないです(多分そういうことだよね?)

1.ブランチルール

プロジェクトにおけるブランチの使い分けをしっかりする。

「リモートリポジトリ」と「ローカルリポジトリ」でどんなブランチをつくって、どのように反映、統合(マージ)させるかが重要。

リモートリポジトリ

  • master :もともとある。製品として完成した/リリース可能なバージョンになったときにのみ、developブランチをマージしてくる。

  • develop : 開発ブランチ。masterの一つ下層。ローカルリポジトリの開発状況であるdevelopブランチがプッシュされる。

  • future :作業ブランチの親?ブランチ。特定の作業を複数人で行う場合、開発ブランチの一つ下層につくる?。今回は考えていない。

ローカルリポジトリ

  • develop :ローカルの開発ブランチ。各人はここから作業ブランチをはやし、作業ブランチでの作業内容が完了すればそれとマージする。マージの前にリモートリポジトリのdevelopと状態を同じにする。→コンクリフト最前線。

  • ○○(作業ブランチ) :作業ブランチ。名前は任意。基本的にここにしかコミットしない。futureブランチがあればその下にできる。

2.操作手順

2-1.リモートリポジトリのクローン

SourceTreeとか黒い画面とか何とかで、リモートリポジトリをクローンし、ローカルリポジトリを作成する。

2-2.作業

developをチェックアウトし、作業ブランチを作成。名前は、作業内容に合わせて任意につける。

あとは作業に入る。

2-3-1.コミット(ローカルリポジトリ

作業が進んだら自由にコミットしたりして作業ブランチを進めていく。

作業ブランチの作業内容が完了したら、ローカルのdevelopに反映(マージ)させるのだが…

2-3-2.マージ前の準備(ローカルリポジトリ

コミットするその前に、ローカルのdevelopに、リモートのdevelopをフェッチして、変更等があるか確認する。

変更があれば、developをチェックアウトして、既に進んでいるリモートのdevelopをプルする。

2-3-3.マージ(ローカルリポジトリ

リモートのdevelopとローカルのdevelopの内容が同じになったところで、今度こそ作業ブランチをマージ。

developをチェックアウトしたまま、作業ブランチを選択してマージする。

もし自分が変更した場所が、誰かによっても変更されていた場合、コンフリクトが生じるので、頑張って解決する。

2-4.プッシュ(リモートリポジトリ)

作業ブランチがマージされたローカルのdevelopをリモートのdevelopに反映(プッシュ)する。

※↑ではじめて、作業者は全体で共有されているプロジェクトに対して変更を加えたことになる。

(よほどのことがない限り、ここで問題は生じないはず、もし生じたとすれば、これまでの工程でミスをしたか……)

不幸な偶然が生じたということになると思う。)

2-5.作業完了

というわけで、作業状態が反映されたため、一巡終わり。また2-2「作業」に戻る。

2-6.バージョンアップ

開発ブランチdevelop(リモート)がどんどん進行し、完成/リリース出来る状態になったなら、

リモートのmasterに、同じくリモートのdevelopを反映(マージ)する。

masterをチェックアウトして、developを選択し、マージ。閉廷。

ちなみに

2-3-2と2-3-3間におけるローカルのdevelopをリモートのdevelopに合わせ、マージする工程は、

フェッチした時点でプルしてこなくても見えるようになった変更後のdevelop選択してマージすれば良かったりする。

このGitフローにおけるポイント

基本的に、作業は↑の2-2~2-5を繰り返して行くことになっていく。

このフローで大事なポイントをあげると、

  • ローカル内で共有の準備を全て終わらせておくこと
  • 個人の作業ブランチはリモートにあげたりしない
  • 初心者でも比較的統合の様子が分かりやすい?

かな?

共有の準備やコンクリフトの解決までローカルでやっておけるのはなかなか良い気がする、

なんというか、個人でやるべきことが明確化しているし、たぶんコンクリフトが減る。

個人ブランチをあげちゃうとかいう行動もこの過程ですることもないし、リモートリポジトリが下手に荒れることもない気がする。

まあ、このルールで決めておけば比較的初心者でも分かりやすい感じがする。

詳しい説明をしようと思ったけどうまく筆が進まないので一度切っていつか続きを書く。

別にそんなことしなくても?ってことだらけだったりして……?

あくまで初心者の自分は分かりやすかったしうまくいったのでとりあえずメモ。

スマホでモーションキャプチャーってマ?「RADiCAL Motion」に突撃した話

スマホモーションキャプチャーってマ?

昨日だったか、Twitterで回ってきた内容なんですけど↓

……マ?

だとしたらすごいじゃんやるっきゃないやろ!ということで早速インストール。

f:id:aluminum_pepe:20180515005757j:plain

おおー、なんかモーションキャプチャしてくれそうだわ()

なんかアカウントを作らされて、チュートリアルの動画をみたら、撮影可能になった。

f:id:aluminum_pepe:20180515172004j:plain

動画の兄貴シュールすぎんよー

撮影してアップロードする

友達をそそのかして撮影、すると撮影された動画をどうやらどこかにアップロードするとのこと。

それもそのはずこのアプリ、「動画ファイルの人間の動き」を「クラウドサービスを使って3Dモーションを作成する」というもの。

まあつまりはこのアプリで撮影する必要性は全くなくて、もともとある動画ファイルなんかも同様にアップロードすることで3Dモーションをつくってくれるのだ。

2Dの映像→3Dのアニメーションのデータ という変換サービスみたいなことかな?

ちなみにアップロードすると、

f:id:aluminum_pepe:20180515010146j:plain

アップロードしましたよ!なんてメールが来て、

f:id:aluminum_pepe:20180515010323j:plain

できたよ!なんてメールが来る。

さっそくみてみよう。

f:id:aluminum_pepe:20180515163435p:plain

プレビュー画面はこんな感じ。キャプチャに使った動画と、そこから作ったモーションの動きが並べて表示されている。

友人のプライバシーを守るため、キャプチャした動きの部分のみ載せる。

f:id:aluminum_pepe:20180517180335j:plain f:id:aluminum_pepe:20180517180522j:plain

おお~、

若干のブレとかガタガタしてたりするけど結構できてる。

説明を読む限り、固定したカメラで撮影しろということだが、手に持って撮影していたり、

友人が恥ずかしがって少しひかえめな動きになったとか、

背景が良くない/服装が分かりにくい

とかとかがありそう、何度でも取り直せるので、品質も良くできそうだ。

モーションをダウンロードしよう

作成したモーション、FBXでダウンロードできるということで、

「これは勝ったな、最高。」

……なんて思っていたときが僕にもありました。

f:id:aluminum_pepe:20180515010348p:plain

まだダウンロード出来るようになってないんかーーーーい!!!!!!

しかも商用サービスになってからかーーーーーーーい

まあ、広告も全く入ってない割に無料なんてムシが良すぎるということか。

モーションキャプチャしたアニメーションをUnityなんかで使ってみたかったんだけど、

まあやるにしてもまだ先になりそう。続報を待て!!!!!

アップロードした映像は誰でも見られちゃうの?

最後に確認したのは、映像のプライバシー的なところはどうなん?と。

多分その心配はなさそうだった。

f:id:aluminum_pepe:20180515010408p:plain

ページのプライベート設定の様子。

アップロードした映像は、基本的にプライベートな状態になっていて、任意で公開するかしないかを決められるらしい。

……とかなんとか言っちゃって、他人のページにアクセスしてやるぜ~

と適当にURLをいじって実行。

f:id:aluminum_pepe:20180515010452p:plain

ちゃんと守られているっぽいです。ごめんなさい。

ということは映像あげても大丈夫そうってことかな、だれでも見れるとかだったら特定されない場所でマスクとかつけてやらないとだからなあ だれもお前なんて特定しようとしねえよ

まとめ

というわけで勇んで突撃した「RADiCAL Motion」でしたが、まだ開発途中、ということで、今後に期待して待つとしよう!!!!!!

f:id:aluminum_pepe:20180515010508p:plain

Unityでチームプロジェクトする時のおぼえがき

Unityチームプロジェクトをする時に気を付けること

サークルでUnityを使ったチームプロジェクトをしているので、

とりあえず取っ掛かりで調べたりしたこととかまとめておく。

参考にした(というかほぼこれの受け売り)サイト

thinkit.co.jp

コインプッシャーをモデルにゲームの作り方も扱ってたりしてるので良い。

この中から、自分が利用する、「Gitを用いたバージョン管理」と、その他留意点をまとめる。

環境

  • Unity
  • Git(Hub,lab)
  • SourceTree

Unityで設定すること

当然のことながら、Unityのバージョンを揃えることは重要(違うと無駄に変更が多くなるし、うまくいく保証もない)

加えて、Unity側で設定することがあるらしい。

Unityの編集画面から、メニューバーから Edit→ Project Settings → Editor を選択する。

Editor Settingsがinspectorで表示されるので、その項目を変更する。

f:id:aluminum_pepe:20180512030252p:plain

変更するのは、

  • Version Control : Hidden Meta Files → Visible Meta Files
  • Asset Serialization : Mixed → Force Text 

の二点。これでコンフリクトが発生しても解消できるようになるんだとか……

なんで?調べてません。

gitで設定すること

Unityプロジェクトはそれはそれは大量の管理データ等が存在するため、

何か一つ変えたり、追加したらファイルの追加/変更量もえぐいことになるので、しっかりプロジェクトに影響のない範囲で、 変更を無視するための、無視ファイルが必要になる。

手っ取り早いのは、githubからファイルを取ってきて使う。

「Unity gitignore」で検索したらGitHubのページが出てくるので、ファイルをダウンロードしてリポジトリに追加して使用する。

f:id:aluminum_pepe:20180511193353p:plain

チーム内で決めること

これが一番大事かもしれない。

複数人が同じシーンを編集しない

通常、プロジェクト内で複数人が同じファイルを編集したときは、gitにマージする時点で、コンクリフトが発生する。

普通は発生したコンクリフトは手動またはツールで解決するが、シーンのコンフリクトはそれはもうとんでもないらしいので、 マージも途轍もなく困難になるらしい(そうなってるところを見たことある)

そこで、ブランチのように、各自の作業/実験のためのシーンを各自作る。

また、本当のゲームで使うシーンも基本1人が編集するようにする。

逆に言えば、シーンを分けて編集することで、各自が自由実験でき、 かつどうやってもシーンによるコンクリフトが起きないので有効な手段であると思う。

作ったオブジェクトはとにかくプレハブ化する

各自がシーンで制作した(共有したい)ゲームオブジェクトは、インスタンス化して利用する等に関わらずプレハブ化するべきである。

プレハブ化しておけば、Assetsに登録されるのでどのシーンにも簡単に追加することが可能になる。

プレハブの変更も全てに反映されるので、各作業シーンや、ゲームのためのシーンで簡単に追加することが可能になる。

オブジェクトデータ等を置換したいとき

3Dデータや画像など、データを別のものにしたいときは、Unity外部のファイルを開いて同じ名前で置き換える。

こうすると、もとのオブジェクトが持っていた関係をそのまま引き継いでおけるので、面倒が少ない。

画像等のデータ班との連携という観点からのポイント。

まとめ

以上のことに気を付けて、れっつえんじょいチームぷろじぇくと!!!!

UnityプロジェクトをGitで管理したい

いい加減にためてるかいておきたいことを消費していきたいので、ちょっとずつ更新しておきたいん

UnityプロジェクトをGitで管理したい

Unityのチームプロジェクトを始めようとして、GitとSourceTreeを用いたリポジトリの作成うんぬんに毎回手間取ったりするので、備忘録的に残す。

多分個人用のプロジェクト管理にも有用だと思う

説明足らず&画像なしはいずれ解消する。

解釈違いがあるかも、間違ってたら通りすがりの人、教えて!!!!!

用意する環境

  • Unity
  • GItHub(GItlab)
  • SourceTree

順番とかは色々あるだろうけど自分のペースでやる

1. GitHubリポジトリを作成する

ReadMeを追加する設定にして、

Unity用のgitignoreファイルも追加する。

f:id:aluminum_pepe:20180511194302p:plain

GitHubにはもともとこの辺がリポジトリ作成の時に設定できるのでいいね

ここで作られたのはいわゆるリモートリポジトリ。

自分の作業を反映して保存したり、他の人が上げた変更を引っ張ってきたりする。

Githubを使ってない等で無視ファイルを追加するとき

自分もGitLabを使っているので、無視ファイルは検索してGItHubに上がってるものを手動で持ってくる。

「Unity gitignore」とかで検索すれば多分でる、GitHubに上がってる「Unity.gitignore」をダウンロードしておく。

f:id:aluminum_pepe:20180511193353p:plain

2. SourceTree設定

さっき作ったgitのページで、URLのようなものがコピーできるはずなので、それをコピーしておく。

f:id:aluminum_pepe:20180512002303p:plain

SourceTreeを立ち上げて、クローン画面を選択する。

クローン画面でURLをペーストしする。

f:id:aluminum_pepe:20180511193740p:plain

ファイル参照で新しいファイルをつくる。

f:id:aluminum_pepe:20180511193823p:plain

自分が作業した内容を直接保存しておくのはこの部分。ここへの変更の保存は「コミット」。

リモートリポジトリには「プッシュ」して反映、「プル」して変更をもらってくる。

3.(0.) プロジェクトファイル作成

リポジトリ作る前にファイルをもう作ってたりするかもしれないので(0.)とつけてみた。

Unityを起動し、NewProjectを選択して新たなProjectファイルを作成する。

作成する位置を、さっき2. でつくったファイルの中にする。

(もう作ってる場合は、プロジェクトファイルの位置を2. で作ったファイルの中に移動させる)

4. GItLabとかで無視ファイルをあとから追加するパターン

  1. の※の続き。

2.で作成し、プロジェクトファイルも置かれているファイルの中に、gitignoreファイルもおく。

さっきの工程で、Unity.gitignoreをダウンロードしてあるはずなので、それを持ってくる。

f:id:aluminum_pepe:20180511190724p:plain

その後、「Unity.gitignore」を、「.gitignore」にリネームする。

これがなかなか曲者で、普通にファイル選択画面では拡張子だけのリネームはさせてくれない。

そこで、コマンドプロンプトからリネーム作業をする。

ファイル選択画面から、上のテキストボックスに「cmd」と入力し、Enterを押せばコマンドプロンプトが開く。

既にディレクトリがリネームしたいファイルのある位置になっているはずなので

を実行すればリネームは完了する。

f:id:aluminum_pepe:20180511193516p:plain

黒い画面(コマンドプロンプトはこんな感じ)

f:id:aluminum_pepe:20180512002704p:plain

gitignoreファイルのリネームができた。

5. コミットする

新しいプロジェクトを保存し、プロジェクトファイルや、無視ファイルがはいったということを、ローカルリポジトリに保存させる。

SourceTreeに戻って、コミット画面を選択。

インデックスをすべて追加して、コミット!

コミットメッセージは「プロジェクトファイルの追加」とかがいいかな

あとはSourceTreeでプッシュ操作を行えば、リモートリポジトリにローカルリポジトリの変更が反映される。