<
Speckle is the first AEC data hub that connects with your favorite AEC tools. Speckle exists to overcome the challenges of working in a fragmented industry where communication, creative workflows, and the exchange of data are often hindered by siloed software and processes. It is here to make the industry better.
[!WARNING] This is a legacy repo! A new next generation connector will be coming soon. In the meantime, check out our active next generation repos here 👇
speckle-sharp-connectors
: our .NET next generation connectors and desktop UI
speckle-sharp-sdk
: our .NET SDK, Tests, and Objects
The Speckle UI can be found in the 3d viewport toolbar (N), under the Speckle tab.
Head to the 📚 documentation for more information.
We officially support Blender 3.3 and newer, on Windows and Mac.
Please follow our installation instructions on our connector docs
Once enabled in Preferences -> Addons
,
The Speckle connector UI can be found in the 3d viewport toolbar (N), under the Speckle
tab.
Users
panel. This will populate the Projects
list with available projects for the selected user account.Receive
to download and convert the objects from the selected model version. The objects will be linked into a Blender Collection, named <PROJECT_NAME> [ <MODEL_NAME> @ <VERSION_ID> ]
.Open Model in Web
to view the model in your web browser.The Blender Connector is still a work in progress and, as such, data sent from the Blender connector is a highly lossy exchange. Our connectors are ever evolving to facilitate more and more Speckle usecases. We welcome feedback, requests, edge cases, and contributions!
The full matrix of supported Blender and Speckle types can be found here
Speckle properties will be imported as custom properties on Blender objects. Nested dictionaries are expanded to individual properties by flattening their key hierarchy. I.e. propA:{'propB': {'propC':10, 'propD':'foobar'}}
is flattened to propA.propB.propC = 10
and propA.propB.propD = "foobar"
.
If a renderMaterial
property is found, SpeckleBlender will create a material named using the sub-property renderMaterial.name
. If a material with that name already exists in Blender, SpeckleBlender will just assign that existing material to the object. This allows geometry to be updated without having to re-assign and re-create materials.
Receiving vertex colors is supported. The colors
list from Speckle meshes is translated to a vertex color layer.
Receive/Send scripts. Allow injecting a custom python function to the receive/send process to automate any blender operations
Upon first launch of the addon, the Speckle connector installs its SpecklePy dependencies in %appdata%/Speckle/connector_installations
on Windows and ~/.config/Speckle/connector_installations
on Mac.
This is done through our installer.py
. Through pip, we install the correct version of each dependency for your blender python version, host OS, and system architecture.
As such, an internet connection is required for first launch of the connector.
Other blender addons may require dependencies that conflict with specklepy. In these cases, one or both addons may fail to load. If you suspect you're seeing a conflict, Please uninstall other third party addons one at a time to identify which addon is conflicting.
If you find an addon that conflicts, please try using a different version of that addon (newer or older).
If you can't find a version of an addon that works, please let us know on our forums the name of the addon, the versions you've tried, the version of the Speckle connector you've tried, and your OS (win/mac/linux).
Please make sure you read the contribution guidelines for an overview of the best practices we try to follow.
The Speckle Community hangs out on the forum, do join and introduce yourself & feel free to ask us questions!
Unless otherwise described, the code in this repository is licensed under the Apache-2.0 License. Please note that some modules, extensions or code herein might be otherwise licensed. This is indicated either in the root of the containing folder under a different license file, or in the respective file's header. If you have any questions, don't hesitate to get in touch with us via email.
Thanks to Tom Svilans (Github) for the original v1 contribution!