UE5 plugin features

Hi @Jedd,

we are thinking of migrating to UE5. What features are missing from Speckle UE5 vs Speckle UE4 connector ?

Best,
Dimitrios

Everything should work in UE5 just as well as UE4 with one exception,
if you receive meshes in a standalone built application (i.e. without the editor), there is a UE5 specific bug with the way the mesh gets built that causes some graphics artifacting.

I’ve reported this issue to Unreal during UE5’s preview, and they could reproduce then, but I’ve had no from them updates since.

I will try and follow up today with our UE contacts to get an update.

This only happens when you create static meshes without the editor only build processes.
Using the procedural mesh converter might be an acceptable workaround.

1 Like

Looks like the aforementioned issue has already been resolved by Epic!

I’ve just tested in UE 5.0.1 and runtime receiving works perfectly now! :partying_face:


To adjust my answer then. Versions 4.26, 4.27, and 5.0 are officially supported by us and our plugin should work effective identically on any of these versions.

However, since UE5 is so new, and with each patch, there seems to be lots of small changes from Epic, there may be some extra bugs. (so please report to us any that you find!)

2 Likes

Thanks Jedd,

in UE5, I have to managed to pull some very simple meshes. Hurray !
However, I have tried to pull some old commits with complicated meshes but it crashes. I guess, I have to do new commits using the most recent Speckle Rhino connector. I will let you know.

Best,
Dimitrios

Ok,
Please keep me updated.
If you are finding that new commits lead to crashes then please let me know!!

Hi, I have installed Rh Connector 2.5.1 and it sends successfully a commit with some meshes to Speckle DB.

Stream id: a18f8c8569
Object id: 159fe6c2856738505027a314f408fa55

:slight_smile:

:frowning:
However, Speckle Connector in UE5 crashes when fetching meshes. Smth goes wrong in conversion.

Can you check this stream id/object id ?

:nerd_face: Report by UE5 :nerd_face:

Assertion failed: !bExists [File:D:\build++UE5\Sync\Engine\Source\Runtime\MeshDescription\Private\MeshElementIndexer.cpp] [Line: 584]

UnrealEditor_MeshDescription
UnrealEditor_MeshDescription
UnrealEditor_MeshDescription
UnrealEditor_MeshDescription
UnrealEditor_MeshDescription
UnrealEditor_SpeckleUnreal!UStaticMeshConverter::MeshesToNativeMesh() [C:\UE5\MyTestBed\Plugins\speckle-unreal\Source\SpeckleUnreal\Private\Conversion\Converters\StaticMeshConverter.cpp:303]
UnrealEditor_SpeckleUnreal!UStaticMeshConverter::MeshesToNativeActor() [C:\UE5\MyTestBed\Plugins\speckle-unreal\Source\SpeckleUnreal\Private\Conversion\Converters\StaticMeshConverter.cpp:93]
UnrealEditor_SpeckleUnreal!UStaticMeshConverter::MeshToNativeActor() [C:\UE5\MyTestBed\Plugins\speckle-unreal\Source\SpeckleUnreal\Private\Conversion\Converters\StaticMeshConverter.cpp:75]
UnrealEditor_SpeckleUnreal!UStaticMeshConverter::ConvertToNative_Implementation() [C:\UE5\MyTestBed\Plugins\speckle-unreal\Source\SpeckleUnreal\Private\Conversion\Converters\StaticMeshConverter.cpp:58]
UnrealEditor_SpeckleUnreal!ISpeckleConverter::execConvertToNative() [C:\UE5\MyTestBed\Plugins\speckle-unreal\Intermediate\Build\Win64\UnrealEditor\Inc\SpeckleUnreal\SpeckleConverter.gen.cpp:45]
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_SpeckleUnreal!ISpeckleConverter::Execute_ConvertToNative() [C:\UE5\MyTestBed\Plugins\speckle-unreal\Intermediate\Build\Win64\UnrealEditor\Inc\SpeckleUnreal\SpeckleConverter.gen.cpp:333]
UnrealEditor_SpeckleUnreal!UAggregateConverter::ConvertToNativeInternal() [C:\UE5\MyTestBed\Plugins\speckle-unreal\Source\SpeckleUnreal\Private\Conversion\Converters\AggregateConverter.cpp:74]
UnrealEditor_SpeckleUnreal!USpeckleConverterComponent::RecursivelyConvertToNative_Internal() [C:\UE5\MyTestBed\Plugins\speckle-unreal\Source\SpeckleUnreal\Private\Conversion\SpeckleConverterComponent.cpp:66]
UnrealEditor_SpeckleUnreal!USpeckleConverterComponent::ConvertChildren() [C:\UE5\MyTestBed\Plugins\speckle-unreal\Source\SpeckleUnreal\Private\Conversion\SpeckleConverterComponent.cpp:111]
UnrealEditor_SpeckleUnreal!USpeckleConverterComponent::RecursivelyConvertToNative_Internal() [C:\UE5\MyTestBed\Plugins\speckle-unreal\Source\SpeckleUnreal\Private\Conversion\SpeckleConverterComponent.cpp:83]
UnrealEditor_SpeckleUnreal!USpeckleConverterComponent::RecursivelyConvertToNative() [C:\UE5\MyTestBed\Plugins\speckle-unreal\Source\SpeckleUnreal\Private\Conversion\SpeckleConverterComponent.cpp:51]
UnrealEditor_SpeckleUnreal!USpeckleConverterComponent::execRecursivelyConvertToNative() [C:\UE5\MyTestBed\Plugins\speckle-unreal\Intermediate\Build\Win64\UnrealEditor\Inc\SpeckleUnreal\SpeckleConverterComponent.gen.cpp:48]
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_Engine
UnrealEditor_SpeckleUnreal!TMulticastScriptDelegate::ProcessMulticastDelegate() [C:\Program Files\Epic Games\UE_5.0\Engine\Source\Runtime\Core\Public\UObject\ScriptDelegates.h:488]
UnrealEditor_SpeckleUnreal!FRecieveOperationHandler::Broadcast() [C:\UE5\MyTestBed\Plugins\speckle-unreal\Source\SpeckleUnreal\Public\API\Operations\ReceiveOperation.h:14]
UnrealEditor_SpeckleUnreal!UReceiveOperation::HandleReceive() [C:\UE5\MyTestBed\Plugins\speckle-unreal\Source\SpeckleUnreal\Private\API\Operations\ReceiveOperation.cpp:81]
UnrealEditor_SpeckleUnreal!TBaseUObjectMethodDelegateInstance<0,UReceiveOperation,void __cdecl(TSharedPtr<FJsonObject,1>),FDefaultDelegateUserPolicy>::ExecuteIfSafe() [C:\Program Files\Epic Games\UE_5.0\Engine\Source\Runtime\Core\Public\Delegates\DelegateInstancesImpl.h:609]
UnrealEditor_SpeckleUnreal!UServerTransport::FetchChildren() [C:\UE5\MyTestBed\Plugins\speckle-unreal\Source\SpeckleUnreal\Private\Transports\ServerTransport.cpp:94]
UnrealEditor_SpeckleUnreal!<lambda_5b5c650a9516cb90f5bb367005870275>::operator()() [C:\UE5\MyTestBed\Plugins\speckle-unreal\Source\SpeckleUnreal\Private\Transports\ServerTransport.cpp:177]
UnrealEditor_SpeckleUnreal!TBaseFunctorDelegateInstance<void __cdecl(TSharedPtr<IHttpRequest,1>,TSharedPtr<IHttpResponse,1>,bool),FDefaultDelegateUserPolicy,<lambda_5b5c650a9516cb90f5bb367005870275> >::ExecuteIfSafe() [C:\Program Files\Epic Games\UE_5.0\Engine\Source\Runtime\Core\Public\Delegates\DelegateInstancesImpl.h:836]
UnrealEditor_HTTP
UnrealEditor_HTTP
UnrealEditor_HTTP
UnrealEditor_Core
UnrealEditor_Core
UnrealEditor_Core
UnrealEditor_Core
UnrealEditor_Core
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
kernel32
ntdll

