凛(kagring)のUE4とUnityとQt勉強中ブログ

2016 年から UE4 を触り始めました。勉強したもののメモ用のブログです。C++ での Qt、Unity も少しあります。

≫ EDIT

UE4 コンポーネント(Component)の「Event Tick」が呼ばれる間隔を変更する(Set Component Tick Interval、Get Component Tick Interval)

アクターの方はすでに知っていたのですが
コンポーネント(Component)で「Event Tick」が呼ばれる間隔を制御する方法です。

公式ドキュメントはこちら。

・Set Component Tick Interval
https://docs.unrealengine.com/latest/INT/BlueprintAPI/Utilities/SetComponentTickInterval/

「Event Tick」時にコンポーネントの処理が呼ばれる間隔を制御するには
「Set Component Tick Interval」ノードを使います。
コンポーネントのTICK001
「Target」には「Component」を指定します。
「Tick Interval」には「Event Tick」が呼ばれる間隔を秒で指定します。

「Tick Interval」で例えば0.5秒を指定した場合、
「Event Tick」が呼ばれたときに前回から0.5秒以上の間隔がある場合に実行される。
可変フレームで作られてると思うので、必ずしも0.5秒間隔でくるとは限らない。
みたいなのかなと思います(自信はない)
0.0秒を指定すると「Event Tick」が毎回呼ばれるといった感じですかね。
(デフォルト値がわからない)

現在コンポーネントにセットされているTick間隔を取得するには
「Get Component Tick Interval」ノードを使います。
コンポーネントのTICK003
「Target」には「Component」を指定します。
「Return Value」には今のコンポーネントのTick間隔が返されます。

アクター単位はなんとなく優先度としてあるのかなーぐらいで
それでも使い所は難しそうな印象なのですが
コンポーネント単位の制御はもっと細かい制御になりそうですね。
スポンサーサイト

| 未分類 | 17:06 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 コンポーネント(Component)の「Event Tick」を実行しない(停止する)ようにする(Set Component Tick Enabled、Is Component Tick Enabled)

アクターの方はすでに見つけていたのですが
コンポーネント(Component)の「Event Tick」を停止(実行しないように)する方法です。

公式ドキュメントはこちら。

・Set Component Tick Enabled
https://docs.unrealengine.com/latest/INT/BlueprintAPI/Utilities/SetComponentTickEnabled/

コンポーネント単位で「Event Tick」を実行しないようにするには
「Set Component Tick Enabled」ノードを使います。
コンポーネントのTICK000
「Target」には「Component」を指定します。
「Enabled」には有効ならtrueを。無効ならfalseを指定します。

と、これだけですね。
コンポーネント単体でのTick処理を止めたい場合とかに使う感じですかね。

現在コンポーネントのTickが有効かどうかを調べるには
「Is Component Tick Enabled」ノードを使います。
コンポーネントのTICK002
「Target」には「Component」を指定します。
有効であれば「Return Value」がTrueを返します。

| UE4 | 16:47 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 モデルをキャラクターにアタッチする・メッシュコンポーネントの指定したソケットにメッシュコンポーネントをアタッチする版(Attach To Component)

キャラクターに武器をもたせたり、アクセサリをアタッチしたりする方法を探していて
今回はコンポーネントを追加して、ソケットにアタッチする方法です。

こちらを参考にさせていただきました。というかまんまですね。

・[UE4] 武器切り替え
http://monsho.blog63.fc2.com/blog-entry-132.html

まずはアタッチしたいメッシュを
「Add Static Mesh Component」と「Set Static Mesh」を使って追加します。
メッシュの追加000
こんな感じですね。

ただ追加しただけだとこんな感じになります。
外部アタッチ000
包丁が空中に浮いた感じになります。
これだけだとまだアタッチされていない状態です。

これをグレイちゃんの左手にアタッチします。
アタッチするには「Attach To Component」ノードを使います。
外部アタッチ003
「Target」にはアタッチするコンポーネントを指定します。
今回だと武器のメッシュコンポーネントですね。
「Parent」には親のコンポーネントを指定します。
今回はグレイちゃんのメッシュコンポーネントになります。
「Socket Name」にはアタッチしたいソケット名を指定します。
「Location Rule」にはアタッチしたときの位置情報をどうするかを指定します。
「Rotation Rule」にはアタッチしたときの回転情報をどうするかを指定します。
「Scale Rule」にはアタッチしたときのスケール情報をどうするかを指定します。
「Keep Relative」だと特に現状から何もせずアタッチされます。
「SnapToTarget」だとオフセットなど無しで初期化され、そのソケットにアタッチされます。
「Keep World」がちょっとよくわかりませんね…。
「Weld Simulated Bodies」もちょっとわからないですね…。

