投稿記事

Unityの記事 (16)

G-Child 2020/06/08 13:00

【Unity】軽くて簡単な残像エフェクト表現

やあ G-Childだよ

新作の方は目に見える進捗は少ないけど、土台部分は着々進んでいるよ。
だから今回も単なる作業進捗ではなく、Unityの技術寄りのお話をしようかな。

とはいえ、前回はちょっと小難しい事を書きすぎたと思うので、もう少し解りやすさを重視して書こうと思う。

というわけで、今回は残像エフェクトについてのお話だよ。

古今東西、様々なゲームで使われている残像表現。
素早い動きを視覚的にフォローするという機能面以外にも、単純にカッコイイから使いたくなるよね。
そんな残像表現なんだけど、Unity上で実現するにはいくつかの方法があるんだ。
思いついた方法をまとめると、以下の3つが挙げられるよ。

①ポストエフェクトのモーションブラーを使用する
②Skinning Mesh Renderを複製して配置する
③パーティクルシステムのレンダーモード、Meshを利用する

これらは素晴らしい表現を生み出す事ができるんだけど、使い勝手に一長一短があるんだ。

ポストエフェクトのモーションブラーを使用する

Univarsal Render Pipeline を使用している場合、Volume設定にmotionBlurを追加するだけで、モーションブラー機能を使用する事ができるんだ。


Intensityを上げると、素早い動きに強いブラーを掛けることができるぞ。
ただ、ブラーのかかり具合を個別に設定する方法が分からないし、強くかけすぎてしまうと画面がボケボケになってしまうから、今回の残像表現にはあまり向いていないかもしれないね。

Skinning Mesh Renderを複製して配置する

これは残像表現を模索している時にweb上で見つけた方法の一つなんだけど、以下のサイトが参考になると思う。
UnityでSkinnedMeshRenderer残像表現
この方法は、現在のskin meshを焼き付けて複製し、複数フレームにわたって使いまわすという理屈だね。
直前のポーズが複製されるから、表現力の高い残像表現が実現できるね。

ただ、リンク先にも書かれている通り、メッシュを毎フレームインスタンス化しているので、今回紹介している中では一番重い方法になると思う。
あと、自分で検証しようとしたところ、modelのリグがHumanoidではなく、Originalだったからか、思ったようにインスタンス化してくれなかったんだ。
だから、これに関する画像は無しってことで……

パーティクルシステムのレンダーモード、Meshを利用する

で、最後に残ったのがこの方法。
UnityのパーティクルシステムShurikenの基本機能を使ったお手軽な残像表現だ。
以下の手順で実装できるぞ。

1.まず残像で使用するメッシュを用意する


2.Hierarchy上で右クリックからEffects -> Partilcle System でエフェクトを作成
3.以下の点に注意して、Particle Systemを設定
Simulation Space: World
Emission: Rate over Distance
Renderer: Render Mode: Mesh



4.あとは必要に応じてスクリプトで残像エフェクトを呼び出すだけだ

この方法の良い点は、基本機能を使っているので、バージョンに左右されない事と、色々と応用が利くこと。
難点は残像に使うメッシュを自前で用意しなければならない事かな。

最後に完成した残像表現を動画化したので、それを添付してこの記事を締めるね。
最後まで読んでくれてありがとう。

G-Child 2020/06/01 13:00

【Unity】ハイブリッドな移動制御でプレイヤーを動かそう【スクリプト配布】

どうもどうも。G-Childだよ。

前回の更新でプレイヤーキャラクターのモデリングがひと段落したんで
ここ数日はプレイヤーの挙動回りを色々作業してたんだ。

だから今回はキャラクターの移動方法について記事にしてみようと思う。
他の初心者向けHowToと一味違うポイントは以下の2つだ。

  • 移動値はアニメーション制御、回転値はスクリプト制御
  • モーションの補間には2Dのブレンドツリーを活用

この方法の良い所は、スクリプトの分量をそこそこ抑えつつも、それなりに表現力の高いプレイヤー移動が作成できる点かな。
デメリットは、相応のアニメーション数(今回は4つ)を作らないといけない点。

では前回、超・無料プランの会員向けに公開した動画で実際にキャラクターが動いている様子を確認してみよう。

体の中心軸で機械的に旋回するのではなく、旋回の強さによって体が傾いていたり、減速や停止時に足の滑りが抑えられているんだ。
じゃあ、実際にどうやって作ったかを説明していくね。

今回の方法に限らず最初に抑えておくポイント

なにはともあれ、まずはプレイヤーとなる3DモデルをUnity上にインポートする必要があるよね。
モデルのインポートについては公式マニュアルを参照してね
シーンのHierarchy上置かれたプレイヤーモデルの移動を制御するために、以下のコンポーネントを接続するよ。


Animator アニメーションのコントローラ
Rigidbody 物理制御
Character Controller キャラクター制御
Player Controller(Script) 移動制御用に今回作成するスクリプト

