真夏のアイススケート!!! in Unity

真夏のアイススケート!!! in Unity

この記事は「Unity アセット真夏のアドベントカレンダー 2018 Summer! 」 の18日目の記事になります。

暑いならスケートリンクにいこう

今年は記録的な猛暑で、暑さにやられてしまった人も多いかと思います。 そんな時、冷房がガンガンに効いたアイススケート場にいくのもありかと思います。 今回のアドカレではUnityちゃんこと大鳥こはくちゃんにテーマソングのUnite In The Skyでフィギュアスケートを滑ってもらいました。

f:id:kyusque:20180818114937p:plain

シーン上にIceHockeyStadiumとUnityちゃんを配置

アイススケートリンクのアセットはいくつかありましたが、その中で一番手ごろなものを選びました。

観客席や天井が作りこまれていていい感じです

f:id:kyusque:20180817122923p:plain

とりあえず、制服ユニティちゃんに氷の上に立ってもらいました。ここから最初の動画を作るための設定をしていきます。

f:id:kyusque:20180817123311p:plain

StadiumとScoreboardの影を消す

天井の柱の影が落ちてしまっているので、StadiumとScoreboardの[Mesh Senderer]-[Ligeting Cast Shadows]をOffにします。

f:id:kyusque:20180817123630p:plain

いい感じにライトを設定します

そのままだと、顔が暗くなってしまうので適切にライトを設定します。 とりあえず、天井から真上と横4方向からのDirectional Lightを合計5個作りました。

Rotationは 真上(91,1,1) 横1(20,0,0) 横2(20,90,0) 横3(20,180,0) 横4(20,270,0) と設定しました。 Intensityは0.25にしました。

このあたりもっとうまい方法があるような気がするのですが、アドバイスありましたらよろしくお願いします。

設定前

f:id:kyusque:20180817130754p:plain

設定後

f:id:kyusque:20180817130818p:plain

だいぶ、顔が見えるようになりました、氷上だともっと化粧が濃い方がいいのですが、私にはUnityちゃんに化粧してもらう技術がないためそのまま進みます。

ProBuilderで関係ない器材を消す

今回はフィギュアスケートなのでホッケー関係の器材を消していきます。 もともとホッケースタジアムということもあり、メッシュにそのままついていますが、今回は関係ないので消していきます。消すのはゴールと氷に書かれたライン、保護用の透明な壁です。

Unity 2018からUnityに統合されたアセットのProBuilderをつかってメッシュを改変していきます。

f:id:kyusque:20180817131106p:plain

ProBuilderのインストール

[Window]-[Package Mnager]を開いてProBuilderをインストール

f:id:kyusque:20180817122632p:plain

実際に消していく

IceHockeyStadiumのPitchを選択した状態で[Tools]-[ProBuilder]-[Object]-[Pro Builderize]すると、Pb_Objectがアタッチされます。

f:id:kyusque:20180817131635p:plain

Open ProBuilderを押してエディットモードを開きます。

開いた後、画面上の四角のシンボルが書かれたボタン(Face Selection)を押します。

f:id:kyusque:20180817132022p:plain

適当な面を選んでProBuilderウインドウのSelect Face Ring やSelect Face Loopやを押すと選択範囲が広がります。全体が選ばれた状態になったらDelete Facesを押して消していきます。

消去前

f:id:kyusque:20180817132451p:plain

消去後

f:id:kyusque:20180817132544p:plain

綺麗になりました。

f:id:kyusque:20180817135830p:plain

靴を履かせる

氷上に普通の靴で歩くのは滑って危ないので、スケート靴を履いてもらいます。

アッセトストアにはホッケー用の靴しかなかったので、とりあえずこれを履いてもらいました。

モデリングはまだよくわからないので、Unityちゃんのfoot下にプレハブをアタッチしました。

f:id:kyusque:20180817174741p:plain

アニメーションの編集をする

Perception Neuronを触らしてもらう機会があったのですが、そのときにモーションを取っていたのでこれを使います。

f:id:kyusque:20180817175417p:plain

Perception Neuronからエクスポートした直後だとfbxファイルのRigがGeneralなのでHumanoidに変更後Applyします。

f:id:kyusque:20180817175428p:plain

開始時間は終了時刻はfbxファイルのインスペクターのAnimationタブで編集できます。

f:id:kyusque:20180817175438p:plain

新しくanimatorを作ってStateにモーションを付けたあと、Unityちゃんにアタッチします。

途中結果

Curvy Splineでスケートっぽく平行移動させる

アイススケートは踊りながら移動していく競技なので、普通に陸上でモーションキャプチャしたものでは移動量が足りないです。

移動経路の設定は今回は手動でやるのですが、これを簡単に設定できるソフトのCurvy Splinesを利用しました。

アセットをインポートすると画面上にボタンが表示されます(Preferenceで消せる)

f:id:kyusque:20180817194908p:plain

Draw Splineを押した後、Ctl+左クリックで制御点を作っていきます。 するとオブジェクトとしてCurvy Splineが生成されます。 これを適宜動かしてカーブを作ります。

f:id:kyusque:20180817195350p:plain

作り終えたら、UnityちゃんにSpline Controllerをアタッチし、[General]-[Spline]に先ほどのCurvy Splineをドラッグ&ドロップします。 とりあえず、動かしたければMoveのところを設定すれば、このカーブに沿って動いてくれます。

今回はこれだけですが、Eventなどでも制御できそうで使いでは良さそうです。

f:id:kyusque:20180817195537p:plain

音楽を付けて完成!

Audio Clipをアタッチして曲を付けたものがこちらです。

今後

今回、出来合いのモーションを使ってそれらしい動画を作ることが出来ました。

今後は、IKなども組み合わせて、Unityちゃんの目線や腕を調整してもっとプレゼンスを高められたと思います。 本来は観客アピールなんかも考えるべきなので、そのあたりモーションキャプチャの後でも調整できるようにしたいと思います。

また、ステップの種類が少なかったりエッジの向きと移動が微妙にあっていなかったりで、Unityちゃんが下手に見えてしまっているので、何とかしたいと思います。

あと、衣装なんかの揺れものはスケート自体の移動量が大きい分良く映えると思います。 現実にはありえないエフェクトなんかも入れられそうです。 この記事を見て何かを作るのに特に制限はないので、これはというのがあればじゃんじゃん作っていってください。 大好物です。