参考URL
https://www.slideshare.net/slideshow/cedec2016-unreal-engine-4/65344798
DESIGN AND FUTURE SCIENCE.
こんな感じの状態、
# -*- 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 が無いとか小一時間悩んだら、ただフォルダ開いて無いとかゆー慌てっぷりで、草
フォルダ開いて解決 ひどいw
関連URL
Attach
https://stackoverflow.com/questions/34498992/visual-studio-run-button-changed-to-attach-to-a-process
ポジTAさんのこのぺーじをvs2022でやる
https://zenn.dev/posita33/books/ue5_starter_cpp_and_bp_001/viewer/chap_01_vs2019_setup
プロジェクトを作成する際に「C++」でプロジェクトを作成します。
[Edit] > [Plugins]を選択します。
独自のPluginを作成するには左上の「Add」ボタンをクリックします。
プラグインの作成手順は以下の手順になります。
Author | 制作者名 |
Description | Pluginの説明 |
Author URL | 制作者のPlugin説明用のURLを書いておくとPluginの制作者名をクリックするとURLに移動する |
Is Beta Version | チェックボックスを有効にすると、Plugin名の横にBetaが表示される |
Pluginのウィンドウで作成したPlugin名を検索すると一覧に登録されています。
Editボタンや(Plugin名).pluginファイルで設定をより詳細に変更できます。
色々設定して128×128のアイコン設定して。。
ContentsBrowserやVisualStudioに追加されたPluginが表示されます。
以下の感じで吐き出される
furcraeaBluePrintLib.h
// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Modules/ModuleManager.h"
class FfurcraeaBluePrintLibModule : public IModuleInterface
{
public:
/** IModuleInterface implementation */
virtual void StartupModule() override;
virtual void ShutdownModule() override;
};
furcraeaBluePrintLib.cpp
// Copyright Epic Games, Inc. All Rights Reserved.
#include "furcraeaBluePrintLib.h"
#define LOCTEXT_NAMESPACE "FfurcraeaBluePrintLibModule"
void FfurcraeaBluePrintLibModule::StartupModule()
{
// This code will execute after your module is loaded into memory; the exact timing is specified in the .uplugin file per-module
}
void FfurcraeaBluePrintLibModule::ShutdownModule()
{
// This function may be called during shutdown to clean up your module. For modules that support dynamic reloading,
// we call this function before unloading the module.
}
#undef LOCTEXT_NAMESPACE
IMPLEMENT_MODULE(FfurcraeaBluePrintLibModule, furcraeaBluePrintLib)
furcraeaBluePrintLibBPLibrary.h
// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Kismet/BlueprintFunctionLibrary.h"
#include "furcraeaBluePrintLibBPLibrary.generated.h"
/*
* Function library class.
* Each function in it is expected to be static and represents blueprint node that can be called in any blueprint.
*
* When declaring function you can define metadata for the node. Key function specifiers will be BlueprintPure and BlueprintCallable.
* BlueprintPure - means the function does not affect the owning object in any way and thus creates a node without Exec pins.
* BlueprintCallable - makes a function which can be executed in Blueprints - Thus it has Exec pins.
* DisplayName - full name of the node, shown when you mouse over the node and in the blueprint drop down menu.
* Its lets you name the node using characters not allowed in C++ function names.
* CompactNodeTitle - the word(s) that appear on the node.
* Keywords - the list of keywords that helps you to find node when you search for it using Blueprint drop-down menu.
* Good example is "Print String" node which you can find also by using keyword "log".
* Category - the category your node will be under in the Blueprint drop-down menu.
*
* For more info on custom blueprint nodes visit documentation:
* https://wiki.unrealengine.com/Custom_Blueprint_Node_Creation
*/
UCLASS()
class UfurcraeaBluePrintLibBPLibrary : public UBlueprintFunctionLibrary
{
GENERATED_UCLASS_BODY()
UFUNCTION(BlueprintCallable, meta = (DisplayName = "Execute Sample function", Keywords = "furcraeaBluePrintLib sample test testing"), Category = "furcraeaBluePrintLibTesting")
static float furcraeaBluePrintLibSampleFunction(float Param);
};
furcraeaBluePrintLibBPLibrary.cpp
// Copyright Epic Games, Inc. All Rights Reserved.
#include "furcraeaBluePrintLibBPLibrary.h"
#include "furcraeaBluePrintLib.h"
UfurcraeaBluePrintLibBPLibrary::UfurcraeaBluePrintLibBPLibrary(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
}
float UfurcraeaBluePrintLibBPLibrary::furcraeaBluePrintLibSampleFunction(float Param)
{
return -1;
}
参考URL
全部ポジTAさんですありがとうございます。
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をつかえってこと
したらエラーでなくなった
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
ライティングあり>最適化ビューモード>シェーダー複雑度
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)
基本はサチナシさんの教えてくれたこの二つのブログ
なんだけど結局どっちもやんなきゃ解決しなかったよ
変数初期化+ガベージコレクション+ブールでの判断
どこからでも呼べるようにGameModeにかいてるんだけど、こんなかんじで大丈夫だった。
ちなみに中身はあんまり関係ないけど乗せておく
WBP_NextText
イベントグラフ1
イベントグラフ2
イベントグラフ3
関数 If AnimSHow Hide
関数 Talker to Anim
関数 Set Text Function
おわり。
今回はキー押してカメラを切り替えたい
レベルブループリント使ってキーは拾えるけど、レベルはバージョンアップで壊れがちなのでBPにしておきたい。
今回の場合はBP_CameraManagerなどを作ってレベルに配置することでカメラをコントロール可能にした
Auto Receive Input 「Player 0」などにしておくとキーイベントが使える。
どっちもきくようになった
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