とりあえずアタッチしてみました。
外部アタッチ001
無事?左手に包丁を持つことができました。
全然持ててませんが左手にアタッチされています。

とりあえず手にアタッチしてみましたが
元から武器用のソケットをモデルに含めるか、新たにソケットを追加してそこにアタッチするのがよさそうです。

今回やってみたBPはこんな感じです。
外部アタッチ002

とりあえずコンポーネントでアタッチしてみましたが
武器のアタッチはこれらでよさそうです。
それとは別に、アクターをアタッチするというのは今度調べてみようと思います。

| UE4 | 17:37 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 アクター(Actor)にスタティックメッシュコンポーネント(Mesh Component)を追加してメッシュをセットする(Add Static Mesh Component、Set Static Mesh)

アクター(Actor)に対してメッシュコンポーネント(Mesh Component)を追加する方法と
追加したメッシュコンポーネント(Mesh Component)に対して、メッシュをセットする方法です。

こちらを参考にさせていただきました!

・[UE4] 武器切り替え
http://monsho.blog63.fc2.com/blog-entry-132.html

やりたいことはこのサイトに書いてあるとおり、
キャラクターに武器をもたせることなのですが、
今回はその前の準備段階ってところになります。

まず、アクターにメッシュコンポーネントを追加します。
追加するには「Add Static Mesh Component」ノードを使います。
メッシュの追加001
「Target」にはアクターを指定します。

これで「Static Mesh Component」が追加されます。
今回は武器を追加したいのでスタティックメッシュにしました。

次に、このコンポーネントにメッシュをセットします。
メッシュをセットするには「Set Static Mesh」ノードを使います。
メッシュの追加002
「Target」にはメッシュコンポーネントを指定します。
「New Mesh」にはメッシュを指定します。

これでメッシュをセットしたメッシュコンポーネントが追加されました。
実際の処理はこんな感じに。
メッシュの追加003
こんな感じでアクターにメッシュが追加されました。

これだけだとただ追加されただけなので。
次はキャラクターにこのメッシュをもたせたり、アタッチするところをやろうと思います。

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

≫ EDIT

UE4 エディタでオブジェクトの移動量や回転量を指定した単位ごとに変化させる

オブジェクトを移動させるときに、微細な移動量ではなく
指定した単位ごとにオブジェクトを動かす方法です。

参考にさせていただいたサイトはこちら。

・UE4 エディタ⑥ オブジェクトを動かす
http://manabibeya.com/ue4tutorial/editor/editor6/

エディタのビューポートの右上にあるマス目状のアイコンを押して有効にします。
グリッド移動000
オレンジになっているのが有効状態です。

これだけで無効の状態だと、滑らかに微細に移動していたものが
カクカクしたグリッド単位で移動するようになります。

単位の設定はマス目状のアイコンの隣のアイコンを押して設定します。
グリッド移動001
ここで選択した単位で吸着して動くようになります。

小数点など微細な情報がいらない場合はこれらを使ってもいいかもですね。
隣にあるアイコンでは回転角度も設定できるので
こちらも用途に合わせて使ってみるのがよいかもしれないですね。

| UE4 | 16:19 | comments:0 | trackbacks:0 | TOP↑

≫ EDIT

UE4 スケルトンにソケットを作成して追加する

モデルをアタッチしたり、
特定の位置や回転の取得をするのにソケットを使います。

これはモデルにしこまれていたりするのですが
ゲームの都合で色々取りたい場合などもあります。
このソケットはUE4上でスケルトンに追加することができます。

公式ドキュメントはこちら。

・スケルタルメッシュ ソケット
https://docs.unrealengine.com/latest/JPN/Engine/Content/Types/SkeletalMeshes/Sockets/index.html

「スケルタルメッシュ」の「スケルトンツリー」を開きます。
スケルトンツリーの中から、追加したい場所のボーンを右クリックして
「ソケットを追加」を選択します。
ソケットを追加000
あとは独自の名前をつけてあげます。

これだけで、モデルをアタッチする先に追加したソケットが指定できるようになります。
ソケットを追加001
「HeadUp」というソケットを追加してみました。

ソケットは、ペルソナ内で スケルトンツリー、[Details (詳細)] パネル、 [Viewport(ビューポート)] ウィンドウを使用して直接編集することができます。

スケルトンツリー内でソケットをクリックすると、ビューポートで回転ウィジェット、平行移動ウィジェットが利用できるようになります。こうしたウィジェットを使用して、ボーンに対してソケットを再配置できます。

とあるように、位置などを自由に変更できるので都合の良い状態にしましょう。

