読者です 読者をやめる 読者になる 読者になる

#memo

不正確な内容です、UE4についてが多い

Houdiniで作成したエフェクトをUE4で動かす(VertexAnimationTexture)

先日のGDC2017での公演、Houdini側で頂点アニメーション用のテクスチャを生成してUEで読み込むことで、Houdiniで作成したエフェクトがUE内で表現できちゃうというものがあったvimeo.comUE側にプラグインを入れて云々というものではなく、あくまでHoudini側で…

UnrealC++のデリゲート、イベントについて

UE4のデリゲート関連、なんかいろいろあって混乱しているのでまとめる 元ネタのC#、UEC++、BPエディタでの使用について確認していく

UObjectのコンストラクタのバリエーション

UObjectのコンストラクタの話、宣言に3つのバリエーションが有る ClassName() のデフォルトコンストラクタ ClassName(const class FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer) の形をとるもの 何も宣言しない(GENERATED_BODY()のみ)…

IWYUでコーディングしよう

IWYUとは 4.15で追加された一つの要素として、C++コンパイルの高速化が上げられている アンリアル 4.15 がリリースされました! これは、UEのソースコード全体がIWYU(Include-What-You-Use)という方法で再構築された事によるもので、 従来、Engine.h等、同モ…

仮想関数まわり、NativeEvent関数のオーバーライドについて

miyahuji111.hatenablog.com NativeEvent、ImplementableEventについては上記を参考通常のvirtual付き関数と、NativeEvent指定した関数の継承時の振る舞いについてまとめる

Superクラスについて

BeginPlay()関数の中に見かけがちなSuperクラスについて、標準のC++ではなく、UObject継承のクラスに提供されている何かっぽい

UENUM()マクロの使用

UENUM(BlueprintType) enum class EHoge : uint8 { None, Foo UMETA(DisplayName="Bar"), Huga }; C++11のscoped enumerationつかう なので値を代入する時は型名修飾が必要 EHoge hoge = EHoge::Huga; Enums For Both C++ and BP - Epic Wiki

BPに公開する関数のツールチップ設定

BPエディタでノードにマウスカーソルをのせるとToolTipがでてくる、これはノード自体と、ノード内部の引数で内容が変わったりもしている、これのやり方こんな感じです、以上

BankやEventをWwiseのみで完結させる

Wwise on UE4記事、目次はこちら

UE4でとりあえず音を鳴らしてみる

Wwise on UE4記事、目次はこちら

Wwiseがあると何が楽しいのか、WwiseによってUE4に追加される物

Wwise on UE4記事、目次はこちら

Wwiseのインストール、UE4へのインテグレーション

Wwise on UE4記事、目次はこちら

WwiseをUE4で使う 目次

Wwise on UE4記事、インストールまでとかは見かけるけれど、公式ドキュメント含めUE4で扱うにあたってのチュートリアル的なものが見つからなかったので、ほぼ自分用のメモとしてまとめておく 仕様が変わっている可能性があるので、作成時のバージョンやらは…

コリジョン応答にカスタムメッシュを使用する

オブジェクトマーカーの実装

正式名称謎だけど、こういうやつとりあえず基本的な機能は 画面内に収まっているマーカーは、3DWidgetを描画 画面外のものは、画面端に方向を示すWidgetを描画 メインのマーカーWidget作る マーカー用アクタに3DWidgetで適当にやる 画面外の判定 次に、画面…

UE4.13、WidgetでSpriteが使えるようになった

タイトルそのままなのだけれど、UE4.13ではWidgetのimageで、従来のTexture、Materialに加えてPaper2DのSpriteが指定できるようになった今までは、例えばアイコンをまとめたアトラステクスチャからWidgetに個々を表示をやるときは、マテリアルを作成してUV座…

UE4.13で追加されたメッシュデカールについて

デカール、これまでは平面投影するDeferredDecalしかなかったけれど、4.13でメッシュ形状でDecalを描写できる機能がついた 平面投影だと、柱の角とかをきれいに出すのは難しかったのだけれど、これを使うときれいな見た目になる モデル用意 とりあえず柱のメ…

UE4、#IF DEBUGもどきマクロの作り方

色々やっているとShippingバージョンではやってほしくないノードとかが出てくる、C++の#IF DEBUGはDEBUGバージョンだけ指定コードをコンパイルしてくれる機能で、これと似たようなマクロがあったら便利 今回できるものは本家と違ってBPから除外するわけでは…

UE4、Inputの長押し処理の実装

十字キーでインベントリのリストを送るみたいな処理、長押しのときはループでやってほしい これを作るためには、Inputの長押し判定を作る必要があるPlayerControllerのGetInputKeyTimeDown()関数にKey構造体を渡すとそのボタンが何秒押されているかを返して…

UE4、KillZVolumeの挙動について

