[UE554]パッケージ化がループして2日以上パッケージ化できない場合「XGE Con​​troller」プラグインを完全に無効にすることで解決します。

エラー表示は無く、以下がループしていました。

 2 packages in the savequeue:
UATHelper: Packaging (Windows): LogCook: Display:     /Game/jennie9/SwimSuit_Top_FRONT_5010
UATHelper: Packaging (Windows): LogCook: Display:     /Game/jennie9/Skirt_Short_Cage2_Middle_M
UATHelper: Packaging (Windows): LogCook: Display: 2 objects that have not yet returned true from IsCachedCookedPlatformDataLoaded:
UATHelper: Packaging (Windows): LogCook: Display:     Material /Game/jennie9/SwimSuit_Top_FRONT_5010.SwimSuit_Top_FRONT_5010
UATHelper: Packaging (Windows): LogCook: Display:     Material /Game/jennie9/Skirt_Short_Cage2_Middle_M.Skirt_Short_Cage2_Middle_M
UATHelper: Packaging (Windows): LogCook: Display: Cook Diagnostics: OpenFileHandles=311, VirtualMemory=4265MiB, VirtualMemoryAvailable=106810MiB

連鎖的な影響があるかどうかはわかりませんが、「XGE コントローラー」プラグインに関連しているようです。

私が収集した限りでは、これは Incredibuild を利用したコンパイル配布プラグインですが、実際には CPU 上の複数のコアが完全に利用されるのを妨げるだけのようです。

シェーダーのコンパイルが非常に遅く、かつシェーダーのコンパイル時に ShaderCompileWorker.exe プロセスが1つしか起動されていない場合は、これも原因の可能性があります。実際には、タスクマネージャーの「プロセス」タブには3つの ShaderCompileWorker プロセスが表示されることがありますが、詳細タブに切り替えると、「shadercompileworker.exe」プロセスが1つと「XGEControlWorker.exe」プロセスが2つしか表示されないことがあります。ほとんどの環境では、「XGEControlWorker.exe」プロセスは表示されず、「shadercompileworker.exe」プロセスが多数表示されます。なぜ一部の環境でこの動作が異なるのかは、私にはわかりません。

とにかく、コンパイル時間を大幅に短縮できる解決策として私が見つけたのは、

「XGE Con​​troller」プラグインを完全に無効にすることです。(エディターで「編集」>「プラグイン」を選択し、「XGE Con​​troller」を検索して「有効」のチェックを外します。)

追記:このマシンにIncredibuild Coordinatorというツールがインストールされているのを見つけました。シェーダーコンパイルタスクが配布待ちになっていることを検出しましたが、有効なライセンスがインストールされていなかったため、実際には複数のコアに配布されていませんでした。おそらくこれが、ほとんどの人がこの問題に遭遇しない理由でしょう。Incredibuild Coordinator(または類似のツール?)がインストールされていない場合、エンジンはデフォルトでXGE Incredibuildを利用したコンパイルを使用しません。

参考URL

https://forums.unrealengine.com/t/only-a-single-shadercompileworker-process/455973/2

[UE5.3]第22回UE5ぷちコン22「下痢ゲー3」で使った技術とexeダウンロード

UE53PuciCo22G3 パッケージダウンロードはこちら

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

使っているシェーダーは3Dnchuさんの

LV_StylizedPP_Example

ScreenSpaceHatching_Example

をカスタムしたものです。

管理用プロジェクト

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

【UE5.3】シェーダーファイルのインクルード方法について(Customノード編)についてをやってみた。

こちらの記事を丸っと参考にさせていただいて

【UE5】シェーダーファイルのインクルード方法について(Customノード編)

確認をとった

プロジェクト名はProjects_CustomNode

プロジェクトフォルダの直下にShadersフォルダを作成します。

Glitter.usf


float3 Glitter = float3(0.0,1.0,0.0);

return Glitter;

先ほど作成したシェーダーファイルを適用させるために、Projects_CustomNode.Build.cs に RenderCore を追加します。

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

using UnrealBuildTool;

public class Projects_CustomNode : ModuleRules
{
	public Projects_CustomNode(ReadOnlyTargetRules Target) : base(Target)
	{
		PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
	
		PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore","RenderCore" });

		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
	}
}

Projects_CustomNode.h を開き、新しく “Modules/ModuleManager.h” を インクルードします。
さらに、継承クラスとして FDefaultGameModuleImpl を宣言し、StartupModule関数 と ShutdownModule関数 を一緒にオーバライドします。

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

