[VS2022][UE5]Azure Dev OpsでUE5プロジェクトをGitで管理する

ここ

https://historia.co.jp/archives/12245

でVS2022だと画面が違うのでキャプチャを張りなおします。

Azure DevOpsからVSへ接続しながらクローンします。

VS で View > TeamExplorer

コマンドプロンプトは見つからなかったので

Explorer 右クリックして その他のオプションを確認 > Open Git Bash here します。

git lfs install します。

git lfs install

git lfs track “*.uasset” します。

git lfs track "*.uasset"

.gitattributes が生成されます。

VS にもどって Git Changes

Commit And Push します。

UEProjectName/Content/BP_GitLFSTestActor.assetというファイルを作成し、

ファイルに 123456789 //1byte以上ないと git lfs ls-files 反応しない を書き込みますl。

123456789 //1byte以上ないと git lfs ls-files 反応しない

チームエクスプローラーからリモートリポジトリにPushします。

git lfs ls-filesで確認します。

git lfs ls-files

15e2b0d3c3 * ActionCombat/Content/BP_GitLFSTestActor.uasset が出てくればOKです

最後に.gitattributesファイル内を以下にして   Commit And Push します。

#以下のサイトを参考に作成
#https://historia.co.jp/archives/12245/

*.uasset filter=lfs diff=lfs merge=lfs -text
*.umap filter=lfs diff=lfs merge=lfs -text
*.bmp filter=lfs diff=lfs merge=lfs -text
*.float filter=lfs diff=lfs merge=lfs -text
*.pcx filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text
*.tga filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.exr filter=lfs diff=lfs merge=lfs -text
*.dds filter=lfs diff=lfs merge=lfs -text
*.hdr filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.mp4 filter=lfs diff=lfs merge=lfs -text
*.obj filter=lfs diff=lfs merge=lfs -text
*.fbx filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.xlsx filter=lfs diff=lfs merge=lfs -text
*.docx filter=lfs diff=lfs merge=lfs -text
*.pptx filter=lfs diff=lfs merge=lfs -text

VS2022UE5_ProjectBase2.zip

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

[UE5.3.2]Udemy Master Dynamic Combat, AI Challenges, and C++ Techniques to Create Your Own Epic Action Games in UE5 でのエラー PlayerAnimInstance.gen.cpp.obj : error LNK2001: unresolved external symbol  の解決方法

1>PlayerAnimInstance.gen.cpp.obj : error LNK2001: unresolved external symbol "public: static struct UE::Math::TIntPoint<int> const UE::Math::TIntPoint<int>::ZeroValue" (?ZeroValue@?$TIntPoint@H@Math@UE@@2U123@B)
1>Throwaway.gen.cpp.obj : error LNK2001: unresolved external symbol "public: static struct UE::Math::TIntPoint<int> const UE::Math::TIntPoint<int>::ZeroValue" (?ZeroValue@?$TIntPoint@H@Math@UE@@2U123@B)
1

リンクエラー(LNK2001)が発生しているようですね。このエラーは、コンパイラが ActionCombat.cpp.obj ファイル内で参照されているシンボルの定義を見つけられないことを示しています。以下のような原因が考えられます:

  1. 関数定義の欠如:ヘッダーファイルで宣言されたすべての関数に対応する定義がソースファイルにあることを確認してください。
  2. 関数シグネチャの不一致:宣言と定義の関数シグネチャが完全に一致していることを確認してください。
  3. ライブラリの不足:シンボルが外部ライブラリの一部である場合、そのライブラリがプロジェクト設定で正しくリンクされていることを確認してください。
  4. インクルードディレクティブ:必要なヘッダーファイルがすべてソースファイルにインクルードされていることを確認してください。

以下の手順でこのエラーをトラブルシューティングし、解決することができます:

  • 関数の宣言と定義を確認:ヘッダーファイルで宣言されたすべての関数に対応する定義がソースファイルにあることを確認します。
  • ヘッダーファイルのインクルードを確認:関数が宣言されているヘッダーファイルが、関数を使用するすべてのソースファイルにインクルードされていることを確認します。
  • 必要なライブラリをリンク:関数が静的または動的ライブラリの一部である場合、そのライブラリがビルドプロセス中にリンクされていることを確認します。
  • 関数の可視性を確認:関数が現在のスコープ内でアクセス可能であり、他のソースファイルで定義されている場合は extern として正しくマークされていることを確認します。

