ぼっちプログラマのメモ

UE4とかVRとかについて書いたり書かなかったり。

【UE4】GUIフレームワーク「Dear ImGui」を使ってデバッグ・ツール用UIを作ってみよう! < 導入・基本編 >

本記事はUnreal Engine 4 (UE4) Advent Calendar 2020 13日目の記事 です。
今回はC++メインということもありプログラマさん向けです。非エンジニアの方はプログラマさんに実装を相談又は手伝ってもらいましょう!

はじめに

「Dear ImGui」はご存知でしょうか?
C++を使って直感的かつ簡単にGUIを構築できる非常に優れたGUIフレームワークで、デバッグやツール用のUIを構築する際によく用いられます。従来のライブラリですとウィンドウを出したりボタンに処理を紐付けたりするのに手間がかかりましたが、Dear ImGui(以下、ImGui)なら非常にシンプルに書くことが出来ます。まずは下の参考記事をご覧ください!簡単過ぎて驚くと思います!

qiita.com

更に簡単だけでなく非常に多機能です。デフォルトで用意されている物を使うことで下図のようなGUIを作成することが可能です。

f:id:pafuhana1213:20201212221547p:plain:w400f:id:pafuhana1213:20201212222943p:plain:w400
https://github.com/ocornut/imgui より

UE4の標準機能でデバッグ・ツール用UIを作る場合はUMGを使うことになりますが、上図のようなデバッグ向けのパーツを一から用意するのは正直大変です。また、ImGuiはUE4のビューポート上に別ウィンドウ的な形で表示されるので、下図のように自由にウィンドウを配置・整理することが可能です。デバッグ用UIが作業のジャマになっては本末転倒なのでこのような機能は非常に助かります(念の為触れますが、ゲームで実際に使うUIのようなアニメーションしたり様々なグラフィックを表示するのにはImGuiは向いていません。あくまでデバッグ・ツール用UI向けです)。

そんな神ってるDear ImGuiはその知名度・注目度が年々増してきており、最近だとCEDEC AWARDS 2019 のエンジニアリング部門で優秀賞を受賞したり、FINAL FANTASY VII REMAKEにて採用されたりしています!すごい!

更に、有志による UE4 対応版Dear ImGuiとして「Unreal ImGui」がなんと公開されています…!
github.com

更に更に、まだ触れていないのですが、実機上で表示したImGuiウィンドウをPCに繋いだマウス・キーボードで制御することが可能になる NetImGuiが組み込まれているようです!こりゃ触るしかないですね…!
github.com
https://github.com/sammyfreg/netImgui/raw/master/Web/img/InputWithNetImgui.gif
https://github.com/sammyfreg/netImguiより


ということでやっと触ってみました。まだ調査しきれていない部分もあるのですが、ひとまず色々動いたので導入・基本部分について書いていこうと思います。
なお、ImGui自体の使い方についてはあまり解説しません。というより、先程の参考記事が素晴らし過ぎるのでそちらをご確認ください(あと、Dear ImGui公式のWikiも是非)

続きを読む

UE4.26で追加されたControl Rig Componentの使い方について <ControlRigの流用編>

本記事はUnreal Engine 4 (UE4) その3 Advent Calendar 2020 4日目の記事 その③です。

その①
【UE4】UE4.26で追加されたControlRigのループ(Looping)を使って、手の開閉を簡単に実装してみる - ぼっちプログラマのメモ
その②
【UE4】UE4.26で追加されたControlRigの反転機能(Inversion)の使い方について - ぼっちプログラマのメモ
その③ ここ

ControlRig?ナニソレオイシイノ?という方はこちらをどうぞ

youtu.be
スライド:猫でも分かる Control Rig UE4.25 版

はじめに

UE4.26がついにリリースされました!
(この記事を書いてる今はまだリリースされてないので、本当に時間通りにアップされるかドキドキしながら書いてます)

今回リリースされたUE4.26にて「Control Rig Component」が追加されました。

Control Rig コンポーネント

