#UE4 #UE4Study とDAIKIN CG Channel Seminar モモちゃんリグで学ぶ!~反動表現~で学んだことと#AdvancedLocomotion への攻撃アクション追加

https://www.comtec.daikin.co.jp/DC/event/202201-toranomaki-rig-sem.html

学んだこと。
1.パンチ、切り付けはパンチ後、軽反動つける
2.軽い武器には反動いらない
3.大剣は地面から押し返す力を受けて体が揺れ
4.力の伝わる順番はパンチ腰→胸→腕
5.パンチ腰の動き下→上→下をパーツごと
6.ヒット後で腰をさらにねじ込むと強くなる
7.腰を入れる、運動連鎖の法則
8.大剣は振り下ろすので腰も同じ動きをする
9.重いので振り下ろす時だけじゃない
10.人間の胴体は重いので1回バウンドのみ
11.人間には脳みそ揺らし過ぎない意識がある
12.大剣はヒット後に胸をねじ込むと強くなる
13.大剣はヒット後、腰に合わせ武器を後ろに
14.ダメージはヒット部位、腰→胸→頭で落ち
15.ダメージは意識がないので脳みそ揺らす
16.ダメージは顔をそむけたり不安定に。
17.バウンドのタイミングずらしてランダム感

UE4 ALS Punch

プロジェクト設定>インプット>アクションマッピング+で追加して
Attack に
・キーボードのR
・ゲームパッドのショルダーのRトリガー
を追加した

A2_CharactorBPで
イベントグラフの下に+で追加して
CharactorInputGraphを追加して
Attackのインプットアクションを配置
イベントグラフでカスタムイベントを追加
Attack_Eventと命名
CharactorInputGraphを追加して
Attackのインプットアクションから>Attack_Eventへつなぐ
使いたい攻撃モーションのアセットを右クリックして作成>AnimMontage
A2_F2_BigSwordSlash4_Montageができたので
CharacterBPで関数を作成して
GetAttackAnimationとリネーム
GetAttackAnimation>switch on ALS_OvarlayState
Get OverlayState >switch on ALS_OvarlayStateへ
switch on ALS_OvarlayStateのDefaultからReturnノードへつなぐ
Returnノードにoutputを追加してReturnValueにして
型をAnim Montageにし
CharacterBPで変数を作成してAttack_Animにした。
型をAnim Montageにした。
Get AttackAnimしてそのデフォルト値にA2_F2_BigSwordSlash4_Montageを追加した。
Get AttackAnimをReturnノードにつないだ

イベントグラフでGet Main Anim instanceして>値を検証済みGETに変更した
Attack_Event>Main Anim instanceとつなぐ。
Main Anim instance>Montage Playを呼ぶ
作った関数GetAttackAnimationを配置してpure純粋化>Montage Playへ接続

A2_F2_BigSwordSlash4から>EnableRootMotionをオンに

A2_F2_BigSwordSlash4_Montagから>スロット>スロット名>
MovementActionGroup BasedLayer

スケルトンにhand_rにhand_r_weaponソケットを追加
hand_r_weaponソケットにプレビューアセットを追加して角度調整
CharacterBPのビューでStatickMesh追加武器メッシュ設定して
一旦完成。

#UE4 #UE4Study Character #HairCloth #HairShadingModel #AdvancedLocomotionSystem ファサっと天使の輪と束感でUEのヘアーの使い方

服と髪をなびかせるHair Clothはこれをやった
https://docs.unrealengine.com/4.27/ja/InteractiveExperiences/Physics/Cloth/Overview/
1, [Section Selection (セクション選択)]
2,左クリックを使って、クロスとして使用したいメッシュの一部を選択します。次に右クリックして、コンテキスト メニューを開いて Cloth アセットを作成します。
3,コンテキスト メニューから、[Create Cloth Asset from Selection (選択したものから Cloth アセットを作成)] を選びます。

 A,Asset Name – 後で簡単に見つけられるようにアセットに名前を付けてください。

 B,Remove from Mesh – クロスとして関連付けたい別個のジオメトリのメッシュの構成要素があれば、このオプションを有効にします。そうでなければ、チェックを入れずにこのままにします。

 C,Physics Asset – Cloth アセットがキャラクター用ならば、その Physics アセットを使ってクロス シミュレーションで適切なコリジョンが生じるようにします。

4,[Create] ボタンをクリックします。
5,セクションを再度右クリックして、コンテキスト メニューを表示させて、[Apply Clothing Asset] にマウスをかざし、利用可能なクロス アセットから適用するものを選択します。これで作成した任意のクロス アセットが選択したセクションに関連付けられます。

・ペイント – マウスの左ボタン
・消去 – Shift キー + マウスの左ボタン
・クロスのプレビュー – H キー