Games/ActionCombat 右クリックして Clean を実行してから Buildする。

やったーー!解決

[Maya][RIG]maya PythonのOpenMaya の Vector で任意の座標からもっとも近い線分上の点、PoleVecterを求める

こんな感じの状態、

# -*- coding: utf-8 -*-
import maya.cmds as cmds
from maya import OpenMaya
#任意の1点と線分の両端の座標から線分上のもっとも近い点を返す
def xGetClosestPoint(myPoint, begin, end):
    myVector3D = OpenMaya.MVector(myPoint[0] - begin[0], myPoint[1] - begin[1], myPoint[2] - begin[2])
    baseVector3D = OpenMaya.MVector(end[0] - begin[0], end[1] - begin[1], end[2] - begin[2])
    nDotProduct = myVector3D * baseVector3D
    print("nDotProduct= "+str(nDotProduct))
    if (nDotProduct > 0):
        print("Big if")
        nBaseLength = baseVector3D.length()
        print("nBaseLength= "+str(nBaseLength))
        nProjection = nDotProduct / nBaseLength
        
        if (nProjection < nBaseLength):
            print("small if")
            scaleValue = nProjection / nBaseLength
            print("scaleValue= "+str(scaleValue))
            baseVector3D = baseVector3D * scaleValue
            
            return [begin[0] + baseVector3D[0], begin[1] + baseVector3D[1], begin[2] + baseVector3D[2]]
        else:
            print("small else")
            return end

    else:
        print("Big else")
        return begin;
    

sel = cmds.ls(sl =True)

# get Translate
start = cmds.xform(sel[0],q=1 ,ws =True,t=True)
mid = cmds.xform(sel[1],q=1 ,ws =True,t=True)
end = cmds.xform(sel[2],q=1 ,ws =True,t=True)

# Vector for Translate
#startV = OpenMaya.MVector(start[0] ,start[1],start[2])
#midV = OpenMaya.MVector(mid[0] ,mid[1],mid[2])
#midV = OpenMaya.MVector(end[0] ,end[1],end[2])

c_vPos = xGetClosestPoint(mid, start, end)
cmds.xform("pSphere1",ws =True,translation=(c_vPos[0], c_vPos[1], c_vPos[2]) )

線状に乗った!!

参考URL

野中文雄先生の任意の座標からもっとも近い線分上の点を求める

http://www.fumiononaka.com/TechNotes/Flash/FN1104002.html

MAYAチュートリアル:Pythonで極ベクトルを正しく配置する方法

[UE5][C++]git通したC++プロジェクトに.slnがなくて→Genalate Visual Studio Project Files →UE5 が無い→フォルダ開いて解決っていうメモ

[UE5][C++]git通したC++プロジェクトに.slnがなくて→

Genalate Visual Studio Project Files →

UE5 が無いとか小一時間悩んだら、ただフォルダ開いて無いとかゆー慌てっぷりで、草

フォルダ開いて解決 ひどいw

関連URL

Attach

https://stackoverflow.com/questions/34498992/visual-studio-run-button-changed-to-attach-to-a-process

[UE5.3]C++プロジェクトをリフレッシュプロジェクトファイルの作成時にエラーが発生しました

Running D:/Program Files/Epic Games/UE_5.3/Engine/Build/BatchFiles/Build.bat  -projectfiles -project="D:/Sandbox/UE53CratePlugin/UE5_VS/UE5_VS.uproject" -game -rocket -progress
Using bundled DotNet SDK version: 6.0.302
Running UnrealBuildTool: dotnet "..\..\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.dll" -projectfiles -project="D:/Sandbox/UE53CratePlugin/UE5_VS/UE5_VS.uproject" -game -rocket -progress
Log file: C:\Users\furcr\AppData\Local\UnrealBuildTool\Log_GPF.txt