今回紹介する移動制御用スクリプト(以降:Player Controller)は、超・無料プランの会員向けにDL出来るようにしておくので、今回の記事により深い興味が沸いた人は会員登録よろしくね。

移動値はアニメーション制御、回転値はスクリプト制御

Player Controllerでは回転の制御は行っているけど、移動値はキーの入力値をそのままアニメーションコントローラに渡しているんだ。
つまり、アニメーションを作るときにルートノード(一番の根本の骨)に移動値が入れておき、その値をキャラクターの移動値として利用するのね。
ルートノードのアニメーションについて

ルートノードのアニメーションを使う時に注意する3つのポイント
1.プレイヤーモデルのリグ設定で、Root nodeを設定しておく


2.各アニメーションのRootTransformPosition(XZ)は、Root Node Positionにしておく

3.プレイヤーのAnimator設定でApply Root Motionにチェックを入れておく

回転値は、入力方向とプレイヤーが向いている方向から旋回角度を求め、それが右回転なのか左回転なのかを外積を使って求めているよ。
求めた角度はアニメーションコントローラに渡してモーションの補間に活用するんだ。

キャラの向き自体はクオータニオン補間で回転させているよ。

transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(direction), 10.0F * Time.deltaTime);

モーションの補間には2Dのブレンドツリーを活用

前の項目でも言った通り、プレイヤーの移動値はルートノードのアニメーションを利用しているんだ。
でも単純に待機と走りのアニメーションを遷移図で繋いだだけでは、表現力が低いから2Dブレンドツリーを活用しているよ。


2Dの縦軸はSpeed(キー入力の強さ)、横軸はAngle(スクリプトで求めた旋回角度)で、Angle:0、Speed:1で直進、Angle:-1で左旋回、Angle:1で右旋回、Speed:0で足踏みが再生されるんだ。

こうすると、アナログスティックによる入力でも足が滑りにくくなるよ。

そうそう、左旋回・右旋回と言っても斜めに傾斜しながら真っすぐ走っているモーションだから注意が必要だよ。
あくまでプレイヤーの回転自体はスクリプトで制御しているからね。
その辺は足元の精密さよりも操作性やニュアンスを重視した結果だね。

というわけで、今回はプレイヤーの移動制御について色々と書いてみたよ。
もしも質問があったら、コメント欄までよろしくね。
後、繰り返しになるけど、今回紹介したPlayer Controllerは、超・無料プランの会員向けにDL出来るようにしておくので、今回の記事により深い興味が沸いた人は会員登録よろしくね。

フォロワー以上限定無料

移動用制御スクリプトを配布中

無料

G-Child 2020/05/25 01:03

【新作情報】新作の主人公キャラを初公開

前回の報告からちょっと間が開いてしまったけど、
本日は新作の3Dキャラクターを初公開しちゃうぞ。
しかも主役キャラだ!

彼女の名前や設定はまだ秘密。
でも見るからに……
いやいや、どんなアクションになるかは、まだ分からないぞ。

今言える事は、こんな可愛らしい彼女が右に左に大暴れする
アクションゲームって事だけだ。

でも、これだけだとちょっとネタとして弱いかな……
じゃあ、超・無料プランの会員向けには彼女を実際に動かして
いる様子を動画にしてアップしちゃおう!

この画像を見て、どんな動きをするのか気になった人は是非、
超・無料プラン会員に登録してね!

フォロワー以上限定無料

動画で動いているプレイヤーキャラが見られるぞ

無料

G-Child 2020/05/14 13:00

【Unity】おすすめアセット & 超・地雷アセット【Asset Store】

今まで合計100以上のアセットを購入してきたこの私が、独断と偏見でおすすめアセットをご紹介しちゃうぞ!

あと、超・無料会員向けにはとっておきの超絶地雷アセットをご紹介しているから気になる人は会員登録よろしくね!

All Sky

圧倒的物量のSkyBoxが詰まったアセット。動的に天候変化させるつもりがないのであれば、とりあえずこの中からシーンに適した空を割り当てておけば良い。ド定番のアセットだ。

Dynamic Bone

まずは定番アセットのDynamicBoneから。Unityで物理骨を付けるなら鉄板でオススメ。設定も極めてシンプルだし、瞬間移動させた時の挙動も安定しているし、価格もリーズナブル。よくセール対象にもなっているから、チェックしておくと良し!

FinalIK

Unity標準のIKでは満足できない人向けの高機能IKシステムだ。フルボディIKをサポートしており、別売りのPapetMasterを組み合わせると、物理挙動との合成も可能だ。お値段は高めなので、しっかりとセール時を狙うべし!

PBR Fighters

まるで●拳のような格闘ゲーム向けマッチョキャラが詰まったアセット。値段の割にクオリティも高くキャラ数も十分。半裸キャラばかりなので、ベース素体としても活用できるぞ。

