[UE5.3.2] UE5ぷちコンジェットコースター向け Blender の ベジェカーブ(BezierCurve)からUE5のSplineに座標わたせたよ(精度の問題で未完成)まとめ

ベジェカーブ作る前に日本語の場合は英語モードに切り替えなきゃスクリプトエラーになります。

BezierCurveはできるだけ大きく描きます。

BlenderPython

# Blender import
import bpy
import math
import bmesh
import csv

print("start python code....------------------------------------------>>>")

basedir="F:/SandBox/UE5PuchiCon22/Blender_Curve_To_Spline/"
with open(basedir+"/test.csv",'w',newline='') as file:

    writer = csv.writer(file,delimiter = ',') 
    count = 0
    writer.writerow(["","x","y","z",
            "i_x","i_y","i_z",
            "o_x","o_y","o_z"])
    
    print("bpy.data.curves= "+str(bpy.data.curves))
    for obj in bpy.data.curves:
        print("obj.name= "+str(obj.name))
        for object in bpy.data.objects:
            print("object.name= "+object.name)
        ob_curve = bpy.data.objects.get(obj.name)
        print("ob_curve= "+str(ob_curve))
        if(str(ob_curve)=="None"):
            print("ob_curve =is= NoneType")
        else:
            for curve in obj.splines:
                print("curve= "+str(curve))
                
                for bezpoint in curve.bezier_points:
                    print("bezpoint= "+str(bezpoint))
                    if(str(bezpoint)=="NoneType"):
                        print("bezpoint =is= NoneType")
                    else:
                        xyz = ob_curve.matrix_world @ bezpoint.co
                        xyz_left = ob_curve.matrix_world @ bezpoint.handle_left
                        xyz_right = ob_curve.matrix_world @ bezpoint.handle_right
                        count += 1
                        writer.writerow([count, xyz[0], xyz[1], xyz[2],
                        xyz_left[0], xyz_left[1], xyz_left[2],
                        xyz_right[0], xyz_right[1], xyz_right[2]])
            

出力されたCSV

値はかなり大きめじゃないとだめよ

,x,y,z,i_x,i_y,i_z,o_x,o_y,o_z
1,13.595291137695312,230.46768188476562,70.73152160644531,158.9687042236328,225.82052612304688,70.73152160644531,-178.57012939453125,236.6106414794922,70.73152160644531
2,-207.3365020751953,-38.245094299316406,120.08828735351562,-198.0128631591797,17.276376724243164,181.6839141845703,-222.84031677246094,-130.56887817382812,17.66411781311035
3,43.76624298095703,-265.9769287109375,0.0,-181.01539611816406,-265.9769287109375,0.0,258.02471923828125,-265.9769287109375,0.0
4,231.6976318359375,-64.63948059082031,49.9024543762207,191.0831298828125,-174.81529235839844,-94.65201568603516,255.28945922851562,-0.641462504863739,133.87005615234375

CSVにそって構造体作ります。ブループリント>構造体

CSVをUEにドラッグして読みこみ

BP_SplineにSplinrコンポーネント付けて、コンストラクションスクリプトでこれつくります。

なにかは描かれた

こっから先は精度の問題?

できたっていうのかなこれ。

ZIP
Blender_Curve_To_Spline.zip

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

UE532_CurveSpline2.zip

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

参考URL

https://blenderartists.org/t/world-location-of-bezier-points/1219282

https://teratail.com/questions/146037

Text Editorでデバッグ時にprintで出力したものがPython Consoleに出てこなくて困っていましたが、勘違いしていました。Python Consoleではなくて、System Consoleの方に出てきます。

メニューバー Window > Toggle System Console で別ウィンドウでコマンドプロンプトがたちあがります。

https://wiz.ooo/cg/2054

https://docs.blender.org/api/current/bpy.ops.mesh.html

https://zenn.dev/hotcocoa/articles/5c5ab06c40862b

https://reflectorange.net/archives/193.html

[UE5.3.2]パッケージ化 292Wrapped by AutomationException: Cook failed. UE5

LogScript: Error: Script Msg: /Game/0_furcraeaTokyo/13_matahuman_UQ5motion/MF_Idle_MHUQ5 : アニメーション アセット (/Game/0_furcraeaTokyo/13_matahuman_UQ5motion/MF_Idle_MHUQ5.MF_Idle_MHUQ5) のターゲット USkeleton を取得できません
LogScript: Error: Script Msg: /Game/0_furcraeaTokyo/13_matahuman_UQ5motion/MF_Idle_MHUQ5 : 指定された USkeleton が無効