Generating VisualStudio2019 project files:
Discovering modules, targets and source code for project...
Visual Studio 2019 does not support .NET 6.0 C# projects, these projects will not be added to the generated solution.
Please generate the Visual Studio 2022 solution if .NET 6.0 C# project support is required.
Microsoft platform targets must be compiled with Visual Studio 2022 17.4 (MSVC 14.34.x) or later for the installed engine. Please update Visual Studio 2022 and ensure no configuration is forcing WindowsTargetRules.Compiler to VisualStudio2019. The current compiler version was detected as: 14.29.30154

つまりは

D:/Program Files/Epic Games/UE_5.3/Engine/Build/BatchFiles/Build.bat -projectfiles -project="D:/Sandbox/UE53CratePlugin/UE5_VS/UE5_VS.uproject" -game -rocket -progress を実行しています
バンドルされた DotNet SDK バージョン 6.0.302 を使用しています
UnrealBuildTool を実行しています: dotnet "..\..\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.dll" -projectfiles -project="D:/Sandbox/UE53CratePlugin/UE5_VS/UE5_VS.uproject" -game -rocket -progress
ログ ファイル: C:\Users\furcr\AppData\Local\UnrealBuildTool\Log_GPF.txt

VisualStudio2019 プロジェクト ファイルを生成しています:
プロジェクトのモジュール、ターゲット、ソース コードを検出しています...
Visual Studio 2019 .NET 6.0 C# プロジェクトをサポートしていないため、これらのプロジェクトは生成されたソリューションに追加されません。
.NET 6.0 C# プロジェクトのサポートが必要な場合は、Visual Studio 2022 ソリューションを生成してください。
インストールされているエンジンでは、Microsoft プラットフォーム ターゲットを Visual Studio 2022 17.4 (MSVC 14.34.x) 以降でコンパイルする必要があります。Visual Studio 2022 を更新し、WindowsTargetRules.Compiler を VisualStudio2019 に強制する構成がないことを確認してください。現在のコンパイラ バージョンは 14.29.30154 として検出されました。

VS2022をつかえってこと

したらエラーでなくなった  

[Maya]Mayaで同じトポロジーを持ったオブジェクトの頂点番号を合わせる ReorderVertices (Shift+クリックではありません)(1つのポリゴンを囲むようにクリックしてください)

mel :ReorderVertex;

Plug-in Manager内の「meshReorder. mll」にチェックマークを入れると機能がアクティブになります。
~Mayaの機能「Reorder Vertices」~
Maya2017から新規に追加された機能で、頂点番号を後から調整することが可能です。

以下より
https://help.autodesk.com/view/MAYAUL/2025/JPN/?guid=GUID-8CF82D97-203C-4056-BEF2-EA0CD27336ED

https://help.autodesk.com/view/MAYACRE/JPN/?guid=GUID-8CF82D97-203C-4056-BEF2-EA0CD27336ED

頂点の順序を変更するには

1,頂点の順序を変更するポリゴン オブジェクトのヒストリを削除します。
2,ディスプレイ> ポリゴン > コンポーネント ID > 頂点(Display > Polygons > Component IDs > Vertices)に移動し、オブジェクトの頂点 ID を選択して表示します。
3,頂点の順序を変更(Reorder Vertices)コマンドを選択します。
4,設定する新しい頂点の順序の最初の 3 つの頂点に関連する 3 つの隣接する頂点をクリックします。
(Shift+クリックではありません)(1つのポリゴンを囲むようにクリックしてください)
Maya では、設定した初期パスに基づいて、残りの頂点が並べ替えられます。

注: 頂点の順序を変更(Reorder Vertices)コマンドは、異なるコマンドやツールに切り替えるまでアクティブであるため、希望の順序になるまで新しい頂点の順序を繰り返し試すことができます。


頂点を手動で並べ替えるのではなく、頂点の順序を転送(Transfer Vertex Order)コマンドを使用して、1 つのオブジェクトから別のオブジェクトに頂点の順序を転送できます。

