diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c54fa5c --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +examples/maya/private** +examples/maya/public** \ No newline at end of file diff --git a/README.md b/README.md index 891f574..2ec02c6 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,123 @@ -# pyblish-starter -Jumpstart your publishing pipeline with a basic configuration +### Pyblish Starter + +Jumpstart your publishing pipeline with a basic configuration. + +
+
+
+ +### Features + +- Basic discovery of assets +- Basic validation +- Model, rig and animation extraction + +
+
+
+ +### Install + +Starter takes the form of a Python package with embedded plug-ins. + +```bash +$ pip install pyblish-starter +``` + +
+
+
+ +### Usage + +Plug-ins are registered by calling `setup()`. + +```python +>>> import pyblish_starter +>>> pyblish_starter.setup() +``` + +### Example + +Scripted demonstration of how to model, rig and animate an asset. + +
+
+
+ +### Contract + +Starter defines these families. + +| Family | Definition | Link +|:--------------------|:----------------------------------------------|:------------ +| `starter.model` | Geometry with deformable topology | [Spec](#startermodel) +| `starter.rig` | An articulated `starter.model` for animators | [Spec](#starterrig) +| `starter.animation` | Pointcached `starter.rig` for lighting | [Spec](#starteranimation) + +
+ +### `starter.model` + + + +A generic representation of geometry. + +```yaml +Instance: + label (str, optional): Pretty printed name + in graphical user interfaces + +Sets: + geometry_SEL: Meshes suitable for rigging + aux_SEL: Auxilliary meshes for e.g. fast + preview, collision geometry +``` + +
+
+ +### `starter.rig` + + + +The `starter.rig` contains the necessary implementation and interface for animators to produce + +```yaml +Instance: + label (str, optional): Pretty printed name + in graphical user interfaces + +Sets: + cache_SEL: Meshes suitable for + pointcaching from animation + controls_SEL: All animatable controls + resources_SEL: Nodes that reference an external file +``` + +
+ +### `starter.animation` + + + +Point positions and normals represented as one Alembic file. + +```yaml +Instance: + label (str, optional): Pretty printed name + in graphical user interfaces + +Sets: + None +``` + +
+
+
+ +#### Todo + +Instances, in particular the Animation instance, requires some setup before being cachable. We don't want the user to perform this setup, but rather a tool. The tool could be in the form of a GUI that guides a user through selecting the appropriate nodes. Ideally the tools would be implicit in the loading of an asset through an asset library of sorts. + +- Tool to create model, rig and animation instance. \ No newline at end of file diff --git a/pyblish_starter/__init__.py b/pyblish_starter/__init__.py index dbe5468..3bd932c 100644 --- a/pyblish_starter/__init__.py +++ b/pyblish_starter/__init__.py @@ -1,10 +1,25 @@ +import os +import pyblish.api from .pipeline import ( time, - private_dir, + format_private_dir, ) + +def register_plugins(): + # Register accompanying plugins + from . import plugins + plugin_path = os.path.dirname(plugins.__file__) + pyblish.api.register_plugin_path(plugin_path) + + +def setup(): + register_plugins() + __all__ = [ "time", - "private_dir", + "setup", + "register_plugins", + "format_private_dir", ] diff --git a/pyblish_starter/plugins/__init__.py b/pyblish_starter/plugins/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pyblish_starter/plugins/collect_instances.py b/pyblish_starter/plugins/collect_instances.py index 47c103d..5db353e 100644 --- a/pyblish_starter/plugins/collect_instances.py +++ b/pyblish_starter/plugins/collect_instances.py @@ -11,8 +11,8 @@ class CollectStarterInstances(api.ContextPlugin): id (str): "pyblish.starter.instance" Supported Families: - model: Geometric representation of artwork - rig: An articulated model for animators. + starter.model: Geometric representation of artwork + starter.rig: An articulated model for animators. A rig may contain a series of sets in which to identify its contents. @@ -25,6 +25,7 @@ class CollectStarterInstances(api.ContextPlugin): - One (1) rig per scene file - Unmanaged history, it is up to the TD to ensure history is up to par. + starter.animation: Pointcache of `starter.rig` Limitations: - Does not take into account nodes connected to those