#pragma once

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


class FProjects_CustomNodeModule : public FDefaultGameModuleImpl
{
public:
	virtual void StartupModule() override;
	virtual void ShutdownModule() override;
};

Projects_CustomNode.cpp を開き、IMPLEMENT_PRIMARY_GAME_MODULE の最初の引数を Projects_CustomNode.h 側のクラス名に書き換えます。

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

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

void FProjects_CustomNodeModule::StartupModule()
{
	FString ShaderDir = FPaths::Combine(FPaths::ProjectDir(), "Shaders");
	AddShaderSourceDirectoryMapping("/Project", ShaderDir);
}
void FProjects_CustomNodeModule::ShutdownModule()
{
}
IMPLEMENT_PRIMARY_GAME_MODULE(FProjects_CustomNodeModule, Projects_CustomNode, "Projects_CustomNode" );

以上の流れが完了しましたら、一度ビルドを行います。

マテリアル作成しCustomノードのCodeに

#include "/Project/Glitter.usf"
return 0;

と入力したらOKでした。

プロジェクトデータ

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

UE4 きれいなグラデーションの虹色のレインボーのマテリアルが作りたい

正解はtexCoordの応用だった。

texCoordを縦のグラデーションと横グラデーションに分け

値をLerpのAlphaにつないでお好きな色をA,Bにつなぐ。

2つ作ってMultplyして縦横グラデーションになるようにMIXした。

さらに回転させたい

下の部分が見切れていたので追加しました。

参考

UE4]UMGで使えるでシンプルなグラデーションを作 …historia.co.jp

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

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

UE4 きれいなグラデーションの虹色のレインボーのマテリアルが作りたい https://furcraea.tokyo/2021/12/28/ue4-%e3%81%8d%e3%82%8c%e3%81%84%e3%81%aa%e3%82%b0%e3%83%a9%e3%83%87%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%81%ae%e8%99%b9%e8%89%b2%e3%81%ae%e3%83%ac%e3%82%a4%e3%83%b3%e3%83%9c%e3%83%bc%e3%81%ae/

[UnrealEngine] Surface Translusent Material

これは自分の中でかなりおおきな発見だった。

Shading Modelを変更しなくても、透明で、ベースカラー、Metalic スペキュラ、ラフネス、エミッシブ、Normal、タンジェント、ワールド位置オフセット、ワールドディスプレースメント、テッセレーション乗数、アンビエントオクルージョン、屈折が使える

詳細は以下

https://docs.unrealengine.com/4.27/en-US/RenderingAndGraphics/Materials/HowTo/Transparency/

【UnrealEngine】水っぽいマテリアルを作ったときのメモ(屈折率)

https://qiita.com/nchhujimiyama/items/8d2c820f2a1367864569

他にも

[ue5] ue4ぷちコンに出したゲームをアップしました。「だから寒冷地ではVISAがないとダメって言っただろ!」#UE4ぷちコン #UE4ぷちスタ 応募作品 #UE5Study #UE5 #UnrealEngine5

できたパッケージはこちらにアップしました。できたら遊んでみてください。

2.83GBあります。
download は以下

DevelopmentBuild  チェックポイント(レベル内セーブ機能)があるEasyバージョン

V7 VoicePeak版
https://drive.google.com/file/d/1brxO2bYWV4GZfw9vMK6O_L6ReHHHTFow/view?usp=sharing

V4
https://drive.google.com/file/d/1S25uUMd1k9umFNJ8HRiXHf0QvtRGCTNR/view?usp=sharing

Shipping チェックポイント(レベル内セーブ機能)がないHardバージョン

V6 VoicePeak版
https://drive.google.com/file/d/1khzi3AEROpcaJhmpsGoMqxYDtxVVFj9U/view?usp=sharing

V2
https://drive.google.com/file/d/10s3s-XBcIw3ezOFC3qbgvrI82PXvzn2W/view?usp=sharing

操作方法
キーボードでの操作は以下
 Jump スペースバー
 スライディング C
 弓構え 1
 弓発射 マウス左クリック
 このレ ベルをやり直し H
 キャラクター変更 C
 移動 WASD 後ろから敵に近づくと、はがいじめ
 カメラ方向 マウス左クリックドラッグ
 アイテム回収/構え時は投げ マウス左クリック
 アイテム投げ構え マウス右クリック

ゲームパッドでの操作は以下

感想、コメントなどくれると泣いて喜びます。笑

#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での値はこんな感じ

最後にまたこれをやって

やっとこうなった

#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