[Window] を選択し、リストから [Clothing] を選択します。
[Clothing Data] リストから選択します。

[Activate Cloth Paint] ボタンをクリックして、選択した Cloth アセットをペイントするために使用可能なプロパティを有効にします。

・ブラシの半径を5にして
・強度を0.2
・フォールオフ0.5
でヘアをクリックすると塗れる。ピンクが塗ってない場所

走ってみると

髪が前に来ちゃう

ので

物理ボディを修正した

HairShadingModel 基本はこれをやった。

つまりこれで髪の天使の輪みたいなものができる。 (まわしてみないと分からない)

でも髪の束感は出したかったのでOpacityMaskもありにするとこうなる。

束感のために使ってるテクスチャはこれで

こんな感じにスキャッター、スペキュラ、ラフネスにMultyplyしたらいい感じになった。

使っているMIでの値はこんな感じ

最後にまたこれをやって

やっとこうなった

#AdvancedLocomotionSystem #UE4 #UE4Study #NierAutomata2B #2B #UE4 #humanoid rig #VirtualbornSetting

Nier Automata 2B Data is here

[Download Now] 2B Nier:Automata (original model) – DeviantArt

https://www.deviantart.com/shinylightbulb/art/Download-Now-2B-Nier-Automata-original-model-670383209

XPS.XPS convert in Blender

XPS tools 2.0.2 (for Blender 2.80+) by johnzero7 on DeviantArt

https://www.deviantart.com/johnzero7/journal/XPS-tools-2-0-2-for-Blender-2-80-834572824

OLD Blender2.80 Download is here

https://download.blender.org/release/Blender2.80/

export xps to fbx

open in Maya

1,chengeJoint Name and Mesh Name.

2,load UE4_Mannequin_Female.fbx from UE4.26

3,メッシュフォルムが崩れないようにできるだけ回転のみで2BjointをUE4ジョイントに合わせる。

4,2Bジョイントとメッシュのグループを複製してその形状のメッシュを作成

5,2Bジョイントのジョイントを消して変形された2Bメッシュを残す

6, 残った2BメッシュをUE4ジョイントとグループ化

7,SkinBind

8,SkinWeightCopy 2BJoint Mesh > New2B UE4 Joint Mesh

Export fbx

UE4 humanoid rig Virtual born Setting

Select root Add Virtual Bone >root Name:Curves
Select Curves Add Virtual Bone >root Name:ik_foot_root
Select ik_foot_root Add Virtual Bone >foot_r Name:ik_foot_r
Select ik_foot_root Add Virtual Bone >foot_l Name:ik_foot_l

Select ik_foot_r Add Virtual Bone >foot_r Name:ik_foot_r_offset
Select ik_foot_l Add Virtual Bone >foot_l Name:ik_foot_l_offset

Select ik_foot_r Add Virtual Bone >calf_r Name:ik_knee_target_r
Select ik_foot_l Add Virtual Bone >calf_l Name:ik_knee_target_l

Select root Add Virtual Bone >foot_r Name:foot_target_r
Select root Add Virtual Bone >foot_l Name:foot_target_l

Option>Show Retargeting Option
Recursively Set Translation Retargeting Skeleton
root > Translation Retargeting go to>Animation
Pelvis > Translation Retargeting go to>Animation

ここでALS_AnimBPを右クリックしてリターゲット
ALS> N2Bで置換しつつリターゲット

How to integrate MetaHumans with ALSV4 | Part 1/3 | UE4
18:04/35:47
ALS_N2B_CharactorBP>EventGraph
ParentTick > Update Coloring System Disconnect
ParentTick x Update Coloring System

ALS_N2B_CharactorBP>Construction Script
Set MatserPose Component > Set Dynamic Material Disconnect
Set MatserPose Component x Set Dynamic Material

How to integrate MetaHumans with ALSV4 | Part 1/3 | UE4
24:26/35:47

N2B_AnimBP Open
Window>FindResult input ik_foot
FindResult Replace All hand
ik_foot_r > VB ik_foot_r
ik_foot_l > VB ik_foot_l
ik_foot_root >VB ik_foot_root

goto AnimGraph
Go to Left Side OverLayLayer >Overlay States> Feminine >Copy All
Back Overlay States>Default>Past

Retarget > ALS_Montage Action All Select
Replace
ALS >N2B
Retarget

Open ALS_N2B_CharactorBP
window>FindResult
“switch on overlay state”
Result2,3,4,5, open
ALS_Montage >N2B_Montage

膝がかなり離れている場合
If your knees are far apart
N2B_AnimBP >AnimGraph>Linked Anim Layer Foot IK
Modify Knee Targets Comment
Transform(Modify)Bone >Translation 20 10 5
Transform(Modify)Bone >Translation -20 -10 -5

