fc2ブログ

凛(kagring)のUE5/UE4とゲーム制作と雑記ブログ

2016 年から UE4 / 2021年から UE5 を触り始めました。勉強したもののメモ用ブログです。ゲーム制作に関するメモや雑記とか色々あります。C++ での Qt、Unity もほんの少しあります。

2017年05月 | ARCHIVE-SELECT | 2017年07月

| PAGE-SELECT | NEXT

≫ EDIT

UE4 アクター(Actor)にモデル(スケルタルメッシュ)を指定する(Skeletal Mesh)

アクターに対してスケルタルメッシュを追加する方法です。
公式ドキュメントはこちら。

・Skeletal Mesh コンポーネント
https://docs.unrealengine.com/latest/JPN/Engine/Components/SkeletalMesh/index.html

スケルタルメッシュを追加するには
「Skeletal Mesh コンポーネント」をアクターに追加する必要があります。
アクターの作成003
アクターを選択して「コンポーネントを追加」を押して
「Skeletal Mesh」を選択してコンポーネントを追加しましょう。

スナップショットモデル003
追加するとこんな感じになります。

あとはこの「Skeletal Mesh コンポーネント」にメッシュを指定してあげます。
アクターを選択して詳細タブの「Mesh」のところにメッシュを指定しましょう。
アクターの作成000
こんな感じで今回はGrayちゃんを割り当ててみました。
アクターの作成001

そうすると、プレビューでもメッシュが適用されたものを見ることができます。
アクターの作成002

ほとんどの場合メッシュを指定してオブジェクトとして配置することが多いと思うので
この手順は結構使いそうですね。

| UE4 | 11:59 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 アクター(Actor)アセットを新しく作成する

いまさらですが、GrayちゃんやテンプレートのGrayMainを使っていたので
自分でアクター(Actor)アセットを作っていないことに気づきました。

というわけで新しく空のアクターを作る方法です。

右クリックで出てくるメニューから「新規アセットの作成」
「ブループリントクラス」を選択します。
スナップショットモデル000
そうすると「親クラスの選択」というウィンドウがでてくるので
「Actor」を選択します。
スナップショットモデル001

と、これだけでアクターアセットが作成されます。
ただ、これだけだと空の状態なので、コンポーネントをいろいろ追加してあげる必要があります。

| UE4 | 11:48 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 コリジョンを物理シミュレーション化して動かす(Set Simulate Physics、Get Capsule Component)

ラグドールなどのメッシュではなく、
地面との判定などに使っているコリジョンを物理シミュレーション化する方法です。

こんな感じに。

キャラクターのコリジョンを階段の上で物理シミュレーション化したので
階段の下に転げ落ちていくといったものですね。

コリジョンを物理シミュレーション化するには
「Set Simulate Physics」ノードを使います。
コリジョンを物理シミュレーション化000
「Target」にはコリジョンを指定します。
「Simulate」にチェックを入れると物理シミュレーションが始まるようですね。

今回はコリジョンを取得するのに
「Get Capsule Component」ノードを使っています。
コリジョンを物理シミュレーション化001
取得したコリジョンを
「Get Capsule Component」ノードにつなぐだけで完成です。

物理シミュレーションはいろいろな場面で使えそうですね。

| UE4 | 11:56 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 開いているプロジェクトで使っているアセットをほかのプロジェクトに持っていく

とあるプロジェクトで使っているアセットをほかのプロジェクトに持っていく方法です。
きっかけはらりほまさんのツイートです。

というわけで、Grayちゃんを自分で作ってるプロジェクトに持っていきたかったので試してみました。
別のプロジェクトにアセットを移動000

まず、「フォルダ単位の移動」のやりかたです。
移動したいアセットの入ったプロジェクトを開きます。
そうしたら、移動したいアセットのフォルダを右クリックします。
別のプロジェクトにアセットを移動001
そこで出てくるメニューの「移行」を選択します。

