Open CalleHalldin opened 7 years ago
I've given some thought to this, let me know what you think of this workflow.
mb.bat
, such as sh010
model
layout
In the Pyblish GUI, you would see both instances.
Once complete, in the Loader, there would be two new assets.
sh010
environmentDefault
layoutDefault
The artist interested in animating the rigs from the environment would then load layoutDefault
, and optionally environmentDefault
if needed.
The one problem I foresee is that if we use Layout for the placement of characters, and if we don't do this in the environment scene along with other assets, then we would be publishing a second Layout for characters.
sh010
layoutEnvironment
layoutCharacters
environmentDefault
But perhaps that is ok?
I like the idea, i think it could work. What happends if we update the rigs? Is the (reference) connection to the original asset still there after the "re-publish" or do we have to go in to each layout scene, update the rig and publish the layout again?
If we go with a layout
family, then I'd imagine versions of the rigs not to be included in the published assets. Instead, the latest version is chosen whenever the layout is loaded.
So a layout
asset would merely contain this.
Practically, I'd imagine the layout only being used once and never needing an update. The Animator will have started working on it, and would update the asset in his scene.
But I may be wrong here, in what scenario do you see someone updating a layout?
Maybe i misunderstood your original post but this would all happen inside the setdress scene where they would create the camera and environment for animation and render team correct? If that would be the case the layoutEnviroment along side with environmentDefault would be updated many times parallel with animation. Usually the rigs we are speaking of, like a tree will usually have a simple cycle and not be touched by the animator. If the animator will use it as a part of the preformence then its the animator who will continue to tweak the place the tree. Maybe its our workflow on how we handle ambient/cycled animation on environment assets that needs to be re-worked. We usually use rigged eviroment close to camera and tweak the cycles so incase you can't see the motion clearly enough we scale the curves up or if its too much we scale them down. I'm open to suggestion on different workflows. I will have to ask the layout artist tomorrow if there is any other usage for a rigged eviroment asset besides for cycles unless the animator is suppose to use it.
Seems like there would be no real reason to have rig besides having a animation cycle (like wind blowing in the leafs of a tree) on it, one small reason would because it easier to move around and to pose but usually the ones with rigs have a cycled animation on it anyway. Perhaps we should look into replacing rigs with animation with cache model of some kind like Roy from colorbleed suggested?
Usually the rigs we are speaking of, like a tree will usually have a simple cycle and not be touched by the animator.
Ok, this is good. We haven't talked about pre-made cycles before, that's a new requirement we'll need to take into account for this design.
Could an animator bring in a tree rig and either animate or apply a cycle to it and publish?
That way, we'd stick with the normal workflow for animation, and control could still reside within the hands of whomever publishes the cycles.
Seems like there would be no real reason to have rig besides having a animation cycle
Ok, that simplifies things. Let me know what you think of the suggestion above.
The animation of the tree could perhaps be done by the animator. It very much depends on the project. Recent King project for example have mainly been a forest environment, doing Setdressing and applying the animation cycles, exaggerating the motion or reduce it, offsetting the animation on trees and plants along side of placing static assets has allmost been a fulltime job since its a rather busy eviroment with alot of assets. To keep the production as effective as possible (and less expensive) I'd rather have animators doing the hero animation. The reason why it's allmost a fulltime isn't becase it's hard it's because it's just alot of stuff. I'd rather have this to be able to be a separate department for when is needed. How about Setdressing publishing alembics instead of rigged assets then? And like I said before when a rig that is needed for the hero preformence it's the animators responsibility for all its motion. No real need to have have a rigged assets with a animation cycles in the animation scene if the animator never touches it. That should work right?
How about Setdressing publishing alembics instead of rigged assets then?
Yes, that's entirely possible. Try that and let me know what you find.
Hi @CalleHalldin, did you try this workflow, how did it go? Anything you need implemented or should I close this issue?
Not in a sharp production. This could work as an output to animators, the problem is that you don't get shaders and would have to load some sort of animLookDev for each asset. Also there is no way for the animator to do tweaks to the layout if needed. I've been giving this some thought and also discussed it with Bruno. This might be a separate issue but I'll let you be the judge of that. This is how I picture it working: In the picture of colorbleed launcher they had layout (or setDressing as we are referring it to) in the shot tab. We need this aswell I think. Like I was saying before we usually do a big environment from alot of separate assets and create a "master scene" based from what was created in the sandbox stage, then we use that master scene as a starting point for the "per shot" tweak and refinement. I would like to keep this workflow intact but instead of using unstable nested references I would like to just like to tell the pipeline what assets that has been used and its position/animation. I would also like to have a script that creates a "placer" rig which is simply just a main control and joint with the right group structure to speed the process of making simple placer rigs. After loading in and placing these placement rigs in the right position we make a "master scene". You will load that for each shot and make the tweaks and refinement and again only export the info to the pipeline which assets was used and what position/animation. If sh030 is very close to sh020 you can also simple load the setDress for sh020 for creating the setDress for sh030. The animator will load shXX_setDress from the loader and the pipeline will load each assets and also it's position/animation. Rigs will contain textures so that problem is solved and we can also continue refining the rigs if we need to add cycles for some assets in the environment in setDress or if the animator needs a more advance rig. As a default a placer rig is set to "static" which means that only 1 frame will get exported once exported as an alembic by the animator but the SetDress artist or animator can decide at any point if a rig is "deforming". What do you think? It kinda goes back to my original though but this would make it possible to work on the Layout/setDressing parallel to animation, adding ambient animation cycles to tres or what not or just simply tweaking image composition it to final.
@tokejepsen You seemed to have pushed a commit about 5 days ago that referenced this issue? I think it might be unrelated. Is that correct?
Yeah, unrelated. Dunno why that happened.
Goal
Simplify the creation of environments.
Requirements
An environment must support..
Implementation
We need to facilitate creating an environment consisting of both static models and live rigs. The rigs are to be manipulated further by animators once an environment has been published.
Consider adding a new family,
mindbender.set
for Set Dressing, where an artist doing Set Dressing is referred to as Set Dresser.Alternatively consider introducing
mindbender.layout
for publishing rigs as-is, to be further manipulated by animators. An environment artist could then produce both an environment, either as amodel
orset
, and alayout
for things he intends being manipulated further.The
layout
family could then also be used for preparing animation scenes in general, such as placement of which characters where.Motivation
The current workflow is split into two stages - sandboxing and refinement.
Sandbox
Models and camera are imported and placed. If a tree for example needs to be stump the Set Dresser will simple delete and deform to get the desired look. Assets may be represented as simple shapes, like a box or a sphere.
Refinement
For the shot in which the environment is meant to be used, we reference in the sandbox and use it as a reference for how the final Environment should look.
All assets that is needed has a final model so we simply load it though the loader with the shot camera and place them so they match the sandbox reference.
All models are cloned with the "clone (special)" tool so they can be tweaked if needed. For example the camera need to go low in this shot but its impossible without the ground intersecting with the camera so we simply push the ground down. Or we deform models to get a nicer image composition, for example move a few leafs that is in the way of the camera, deform the mountain in the background to get a specific shape for this camera angle.
All these cloned models are then added as a model named Environment for this specific shot thought the creator. Simply group them under a ROOT group and create a model Set named Environment. We publish the camera as an alembic and and the Environment as a model for the shot.
The animator then load the camera and Environment model form inside the Shot asset.
Problem
This workflow becomes problematic when we have rigged assets that is a part of the environment and is needed to create a final image composition. We want the Set dressing artist to be able to use and place these rigged assets and be able to export these positions, ideally be able to pose the rigs if needed beyond the basic main control position.
Suggested Solution
This is not a solution since I don't know how to technically solve it.
We need a new family for Set Dressing that accepts models and controls_SET's of rigged assets. Maybe if the pipeline finds a controls_SET as part of the instance it will export only the values of the control and any children below.
Maya's Atom
One way of doing this would be to use Maya's built in "Atom" exporter to just export the values and to export a small list what asset was used, which could be the namespaces of the controls_SET's?
Ideally when the animator loads a Set Dressing for a specific shot it would load the the static models, load the rigs used and import the values to get placement and pose.
Automatic Animation Instances
Another problem is that since we have rigs in the scene the pipeline automatically creates an Animation Set so the pipeline when we publish will also try to export the rigs as alembics.
I don't want to remove this since its useful for Animators since they are not tech savy, is there a way to get around this when we create a Set Dressing? or should the Set Dresser simply remove them before publish?