Montage is not good high root motion
FBX export And Delete root joint keyframe animation
N2B_N_LandRoll_F
N2B_N_Mantle_1m_LH
N2B_N_Mantle_1m_RH
N2B_N_Mantle_2m
(mean ‘s root joint is Go to Change “SK_Manequin_Female” Then Can’t Delete UE4 Root Motion)

#UE4 #UE4Study MetaHuman Creator To AdvansedLocoMotionSystem

MetaHuman Creator

MetaHuman を AdvansedLocoMotionSystem にあてる試行錯誤をした。

もともとThirdPersonに当てられればいいだけだったが

UnrealEngineでサードパーソンキャラクターメタヒューマンを使用する| MetaHumanCreator

このチュートリアルでは

metahumanをthirdperthon化でわかった事

リターゲットは選択したものによって挙動が違うこと。
1.スケルトンを選択した場合はAB差し替えになる
2.アニメーション選択した場合はAからBへ選択したアニメーションのみ複製される
3.ANIMBP選択した場合はAからANIMBPとアニメーション全部がBへ複製される

metahumanはface頭、body手胴足先、torso上半身、Legs足、feet靴
に分かれている。

やってみた結果上半身のパーツはスケルトンが
bodyと別でリターゲットのためのポーズアセットが読み込めなかった。

別ABPを用意してもポーズがずれてしまい
うまくリターゲット出来なかった

上半身がうまくいかない

そこで

このビデオチュートリアルを見つけた。

結果Body(手、足先)のみにMH_AnimBPがあってそれ以外のSkeltalMeshはBPで添わせることが分かった。

やっとできた。全部で2日はかかった。

#UE4 #UE4Study 半径変更可能なRingをHLSLで描く #Shader #HLSL

Code : return MyFunction(texCoord,resolution,R);

OutputType: Float4

Inputs : texCoord,resolution,R,B

IncludeFilePath:/Project/Ring.usf

// ring
float centerR= length(p);//その座標の中心からの距離  中心が1 まわり0
float gradationOffset=R-centerR; //グラデーションをずらす。
float ring= abs(gradationOffset); //中心から距離が 0.5 となる場所ほど値を小さく
float t = B/ring;//見た目が天使の輪に見えるように係数をかける
//Ring.usf

//return MyFunction(texCoord,resolution,R,B);
float4 MyFunction(float2 texCoord,float2 resolution,float R,float B)
{
    // グラデーションのcenterをずらす
	float2 p = (texCoord.xy * 2.0 - resolution) / min(resolution.x, resolution.y);
	
    // ring
    float centerR= length(p);//その座標の中心からの距離  中心が1 まわり0
    float gradationOffset=R-centerR; //グラデーションをずらす。
    float ring= abs(gradationOffset); //中心から距離が 0.5 となる場所ほど値を小さく
    float t = B/ring;//見た目が天使の輪に見えるように係数をかける

    return float4(t,t,t, 1.0);;
}

参考

https://wgld.org/d/glsl/g004.html

#UE4 #UE4Study CostomノードのHLSLで円を描く三平方の定理で円を色分け

三平方の定理で円を色分け

Code: return MyFunction(texCoord,resolution,R,A,B);

OutputType:Float4

Inputs: texCoord,resolution,R,A,B

Input File Paths: /Project/Circle.usf

pow(V,2.0)でVの2乗って意味

https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-pow

つかわないでみた。

float R2=p.x*p.x+p.y*p.y;//三平方の定理


//Circle.usf

//return MyFunction(texCoord,resolution,R,A,B);
float4 MyFunction(float2 texCoord,float2 resolution,float R,float4 A,float4 B)
{
	
	float2 p = (texCoord.xy * 2.0 - resolution) / min(resolution.x, resolution.y);
	//return float3(p.x,p.y,1.0);
	
    //float R=0.5;

    //float4 c = float4(1.0,1.0,1.0,1.0);// baseColor
    float4 c =A;// baseColor
    float R2=p.x*p.x+p.y*p.y;//三平方の定理
    //if(pow(p.x,2.0) + pow(p.y,2.0) <= R){
    if(R2 <= R){
       // c = float4(0.0,0.0,0.0,0.0); //circleColor
        c = B;//circleColor
    }
    return c;
}

参考

UE4 Shader MaterialのCustomノードが進化してincludeFilePathでのファイル参照ができるようになっていた件

失敗1、2020年になってCustomノードが安定してきたみたいで

constで宣言しておくとそのままMyFloat使える

Codeにreturn MyFloat;で使える。

CodeにMyreturn MyFunction();で関数を呼び出せる。