注: 最良の結果を得るには、まず、2 つのメッシュのトポロジが類似していることを確認します。
1 つのメッシュから別のメッシュに頂点の順序を転送するには

1,転送に関連する両方のオブジェクトのヒストリを削除します。
2,ディスプレイ > ポリゴン > コンポーネント ID > 頂点(Display > Polygons > Component IDs > Vertices)に移動し、オブジェクトの頂点 ID を選択して表示します。
頂点の順序を転送(Transfer Vertex Order)コマンドを選択します。
ソース オブジェクト上で 3 つの隣接する頂点をクリックします。
(Shift+クリックではありません)(1つのポリゴンを囲むようにクリックしてください)
ソース オブジェクト上で選択した 3 つの頂点とトポロジ的に関連しているターゲット オブジェクト上の 3 つの隣接する頂点をクリックします。
(Shift+クリックではありません)(1つのポリゴンを囲むようにクリックしてください)
選択した 3 つのベース頂点とソース オブジェクトが相対関係になるように、残りの頂点が並べ替えられます。

参考URL

[ue5.3.2]最適化用 debug shader 重い、Texture重いとか 最適化UE5night デバッグ&チューニングナイトのメモ

ライティングあり>最適化ビューモード>シェーダー複雑度

level選択してサイズマップすれば重い原因がわかる。

マップの中で重いテクスチャなどを見つける Level>サイズマップ
詳細はこちら↓

https://dev.epicgames.com/documentation/ja-jp/unreal-engine/cooking-content-and-creating-chunks-in-unreal-engine

Niniteは雑にStaticMeshアセットに全部使ってしまった方が軽いらしい。

: プロジェクト設定->入力->Console->Console Keysでキーを追加。
デフォルトで「`」が割り当たっているが、日本語キーボードだと打つことが出来ないため、「@」キーを追加しておく。

@stat anim でどの処理が何秒つかってるかが見れる

他コマンドはこちら

https://historia.co.jp/archives/1342

@fpsでstat FPSを選ぶとFPSが表示できる

Build Configurationの内容DevelopmentやShippingなどを判別して毎のEventを取得できる。

テクスチャ>アセットアクション>プロパティマトリクスでMaximam Texture Sizeと検索して1024してみたりとか。

フレームレートを固定する。

プロジェクト設定>検索>FrameRate

こんな設定にしたら40FPSでかつキャラクタきれいに見えた

最終的に選んだ設定これだけ贅沢にして24FPS 

マテリアル品質もやりようある。

#UE5night デバッグ&チューニングナイトを開催してくださったぽちおさんならびに沢山の解答をくださった方々に感謝です。

関連

Unreal Engine 5: How To Fix “Video Memory Has Been Exhausted” (Temporary Fix For Development)

https://dev.epicgames.com/community/learning/tutorials/yrl7/unreal-engine-5-how-to-fix-video-memory-has-been-exhausted-temporary-fix-for-development

https://qiita.com/UENight/items/f75c48acd3794edcd7da

[UE5.3.2]Widgetを表示したり消したりしてshippingでは2重に表示されたりをどうにか解決したメモ。

基本はサチナシさんの教えてくれたこの二つのブログ

なんだけど結局どっちもやんなきゃ解決しなかったよ

変数初期化+ガベージコレクション+ブールでの判断

どこからでも呼べるようにGameModeにかいてるんだけど、こんなかんじで大丈夫だった。

ちなみに中身はあんまり関係ないけど乗せておく

WBP_NextText

イベントグラフ1

イベントグラフ2

イベントグラフ3

関数 If AnimSHow Hide

関数 Talker to Anim

関数 Set Text Function

おわり。

[ue5.3.2]キーボードイベントが反応しない場合の処置

今回はキー押してカメラを切り替えたい

レベルブループリント使ってキーは拾えるけど、レベルはバージョンアップで壊れがちなのでBPにしておきたい。

今回の場合はBP_CameraManagerなどを作ってレベルに配置することでカメラをコントロール可能にした

Auto Receive Input 「Player 0」などにしておくとキーイベントが使える。

どっちもきくようになった