A Blender plugin to upload selected assets in Blender to Roblox using Roblox's Open Cloud API.
This project is licensed under the terms of the MIT license. See LICENSE.md for details.
Roblox is providing this plugin source as a reference implementation, and we encourage the community to extend and build upon this!
RobloxBlenderPluginDemo.mp4
- Navigate to the add-ons menu in Blender at
Edit
>Preferences
>Add-ons
- In the top-right search window, search for
Roblox
- If
Upload to Roblox
is present, click the left arrow to expand it and clickRemove
to uninstall it - Restart Blender after uninstalling
Prerequisite: Blender version 3.2 or greater is required
- Be sure to uninstall any old version first, including restarting Blender afterward
- Download the latest add-on zip file from the repository releases page
- Navigate to the add-ons menu in Blender at
Edit
>Preferences
>Add-ons
- Click
Install
- Select the zip file downloaded above and click
Install Add-on
(Do not unzip the file!) - In the top-right search window, search for
Roblox
- Find the
Import-Export: Upload to Roblox
add-on in the list, and ensure the checkbox next to its name is checked - Open the plugin's main panel by going to a 3D window, pressing
N
, and selecting theRoblox
tab - Click
Install Dependencies
. This is only required the first time the plugin runs - Once it says
Installation complete!
, restart Blender - The plugin is now ready for use
- Be sure to complete the installation steps, including dependency installation and restarting Blender
- Open the plugin's main panel by going to a 3D window, pressing
N
, and selecting theRoblox
tab - Click
Log in
- Unless previously logged in, your browser opens and prompts for authorization
- In your browser, authorize creators to use in the plugin. To do this, log into your Roblox account. Then, select the account and/or groups you want to upload with. Click
CONTINUE
at the bottom of the page, then clickCONFIRM AND GIVE ACCESS
. Your browser should indicate a successful login. You can close the page and return to Blender - Select the desired creator from the
Upload to:
dropdown of authorized creators
- Select any number of meshes or collections you want to publish at once. Each selected object will be uploaded as its own asset. If you want to publish multiple objects as a single asset, group them into a
Collection
and select theCollection
- Click
Upload
- Open Roblox Studio and search for your object under
Home
>Toolbox
>Inventory
(tab) >My Packages
(dropdown) This list is currently unordered, you can useSearch
to find it by the name matching the object name in Blender
Since objects are uploaded as packages, we can take advantage of package behavior to automatically pull in changes when you publish a new version of the package.
- In Roblox Studio, after inserting the package into your hierarchy, select the
PackageLink
object inside the package - Ensure the
AutoUpdate
property of thePackageLink
is checked - When a new version of this object is uploaded from Blender, this package will automatically update to the latest version, overwriting any modifications
- This package association is tracked in Blender under the
Custom Properties
of an object or collection, where it stores theRoblox Package ID
- To upload a previously-published asset to a new asset ID instead of uploading as a new version, delete this
Roblox Package ID
custom property
Roblox is providing this plugin source as a reference implementation. Our goal is to illustrate how Open Cloud APIs can be used to create integrations with external tools.
Our hope is the community leverages this reference implementation to build their own tools and extensions. We actively encourage anybody who wishes to extend this reference implementation with new features to fork this repository and share their work with the community.
As such, we will not be accepting Pull Requests that introduce new features or functionality. However, in the interests of ensuring this plugin remains a functional reference implementation, we will be accepting Pull Requests for bug fixes.
Do either of the following options to install the plugin:
This option allows you to quickly iterate on the codebase and reload the plugin for testing changes, as well as use a debugger during development.
- Be sure to uninstall any plugin zip file first, and then close Blender
- Open VS Code as administrator to allow the Blender Development plugin to install a debugger for Blender (Only need to do this the first time)
- Install the VS Code extension JacquesLucke.blender-development
- Open the repository in VS Code
- Open the command window (
ctrl
/⌘
+shift
+p
) - Run the
> Blender: Build and Start
command - Select your Blender executable file
- The plugin is now running in Blender with a debugger attached
- If saving a file does not auto-reload the plugin, you can manually reload the plugin with
> Blender: Reload Addons
- Zip the top-level repository folder such that the first level inside the zipped folder is another single folder containing everything
- Follow the steps to install a new version using this zipped folder instead of the one from the releases page
Before marking your pull request as ready for review, please ensure:
- Your pull request does not introduce new features or functionality
- All python files are formatted with black and the CI format check is passing
- Any dependency changes are reflected in
requirements.txt
- All commit messages are complete and informative
- Your Pull Request includes a description of the bug and how your changes fix the bug
Github Actions is set to check that formatting matches black formatting before allowing a merge to main
. Be sure to format your python code with black
before pushing to avoid being blocked. You can use the VS Code plugin Black Formatter by Microsoft, or run the command line tool by installing it via pip install black
and then running black .
Releases are set up to automatically generate via Github Actions when a tag is added to a commit with the format v[0-9]+.[0-9]+.[0-9]+
. For example, you can create a release from a commit with SHA a1b2c3d
by doing the following:
git tag -a v0.0.0 a1b2c3d -m "My message for v0.0.0"
Or, tag the latest commit with:
git tag -a v0.0.0 HEAD -m "My message for v0.0.0"
- where
v0.0.0
represents a semantic versioning naming schemev[major].[minor].[patch]
- where
[major]
gets bumped for non-backward compatible changes, - where
[minor]
gets bumped for backward-compatible features, - and where
[patch]
gets bumped for backward-compatible fixes.
Once you've created your tag, push it to the repository with
git push --tags
The plugin version is automatically updated by a Github Actions workflow to correspond with the committed version tag name (as described in Creating a Release). The version doesn't get committed to the codebase, so if you run the plugin locally instead of using a release, your plugin will just show the default version number that exists in the codebase.