diff options
| author | home_pc <[email protected]> | 2020-01-20 13:48:51 -0800 |
|---|---|---|
| committer | home_pc <[email protected]> | 2020-01-20 13:48:51 -0800 |
| commit | 75fa1d1810e98453960a81115d88302e276d817f (patch) | |
| tree | 92f37accb3cb041d056d00525b5830a69862631a /docs/build/_sources/sections | |
| parent | fixed install.mel issue (diff) | |
| download | artv2-75fa1d1810e98453960a81115d88302e276d817f.tar.xz artv2-75fa1d1810e98453960a81115d88302e276d817f.zip | |
Uploading work on refactor
At this point, all components can build their skeletons. Next steps are to get components building their rigs.
Diffstat (limited to 'docs/build/_sources/sections')
54 files changed, 1067 insertions, 0 deletions
diff --git a/docs/build/_sources/sections/rigging_tools/group_bake_offsets.rst.txt b/docs/build/_sources/sections/rigging_tools/group_bake_offsets.rst.txt new file mode 100644 index 0000000..0da37d0 --- /dev/null +++ b/docs/build/_sources/sections/rigging_tools/group_bake_offsets.rst.txt @@ -0,0 +1,35 @@ +=================== +Group Bake Offsets +=================== + +.. codeauthor:: Jeremy Ernst + +Overview +-------- + +The interface is comprised of three main elements: + +.. figure:: /images/group_bake_offsets.png + :width: 198px + :align: center + :height: 366px + :figclass: align-center + + +1. Search bar: filters components in the list by the search term. +2. Component list: displays components in the scene. +3. Bake Offsets button: bakes offsets on selected components in the list. + + +Usage +----- + +To use, select any number of components in the component list. Then hit the "Bake Offsets" button. + +Example: + +.. figure:: /images/group_bake_offsets_usage.gif + :width: 519px + :align: center + :height: 383px + :figclass: align-center
\ No newline at end of file diff --git a/docs/build/_sources/sections/rigging_tools/group_mirror_xforms.rst.txt b/docs/build/_sources/sections/rigging_tools/group_mirror_xforms.rst.txt new file mode 100644 index 0000000..ffb07fd --- /dev/null +++ b/docs/build/_sources/sections/rigging_tools/group_mirror_xforms.rst.txt @@ -0,0 +1,38 @@ +============================ +Group Mirror Transformations +============================ + +.. codeauthor:: Jeremy Ernst + +Overview +-------- + +The interface is comprised of four main elements: + +.. figure:: /images/group_mirror_xforms.png + :width: 301px + :align: center + :height: 327px + :figclass: align-center + + +1. left side component list +2. right side component list (matches with left side mirror) +3. direction button (which list are you mirrring from and to. Default is left list to right list). +4. mirror button. Executes mirroring on selected components using the direction specified. + + +Usage +----- + +To use, select any number of components in the left list. The mirrors of those components will automatically be selected +in the right list. Choose whether you want to mirror from left to right, or right to left by toggling the button in +between the two lists. Finally, hit the Mirror button to complete the operation. + +Example: + +.. figure:: /images/group_mirror_xforms_usage.gif + :width: 519px + :align: center + :height: 383px + :figclass: align-center
\ No newline at end of file diff --git a/docs/build/_sources/sections/rigging_tools/pose_manager.rst.txt b/docs/build/_sources/sections/rigging_tools/pose_manager.rst.txt new file mode 100644 index 0000000..2eaa026 --- /dev/null +++ b/docs/build/_sources/sections/rigging_tools/pose_manager.rst.txt @@ -0,0 +1,67 @@ +============= +Pose Manager +============= + +.. codeauthor:: Jeremy Ernst + +Overview +-------- + +The pose manager is meant for users who may need to repose their model in order to have a better pose for rigging. +For example, in the image below, we have a mesh that is modeled in a pose where the feet are not planted. +This isn't ideal for rigging and animation. + + +.. image:: /images/pose_manager_model.png + + +Using the pose manager, we can store this "model" pose, and create a new "rig" pose, and freely switch between them. +This way, when we build our deformation skeleton, we'll build it in the rig pose, so the rotations are nice and clean, +but then we can set it to the model pose, so that the skeleton lines up with the mesh for doing deformations. + +.. image:: /images/pose_manager_overview.gif + + +Right-clicking on a pose will bring up a context menu that allows you to remove the pose. + +.. image:: /images/pose_manager_remove.png + + +This diagram shows the workflow intended with the pose manager. In the section below, we'll go through the process step +by step. + +.. image:: /images/pose_manager_diagram.png + +Usage +----- + +Using the above example, we have a mesh that was modeled in a pose like this: + +.. image:: /images/pose_manager_model.png + +We place our components in this pose, but we don't really want to build our rig in this pose, so using the pose manager, +we can store our model pose by opening the interface, and clicking the bottom button to store the pose. Give the pose a +name, like "model". + +.. image:: /images/pose_manager_modelpose.gif + +Now, let's re-pose our components so that the legs are straight and the bends in the arms are removed (for example). + +.. image:: /images/pose_manager_rigpose.png + +Using the pose manager, we can now store this as a pose. I'll call it "rig". + +.. image:: /images/pose_manager_rigpose.gif + +Now, when we build the skeleton, I'll use the pose manager to set the pose to the rig pose. This way, our skeleton is +built in this pose, which is the pose we want our rig to be built in. By building in this pose, we ensure the +rotation values are clean and zeroed out. + +.. image:: /images/pose_manager_buildskeleton.gif + +Now we can use the pose manager to set the pose back to "model", so our skeleton fits the mesh again, and do our +deformations. + +.. image:: /images/pose_manager_deform.gif + +When we go to build the rig, we'll want to set the pose back to the "rig" pose.
\ No newline at end of file diff --git a/docs/build/_sources/sections/tech_docs/components/aim_helper.rst.txt b/docs/build/_sources/sections/tech_docs/components/aim_helper.rst.txt new file mode 100644 index 0000000..6e12fc1 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/components/aim_helper.rst.txt @@ -0,0 +1,8 @@ +========================== +Aim Helper +========================== + +.. codeauthor:: Jeremy Ernst + +.. autoclass:: artv2.components.base_components.aim_helper.AimHelper + :members: diff --git a/docs/build/_sources/sections/tech_docs/components/arm_component.rst.txt b/docs/build/_sources/sections/tech_docs/components/arm_component.rst.txt new file mode 100644 index 0000000..291ad59 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/components/arm_component.rst.txt @@ -0,0 +1,9 @@ +========================== +Arm Component +========================== + +.. codeauthor:: Jeremy Ernst + +.. autoclass:: artv2.components.arm.Arm + :show-inheritance: + :members: diff --git a/docs/build/_sources/sections/tech_docs/components/base_classes.rst.txt b/docs/build/_sources/sections/tech_docs/components/base_classes.rst.txt new file mode 100644 index 0000000..d06e447 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/components/base_classes.rst.txt @@ -0,0 +1,16 @@ +=================== +Base Classes +=================== + +.. codeauthor:: Jeremy Ernst + + +.. toctree:: + :maxdepth: 1 + + component_base.rst + rig_asset.rst + joint_mover.rst + aim_helper.rst + pose.rst + template.rst diff --git a/docs/build/_sources/sections/tech_docs/components/biped_leg_component.rst.txt b/docs/build/_sources/sections/tech_docs/components/biped_leg_component.rst.txt new file mode 100644 index 0000000..afb1c02 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/components/biped_leg_component.rst.txt @@ -0,0 +1,10 @@ +========================== +Bipedal Leg Component +========================== + +.. codeauthor:: Jeremy Ernst + +.. autoclass:: artv2.components.biped_leg.BipedLeg + :show-inheritance: + :members: + diff --git a/docs/build/_sources/sections/tech_docs/components/camera.rst.txt b/docs/build/_sources/sections/tech_docs/components/camera.rst.txt new file mode 100644 index 0000000..bebfa7c --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/components/camera.rst.txt @@ -0,0 +1,10 @@ +========================== +Camera Component +========================== + +.. codeauthor:: Jeremy Ernst + +.. autoclass:: artv2.components.camera.Camera + :show-inheritance: + :members: + diff --git a/docs/build/_sources/sections/tech_docs/components/chain.rst.txt b/docs/build/_sources/sections/tech_docs/components/chain.rst.txt new file mode 100644 index 0000000..4dc15f9 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/components/chain.rst.txt @@ -0,0 +1,10 @@ +========================== +Chain Component +========================== + +.. codeauthor:: Jeremy Ernst + +.. autoclass:: artv2.components.chain.Chain + :show-inheritance: + :members: + diff --git a/docs/build/_sources/sections/tech_docs/components/component_base.rst.txt b/docs/build/_sources/sections/tech_docs/components/component_base.rst.txt new file mode 100644 index 0000000..a4194bf --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/components/component_base.rst.txt @@ -0,0 +1,33 @@ +========================== +Component Base Class +========================== + +.. codeauthor:: Jeremy Ernst + +.. autoclass:: artv2.components.base_components.base_component.ART_Component + :members: + +Properties +---------- + +.. py:attribute:: prefix + + This property holds the component's prefix (optional) + + :return: Returns the component's prefix. + :rtype: str + +.. py:attribute:: suffix + + This property holds the component's suffix (optional) + + :return: Returns the component's suffix. + :rtype: str + +.. py:attribute:: parent + + This property holds the joint name of the parent of this component. + +.. py:attribute:: network_node + + This property holds the network node that contains this module's metadata. diff --git a/docs/build/_sources/sections/tech_docs/components/component_classes.rst.txt b/docs/build/_sources/sections/tech_docs/components/component_classes.rst.txt new file mode 100644 index 0000000..9947a5d --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/components/component_classes.rst.txt @@ -0,0 +1,23 @@ +=================== +Component Classes +=================== + +.. codeauthor:: Jeremy Ernst + + +.. toctree:: + :maxdepth: 1 + + root_component.rst + spine.rst + arm_component.rst + finger.rst + biped_leg_component.rst + hind_leg.rst + joint.rst + chain.rst + segment.rst + hinge.rst + camera.rst + + diff --git a/docs/build/_sources/sections/tech_docs/components/components.rst.txt b/docs/build/_sources/sections/tech_docs/components/components.rst.txt new file mode 100644 index 0000000..6b716a8 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/components/components.rst.txt @@ -0,0 +1,15 @@ +================= +Components +================= + + +.. toctree:: + :maxdepth: 1 + + components_overview.rst + base_classes.rst + component_classes.rst + creating_custom_component.rst + + + diff --git a/docs/build/_sources/sections/tech_docs/components/components_overview.rst.txt b/docs/build/_sources/sections/tech_docs/components/components_overview.rst.txt new file mode 100644 index 0000000..6d362ef --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/components/components_overview.rst.txt @@ -0,0 +1,61 @@ +=================== +Components Overview +=================== + +.. codeauthor:: Jeremy Ernst + + +Terminology +----------- + +.. glossary:: + + asset + + An asset is the totality of all of the parts that make up the rig. In terms of a character, an asset would be + the encapsulation of the components that make up the character, as well as metadata defining the character, + like its name, etc. + + component + + Components are the individual parts that make up an asset. Components are things like, a leg, an arm, a torso, + etc. + + metanode + + Each component (and asset) has a metanode, which is a Maya network node that stores metadata. The most basic + metadata are things like the prefix, suffix, full name of the module, and many more useful bits of information. + + .. image:: /images/metanode.png + + joint mover + + A joint mover is a simple rig attached to a component that aids in the creation of the skeleton. It makes joint + placement clean and consistent across all components. + + aim helper + + A component that handles ensuring a parent joint aims at its child for the joint mover controls. + Aim constraints are placed on joints in the joint mover that have been marked up to aim at their child. + Those same constraints are removed if aim mode is toggled off. How aim mode is setup is done through the + :ref:`joint mover markup tool <joint-mover-markup-ref>`. + + +Class Diagram +------------- + +.. image:: /images/artv2_class_diagram.png + + + +Classes Associated with Components +---------------------------------- + +The following classes are used by or associated with the component classes. + +.. toctree:: + :maxdepth: 1 + + rig_asset.rst + joint_mover.rst + aim_helper.rst diff --git a/docs/build/_sources/sections/tech_docs/components/creating_custom_component.rst.txt b/docs/build/_sources/sections/tech_docs/components/creating_custom_component.rst.txt new file mode 100644 index 0000000..7c12643 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/components/creating_custom_component.rst.txt @@ -0,0 +1,244 @@ +=========================== +Creating Your Own Component +=========================== + +.. codeauthor:: Jeremy Ernst + + +In order to create your own component, there are two things you need: a python file for the class, and a maya ascii +file that defines the joints that component can create. + +Creating the Maya File +---------------------- + +This file is generally referred to as the 'joint mover file'. In a new Maya scene, simply create the joints you want +your component to create. If your component has options like number of twist joints, create the maximum configuration +in this Maya scene. The exception to this are components where we want to insert joints into the hierarchy, like the +chain and spine components. With these types of components, I create the minimum configuration. Let's compare what the +joint mover files for a biped leg and a chain look like: + +.. figure:: /images/joint_mover_compare.png + :width: 404px + :align: center + :height: 256px + :figclass: align-center + +As you can see, the leg has the maximum configuration and the spine has the minimum configuration. How those +configurations change is defined in the properties of the python class. You'll also notice that some default names +have been given to each joint. +In the leg, for example, I don't want the twist joints to be available by default (their property will be set to 0), +so I will hide those joints. + +Let's build a component as a demonstration. In a new Maya scene, I will create a basic hinge setup for an arm and name +the joints shoulder, elbow, and wrist. Make sure the rotations are frozen and the joint orients are clean. + +.. image:: /images/joint_mover_demo_01.png + +Now, I will add three twist joints to the shoulder, naming them shoulder_twist_01, shoulder_twist_02, and +shoulder_twist_03. These are parented under the shoulder. Because I don't want them to be there by default, I will +hide them. + +.. image:: /images/joint_mover_demo_01.gif + +The last thing we need to do with the maya scene is markup these joints with some attributes for how the joint mover +rig will be created. + +.. _joint-mover-markup-ref: + +Joint Mover Markup Tool +----------------------- + +Under the ART v2 menu, in the Development sub-menu, click on the Joint Mover Markup menu item. + +.. image:: /images/joint_mover_markup_01.png + +Once the interface is displayed, clicking on 'Markup Joints' will put attributes on all of the joints in the scene. +Let's talk about each of these attributes and what they do. + +.. figure:: /images/joint_mover_markup_02.png + :width: 263px + :align: center + :height: 348px + :figclass: align-center + + The markup attributes that were created can be seen here. + +.. glossary:: + + Can Aim + + Whether this joint should aim at another joint when aim mode is turned on. + + Aim Joint + + Which joint this joint should aim at when aim mode is turned on. (This is ignored if Can Aim is False) + + Aim Axis + + Which axis represents the aim axis. (This is ignored if Can Aim is False) + + Invert Aim Axis + + If the aim axis should be inverted. (If your aim axis is set to X, but needs to be -X, this would be True) + (This is ignored if Can Aim is False) + + Up Axis + + The axis of the joint that is closes to the world up axis. (This is ignored if Can Aim is False) + + Maintain Offset + + This will probably not ever need to be used, but in the case of some special circumstance, this will create the + aim constraint while maintaining offsets. + (This is ignored if Can Aim is False) + + Twist Joint + + Whether the joint is to be setup as a twist joint. A twist joint gets no global mover control. Instead it + gets an offset mover that is only unlocked along the length axis, and is automatically driven to keep equal + spacing between the start joint and end joint (calf and foot for example). + + Control Type + + The shape that the joint mover control should have. This list is populated by the files located in + /resources/control_shapes. + + Control Size + + The scale factor to create the control at. If you use the "Create Preview Movers" button in the markup tool, + you can then set this value in order to see how the control will be built and at what size. + + + Control Offset X, Y, Z + + When creating the control, the rotational offset to apply on creation. You can use the "Create Preview Movers" + button to see how the control will be created given your offsets. + + +So in this case, let's set shoulder and elbow's ".canAim" to True, then set the shoulder's aim joint to elbow, and the +elbow's to wrist. The up axis for both of those will be Z. I'll set all three of those joints to use a circle shape and +set the size to 10. For the three twist joints, set their ".twistJoint" attribute to True, and let's put their control +size at 8. You can use the "Create Preview Movers" and "Delete Preview Movers" to see how your controls will be created +given these settings. + +.. figure:: /images/joint_mover_markup_03.png + :width: 265px + :align: center + :height: 348px + :figclass: align-center + + The shoulder with markup data set. + +.. note:: Create Preview Movers works on a selection! + +Make sure any preview movers have been deleted using the "Delete Preview Movers" and save the scene in: +ARTv2/resources/rigging_guides as a maya ascii file. + +Creating the Python Class +------------------------- + +Create a new python file in artv2/components. In this file, add an import for the base component: + +.. code-block:: python + + import artv2.components.base_components.base_component as base + +Now create your class and inherit from base. There are some attributes you need to add to the class (above any +constructor) and fill out their values. These are the attributes and what they do: + + +------------+------------------------+----------------------------------------------------------------------------+ + | Type | Name | Description | + +============+========================+============================================================================+ + | attribute | nice_name | (string) The nice name of the component (as it will appear in UIs) | + +------------+------------------------+----------------------------------------------------------------------------+ + | attribute | category | (string) The name of the category where this component will show up in the | + | | | user interface. For example: "Limbs", "Primitives", etc. | + +------------+------------------------+----------------------------------------------------------------------------+ + | attribute | base_name | The string base name of the component. This is a simple string used to | + | | | identify the component type and append onto nodes created by the component.| + | | | For example, on a leg component, the base_name is simply: "leg" | + +------------+------------------------+----------------------------------------------------------------------------+ + | attribute | has_sides | Bool for whether or not the component supports different sides,like a leg | + | | | or arm do. | + +------------+------------------------+----------------------------------------------------------------------------+ + | attribute | can_overwrite_names | Bool for whether or not the user can overwrite the names of the joints of | + | | | this component. | + +------------+------------------------+----------------------------------------------------------------------------+ + | attribute | joint_mover_file | The relative path from the ARTv2 directory to the joint mover file of the | + | | | component. For example, self.joint_mover_file = | + | | | "resources/rigging_guides/root.ma" | + +------------+------------------------+----------------------------------------------------------------------------+ + | attribute | mirror_table | A dictionary of translate and rotate attributes with their multiplier for | + | | | mirroring values to mirrored controls. | + +------------+------------------------+----------------------------------------------------------------------------+ + +At this point, your class should look something like this: + +.. code-block:: python + + import artv2.components.base_components.base_component as base + + class MyComponent(base.ART_Component): + + nice_name = "Test" + category = "Primitives" + base_name = "test" + has_sides = True + can_overwrite_names = True + joint_mover_file = "resources\\rigging_guides\\test.ma" + mirror_table = {"translateX": -1, "translateY": -1, "translateZ": -1, "rotateX": 1, "rotateY": 1, "rotateZ": 1} + +Usually, you will not need to implement an __init__ method, since the base class should take care of anything you need +there, but if not, you would want to implement that, and make sure you call on the base class's constructor as well. + +The main method you need to implement is _add_metadata. This method adds attributes to the network node of the component +that coincide with properties on the class. For example, in our test, we had three twist joints, so I could add a +property called num_twist_joints. There are already some methods in the base class that will help with the property +setter implementation ( we'll go over that in a minute). Because we will be adding this property, we also want to add +an attribute on the network node for num_twist_joints. So in this example, here is what our _add_metadata method would +look like: + +.. code-block:: python + + def _add_metadata(self, network_node, prefix, suffix): + + # call on the base class's method to get the default attributes first, then unlock the network node and add our + # own. Remember to re-lock the network node after! + super(MyComponent, self)._add_metadata(network_node, prefix, suffix) + + network_node.unlock() + + # notice how the minimum and maximum are set to match our configuration on the maya file. Since our twist joints + # are hidden by default, the default value is 0. + network_node.addAttr("num_twist_joints", min=0, max=3, dv=0, keyable=False) + network_node.num_upperarm_twists.set(lock=True) + + network_node.lock() + +Now let's define that property that coincides with our attribute. + +.. code-block:: python + + @property + def num_twist_joints(self): + + # the getter of our property will just read the value on the network node of the same attribute! + return self.network_node.num_twist_joints.get() + +Our property setter is where the implementation of any configuration changes happens. The base class already has a +method for dealing with this situation, so our setter is pretty simple here: + +.. code-block:: python + + @num_upperarm_twists.setter + def num_upperarm_twists(self, new_number): + # here we pass in the attribute, the new number, the min and max, and a keyword to search for on the joints. + # because our joints are named shoulder_twist_01, etc, we can pass in the key _shoulder_twist_0 to find any + # relevant twist joints. + self.set_twist_joints("num_twist_joints", new_number, 0, 3, "_shoulder_twist_0") + +.. note:: To see a more complex implementation of a property setter, check out the chain component's num_joints + property. + +At this point, you should be able to reload the scripts (or restart Maya) and your component should be in the UI, and +properly load into the scene, creating a joint mover rig, and a widget for changing your properties.
\ No newline at end of file diff --git a/docs/build/_sources/sections/tech_docs/components/finger.rst.txt b/docs/build/_sources/sections/tech_docs/components/finger.rst.txt new file mode 100644 index 0000000..c87ae20 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/components/finger.rst.txt @@ -0,0 +1,10 @@ +========================== +Finger Component +========================== + +.. codeauthor:: Jeremy Ernst + +.. autoclass:: artv2.components.finger.Finger + :show-inheritance: + :members: + diff --git a/docs/build/_sources/sections/tech_docs/components/hind_leg.rst.txt b/docs/build/_sources/sections/tech_docs/components/hind_leg.rst.txt new file mode 100644 index 0000000..206f58a --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/components/hind_leg.rst.txt @@ -0,0 +1,10 @@ +========================== +Hind Leg Component +========================== + +.. codeauthor:: Jeremy Ernst + +.. autoclass:: artv2.components.hind_leg.HindLeg + :show-inheritance: + :members: + diff --git a/docs/build/_sources/sections/tech_docs/components/hinge.rst.txt b/docs/build/_sources/sections/tech_docs/components/hinge.rst.txt new file mode 100644 index 0000000..8f9400d --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/components/hinge.rst.txt @@ -0,0 +1,10 @@ +========================== +Hinge Component +========================== + +.. codeauthor:: Jeremy Ernst + +.. autoclass:: artv2.components.hinge.Hinge + :show-inheritance: + :members: + diff --git a/docs/build/_sources/sections/tech_docs/components/joint.rst.txt b/docs/build/_sources/sections/tech_docs/components/joint.rst.txt new file mode 100644 index 0000000..ff34e21 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/components/joint.rst.txt @@ -0,0 +1,10 @@ +========================== +Joint Component +========================== + +.. codeauthor:: Jeremy Ernst + +.. autoclass:: artv2.components.joint.Joint + :show-inheritance: + :members: + diff --git a/docs/build/_sources/sections/tech_docs/components/joint_mover.rst.txt b/docs/build/_sources/sections/tech_docs/components/joint_mover.rst.txt new file mode 100644 index 0000000..6ba0f23 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/components/joint_mover.rst.txt @@ -0,0 +1,16 @@ +========================== +Joint Mover +========================== + +.. codeauthor:: Jeremy Ernst + +.. autoclass:: artv2.components.base_components.joint_mover.JointMover + :members: + +Properties +---------- + +.. py:attribute:: metanode + + This property holds a reference to the owning component's network node (the component that created this joint + mover. diff --git a/docs/build/_sources/sections/tech_docs/components/pose.rst.txt b/docs/build/_sources/sections/tech_docs/components/pose.rst.txt new file mode 100644 index 0000000..e6510aa --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/components/pose.rst.txt @@ -0,0 +1,8 @@ +========================== +Pose +========================== + +.. codeauthor:: Jeremy Ernst + +.. autoclass:: scripts.artv2.components.base_components.pose.Pose + :members: diff --git a/docs/build/_sources/sections/tech_docs/components/rig_asset.rst.txt b/docs/build/_sources/sections/tech_docs/components/rig_asset.rst.txt new file mode 100644 index 0000000..c62bb6e --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/components/rig_asset.rst.txt @@ -0,0 +1,20 @@ +========================== +Assets +========================== + +.. codeauthor:: Jeremy Ernst + +.. autoclass:: scripts.artv2.components.base_components.rig_asset.RigAsset + :members: + +Properties +---------- + +.. py:attribute:: name + + This property holds the asset name. This could be the name of the character, for example. + +.. py:attribute:: network_node + :noindex: + + This property holds the network node that contains this asset's metadata.
\ No newline at end of file diff --git a/docs/build/_sources/sections/tech_docs/components/root_component.rst.txt b/docs/build/_sources/sections/tech_docs/components/root_component.rst.txt new file mode 100644 index 0000000..3e54803 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/components/root_component.rst.txt @@ -0,0 +1,9 @@ +========================== +Root Component +========================== + +.. codeauthor:: Jeremy Ernst + +.. autoclass:: artv2.components.root.Root + :show-inheritance: + :members: diff --git a/docs/build/_sources/sections/tech_docs/components/segment.rst.txt b/docs/build/_sources/sections/tech_docs/components/segment.rst.txt new file mode 100644 index 0000000..90de95a --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/components/segment.rst.txt @@ -0,0 +1,10 @@ +========================== +Segment Component +========================== + +.. codeauthor:: Jeremy Ernst + +.. autoclass:: artv2.components.segment.Segment + :show-inheritance: + :members: + diff --git a/docs/build/_sources/sections/tech_docs/components/spine.rst.txt b/docs/build/_sources/sections/tech_docs/components/spine.rst.txt new file mode 100644 index 0000000..80c4804 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/components/spine.rst.txt @@ -0,0 +1,10 @@ +========================== +Spine Component +========================== + +.. codeauthor:: Jeremy Ernst + +.. autoclass:: artv2.components.spine.Spine + :show-inheritance: + :members: + diff --git a/docs/build/_sources/sections/tech_docs/components/template.rst.txt b/docs/build/_sources/sections/tech_docs/components/template.rst.txt new file mode 100644 index 0000000..b48154f --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/components/template.rst.txt @@ -0,0 +1,8 @@ +========================== +Template +========================== + +.. codeauthor:: Jeremy Ernst + +.. autoclass:: scripts.artv2.components.base_components.template.Template + :members: diff --git a/docs/build/_sources/sections/tech_docs/rigging_tools/add_component_widget.rst.txt b/docs/build/_sources/sections/tech_docs/rigging_tools/add_component_widget.rst.txt new file mode 100644 index 0000000..962ad6b --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/rigging_tools/add_component_widget.rst.txt @@ -0,0 +1,8 @@ +========================== +Add Component Widget +========================== + +artv2.tools.rigging.rig_builder.add_component_widget + +.. automodule:: artv2.tools.rigging.rig_builder.add_component_widget + :members: diff --git a/docs/build/_sources/sections/tech_docs/rigging_tools/available_components_widget.rst.txt b/docs/build/_sources/sections/tech_docs/rigging_tools/available_components_widget.rst.txt new file mode 100644 index 0000000..787925b --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/rigging_tools/available_components_widget.rst.txt @@ -0,0 +1,8 @@ +=========================== +Available Components Widget +=========================== + +artv2.tools.rigging.rig_builder.available_components_widget + +.. automodule:: artv2.tools.rigging.rig_builder.available_components_widget + :members: diff --git a/docs/build/_sources/sections/tech_docs/rigging_tools/bone_counter_ui.rst.txt b/docs/build/_sources/sections/tech_docs/rigging_tools/bone_counter_ui.rst.txt new file mode 100644 index 0000000..81056ea --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/rigging_tools/bone_counter_ui.rst.txt @@ -0,0 +1,8 @@ +=========================== +Bone Counter UI +=========================== + +artv2.tools.rigging.bone_counter_ui + +.. automodule:: artv2.tools.rigging.bone_counter_ui + :members: diff --git a/docs/build/_sources/sections/tech_docs/rigging_tools/component_context_menu.rst.txt b/docs/build/_sources/sections/tech_docs/rigging_tools/component_context_menu.rst.txt new file mode 100644 index 0000000..79ce79c --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/rigging_tools/component_context_menu.rst.txt @@ -0,0 +1,8 @@ +=========================== +Component Context Menu +=========================== + +artv2.tools.rigging.rig_builder.component_context_menu + +.. automodule:: artv2.tools.rigging.rig_builder.component_context_menu + :members: diff --git a/docs/build/_sources/sections/tech_docs/rigging_tools/component_settings_widget.rst.txt b/docs/build/_sources/sections/tech_docs/rigging_tools/component_settings_widget.rst.txt new file mode 100644 index 0000000..bed479e --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/rigging_tools/component_settings_widget.rst.txt @@ -0,0 +1,8 @@ +=========================== +Component Settings Widget +=========================== + +artv2.tools.rigging.rig_builder.component_settings_widget + +.. automodule:: artv2.tools.rigging.rig_builder.component_settings_widget + :members: diff --git a/docs/build/_sources/sections/tech_docs/rigging_tools/group_bake_offsets_ui.rst.txt b/docs/build/_sources/sections/tech_docs/rigging_tools/group_bake_offsets_ui.rst.txt new file mode 100644 index 0000000..a1f9d96 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/rigging_tools/group_bake_offsets_ui.rst.txt @@ -0,0 +1,8 @@ +=========================== +Group Bake Offsets UI +=========================== + +artv2.tools.rigging.group_bake_offsets_ui + +.. automodule:: artv2.tools.rigging.group_bake_offsets_ui + :members: diff --git a/docs/build/_sources/sections/tech_docs/rigging_tools/group_mirror_ui.rst.txt b/docs/build/_sources/sections/tech_docs/rigging_tools/group_mirror_ui.rst.txt new file mode 100644 index 0000000..9e92d29 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/rigging_tools/group_mirror_ui.rst.txt @@ -0,0 +1,8 @@ +=========================== +Group Mirror UI +=========================== + +artv2.tools.rigging.group_mirror_ui + +.. automodule:: artv2.tools.rigging.group_mirror_ui + :members: diff --git a/docs/build/_sources/sections/tech_docs/rigging_tools/group_mirror_xforms_ui.rst.txt b/docs/build/_sources/sections/tech_docs/rigging_tools/group_mirror_xforms_ui.rst.txt new file mode 100644 index 0000000..83ccca4 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/rigging_tools/group_mirror_xforms_ui.rst.txt @@ -0,0 +1,8 @@ +=========================== +Group Mirror Transforms UI +=========================== + +artv2.tools.rigging.group_mirror_xforms_ui + +.. automodule:: artv2.tools.rigging.group_mirror_xforms_ui + :members: diff --git a/docs/build/_sources/sections/tech_docs/rigging_tools/group_reset_ui.rst.txt b/docs/build/_sources/sections/tech_docs/rigging_tools/group_reset_ui.rst.txt new file mode 100644 index 0000000..dfeb46b --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/rigging_tools/group_reset_ui.rst.txt @@ -0,0 +1,8 @@ +=========================== +Group Reset UI +=========================== + +artv2.tools.rigging.group_reset_ui + +.. automodule:: artv2.tools.rigging.group_reset_ui + :members: diff --git a/docs/build/_sources/sections/tech_docs/rigging_tools/installed_components_widget.rst.txt b/docs/build/_sources/sections/tech_docs/rigging_tools/installed_components_widget.rst.txt new file mode 100644 index 0000000..8c7a8d9 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/rigging_tools/installed_components_widget.rst.txt @@ -0,0 +1,8 @@ +=========================== +Installed Components Widget +=========================== + +artv2.tools.rigging.rig_builder.installed_components_widget + +.. automodule:: artv2.tools.rigging.rig_builder.installed_components_widget + :members: diff --git a/docs/build/_sources/sections/tech_docs/rigging_tools/load_template_ui.rst.txt b/docs/build/_sources/sections/tech_docs/rigging_tools/load_template_ui.rst.txt new file mode 100644 index 0000000..78d7063 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/rigging_tools/load_template_ui.rst.txt @@ -0,0 +1,8 @@ +=========================== +Load Template UI +=========================== + +artv2.tools.rigging.load_template_ui + +.. automodule:: artv2.tools.rigging.load_template_ui + :members: diff --git a/docs/build/_sources/sections/tech_docs/rigging_tools/mirror_component_widget.rst.txt b/docs/build/_sources/sections/tech_docs/rigging_tools/mirror_component_widget.rst.txt new file mode 100644 index 0000000..9e68dc3 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/rigging_tools/mirror_component_widget.rst.txt @@ -0,0 +1,8 @@ +=========================== +Mirror Component Widget +=========================== + +artv2.tools.rigging.rig_builder.mirror_component_widget + +.. automodule:: artv2.tools.rigging.rig_builder.mirror_component_widget + :members: diff --git a/docs/build/_sources/sections/tech_docs/rigging_tools/parent_list_widget.rst.txt b/docs/build/_sources/sections/tech_docs/rigging_tools/parent_list_widget.rst.txt new file mode 100644 index 0000000..3428326 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/rigging_tools/parent_list_widget.rst.txt @@ -0,0 +1,8 @@ +=========================== +Choose Parent List Widget +=========================== + +artv2.tools.rigging.rig_builder.parent_list_widget + +.. automodule:: artv2.tools.rigging.rig_builder.parent_list_widget + :members: diff --git a/docs/build/_sources/sections/tech_docs/rigging_tools/pose_manager_ui.rst.txt b/docs/build/_sources/sections/tech_docs/rigging_tools/pose_manager_ui.rst.txt new file mode 100644 index 0000000..9d88fc1 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/rigging_tools/pose_manager_ui.rst.txt @@ -0,0 +1,8 @@ +=========================== +Pose Manager UI +=========================== + +artv2.tools.rigging.pose_manager_ui + +.. automodule:: artv2.tools.rigging.pose_manager_ui + :members: diff --git a/docs/build/_sources/sections/tech_docs/rigging_tools/rename_widget.rst.txt b/docs/build/_sources/sections/tech_docs/rigging_tools/rename_widget.rst.txt new file mode 100644 index 0000000..0d695f5 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/rigging_tools/rename_widget.rst.txt @@ -0,0 +1,8 @@ +=========================== +Rename Component Widget +=========================== + +artv2.tools.rigging.rig_builder.rename_widget + +.. automodule:: artv2.tools.rigging.rig_builder.rename_widget + :members: diff --git a/docs/build/_sources/sections/tech_docs/rigging_tools/rig_builder_ui.rst.txt b/docs/build/_sources/sections/tech_docs/rigging_tools/rig_builder_ui.rst.txt new file mode 100644 index 0000000..e1b01b1 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/rigging_tools/rig_builder_ui.rst.txt @@ -0,0 +1,8 @@ +=========================== +Rig Builder UI +=========================== + +artv2.tools.rigging.rig_builder.rig_builder_ui + +.. automodule:: artv2.tools.rigging.rig_builder.rig_builder_ui + :members: diff --git a/docs/build/_sources/sections/tech_docs/rigging_tools/rigging_tools.rst.txt b/docs/build/_sources/sections/tech_docs/rigging_tools/rigging_tools.rst.txt new file mode 100644 index 0000000..a11d0f2 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/rigging_tools/rigging_tools.rst.txt @@ -0,0 +1,45 @@ +========================== +Rigging Tools +========================== + +Rig Builder +----------- + +.. image:: /images/rig_builder.png + +The following tools are all part of the rig builder interface, usually as widgets within that interface, but a few are +modal dialogs that the rig builder will call upon. + + +.. toctree:: + :maxdepth: 1 + + add_component_widget.rst + available_components_widget.rst + component_context_menu.rst + component_settings_widget.rst + installed_components_widget.rst + mirror_component_widget.rst + parent_list_widget.rst + rename_widget.rst + rig_builder_ui.rst + set_mirror_widget.rst + set_parent_widget.rst + +Rig Builder Toolbar +------------------- + +.. image:: /images/rig_builder_toolbar.png + +The following tools invoked from the toolbar of the rig builder interface. + +.. toctree:: + :maxdepth: 1 + + bone_counter_ui.rst + group_bake_offsets_ui.rst + group_mirror_ui.rst + group_mirror_xforms_ui.rst + group_reset_ui.rst + load_template_ui.rst + pose_manager_ui.rst
\ No newline at end of file diff --git a/docs/build/_sources/sections/tech_docs/rigging_tools/set_mirror_widget.rst.txt b/docs/build/_sources/sections/tech_docs/rigging_tools/set_mirror_widget.rst.txt new file mode 100644 index 0000000..68df09b --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/rigging_tools/set_mirror_widget.rst.txt @@ -0,0 +1,8 @@ +=========================== +Set Mirror Widget +=========================== + +artv2.tools.rigging.rig_builder.set_mirror_widget + +.. automodule:: artv2.tools.rigging.rig_builder.set_mirror_widget + :members: diff --git a/docs/build/_sources/sections/tech_docs/rigging_tools/set_parent_widget.rst.txt b/docs/build/_sources/sections/tech_docs/rigging_tools/set_parent_widget.rst.txt new file mode 100644 index 0000000..d51baa4 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/rigging_tools/set_parent_widget.rst.txt @@ -0,0 +1,8 @@ +=========================== +Set Parent Widget +=========================== + +artv2.tools.rigging.rig_builder.set_parent_widget + +.. automodule:: artv2.tools.rigging.rig_builder.set_parent_widget + :members: diff --git a/docs/build/_sources/sections/tech_docs/running_tests.rst.txt b/docs/build/_sources/sections/tech_docs/running_tests.rst.txt new file mode 100644 index 0000000..dab6284 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/running_tests.rst.txt @@ -0,0 +1,29 @@ +========================= +Running Tests +========================= + +.. codeauthor:: Jeremy Ernst, Chad Vernon + +.. note:: + + Many thanks to Chad Vernon and his incredibly useful blog posts on running unit tests in Maya. Most of the code + found in the artv2_tester package was from his posts. + + Check out his posts `here`_: + + .. _here: http://www.chadvernon.com/blog/unit-testing-in-maya/ + + +To run tests to ensure changes to the code base you have made aren't causing any issues, it's best to restart Maya, +then under the ART v2 menu, in the Development sub-menu, find Run Tests. + +The following interface will appear: + +.. image:: /images/run_tests.png + +From here, you can either hit the left-most play button to run all tests, or select a specific test or group of tests +and use the "Run Selected Tests" button. + +If a test fails, you will get information on the right side about what failed and where. + +.. image:: /images/artv2_testing.png
\ No newline at end of file diff --git a/docs/build/_sources/sections/tech_docs/useful_scripting_commands.rst.txt b/docs/build/_sources/sections/tech_docs/useful_scripting_commands.rst.txt new file mode 100644 index 0000000..6b498cf --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/useful_scripting_commands.rst.txt @@ -0,0 +1,75 @@ +========================= +Useful Scripting Commands +========================= + +.. codeauthor:: Jeremy Ernst + +Below are some examples for scripting aspects of the system. In order to fully understand all the attributes and +methods available, please look at the relevant technical documentation. + + +Creating a Simple Character +--------------------------- + +.. code-block:: python + + # Import the necessary modules + import artv2.components.base_components.rig_asset as rig_asset + import artv2.components.root as root + import artv2.components.spine as spine + import artv2.components.biped_leg as leg + import artv2.components.arm as arm + + # Build an asset, which is required to hold other components. + new_asset = rig_asset.RigAsset() + + # Create a root component + root_inst = root.Root() + + # Create a spine components and set the number of spine joints to 4 and its parent to the root + spine_inst = spine.Spine() + spine_inst.parent = "root" + spine_inst.num_joints = 4 + + # Create a leg component for the left leg and set its parent to the pelvis bone created by the spine component. + l_leg_inst = leg.BipedLeg() + l_leg_inst.parent = "pelvis" + + # Create a mirror of the left leg + l_leg_inst.create_mirror(prefix="r", suffix="", parent="pelvis") + + # Set the prefix on the left leg instance + l_leg_inst.prefix = "l" + + # Create an arm component and set its parent to the last spine joint created by the spine component. + l_arm_inst = arm.Arm(prefix="l") + l_arm_inst.parent = "spine_04" + + # Create a mirror of the arm component. + r_arm_inst = l_arm_inst.create_mirror(prefix="r", suffix="", parent="spine_04") + + + +Accessing Component Data +------------------------- + +.. code-block:: python + + # In the example, components already exist in the scene, and we want to access information on the components. + import artv2.components.base_components.rig_asset as rig_asset + import artv2.components.biped_leg as leg + + # Assume this code has been run previously, which creates an asset and a leg component. + asset = rig_asset.RigAsset() + leg_inst = leg.BipedLeg() + + # Now assume Maya has been closed and re-opened, so the above variables are no longer valid. + # To get access to a specific component, pass in that component's network node in the scene: + leg_inst = leg.BipedLeg(network_node="leg_metadata") + + # Now let's gather info about the component + print(leg_inst.joint_mover.get_movers()) + print(leg_inst.joint_mover.get_created_joints()) + + # As in the previous example, we can also change properties of the leg, like the prefix, suffix, parent, etc. + leg_inst.num_thigh_twists = 2 diff --git a/docs/build/_sources/sections/tech_docs/utilities/component_utils.rst.txt b/docs/build/_sources/sections/tech_docs/utilities/component_utils.rst.txt new file mode 100644 index 0000000..fbdf431 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/utilities/component_utils.rst.txt @@ -0,0 +1,8 @@ +========================== +Component Utilities +========================== + +artv2.utilities.component_utilities + +.. automodule:: artv2.utilities.component_utilities + :members: diff --git a/docs/build/_sources/sections/tech_docs/utilities/control_utilities.rst.txt b/docs/build/_sources/sections/tech_docs/utilities/control_utilities.rst.txt new file mode 100644 index 0000000..2f917f1 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/utilities/control_utilities.rst.txt @@ -0,0 +1,8 @@ +========================== +Control Utilities +========================== + +artv2.utilities.control_utilities + +.. automodule:: artv2.utilities.control_utilities + :members: diff --git a/docs/build/_sources/sections/tech_docs/utilities/error_utils.rst.txt b/docs/build/_sources/sections/tech_docs/utilities/error_utils.rst.txt new file mode 100644 index 0000000..1fea05a --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/utilities/error_utils.rst.txt @@ -0,0 +1,8 @@ +========================== +Error Utilities +========================== + +artv2.utilities.error_utilities + +.. automodule:: artv2.utilities.error_utilities + :members: diff --git a/docs/build/_sources/sections/tech_docs/utilities/general_utils.rst.txt b/docs/build/_sources/sections/tech_docs/utilities/general_utils.rst.txt new file mode 100644 index 0000000..702873a --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/utilities/general_utils.rst.txt @@ -0,0 +1,8 @@ +========================== +General Utilities +========================== + +artv2.utilities.general_utilities + +.. automodule:: artv2.utilities.general_utilities + :members: diff --git a/docs/build/_sources/sections/tech_docs/utilities/interface_utils.rst.txt b/docs/build/_sources/sections/tech_docs/utilities/interface_utils.rst.txt new file mode 100644 index 0000000..7f2e43d --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/utilities/interface_utils.rst.txt @@ -0,0 +1,8 @@ +========================== +Interface Utilities +========================== + +artv2.utilities.interface_utilities + +.. automodule:: artv2.utilities.interface_utilities + :members: diff --git a/docs/build/_sources/sections/tech_docs/utilities/joint_mover_utils.rst.txt b/docs/build/_sources/sections/tech_docs/utilities/joint_mover_utils.rst.txt new file mode 100644 index 0000000..4725558 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/utilities/joint_mover_utils.rst.txt @@ -0,0 +1,8 @@ +========================== +Joint Mover Utilities +========================== + +artv2.utilities.joint_mover_utilities + +.. automodule:: artv2.utilities.joint_mover_utilities + :members: diff --git a/docs/build/_sources/sections/tech_docs/utilities/rigging_utilities.rst.txt b/docs/build/_sources/sections/tech_docs/utilities/rigging_utilities.rst.txt new file mode 100644 index 0000000..da8f2d7 --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/utilities/rigging_utilities.rst.txt @@ -0,0 +1,8 @@ +========================== +Rigging Utilities +========================== + +artv2.utilities.rigging_utilities + +.. automodule:: artv2.utilities.rigging_utilities + :members: diff --git a/docs/build/_sources/sections/tech_docs/utilities/utilities.rst.txt b/docs/build/_sources/sections/tech_docs/utilities/utilities.rst.txt new file mode 100644 index 0000000..d3830ba --- /dev/null +++ b/docs/build/_sources/sections/tech_docs/utilities/utilities.rst.txt @@ -0,0 +1,18 @@ +.. ARTv2 documentation master file, created by + sphinx-quickstart on Fri Jul 27 14:30:57 2018. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Utilities +============================= + +.. toctree:: + :maxdepth: 1 + + general_utils.rst + component_utils.rst + error_utils.rst + interface_utils.rst + joint_mover_utils.rst + control_utilities.rst + rigging_utilities.rst |