const static float3 MyFloat = float3(1.0,0.0,0.0);

float3 MyFunction()
{
	return float3(0.0,1.0,0.0);
}

TestOutput1 = float3(0,0,1);
return 0.0;

Additional Output :TestOutput1

OutputType CMOT Float1

コンパイルされて自動生成されたHLSLコードの中身は

エラーコードで出てくるこれは

/Engine/Generated/Material.ush

マテリアルエディタのメニュー「ウインドウ>シェーダーコード>HLSL コード」を選択。

すると HLSL コードのウインドウが開き、コンパイルされた全マテリアルの内容が HLSL で表示される。

このプロジェクトの作り方は

【UE4】USF(Unreal Shader File) をすぐに始める環境設定 Project編さん

でのShaderフォルダの読み込み設定が必要だった。。50個ぐらいエラーがでるので見ない方がいいかも

今回はプロジェクト名は:Shader_MatCustomにしたよ

プロジェクト設定でCPP

Shader_MatCustom.h

// Copyright Epic Games, Inc. All Rights Reserved.

#pragma once

#include "CoreMinimal.h"

#include "Modules/ModuleManager.h"

class FShader_MatCustom : public IModuleInterface
{
public:
    virtual void StartupModule() override;
    virtual void ShutdownModule() override;


};

Shader_MatCustom.cpp

// Copyright Epic Games, Inc. All Rights Reserved.

#include "Shader_MatCustom.h"
#include "Modules/ModuleManager.h"

IMPLEMENT_PRIMARY_GAME_MODULE( FShader_MatCustom, Shader_MatCustom, "Shader_MatCustom" );//3つの書き換え


void FShader_MatCustom::StartupModule()
{
    FString ShaderDirectory = FPaths::Combine(FPaths::ProjectDir(), TEXT("Shader"));
    if (!AllShaderSourceDirectoryMappings().Contains("/Project"))
    {
        AddShaderSourceDirectoryMapping("/Project", ShaderDirectory);
    }

}

void FShader_MatCustom::ShutdownModule()
{
}

Shader_MatCustom.Build.cs

// Copyright Epic Games, Inc. All Rights Reserved.

using UnrealBuildTool;

public class Shader_MatCustom : ModuleRules  // ←クラス名リネーム
{
	public Shader_MatCustom(ReadOnlyTargetRules Target) : base(Target)  // ←クラス名リネーム
	{
		PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
	
		PublicDependencyModuleNames.AddRange(new string[] {  //改行して展開した。
			"Core",
			"CoreUObject",
			"Engine",
			"InputCore",
			"RenderCore",  // ←追記
			"RHI"         // ←あとで必要になるので追記(パス追加に関係ない)
		});

		PrivateDependencyModuleNames.AddRange(new string[] {  });



		// Uncomment if you are using Slate UI
		// PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });
		
		// Uncomment if you are using online features
		// PrivateDependencyModuleNames.Add("OnlineSubsystem");

		// To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true
	}
}

VSでビルドをしてコンパイル

Shaderフォルダ作成

マテリアル作成

CustomNode作成

MyShader.usf作成

IncludeFilePathに/Project/MyShader.usf

MyShader.usf

const static float3 MyFloat = float3(1.0,0.0,0.0);

float3 MyFunction()
{
	return float3(0.0,1.0,0.0);
}

やっとうまくいったので

C++サンプルプロジェクトは丸ごとだ。.slnも入ってるよ

https://drive.google.com/file/d/1-ClY_v2cudLARAkMmAfPGrAnFndNnWIX/view?usp=sharing

参照

キンアジさんのところで見つけてしまった。

UE4 ShaderReaderProで1000円で安定したHLSL環境を手に入れた

失敗1,CustomNodeはUE4が落ちまくる。

失敗2,ShaderReader(フリー版は動きもしなかったが)

失敗3,エンジンにインストールなので仕事で使えるか不明

ここに入っている

C:\Program Files\Epic Games\UE_4.26\Engine\Plugins\Marketplace\ShaderReaderPro

成功、ShaderReaderProで1000円で安定したHLSL環境を手に入れた

VSCodeを使うことになることは必須みたい。.usf拡張子の編集をするのでテキストハイライトの対応関係でそうなる。

これでやりたい放題HLSLが書けるかもしれない。まだこんだけ

1,float MyVer1;するだけで入力ピンがでる。

2,ファイル参照からHLSLデータが読み込める。

float MyVer1;
float MyVer2;
float MyVer3;
float MyVer4;
return float4(MyVer1,MyVer2,MyVer3,MyVer4);

BeaTeacherさんの動画

参考

https://wgld.WebGL 開発支援サイト wgld.org