アタッチメントをつけたり、武器をもたせたり、
エフェクトを発生させる位置の取得など、
様々な用途に使えるので積極的に使っていきたいですね。

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

≫ EDIT

UE4 外部モデルをキャラクターにアタッチする・エディタでアウトライナ設定静的版

キャラクターに武器をもたせたり、
アクセサリーなどのアタッチメントをキャラクターにくっつけるための方法です。

こちらを参考に。いつもお世話になってます!

・UE4 ソケットのアタッチをノードを使わずに行う
http://unrealengine.hatenablog.com/entry/2016/11/22/213000

今回の手法はBPやコンポーネントの制御もせず、
レベルに配置されたアクターやメッシュ同士をアウトライナ上でアタッチする方法です。

やりかたは簡単で
「アウトライナ上でアクターを選択して、他のアクターにドロップする」です。
メッシュをアタッチエディタで000
するとこんな感じで階層構造になってアタッチすることができます。

アタッチする場合は、アタッチ元の可動性の設定が
「ムーバブル」になってないといけないので注意してください。
静的アタッチ002
これはまた別のオブジェクトですが。

というわけでできたのがこちら。
メッシュをアタッチエディタで001

参考サイトの手順を踏んでいるのですが、ソケット選択がでてこないのですよね。
バージョン違いなのか、何か設定がいるのかちょっと不明です。
調べてみないとですね。

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

≫ EDIT

UE4 外部モデルをキャラクターにアタッチする・エディタでブループリント設定静的版

キャラクターに武器をもたせたり、
アクセサリーなどのアタッチメントをキャラクターにくっつけるための方法です。

こちらを参考に。いつもお世話になってます!

・UE4 ソケットのアタッチをノードを使わずに行う
http://unrealengine.hatenablog.com/entry/2016/11/22/213000

簡単にいうと「コンポーネントを追加」して、
「親ソケットを指定」してあげるといったものですね。

まずはアタッチ先のキャラクターのBPを開いて
アタッチしたいモデルのコンポーネントを追加しましょう。
静的アタッチ001
今回は「StaticMesh」コンポーネントを追加してみました。

そうしたら、追加したコンポーネントのメッシュを
「ムーバブル」に変更して、「親ソケット」を指定してあげましょう。
静的アタッチ002
今回は般若のお面のモデルを顔にアタッチしてみます。
顔に当たるので親ソケットには「Head」を指定しました。

ソケットは「スケルトンツリー」で確認することができます。
静的アタッチ004
グレイちゃんのスケルトンはこんな感じになってます。

そうしたら後は、「位置」「回転」「拡大・縮小」パラメータをいじって
いい感じの場所になるようにしてみます。
静的アタッチ003
プレビューで見ながら設定できるので楽ですね。

これだけでグレイちゃんに般若のお面をつけることができました。
静的アタッチ000
ゲームとしてつくるならエディタ上ではなく、
動的に読み込んでゲームで設定することになりそうですが
NPCだったりのキャラクターはこうやって構築してもいいかもしれませんね。
エディタで見ながら構築できますし。

これをBPでやったり、つけるためのソケットを新規で追加したりなどできそうなので
次はこれらを調べていこうかなと思います。

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

≫ EDIT

UE4 ブループリントユーティリティ(Editor Utility Blueprint、Blutility)のエディタ拡張・エディタウィンドウを作ってみる

ゲームに使えるエディタ拡張を調べてる時に
ブループリントユーティリティ(Editor Utility Blueprint、Blutility)というのが
あるのがわかったのでテストしてみました。

ほぼこちらの記事をまんま実行しただけではあるのですが
やっぱり自分でやってみないとわからないようねってことでやってみました。

・【UE4】プランナーがBlutilityでジェネレータを作ってみた
http://anapurna.co.jp/ue4/325/

あとはこちらもとても参考にさせてもらいました!

・UE4 Blutilityによるお手軽なエディター拡張
http://unrealengine.hatenablog.com/entry/2016/10/05/215937

どうもBlutilityはデフォルトでは使えないようなので、まずはBlutilityを使えるようにします。
「プロジェクト設定」を開いて
Blutility作成000

「実験段階」の「Editor Utility Blueprints」にチェックを入れます。
Blutility作成001

これでBlutilityが使えるようになったのでブループリントを作成します。
新規作成のブループリントで
「ブループリントユーティリティ(Editor Utility Blueprint、Blutility)」を選択します。
Blutility作成002

親クラスは「GlobalEditorUtilityBase」を指定します。
Blutility作成003

これで「Editor Utility Blueprint」アセットが作成されました。
Blutility作成004