KillZVolumeは、触れたアクタの持つFellOutOfWorld()という関数を実行するように言う(これだけの実装) FellOutOfWorld()はAActorに実装があり Physicsを切る ActorHiddenInGameをtrueに ActorEnableCollisionをfalseに Destroy()実行 という処理を行うFell…

UE4、BPでのデストラクタ処理の作り方

アクタ(AActor継承クラス)がDestroyされたときの流れ Destroy()呼ばれる Destroy()の中でDestroyed()呼ばれる Destroyed()の中でReceiveDestroyed()呼ばれる Destroyed()の中でOnDestroyed()呼ばれる BPではReceiveDestroyedとOnDestroyedを使用する、これら…

SVNでリビジョン管理やる

いい加減ソースコントロール使う、SVNが楽そうなのでそれでやる1.TortoiseSVNのインストールまでやる2.リポジトリを適当なところに作成する、ここに差分が集まってくる、デフォルトのフォルダ構造作りますかって言われるけど作らないでそのままOK押して終了…

セーブについて

UE4にはセーブとロード用の関数が用意されているセーブデータ自体はSaveGameクラスを拡張して定義する、このクラスに作成した変数がファイルに書き込まれる SaveGameクラス自体はUObjectを継承しているだけで全く実装はなく、セーブ系の関数を使う時にこのク…

翻訳について

ローカライゼーションダッシュボードを使ってテキストをローカライズする。 - QiitaFTextを検索して置換することができる、なのでHUDに出てくる文字は全てをFTextでやっておく、むしろ置換対象に出てくるのでこれ以外では使わないこんな構造体を使用するData…

UE4.13、C++側で構造体を定義してBPで使う

USTRUCT(BlueprintType) struct FGameItem { GENERATED_USTRUCT_BODY() UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Item") FName key; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Item") int32 num; // Constructer FGameItem…

4.13のレンダーターゲットへのブループリント描画

4.13の新機能、テクスチャのUV座標を取得と、レンダーターゲットへのブループリント描画を触っておくUnreal Engine 4.13 Released! テクスチャのUV座標取得 関数FindCollisionUVがそれ、実装はGameplayStatic.cppにある エンジン設定でbSupportUVFromHitResu…

箱の上に上がる、柵を乗り越える

箱の上に上がりたいCharacterMovementのパラメーターにはMaxStepHeightがあり、これは歩ける段差の最大の高さ、階段の1段 これが例えば30cmだとする、ここで乗り越えられる箱の最大の高さを決める、1mとする すると、30cm ~ 1m の高さのオブジェクトには乗り…

歩行のブレンドスペースの構築

三人称視点のプレイヤーはいろんな方向に動いて、それぞれで足の動きが異なる 代表的な動きを作り、ブレンドスペースを使用して360度動けるようになる、代表的な動きは前後左右の4つだけど、斜め移動も入れて8個あるとかなり見栄えが良くなる 更に移動自体に…

UE4.13で追加されたPhysical Animationsについて

4.13で追加されたPhysical Animations Unreal Engine 4.13 Released!従来でも物理アニメーションはPhATを設定して、このボーン以下にどんくらい適応するみたいな事はできた 追加された機能の違いと使い方を確認する現時点でまだドキュメントはなく、公式によ…

足を傾斜に沿わせる

やりたい ・足が傾斜に応答するようにする ・IKとTransformを使用してジョイントをプロシージャルに移動させるいつIKを使うべきか ・基本的に足のIKはめり込み回避に使われるべき ・アイドルモーションでは、軸足でない側 →軸足にIKを使用して膝を曲げてしま…

SubstancePainterでネジ穴

Toolsにネジ穴あるけど、自分で用意出来たらハッピー 流れは、Designer側でネジのマップをまとめたsbsを作って、それをSPで使いますモデル準備 ・ベイク用の板ポリとベイク元のメッシュ2つを用意しておく ・ベイク元はトポロジーどうでもよく、ハイポリがい…

アニメについてのメモ

過去 ルートモーションについて miyahuji111.hatenablog.com09/08 歩きの種類について 歩きといっても、敵がいる状態での歩き、町中の歩き、いろいろコンテクストがある09/11 AnimMontageについて Unreal Engine | AnimMontage Unreal Engine | 加算アニメー…

AnimDynamics / 髪のシミュレーション

髪の動きやる、いくつかの方法あるのでどれが良さそうか見ていく、初音ミクちゃんくらい長い髪はまた違うと思うので、長さ別にも見る、また髪の作り方も何パターンかある、バリエーションいくつか、以下です 1. 手付アニメ 2. PhAT(物理アセット) 3. AnimDyn…

UE4、SkeletalMesh周りのレギュレーション