Control Rig コンポーネントを使用してブループリントからコントロール リグ データにアクセスできるようになりました。これにより、ブループリントでゲームプレイ ロジックを使用してコントロール リグを制御したり、異なるプロポーションのキャラクターに合わせてコントロール リグを再初期化したり、他のコントロール リグ データを直接読み取ったり、書き込んだりできるようになりました。さらに、Control Rig コンポーネントのアクセサーを使用して、スケルタル メッシュ以外のオブジェクトを Control Rig コンポーネント階層にアタッチできるようになりました。
f:id:pafuhana1213:20201203220335g:plain
コントロール リグの新しいセットアップ イベントにより、スケルトンとコントロールを初期化できるようになりました。
コントロール リグの初期化状態の間にスケルトンとコントロールを配置することができます。
ブループリントでゲッター関数とセッター関数を使用して、ボーンおよびコントロールのトランスフォーム/値を取得または設定できます。
コントロール リグのコントロールデバッグ描画が、ブループリントのビューポートに表示されます。
コントロール リグからボーン トランスフォームを取得することで、スタティック メッシュ トランスフォームを制御することができます。
Unreal Engine 4.26 リリース ノート | Unreal Engine Documentation

UE4.25以前ではControlRigとその他の機能の連携があまりできませんでしたが、このControl Rig Componentを使うことでBPとの連携が可能になります!更に、異なるキャラクタ間でControlRigを流用したり、StaticMeshの制御が可能になったりとできることが大幅に増えます!

と言ったことまではこのリリースノートから読み取れるのですが、具体的にどう使うか?は説明されていません。ということで、本記事ではこのControl Rig Componentの使ってControlRigを様々なSkeletalMeshで流用する方法について説明します。

続きを読む

UE4.26で追加されたControlRigの反転機能(Inversion)の使い方について

本記事はUnreal Engine 4 (UE4) その3 Advent Calendar 2020 4日目の記事 その②です。

その①
【UE4】UE4.26で追加されたControlRigのループ(Looping)を使って、手の開閉を簡単に実装してみる - ぼっちプログラマのメモ
その② ここ
その③
【UE4】UE4.26で追加されたControl Rig Componentの使い方について - ぼっちプログラマのメモ


ControlRig?ナニソレオイシイノ?という方はこちらをどうぞ

youtu.be
スライド:猫でも分かる Control Rig UE4.25 版

はじめに

UE4.26がついにリリースされました!
(この記事を書いてる今はまだリリースされてないので、本当に時間通りにアップされるかドキドキしながら書いてます)

今回リリースされたUE4.26にて
「コントロール リグの反転(Control Rig Inversion )」がサポートされました。

コントロール リグの反転
f:id:pafuhana1213:20201203141544g:plain
コントロール リグの反転機能により、シーケンサーを使用して編集できるアニメーション リグに既存のアニメーションを再マッピングできるようになりました。また、使いやすいコントロール リグを使用して、既存のスケルタル アニメーションを変更できるようになりました。新しい Backwards Event ノードでは、ボーンがコントロールやその他のコントロール ロジックにどのようにマッピングされるかを定義します。

数値プレシーケンサー機能により、シーケンサーでアニメーションのフレームごとにバックワード イベントを実行することで、コントロール リグにベイクできるようになりました。
Unreal Engine 4.26 リリース ノート | Unreal Engine Documentation

UE4.25以前でも既存のアニメーションをControlRigで編集することは可能ではありましたが、手順が複雑であったり挙動が安定しないなどの問題がありました。しかし、この反転機能を使うことで簡単に編集することが可能になります。

と言ったことまではこのリリースノートから読み取れるのですが、具体的にどう使うか?は説明されていません。ということで、本記事ではこの反転機能の使い方について説明します。

続きを読む

UE4.26で追加されたControlRigのループ(Looping)を使って、手の開閉を簡単に実装してみる

本記事はUnreal Engine 4 (UE4) その3 Advent Calendar 2020 4日目の記事①です。

その① ここ
その②
【UE4】UE4.26で追加されたControlRigの反転機能(Inversion)の使い方について - ぼっちプログラマのメモ
その③
【UE4】UE4.26で追加されたControl Rig Componentの使い方について - ぼっちプログラマのメモ


