|
|
(68 intermediate revisions by 2 users not shown) |
Line 1: |
Line 1: |
| == Import a level ==
| |
|
| |
|
| In the FBX exporter set the Units to "Centimeters", this will scale the model up 100 times, as in UE the units are 1 unit = 1cm, while in CS they are 1 unit = 1 meter
| | == Introduction == |
|
| |
|
| | This is page at the moment is just a collection of my tests and notes. I hope it will be more structured in the future. |
|
| |
|
| == Import a char ==
| | We are collecting here our findings on Unreal Engine. |
|
| |
|
| You cannot import a skeleton by itself, if you export only the skeleton from max with FBX, UE will import nothing, you need some geometry associated
| | If you want to know why we are doing this, check [http://www.planeshift.it/article/2015/Lets%20make%20PlaneShift%20Unreal this post]. |
|
| |
|
| OLD (Bake Animations fixes this problem): FBX export seems to have issues if the controllers or bones have a "orientation constraint" on the Motion panel under assign controller. With that it doesn't export, without it does
| |
|
| |
|
| OLD (Bake Animations fixes this problem): UE doesn't import skeletons with multiple root bones, need to have one
| | We are currently using <font size=5>Unreal engine 5.1.1-release </font> (use only this tag when checking out sources) |
|
| |
|
| You cannot import DDS files, unless they are specific format. Better to just import PNGs.
| | == Roadmap == |
|
| |
|
| Only way I found to import a char is to hide all helpers, shapes, then select geometry and bones, and "Export Selected" to FBX with "Bake Animations" selected.
| | [[UE Roadmap]] |
|
| |
|
| | [[File:Banner roadmap.jpg]] |
|
| |
|
| == Engine inner working ==
| |
|
| |
|
| | [[PSUnreal Programming]] |
|
| |
|
| > MyProjectServer.exe!UIpNetDriver::InitListen(FNetworkNotify * InNotify, FURL & LocalURL, bool bReuseAddressAndPort, FString & Error) Line 152 C++
| | http://www.planeshift.it/element/%7B%22width%22%3A1000%2C%22height%22%3A4000%7D/Site%20images/Pages/Development/engine_department2.jpg |
| MyProjectServer.exe!UWorld::Listen(FURL & InURL) Line 3927 C++
| |
| MyProjectServer.exe!UEngine::LoadMap(FWorldContext & WorldContext, FURL URL, UPendingNetGame * Pending, FString & Error) Line 8983 C++
| |
| MyProjectServer.exe!UEngine::Browse(FWorldContext & WorldContext, FURL URL, FString & Error) Line 8144 C++
| |
| MyProjectServer.exe!UGameInstance::StartGameInstance() Line 262 C++
| |
| MyProjectServer.exe!UGameEngine::Init(IEngineLoop * InEngineLoop) Line 465 C++
| |
| MyProjectServer.exe!FEngineLoop::Init() Line 1967 C++
| |
| MyProjectServer.exe!GuardedMain(const wchar_t * CmdLine, HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, int nCmdShow) Line 138 C++
| |
| MyProjectServer.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow) Line 191 C++
| |
|
| |
|
|
| |
|
| | [[PSUnreal Art]] |
|
| |
|
| == Code convertion ==
| | http://www.planeshift.it/element/%7B%22width%22%3A1000%2C%22height%22%3A4000%7D/Site%20images/Pages/Development/3d_department.jpg |
|
| |
|
|
| |
|
| === Types ===
| | [[How to test]] |
|
| |
|
| | | [[Unreal Engine resources]] |
| csString -> psString or FString
| |
| | |
| psStringArray with TArray<psString>
| |
| | |
| uint -> uint32
| |
| | |
| csHash<Value,Key> -> TMap<Key,Value> (notice the swap of Key and Value)
| |
| | |
| csArray<> -> TArray
| |
| | |
| | |
| | |
| === Types conversion ===
| |
| | |
| | |
| FString to char* -> const char *myData = TCHAR_TO_ANSI(*NameString);
| |
| | |
| FString to TCHAR -> *myFString
| |
| | |
| char* to FString -> ANSI_TO_TCHAR(NameString);
| |
| | |
| | |
| | |
| === Functions ===
| |
| | |
| | |
| Replace string.Format("hey %s", string) with string.Printf(TEXT("hey %s"), string)
| |
| | |
| csString.Truncate(5) -> FString.Left(5)
| |
| | |
| csString.DeleteAt(start,count) -> FString.RemoveAt(start,count)
| |
| | |
| csString.Downcase() -> FString.ToLower()
| |
| | |
| output.Insert(0, time_buffer) -> output.InsertAt(0, time_buffer)
| |
| | |
| output.GetAt(output.Length()-1) -> output [ output.Len()-1 ]
| |
| | |
| Cross platform types are defined in Platform.h , like uint32. Those can be included with #include "EngineMinimal.h"
| |
| | |
| CS_ASSERT() -> check()
| |
| | |
| strcasecmp and strcmp, I added those two defines, so the code can stay as it is
| |
| | |
| #define strcasecmp(expr1,expr2) FCString::Strcmp( ANSI_TO_TCHAR(expr1), ANSI_TO_TCHAR(expr2)) == 0
| |
| #define strcmp(expr1,expr2) FCString::Stricmp( ANSI_TO_TCHAR(expr1), ANSI_TO_TCHAR(expr2)) == 0
| |
| | |
| CPrintf(CON_CMDOUTPUT,str.GetDataSafe()); -> UE_LOG(LogTemp, Warning, TEXT("%s"), str);
| |
| | |
| time(NULL) -> FString buf = FDateTime().GetDate().ToString();
| |
| | |
| === FText and Localization ===
| |
| | |
| | |
| FText is Unreal's class for user viewable strings. It is localizable. See https://docs.unrealengine.com/latest/INT/Programming/UnrealArchitecture/StringHandling/FText/index.html
| |
Introduction
This is page at the moment is just a collection of my tests and notes. I hope it will be more structured in the future.
We are collecting here our findings on Unreal Engine.
If you want to know why we are doing this, check this post.
We are currently using Unreal engine 5.1.1-release (use only this tag when checking out sources)
Roadmap
UE Roadmap
PSUnreal Programming
PSUnreal Art
How to test
Unreal Engine resources