UE4の機能を使うにあたって、やっておいたほうがいいことがままあり、とくにスケルタル 見つかり次第追記Rootを移動用と回転用で分けるようにする、具体的には原点に移動専用のRootを作って、その下に回転専用のルートジョイントを作る →ルートモーションを…

UE4のApex Clothing

Mayaでもできるっぽいけどプラグイン入れ方よくわからんかったので、おなじみのこちらでやりました 物理-布シミュレーション - UE4 Document@com04前提 ・布やる部分のメッシュ、マテリアルはわけておく ・ボーン入れてウェイトやっておく引っかかった所 ・S…

つんのめりアニメーション

敵とか撃たれた時の反応のアニメーションHalfLife2とかではこの反応はなくて、インパクト部位から出血やら火花が出るだけ 最近のリッチなゲームだと結構見かける敵が人型と仮定して、まず当たる部位のバリエーションがある 分けると、頭部、胴体、腕(左右)…

ルートモーションについて

ルートの差分をとって、キャラクタ移動に変換してくれる機能ルートに回転のキーあったら回転しちゃうので、スケルトン構造は、原点にRootを作ってこれをルートモーション用として、移動のみ、その子にキャラルートを作るようにしておくと安心キャラクタ側で…

NavMesh周りやる

NavMesh絶対しんどい、即死 箇条書き、即死 AAIController AAIController::MoveTo FAIMoveRequest型のMoveRequestを渡す 引数が正常か、もうゴールに到達してるかをチェックして、移動できるようであれば 1. FPathFindingQuery型のQueryを用意する 2. AAICon…

CharacterMovement続き

次はNavMeshだ…

CharacterMovement周りを読む

214301428行あるけど絶対に読む

Boids

ABZU最高!→Boidsやろう!→糞重い!!計算減らせそうな部分 ・2,3段階くらいのレベルつくって、そこで計算をさせて、魚自身はそこの値見て動くだけにする ・プレイヤーとの距離で処理の精度を調節する ・Separationの簡略化でそれっぽくが難しい ・単純にメ…

プレイヤー名の表示、参加者一覧の取得

・ゲーム参加直後はログイン処理がある ・ゲーム開始時クライアント側では、あるはずの変数やインスタンスがちゃんと存在している保証はない参加者一覧は、各クライアントで、レベルにあるPlayerStateをイテレーターで名前やらPingを取って表示したら良いの…

マルチプレイ時のプレイヤーポーンのスポーンのタイミング

GameModeのログイン処理、パーシスタントレベルのロードが終わると始まるっぽいけど、ストリーミングでマップをロードするタイプの設計だと、最悪床のロード前にプレイヤーがスポーンして奈落即ち死になる可能性がある 死かといって、ロード終わった瞬間にプ…

マルチプレイのメモ

公式のラーニングやりましょう Blueprint Multiplayer | Unreal Engine Unreal Engine | マルチプレイヤー シュートアウト 以下箇条全体編・クライアント独自の物(所有権が与えられた物)として、PlayerControllerを渡される・PlayerControllerには自分のPl…

フレームワークについて

マルチプレイの実装みてて、今あらためてフレームワークの役割をちゃんと見ておく必要ある、これはかなり初期にやっておくべきだった感ある まず適当にゲーム起動して、WorldOutlinerで何があるかみる、ViewOptionsからサーバーに何がありクライアントになに…

UE4の解像度設定の実装

前回の内容の派生記事、解像度設定部分だけまとめ とりあえずフルスクリーンと解像度数値設定のみネットで出てくるコンソールコマンド(r.SetRes)をつかった解像度設定は、Configファイルに反映されないので、自分でゲーム開始時にどうこうする必要がある Con…

Configurationファイル何処に何があってどれをどうしているのか問題

Unreal Engine | コンフィギュレーション ファイルConfigurationファイル、各地に散らばっており、何がどうなっているのかさっぱりわからない

ドラッグ中もマウスの位置取得する

Mouse position not updated while dragging - UE4 AnswerHubUE4、ボタンをクリック中は用意されてる関数じゃマウスの位置が帰ってこない、具体的に実装したいのは、ウインドウのドラッグ移動フォーラムではマウスポインタアクターを用意してそこから取れと…

Widgetの自作パネルについて

Widgetのデザイナーでは初めから用意されてるパーツの他に、自分で作ったものも置ける 一番下のタブのUserCreatedがそれで、というかこれはWidgetである 自分でWidgetを作ると勝手にここから参照できるようになっていて、複雑な構造のWidgetを個別に定義して…

シークエンス変移について、レベル、サブレベルについて、ロード画面について

UE4のシークエンス変移系まとめ・BPで用意されてる関数は二つあって、一つはOpenLevel、もう一つはLoadStreamLevel・LevelはどれもPersistentLevelが親、その子としてStreamingLevelを持てる構造をしている、孫はなし・OpenLevelはPersistentLevelの切り替え…