Hi, can you please send me the crash log (Saved/Logs/XXXX.log)
and also make the stream public or add jedd@speckle.systems as a collaborator.

I have added you.

Apart from all: http://speckle.xyz/ should become http://speckle.xyz
because it gives 404

I think the problem is in StaticMesh. It does not let me to select Procedural Mesh .

crashlog.txt (84.1 KB)

:cry: I can reproduce in UE5.
There are no issues in UE4, so I presume there have been some changes to the way UE5 builds meshes.

I’ll do some investigation, right now it’s not super clear whats is causing this issue.

In the meantime however, you can switch to using our ProceduralMeshConverter

I’ve tested and this works with your stream!

1 Like

Hi, thanks, It works !

now I see it. The issue was in the documentation which led me to wrong pathway. I have followed the video tutorial that was suggesting to use the “Blueprint Receiving” example which does not have the option to change the mesh type. Probably it needs an update. The SpeckleManager is in C++ public folder which I didn’t check because I thought that the blueprint was the only way to go. The other issue was that nothing comes out when opening the popup. Instead, it was needed to double click that rectangle button to do what I want. However, in UE, I was used only to single click on such buttons.

Best,
Dimitrios

1 Like

Hi Dimitrios,

I’ve managed to fix the crashing issue with static meshes in UE5 :partying_face:.
The fix is now on main. Cheers for the help!


If you wanted, the option is actually there, but it’s a little more buried under the “SpeckleConverter” Component.

Our docs/tutorials could definitely benefit from some clarification!

But for now, I’d recommend sticking with the C++ SpeckleUnrealManager if you can.

1 Like

Thanks Jedd I will check it out.

To tell the truth, I am actually diving into the code now as I have to find out how it matches our requirements, and how it can be extended for more custom objects.

I have seen the tutorial for Materials. Nice work. Now I see the docs and tutorial for developers (a video would be helpful here too, sadly there is no such :frowning:

I have forked the code to a new repo in my personal account named as jimver04/speckle-unreal. For warming up, I am putting some comments on the code for easy reading it. I will make a pull request when finished.

A suggestion for the tutorial page: Unreal | Speckle Docs

An issue is that empty memory object should be casted to Transport interface, otherwise it can not be set (directly through suggestion mechanism) as a variable.

Best,
Dimitrios

Are you sure this is an issue here? I’m not sure any casting is needed, since MemoryTransport directly implements ITransport


Maybe I’m misunderstanding the issue you were having?


Yes! I agree, a video would be super helpful here.
I think I might wait until I have sending/ToSpeckle support completed.
Which may take a while so If you wanted a quick video discussion/demo/call to chat about this feature, that can be arranged!

Hi Jedd,

thanks for all the clarifications. I think it is more productive for the time being to speak through the forum. Our partner in the project, namely Mindesk has implemented a “commits pushing version” for the old speckle-unreal connector that I have to merge. So, the features next are

a) fetch list of Commits;
b) select Branch;
c) fetch Globals;
d) do a new commit;
e) do a new commit with custom fields.

Best,
Dimitrios