UltimateVFX

多種多様なエフェクトが詰まったアセット。これ一つでゲーム一本分賄えるほど使い勝手も良いぞ。そのまま使うだけでも十分だけど、shurikenで作成されているから、自分なりにアレンジして使う事をオススメするよ。

さて、今回は万人にオススメする事を重視したので、極めてコンサバティブなチョイスになってしまったけど、別の機会にもっと尖がったおすすめセレクションも披露したいな。


ここから先は超・無料プランの会員向けの超・ヤバい地雷アセット紹介だ!

フォロワー以上限定無料

興味がある人だけ会員登録して見るがよい……

無料

G-Child 2020/05/13 13:00

【Unity】ユニバーサルレンダーパイプラインでのトゥーン表現

今日は少しだけUnityの技術的なお話をするね。

とはいえ、難しい話は自分もよくわからないから、できるだけかみ砕いて軽めに
説明するよ。
あと、この記事で使用したデータは、超・無料プランの会員向けに公開しとく
から、興味があったら会員登録よろしくね。

ユニバーサルレンダーパイプラインって何よ

そもそもレンダーパイプラインってのは、入力となるポリゴンデータを
レンダリングして出力するまでの一連の工程を指すのね。

昔のUnityはシェーダーやポストエフェクト周りについては、ユーザー製の
アセット任せだったんだ。
けど、それだとUntiy自体バージョンアップやアセット制作者の都合で
アセットの開発が終了してしまう事も多々あり、それを利用して開発していた
開発者に大ダメージなんて事もあったのね。

Unity 2019.3からは、そのレンダーパイプラインが最先端向けとそれ以外に
統合されたんだ。
ユニバーサルレンダーパイプラインは、比較的ハイエンドからローエンドまで
幅広いコンソールに最適化されいるみたい。
もっと詳しく知りたい人は下のリンクから色々辿ってね。

ユニバーサルレンダーパイプライン

これ使うと何か良い事ある?デメリットは?

ポストエフェクトとシェーダーの組み合わせによる対処不能な問題を
回避できるのは大きいね。
ユーザー製ポストエフェクト同士だと、スタック順で結果が変わる事も
あったし……

最先端向けAAA品質を求めなければ、とりあえずコレを選んでおけば
良いという気楽さも良いね。
あと、今後はこれがデフォルトのレンダリングオプションになるって
言っているけど、はてさてどうなる事やら。

じゃあ、良い事尽くしかと言うと、現状そうでもない。
それこそが本日の本題にも繋がるんだけど、
シェーダーが全然足りてない。

Unity側は、シェーダーグラフっていう馬鹿でもシェーダーが書ける
”気になれる”機能を付けたからそれで解決してねって言っているけど、
それなら既存シェーダーを自動コンバートしてくれる機能の方が
有難かったかもしれない……

トゥーンシェーダは使えないの?

広く世に出回っているユーザー製の高性能トゥーンシェーダーは
“現状”使えなかったよ。

  • ユニティちゃんトゥーンシェーダ
  • Toony Colors Pro 2

これらはインポートしてマテリアルにシェーダーを割り当てても、
他の非対応シェーダーと同様に無残な紫一色になってしまった。

じゃあ、どうすればいいのか、対策案は以下の三つ。
1.トゥーン表現かユニバーサルレンダーパイプラインのどちらかを諦める
2.高性能トゥーンシェーダー側が対応してくれるまで待つ
3.自分で何とかしてみる

正直、焦らなくても待ってりゃすぐに色々と出てくるとは思うのだけど、
せっかくだし今回は「自分で何とかしてみる」を選んでみよう。

トゥーンシェーダーを何とかしてみる

何とかと言っても1から全部手探りで作る必要はないよね。
ちょっと調べれば、色々なチュートリアルやら資料が出てくるから、
それらを活用すれば良いのよ。
んでもって、今回参考にさせてもらったのは以下のサイトね。

トゥーン表現について
アウトラインについて

どちらも英語のサイトだけど、グーグル先生に翻訳してもらえれば十分
理解できると思う。
上記サイトの手順通りにやってみた結果がこちらの画像。

どうかな?正直アウトラインの品質はお世辞にも良いとは言えないけど、
ポストエフェクトを使う案はちょっと抵抗あったので、今回はシンプルな
法線方向へ太らせる古典的な方法をチョイスしたよ。

超・無料プランの会員向けに、実際のファイルをアップしておくので、
興味がある人はそちらからダウンロードしてみてね。


今回はできるだけ難しく感じさせないようにUnityのお話をしてみたけど
どうだったかな。
需要がありそうだったら、今後も続けてみるよ。

長文にお付き合いしてくれて、ありがとうね。

フォロワー以上限定無料

トゥーンシェーダー配布中

無料

1 2 3 4

記事のタグから探す

月別アーカイブ

限定特典から探す

記事を検索