そうするとこれこれのアセットコピーするよウィンドウが開きます。
別のプロジェクトにアセットを移動002
目的のファイルが含まれているか確認しましょう。
あとはOKボタンを押すだけでコピー完了です。

これだけでアセットを別プロジェクトに持っていくことができました。
別のプロジェクトにアセットを移動003
無事Grayちゃんをほかのプロジェクトで配置することができました。

「ファイル単位で移動」する場合は、
アセットの一覧からアセットを選択して右クリックします。
別のプロジェクトにアセットを移動004
メニューの「アセットアクション」を選択します。

その中にフォルダと同じく「移行」メニューがあります。
別のプロジェクトにアセットを移動005
これを選択するとフォルダの時と同じでコピーできます。

こういった処理が簡単にできるのはわかりやすくていいですね!

| UE4 | 14:00 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 物理シミュレーションを使って一部をラグドール化する(Set All Bodies Below Simulate Physics)

前に全身をラグドール化するものをやったのですが、
今回はそれの部分的に物理シミュレーションを行うものですね。
前回はこんな感じに。

・物理シミュレーションを使って全身をラグドール化する(Set All Bodies Simulate Physics、Set Collision Enable)
http://kagring.blog.fc2.com/blog-entry-308.html

部分的にやるとどうなるかというとこんな感じになります。

本来はツインテールとかに使うものではなさそうなのですが
とりあえずわかりやすさということで…。

公式ドキュメントはこちらを参考に。

・物理ベースのアニメーション
https://docs.unrealengine.com/latest/JPN/Engine/Animation/PhysicallyDrivenAnimation/index.html

全身ではなく一部に物理シミュレーションを適用するには
「Set All Bodies Below Simulate Physics」ノードを使います。
部分ラグドール000
「Set All Bodies Simulate Physics」ノードと違うのは
「In Bone Name」というボーンを指定する入力が増えたことですね。

これと、ツインテールの両方に適用したのがこちら。
部分ラグドール003
こんな感じでノードを組むと、最初の動画みたいなツインテールになります。

それ以外にも部分的にちょこちょこやってみましたけど
動きが怖いホラーなものにしかならないので、
一部だけ使うというのはなかなか難しいかもです…。

というわけで残骸。

腕もやってみたけど…。