出力をよく見ているとが赤い文字の行がみつかりました。

MF_Idle_MHUQ5を検索して削除したらなおりました。

赤い文字の行を直していけば治るエラーでした。

参考URL

https://forums.unrealengine.com/t/unknown-cook-failure-cookcommand-automation-cs-249-wrapped-by-automationexception-cook-failed/138364/13

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

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

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

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

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

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

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

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

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

マップの中で重いテクスチャなどを見つける Level>サイズマップ

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

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

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

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

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

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

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

WBP_NextText

イベントグラフ1

イベントグラフ2

イベントグラフ3

関数 If AnimSHow Hide

関数 Talker to Anim

関数 Set Text Function

おわり。

[UE5.3.2]パッケージ化エラーcompiling-cusers-username-appdata-local-temp-uatf-programfiles-epicgames-ue_5-3-rules-uat-rules-39638434eaa19de5f144482d776d2f34-dll-assembly-does-not-existの解決方法

Project contains multiple Game targets (UE53PuciCo2024G2, UE53PuciCo22G3) but no DefaultGameTarget is set in the [/Script/BuildSettings.BuildSettings] section of DefaultEngine.ini
UATHelper: パッケージ化 (Windows): (see C:\Users\notsuka\AppData\Roaming\Unreal Engine\AutomationTool\Logs\F+Program+Files+Epic+Games+UE_5.3\Log.txt for full exception trace)

Compiling C:\Users\UserName\AppData\Local\Temp\UAT\F+Program+Files+Epic+Games+UE_5.3\Rules\UATRules-39638434eaa19de5f144482d776d2f34.dll: Assembly does not exist

AIによると

  • アセンブリの問題 エラー「UATRules-39638434eaa19de5f144482d776d2f34.dll: Assembly does not exist」は、指定されたアセンブリが見つからない場合に発生します。この問題は、特に異なるプラットフォーム間でのビルド時に一般的です。source
  • 📋 確認すべき点 まず、DLLファイルがプロジェクトに正しく参照されているか、または適切な場所に存在するか確認してください。また、リモートビルド時には、WindowsとMac間でファイルが同期されているかも重要です。source
  • 💡 解決策 一部のユーザーは、必要なDLLを再インポートし、ライブラリフォルダーを手動で削除することで問題を解決しました。このプロセスで、ビルドキャッシュをクリアすることが役立つ場合があります。source

UE5のパッケージメニューの下の強制的 SDK 更新をする。

UE再起動 するもだめで

https://zenn.dev/posita33/books/ue5_starter_cpp_and_bp_001/viewer/chap_01_vs2022_setup

でwindows11SDKが入ってないことに気づいた

ファイル>からZIP圧縮したプロジェクトを

これだけの状態から開いたらクックが走るようになった!

パッケージ化完了

[UE5.3.2] LANDSCAPE: 1 ACTOR WITH PHYSICAL MATERIALS NEEDS TO BE REBUILTの解決

https://forums.unrealengine.com/t/ue5-landscape-physical-material-needs-to-be-rebuilt/484614

みなさん、こんにちは。私も同じ問題に遭遇しました。Build>Build All Landscape に移動すると、「物理マテリアルを再構築する必要があります」というエラーを解決できることが分かりました。 
[Landscape] ワールド構築がうまくいくことを祈っています。

解決しませんでした。

Landscapeを消しました。エラーは出ない

LandScapeをつくりなおしました。エラーが出る。

[UE5] メリーゴーランドに座らした人の制御なかなかうまくいかないです。

ControlRigシーンで作ったFBXはそのままは使えない pelvisがずれてました DCCツールで直してモーションは完成

座らせて固定するのは、座っているアニメーションをAnimMontageで指定しながら、コリジョンを無効化した状態でAttachActorToActor(or Component)を使用すれば可能です。

[UE5][UQ]アンリアルクエストのセーブゲームが存在するのに存在しないって言われるのなんでしたっけ? ちなみにプロジェクト内でゲームモードをUQのBP_GameModeにすれば動くが新たに作ったゲームモードだと動かない。解答

解答

SaveName変数のデフォルト値「RankingData」が入ってるか?
SaveNameのデフォルト値が Get SaveNameで使われてるか?

リファレンスの検索で最後に出てくる

WBP_Rankingで Cast して自分のゲームモードを読んでるか?

できた