-
Notifications
You must be signed in to change notification settings - Fork 6
Description
Issue
It would be good to add to the documentation what the bare requirements are for creating an Avalon integration with a new host. The Maya, Houdini, Fusion and Nuke integrations currently in master already serve as a reference. However, having documentation ready would be perfect for newcomers.
There are currently quite a lot of Integration issues open, e.g. for Blender, Krita, Cinema4D, Unreal Engine and Clarisse. These would be easier for anyone to get quickly up and running once documentation aids them along the way.
Add basic explanation
It should describe what is expected for an integration:
- Get Python and Qt running and communication in the Host.
- Create
avalon/{host}module and expose its API implementation. - Add the
install()anduninstall()for the host. - Set up the Work Files API for the Work Files tool.
- Add Avalon menu entries where possible to allow easy access to the tools
- Describe how this is different for each host like maya and nuke which allows to dynamically generate it or others that require their own "customizing main menu" methods like houdini with
MainMenuCommon.xmlfiles
- Describe how this is different for each host like maya and nuke which allows to dynamically generate it or others that require their own "customizing main menu" methods like houdini with
Add example on how to test the integration as one builds it.
Additionally it'd be good to show some examples on how to "test" the implementation as you build it. Especially explaining that it's crucial to trigger the avalon.api.install(avalon.{host}) code. For example for host "maya"
from avalon import api
import avalon.maya
# Install avalon with maya host
api.install(avalon.maya)
# Now you have initialized Avalon
# And you should be able to access the database
# Let's try to print the current project
from avalon import io
project = io.find_one({"type": "project"})
print(project)
# Then see if you can run any of the Qt tools
import avalon.tools.loader
avalon.tools.loader.show()Add simple details on how to test Qt in the host when tools don't work
Add a simple Qt example like that one could try to test Qt with in the host.
from avalon.vendor.Qt import QtWidgets
app = QtWidgets.QApplication([])
button = QtWidgets.QPushButton("Hello world")
button.show()
app.exec_()If that doesn't work due to errors with Qt then make sure to give it a go with the specific Python Qt implementation you installed, e.g. from PySide2 import QtWidgets or alike.
Add link to documentation on how to get Pyblish integration ready
For Publishing avalon uses Pyblish. As such it would be good to clarify that and describe how one might initiate the "connection" with Pyblish, especially Pyblish QML and what's needed for that.
Additionally it would be good to include examples on how one could test the integration using pyblish.util.publish so they could prototype even without the UI.