Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposed RFC Feature: O3DE to Blender Whitebox Live Linking #149

Open
tkothadev opened this issue Aug 8, 2024 · 1 comment
Open

Proposed RFC Feature: O3DE to Blender Whitebox Live Linking #149

tkothadev opened this issue Aug 8, 2024 · 1 comment
Labels
rfc-feature Request for Comments for a Feature

Comments

@tkothadev
Copy link
Contributor

Summary:

This RFC proposes a live-linking system between Open3D and Blender, utilizing a central server for communication. Utilizing such a system improves the artist's quality of life and speeds up production dramatically.

What is the relevance of this feature?

Having the ability to live-link your art-work with the engine immediately is a game-changing feature. It opens up new avenues of development and exploration that could not be afforded before. By leveraging the power of Blender, creating new levels, characters, and assets is almost as easy as sketching out the ideas in the modeler itself. It's also much easier to diagnose exporting issues, as the necessary data can be synchronized immediately between the applications.

Presently the RFC is scoped to entity syncing and white-box modeling, but the proposed framework could be extended to any feature of Blender that O3DE could theoretically support.

Feature design description:

For more details on the Feature design, please see the attached PDF at the bottom of this RFC.

Technical design description:

For more details on the Technical design, please see the attached PDF at the bottom of this RFC. Also included is an MVP prototype containing the relevant code-files.

What are the advantages of the feature?

  • The syncing mechanism is implemented using a simple python list command structure, which allows us to exchange arbitrary data between the two applications. This means that in theory any detail can be synchronized, whether mesh, texture, animation, or other data. The only limit is the inherent compatibility between Blender and O3DE.
  • The Live-Linking server is a standalone server facilitating channels between applications. This allows for full bi-directional communication, and is stable in intermittent connectivity. The user can work in a semi-offline basis and have a seamless experience.
  • By having the applications communicate via server, this opens up the ability to sync across nodes in a network if desired. Otherwise everything can be hosted on the same machine, and behave identically.
  • The entire system is implemented in Python, which allows the framework to expand to other DCC tools so long as they also use Python as the scripting layer.

What are the disadvantages of the feature?

  • Currently the implementation is scoped to supporting a limited feature-set of Blender, but the prototype design shows promise of scalability in multiple respects.

How will this be implemented or integrated into the O3DE environment?

  • The live-link server would be implemented as an Editor Gem for users of O3DE to install. At a minimum there needs to be 3 python scripts: the O3DE Dialog panel, the Blender Panel, and the Syncing server. There is prototype code demonstrating the minimum viable product attached at the bottom of this RFC.

Are there any alternatives to this feature?

  • There are no strict alternatives to this feature. The closest available is the Whitebox component in O3DE itself, but the feature-set is far more limited than what syncing with Blender could provide.

How will users learn this feature?

  • The plugin will be available as a gem, most likely in the o3de-technicalartists repo. It should be accessible to download from the Project Manager
  • There will need to be documentation provided by the plugin, as well as youtube tutorials showing off the features of the system.
  • If the plugin proves substantial enough, it may be a good idea to provide documentation in the official o3de manual

Are there any questions?

  • Does the Live-linking system only have to be with Blender?
    • The architecture of the server would permit and DCC tool to participate, provided it has a proper Python scripting system. This would include Autodesk Maya as a prominent example. Blender is the best place to start as it is a major open source project with enough traction behind it to justify the effort.
  • Are there any examples of this system?
    • Check the attachments below. Outlined is sample code of a previously working prototype of the proposed system as well as a document explaining the architecture.

Attachments

Blender Live Link Prototype Architecture v0.pdf
livelink_prototype.zip

@tkothadev tkothadev added the rfc-feature Request for Comments for a Feature label Aug 8, 2024
@tkothadev
Copy link
Contributor Author

Here is a video detailing the prototype running:
https://www.youtube.com/watch?v=lONmqaW7EJE

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
rfc-feature Request for Comments for a Feature
Projects
None yet
Development

No branches or pull requests

1 participant