うーん…(´;ω;`)ウッ…

| UE4 | 12:20 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 Grayちゃん(FBXモデルとUE4テンプレート)

UE4の標準テンプレートでは
マネキンのような「Mannequin」というキャラクターが動いています。
動作的には問題ないのですが、無機質なのはモチベーション的に上がらない!
という人のために「Grayちゃん」というものがあります。
Grayちゃんプロジェクト001

・Grayちゃんモデルデータ
http://rarihoma.xvs.jp/products/graychan/

「Gray ちゃん」は、Unreal Engine 4 の標準キャラクターである「Mannequin」 (通称 「GrayMan」) をモチーフにデザインされたキャラクターです。

神吉李花さんによってイラストが描かれ、コミックマーケット 88 にて頒布されたとげとげさんの著作である 「Dive to Unreal Engine 4」の表紙を飾りました。

非公式のキャラクターですが、日本発の UE4 アイドルということで、可愛がっていただければと思います。

とのことです。
女の子モデルを動かしたい場合は是非使ってみるとよいと思います!

データをダウンロードするとFBXなどのモデルデータだけでなく
サードパーソンのテンプレートがGrayちゃんに差し替わったものも入っています。
Grayちゃんプロジェクト000

本データは、Unreal Engine 4 用のプロジェクトファイルを含んでいます。 Material セットアップ済の「Gray ちゃん」の Skeletal Mesh や、 Third Person Template の「Mannequin」用アニメーションを「Gray ちゃん」用にリターゲットしたものが入っています。 Unreal Engine 4 上で 「Gray ちゃん」を使ってみたいという方は、こちらをご利用ください。

また、本データは、Blender のプロジェクトファイルや Texture ファイルを含んでいます。 Texture に関しては、改変しやすいように、レイヤー構造を維持した PSD および CLIP 形式のファイルを同梱しています。 「Gray ちゃん」を改変して使ってみたいという方は、こちらをご利用ください。


いろいろなことを実験するときも、すごく簡単に触れて使えるのでおすすめです!

| UE4 | 11:25 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 物理シミュレーションを使って全身をラグドール化する(Set All Bodies Simulate Physics、Set Collision Enable)

キャラクターの全身をラグドール化する方法です。
今回はこちらの二つのページを参考にしてやってみました。

・物理ベースのアニメーション
https://docs.unrealengine.com/latest/JPN/Engine/Animation/PhysicallyDrivenAnimation/index.html

・UE4:走ってくるキャラクターに物理シュミレーションを使い転ばせる方法
http://unrealbussan.hatenablog.com/entry/2015/03/10/200716

ラグドールはどういう挙動かというとこんな感じになります。

いい感じに物理シミュレーションに任せた動きになります。

全体を物理シミュレーション化するには
「Set All Bodies Simulate Physics」ノードを使います。
ラグドール001
「Target」にはスケルタルメッシュを指定します。
「New Simulate」はシミュレーションを新しく開始する場合はチェックを入れましょう。

これを適用するとこうなります。
ラグドール004
床を突き抜けて落ちていきました…なんで…。

どうもメッシュのコリジョンが物理シミュレーションの設定になっていないからのようでした。
というわけで設定してみましょう。

メッシュのコリジョンプリセット
デフォルトでは「CharacterMesh」になっています。
ラグドール005
これを「BlockAll」に変更します。
ラグドール006
これで無事設定ができました。

するとこんな感じで正常に動くみたいなのですが

こちらでやったところ、
なぜか物理シミュレーション化したとたんすっとんでいきました…。
ラグドール007

しょうがないので、最初から設定するのではなくブループリントで設定することにしました。
コリジョンの設定をするには「Set Collision Enable」ノードを使います。
ラグドール002
「Target」にはスケルタルメッシュを指定します。
「New Type」には今回は物理シミュレーションだけさせたいので「Physics Only」を指定しました。

するとこんな感じで最初の動画のようにうまく動きました。
ラグドール000

最終的なブループリントはこうなりました。
ラグドール003
これだけの処理でラグドールになるのはとても簡単でいいですね。

ちなみにGrayちゃんで同じ処理をした結果はこちら。

なかなかのホラーですね…。

| UE4 | 13:00 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 顔の向きを変更するための Look At に対して角度制限をする(Look At、Look at Clamp)

顔の向きを変えるための「Look At」ノードに対して角度制限をする方法です。
参考にさせていただいたサイトはこちら。

・UE4 LookAt機能を使ってGrayちゃんに見つめてもらってみる
http://unrealengine.hatenablog.com/entry/2017/06/05/220000

前に顔の向きを動的に変更する処理をこちらで試しました。

・キャラクターの顔を特定の位置に向ける・Transform の向きを Blueprint で制御する(Look At)
http://kagring.blog.fc2.com/blog-entry-304.html

結構うまくいったような気がするのですが、
後ろの方向を向くようにしてみるとこんな感じになります。
LookAtクランプ000
ちょっとしたホラーですね!
人はこんな向きに首が回らないので角度に制限をつけましょう。

角度に制限を付ける場合は「Look At」ノードの詳細を開き、
「Look at Clamp」の項目に角度を設定しましょう。
LookAtクランプ001
今回は45度にしてみました。

左側にあるチェックボックスの「As pin」にチェックをいれることで、
「Look At」ノードの入力として「Look at Clamp」が設定できるようになります。
LookAtクランプ002
動的に変更する場合などは外にだすようにしましょう。

というわけで角度制限をかけてみた結果がこちら。
LookAtクランプ003
割とばっちなのではないでしょうか。

ルックアットや目線などは結構気を使わないとすぐホラーになってしまうので
いい感じの制御を考えてみたいですね。

| UE4 | 12:38 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 アニメーションブループリントを取得する(Get Anim Instance、Cast To AnimBP)

アニメーションブループリントを普通のBPから取得する方法です。
こちらの記事がすごく参考になります。

・UE4 クラスブループリントとアニメーションブループリント間で相互連携をさせる
http://unrealengine.hatenablog.com/entry/2015/01/13/211032

アニメーションBPを取得するには「Get Anim Instance」ノードを使います。
アニメーションBP取得000
「Target」にはスケルタルメッシュを指定します。

このままだと固有のアニメーションBPにはなっていないためキャストを行います。
アニメーションBP取得001
「Cast To AnimBP」というノードを使って変換します。
サンプルで実行したので「Cast To ThierdPerson_AnimBP」というノードを使います。
ここは各アニメーションBP固有のキャストノードを使います。

これでアニメーションBPにアクセスすることができるようになりました。
実際に使う時のBPはこんな感じですね。
アニメーションBP取得002
外部からアニメーションブループリントにアクセスすることは案外多そうなので
ここらへんの連携は覚えておいた方がよさそうです。

| UE4 | 12:20 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 特定のボーン(Transform)に対して「位置」「回転」「スケール」を変更する(Transform(Modify)Bone)

特定のボーン(Transform)の「位置」「回転」「スケール」をブループリントから変更する方法です。

下のようなものを見つけたのでどうやって実装するのか気になりました。

調べてみるとこんなページが

・Blueprintで特定BoneのTransformを変更したい
https://answers.unrealengine.com/questions/121347/blueprint%E3%81%A6%E7%89%B9%E5%AE%9Abone%E3%81%AEtransform%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%97%E3%81%9F%E3%81%84.html

ボーン単位でのトランスフォームはアニメーションブループリント内で可能です。
スケルタル制御 https://docs.unrealengine.com/latest/JPN/Engine/Animation/NodeReference/SkeletalControls/index.html
通常のブループリントでのボーン単位のコントロールは無理だと思います。

とあったのでアニメーションブループリントを調べてみることに。

・スケルタル制御
https://docs.unrealengine.com/latest/JPN/Engine/Animation/NodeReference/SkeletalControls/index.html

上記公式ページを見る感じだと
「Transform (Modify) Bone」ノードを使うと行けそうですね。
公式ページはここに。

・ボーンのトランスフォーム
https://docs.unrealengine.com/latest/JPN/Engine/Animation/NodeReference/SkeletalControls/TransformBone/index.html

「Transform (Modify) Bone」ノードを使ってみます。
ボーンスケール000
「位置」「回転」「スケール」と全部いけそうですが、
今回はとりあえずボーンのスケールだけいじってみることにしました。

「Transform (Modify) Bone」ノードの詳細を開いて
スケールを変更したいTransformを設定します。
ボーンスケール002
今回は頭を大きくしたいので「head」を選択しました。
それと、どうもスケールがアニメーションやステートで上書きされているようなので
「Transform (Modify) Bone」の値を加算するように
「Scale Mode」を「Add to Exisiting」に変更してみました。
ここらへんは挙動がなんとなくしかわからないのでいろいろ試してみないとですね。

設定したノードを繋ぐとこんな感じになります。
ボーンスケール005

するとプレビューにも設定した値が反映されました。
ボーンスケール001
わりといい感じなのではないでしょうか。
頭があさっての方向を向いてるのは「Look At」の制御もはいってるためですね。
スクリーンショットを撮った時ははいちゃってました。

さて、これを実行するとちゃんとゲームでも反映されました。
ボーンスケール003
こんな感じですね。
人型キャラクターを制御する場合、「Look At」であったり、
今回のように「アニメーションの結果をプログラムでいじる」
といったことがどうしても必要になるので、知っておいた方がよさそうですね。

| UE4 | 11:26 | comments:0 | trackbacks:0 | TOP↑

| PAGE-SELECT | NEXT