UE5 - First steps with blueprints for Speckle plugin

Hi Jedd,

I have done my first blueprint with the new Speckle for UE5 as shown below. It downloads the data but it crashes when converting to native. Is it correct to get the “Converter” from “SpeckleManager” ?
I think I am missing something.

Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x00000000000001bb

UnrealEditor_SpeckleUnreal!USpeckleConverterComponent::AttachConvertedToOwner() [C:\UE5\MyProject\Plugins\speckle-unreal\Source\SpeckleUnreal\Private\Conversion\SpeckleConverterComponent.cpp:143]
UnrealEditor_SpeckleUnreal!USpeckleConverterComponent::RecursivelyConvertToNative_Internal() [C:\UE5\MyProject\Plugins\speckle-unreal\Source\SpeckleUnreal\Private\Conversion\SpeckleConverterComponent.cpp:70]
UnrealEditor_SpeckleUnreal!USpeckleConverterComponent::ConvertChildren() [C:\UE5\MyProject\Plugins\speckle-unreal\Source\SpeckleUnreal\Private\Conversion\SpeckleConverterComponent.cpp:111]
UnrealEditor_SpeckleUnreal!USpeckleConverterComponent::RecursivelyConvertToNative_Internal() [C:\UE5\MyProject\Plugins\speckle-unreal\Source\SpeckleUnreal\Private\Conversion\SpeckleConverterComponent.cpp:83]
UnrealEditor_SpeckleUnreal!USpeckleConverterComponent::RecursivelyConvertToNative() [C:\UE5\MyProject\Plugins\speckle-unreal\Source\SpeckleUnreal\Private\Conversion\SpeckleConverterComponent.cpp:51]
UnrealEditor_SpeckleUnreal!USpeckleConverterComponent::execRecursivelyConvertToNative() [C:\UE5\MyProject\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\MyProject\Plugins\speckle-unreal\Source\SpeckleUnreal\Public\API\Operations\ReceiveOperation.h:14]
UnrealEditor_SpeckleUnreal!UReceiveOperation::HandleReceive() [C:\UE5\MyProject\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\MyProject\Plugins\speckle-unreal\Source\SpeckleUnreal\Private\Transports\ServerTransport.cpp:94]
UnrealEditor_SpeckleUnreal!<lambda_52af9de4e92125ae61d90b3099bd31a6>::operator()() [C:\UE5\MyProject\Plugins\speckle-unreal\Source\SpeckleUnreal\Private\Transports\ServerTransport.cpp:177]
UnrealEditor_SpeckleUnreal!TBaseFunctorDelegateInstance<void __cdecl(TSharedPtr<IHttpRequest,1>,TSharedPtr<IHttpResponse,1>,bool),FDefaultDelegateUserPolicy,<lambda_52af9de4e92125ae61d90b3099bd31a6> >::ExecuteIfSafe() [C:\Program Files\Epic Games\UE_5.0\Engine\Source\Runtime\Core\Public\Delegates\DelegateInstancesImpl.h:836]
UnrealEditor_HTTP

In contrast, when I am receiving using SpeckleManager “Receive” button in Editor, it works well:

1 Like

ok, I have found it.
The Owner can not be self since it is in a level blueprint.

Here is the working Level BP

where PrismArchActor is an empty actor with a SpeckleConverterComponent manually added in which I have changed the conversion manually to DefaultProceduralMeshConverter

SpeckleUnrealManager is not necessary but I left it for testing purposes

Hi @Jedd ,

here is an issue a little more deeper with BPs.
It is as follows.
How to Change the conversion type within a BP, e.g. from DefaultProceduralMeshConverter to Static ?
I have tried to find smth like “Index” , “Conversion” but nothing comes out.

What do you mean by Index ???

#help, #UE5

Best,
Dimitrios

Well I solved by setting two Convert components in my main actor PrismArchActor as follows

I do not see any significant loss in number of triangles and calls for Static vs Procedural, but there is some flickering in Procedural meshes. I guess Static are much better.

So far so good,

however, how do I fetch a list of commits from main or from other branches. Also, information from Globals branch ?

It’s just an array property exposed. The order of the converters in that array is only important if you have two conflicting converters (i.e multiple converters that can convert the same type of object), in which case, the first converter for that type will be used.


You can either set up the converter manually like this:

Or, if you need to change it programmatically, then you have direct access to the SpeckleConverters array. Then you can, for example, loop through and change all static mesh converters to procedural ones.


The only disadvantages to using static meshes is you can’t edit the mesh data (vertices/triangles etc) without an expensive rebuilding process.
Static meshes also take a little longer to create (because of the building process).
In return, you should get support for cached/baked lighting, ability to store them as assets, and in theory, better rendering performance.


Unfortunately, I haven’t got around to reimplementing any helper functions for fetching stream/branch/commit data.
I know on the Prismarch branch, you had a working implementation for this, I think it just needs a few tweaks to work with my new changes.