ControlRig?ナニソレオイシイノ?という方はこちらをどうぞ

youtu.be
スライド:猫でも分かる Control Rig UE4.25 版

はじめに

UE4.26がついにリリースされました!
(この記事を書いてる今はまだリリースされてないので、本当に時間通りにアップされるかドキドキしながら書いてます)

今回リリースされたUE4.26にて
「コントロール リグの分岐とループ(Control Rig Branching and Looping )」がサポートされました。

コントロール リグの分岐とループ
分岐とループにより、最小限のセットアップで柔軟でダイナミックなコントロール リグを作成することができます。ループを使用すると、反復可能なオブジェクトの集合 (ボーン チェーン、コントロールのリスト) を動的に作成することができます。これにより、グラフのサイズが大幅に縮小され、グラフのパフォーマンス、作成時間、およびリグの柔軟性が向上します。

f:id:pafuhana1213:20201202214706g:plain

  • 新しい分岐/条件ノードにより、条件の要素に基づいてグラフを分岐できるようになりました。
  • ループでロジックを利用して、より簡潔で柔軟なグラフを作成できるようになりました。
  • 項目のグループ化とサポート ノードをサポートするようになりました。

Unreal Engine 4.26 リリース ノート | Unreal Engine Documentation

特にループ機能は手指のように複数の階層で構築されたボーンを制御する際にとても有用です!
この機能がないUE4.25の場合は指毎にノードを配置する必要があって大変でしたが、ループ機能を使うことでかなりシンプルに書くことが出来ます!

と言ったことまではこのリリースノートから読み取れるのですが、具体的にどう使うか?は説明されていません。
ということで、本記事ではこのループ機能を使って上図のような制御を実装する方法について説明します。

続きを読む

【UE4】UPROPERTYのmetaを使ってプロパティの表示順を調整する方法について

はじめに

C++で設定したプロパティが意図通りの順序で表示されないなぁ…と悩んでいたら公式ドキュメントにバッチリ書かれてたので自分用メモ
docs.unrealengine.com

DisplayAfter="PropertyName"

このプロパティは、ブループリント エディタでの中で、プロパティが両方とも同じカテゴリにある限り、ソースコードの順番に関係なく PropertyName という名前のプロパティの直後に表示されます。複数のプロパティの DisplayAfter 値と DisplayPriority 値が同じ場合、ヘッダ ファイルで宣言された順番で、名前付きプロパティの後に表示されます。

DisplayName="Property Name"

コードが生成する名前の代わりになるプロパティの表示名です。

DisplayPriority="N"

2 つのプロパティの DisplayAfter 値が同じである、または同じカテゴリで DisplayAfter メタ タグがない場合にこのプロパティがソート順を決定します。優先度が高い値は 1 です。つまり、, meaning that a property with a DisplayPriority 値が 1 のプロパティは DisplayProirity 値が 2 のプロパティに優先します。複数のプロパティの DisplayAfter 値が同じ場合、ヘッダ ファイルで宣言された順番で、名前付きプロパティの後に表示されます。

例:

UPROPERTY(EditAnywhere, meta=(DisplayPriority="1"))

【UE4】回転に関する操作UI( Gizmo, Manipulator )を追加するオプションについて

はじめに

つい最近これらのオプションについて知ったのでご共有!
レベルデザイン、Sequencer、Control Rigなどの編集時にお役に立つかなと思います!
※ Control Rigについて:猫でも分かる Control Rig UE4.25 版

Enable Combined Translate/Rotate Widget



Enable Arcball Rotate



Enable Screen Rotate



エディタ設定

f:id:pafuhana1213:20200816143501p:plain

おしまい

【UE4】Cel・Toon・Stylized・NPRシェーダ系アセット・資料 自分用まとめメモ (2020年8月更新)

f:id:pafuhana1213:20200805183009p:plain

自分用雑まとめ。最新版での動作確認はしていません。
抜けてるものがあったらコメントに頂けるとありがたいです

最終更新:2020/8/8

続きを読む