作成されたアセットはエディタ拡張のブループリントなので、ダブルクリックすると
実行されてウィンドウが開いてしまうので、このブループリントを編集する場合は
右クリックメニューの「ブループリントの編集」を選択します。
Blutility作成005

このブループリントに適当な関数を作成してみましょう。
Blutility作成006

編集しているブループリントウィンドウを閉じて、
編集したブループリントアセットをダブルクリックしてみましょう。
Blutility作成007
これだけで、さっき作成した関数のボタンが実装されています。
簡単!

あとは、この関数名のボタンを押すと、作成した関数の処理が実行されます。
Blutility作成008
ゲームを起動していなくても、実行されるのがエディタ拡張っぽくていいですね。

といった感じが基礎みたいです。
ちょっとさわってみた感じ、
ゲームを作るためのサポート機能(あくまでエディタの機能)であって
ゲーム実行中のデバッグ機能を作ることはできないのかなーという感触なんですが
ゲーム実行中のものにもアクセスできるといいなーと思ったり。
(うちが知らないだけかもですが)

C++を記述しないでも何かできそうなので、もう少しいろいろ調べてみたいですね。

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

≫ EDIT

UE4 アニメーション(モーション)ファイルを他のスケルトンで使えるようにする(リターゲット)

とある猛禽さんにモーションを作ってもらったのですが、
どうもグレイマンでモーションをつけたらしく、
スケルトンをグレイちゃんに設定しようとしたら怒られてインポートに失敗しました。

というわけで困ってしまったのですが
どうも「リターゲット」という機能がUE4にはあるらしく、
それを使って、グレイマンのモーションを
グレイちゃんに割り当てたモーションアセットに変換できるようです。

公式ドキュメントはこちら。

・アニメーション リターゲット(異なるスケルトン)
https://docs.unrealengine.com/latest/JPN/Engine/Animation/RetargetingDifferentSkeletons/index.html

アニメーションのリターゲット (異なるスケルトン) は、同じスケルトン アセットを共有しないキャラクター間でアニメーションを再利用できるようにする機能です。同じスケルトン アセットを共有するキャラクター間でアニメーションをリターゲットする アニメーション リターゲット とは異なります。

異なるスケルトンを持つキャラクター間でアニメーションをリターゲットするプロセスでは、リグ というアセットを使用し、あるスケルトンから別のスケルトンにボーン情報を渡します。リグを選択したら、ソース スケルトンとターゲット スケルトン (アニメーションをリターゲットする対象のスケルトン) の間でリグを共有します。これを行ったら、次にターゲット スケルトンのボーンを、リグに格納されているノードと一致させます。

ターゲット スケルトンの全ボーンがリグでセットアップされたら、ソース スケルトンで使用されているアニメーションをターゲット スケルトンにリターゲットすることができます。全ての関連データと合わせて Animation ブループリント全体をリターゲットすることも可能です。こうすることで、あるスケルトンから別のスケルトンに全アニメーション アセットを迅速に移動したい場合に時間を短縮することができます。

だそうです!

というわけで早速やってみることにしました。
グレイマンで作ったアニメーションアセットで右クリックメニューの
「Animアセットとリターゲットを複製する」を選択します。
英語だとまた表示が違うかもですね。
モーションリターゲット000

そうするとこんなウィンドウが開きます。
モーションリターゲット001

ここでリターゲット先のスケルトンを選択します。
今回はグレイちゃんに割り当てたいので「GrayChan_Skeleton」を選択します。

「リターゲット」ボタンを押すとこんな感じに。
モーションリターゲット002
無事グレイちゃん用のアニメーションアセットができました。


無事再生もされました。

リターゲットができるなら、ファイル変えなくてもできないのかなーと思ったのですが
UE4がスケルトンを固定して動かすっぽいので難しいのかなと。

ここらへん詳しく調べないとですね。


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

≫ EDIT

UE4 Character Movement での移動を設定する(Set Movement Mode)

「Character Movement」での移動タイプなどを設定する方法です。
「Disable Movement」ノードで停止させたものを動かす場合にも使うみたいですね。

ドキュメントはこちらに。

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

剛体物理を使用しないアバターが歩行、走行、ジャンプ、飛行、落下、水泳による移動ができるようにします。

とあるとおり、

「Set Movement Mode」ノードで設定できます。
SetMovement000.png

このノード移動タイプを切り替えれるようです。
SetMovement001.png

試しに「Flying」にしてみた結果がこちら。

落下しなくなり、空中で徐々に遅くなるようになりました。

簡単な移動などであれば「Character Movement」を使っていくのも良さそうですね。

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

| PAGE-SELECT | NEXT