Jump to content
Hash, Inc. Forums

Tutorial: Composing Models from other models


Recommended Posts

In our Cupid project, we ran across a problem with big models and big sets. While considering this issue, I stumbled across a technique for composing models from other models. I'm sure others have come across it before, but I don't think it's common knowledge.

vM8caqBArDg or here

In the first part of the video, I unfortunately refer to the inner models as street lights instead of traffic lights. Hopefully that's not too distracting.

Additional information I did not mention in the video:

An additional use for this technique would be rendering an animation with the foreground objects turned off to get the background only. The foreground can then be rendered on its own and the videos can be composited back together.

Additionally, you can import models that already have been composed of other models.

One disadvantage to this technique is that light lists may not deal well with these contained objects.


I created the tutorial with CamStudio, and put together the 4 segments with NCH VideoPad free version.

Link to comment
Share on other sites

Very cool and interesting method. I used the Active-Buttons alone before, but this has the big advantage that you can use one model (import it easily, etc. into other projects, etc.)

I'll check that technique out :).

 

See you and thank you very much for the tutorial!

*Fuchur*

Link to comment
Share on other sites

Good info, well-communicated!

 

I didn't know you could add an action object to a pose, either. I would definitely have used this on the bridge set for Stalled Trek.

 

Thanks, Chris!

Link to comment
Share on other sites

I'm glad you guys found this useful! It feels almost like a game-changer for both modelling and animating.

 

For example, for the school bus I worked on a couple of years ago, I copied the passenger seats multiple times to fill out the bus. I could have just created one passenger seat, and then included it 22 times in a pose. Why stop there? I could have had poses that stretched the bus, and at 1% had one row of seats, 2% 2 rows of seats, etc.

 

Maybe this technique could be combined with the DressMe plugin and pose sliders to change what the person is wearing. Or using the hair cap method that John Bigboote, have different hair styles in different models active only for specific pose values for different looks. (e.g. Clothing style 4=gym suit, hair style 3=tied back in a ponytail.)

 

Workflow-wise, I used to create a choreography with the set objects, and then animate multiple scenes on the same choreography to avoid having to re-create the entire set for every choreography. I switched to using action objects for a while, but it was still kind of klunky. Now with one model for the set, I can create a new choreography, drag in the set and the 3 or 4 characters I need, turn on and off a couple of poses, and start animating! That's a game changer, at least for me.

 

I'm sure some of the studios have stumbled across this idea, but I think it will greatly increase the re-usability of models and scene/shot start-up.

 

We're kicking around other ideas for how we could use variations of this technique for other purposes ... we'll let you know if we come up with anything else cool.

  • ____ 1
Link to comment
Share on other sites

Great tutorial! I didn't know that you could do that either!--it is revolutionary!!! I am going to adopt this technique myself :)

 

One question: in the video you turned the relationship to OFF before you started positioning objects, and then turned it on and made the objects active. What is the reason for this? Would it work to just position the objects in the Pose without that step? I didn't understand--can you elaborate?

Link to comment
Share on other sites

I stumbled about it too, but it is logically. If you leave the state to "On" and you want the parts to be active for that state, you would have to hit the value twice. The first time to create the Channel to hold the data in (since On is the default state there is no channel at the beginning). But that would put the value "off" into the keyframe. You would need to hit it again to set the keyframe to "On". By putting the pose to "Off" you just need to hit the value once, since it is the right value which will be set to the keyframe.

 

If you ask me, this tutorial was very well planned before he started it... ;).

 

See you

*Fuchur*

Link to comment
Share on other sites

  • Admin
I could have had poses that stretched the bus, and at 1% had one row of seats, 2% 2 rows of seats, etc.

 

This is what I've had in mind for creating a master building to morph into various shapes and populate a city with for some time now but I've never worked up the patience and where with all to set aside time to implement it. You've outdone anything I could have put together already.

 

Quality takes time and taking adequate time to build quality into a project is something I'm still working on.

 

You guys have got it going on here!

Link to comment
Share on other sites

Even better, if your set is in a closed room, you could set up each wall to turn on/off so as you position your camera you are not constantly having to deal with a wall getting in the way. Up until now I would model each wall on attached to the others (or the ceiling) then bone it, and in the chor slide the wall out of the way. This of course means having to keep track of key frames etc. on the walls. Your way is much more elegant.

Link to comment
Share on other sites

One question: in the video you turned the relationship to OFF before you started positioning objects, and then turned it on and made the objects active. What is the reason for this? Would it work to just position the objects in the Pose without that step? I didn't understand--can you elaborate?

I stumbled about it too, but it is logically. If you leave the state to "On" and you want the parts to be active for that state, you would have to hit the value twice. The first time to create the Channel to hold the data in (since On is the default state there is no channel at the beginning). But that would put the value "off" into the keyframe. You would need to hit it again to set the keyframe to "On". By putting the pose to "Off" you just need to hit the value once, since it is the right value which will be set to the keyframe.

To expand a bit on Gerald's answer, part of the reason is that if you position and rotate everything in the OFF position, you have only one key frame for both OFF, and the hold after is inherited in the ON pose. It's in the same position regardless of whether the pose is ON or off, and if you add a bone or something else later on, it will be where the object is by default, not at 0,0,0.

 

SingleKeyframeInPose.png

 

But if you positioned it in the ON position, then you'd have a keyframe of 0,0,0 in the OFF position created by default, and whatever you set it to in the ON position. If you forgot to hide the bones, you'd have all of these bones at 0,0,0 when the pose was inactive, instead of where they would be when the pose is ON.

 

MultipleKeyframesInPose.png

 

The Active and Hidden properties for the bones (not shown) must have different values in each pose. The position and rotation and scaling only need one, and setting the value in the OFF pose setting achieves that. It's a slightly picky thing, and probably wouldn't hurt if you had different keyframes in both ON and OFF settings. All else being equal, I'd consider 1 keyframe better than 2.

Link to comment
Share on other sites

  • 1 year later...

I just wanted to let everyone know that there are currently two major problems with this technique.

 

1. NetRender does not pick up all of the contained action objects. Things will render as expected in the main application, but not in NetRender. This is ticket 6617.

2. Multiple levels of poses don't work. By this, I mean if you have a car model with only the body, and create a pose that adds 4 wheels, then you include that model in a set that is a race track, the wheels will appear in the wrong position. This is ticket 6620.

 

These are show-stopper bugs. Until these issues are fixed, this technique will be more of a hindrance than a help.

Link to comment
Share on other sites

  • Admin
Until these issues are fixed, this technique will be more of a hindrance than a help

 

...if relying on Netrender. Otherwise you seem to be saying the technique works well. No caviets with a straight flow through A:M's internal renderer?

 

I'm thinking a workaround should be possible if we can automate rendering in A:M.

Once upon a time some folks did this (in order to render out a couple hundred materials) but I confess I don't know how to do it... short of a hack or two.

The hack being to set a shortcut key for rendering and then use a keystroke utility to launch rendering.

If it appears that the Netrender solution may not be workable in the near to mid term perhaps a feature request could be put in to automate rendering through A:M... perhaps even via command line operation?

This would in essence also bring Netrender closer to being fully intergrated with A:M itself whereas (to my understanding) it is a separate renderer based on or which uses or passes data through the A:M code.

Lest this be seen as a temporary stopgap or bandaid on a bruise I'd suggest folks try to envision a longer term goal of charting what success might look like in a perfect rendering world.

As there is little chance of successfully implementing this in near future now may be a good time to take a glance at what the future could hold.

Note that I'm not specially suggesting a framework for alternative renderers but by its very nature a good grasp of rendering workflow in A:M (past, present and potential in A:M would allow for that too.

For example, it might be good to review how Netrender's renderer differs from the internal renderer.

 

Since I'm on the subject let me suggest two use cases that might apply well to optimal rendering in A:M:

1) Invisible/completely automated/no renderer invoked outside of realtime or near-realtime views

2) Full screen/customizable

 

In the first case it would be nice to be able to downplay rendering to disk to the point where one almost doesn't consider it at all. I'd be glad to comment more on this but it would be better served in a topic of its own. The basic idea here is that everything that can be rendered in realtime probably should thus avoiding the majority of issues encountered with traditional rendering. Realtime renders might be saved to disk but probably not in traditional way... more like a dump from memory after you've viewed it in realtime... a simply a screen capture of the same saved for later viewing. Note that this would not be quite the same as the current Render Animation Preview... although it could be similar. This will be more likely to happen once video capture becomes ubiquitous on modern operating systems. We aren't quite there yet though.

 

In the second case, once a user decides they need to customize a rendering to target specific goals it would be nice to have the option to see all options available (or as many as possible) and perhapss even see the estimated impact a specific setting might have on rendering prior to launching the renderer. A specific case for a full screen render panel is that currently while rendering nothing else in A:M can occur... the renderer is in full control and does not release control back until the last frame is rendered. Unless the renderer can be made to pass back control to the user and render assigned frames in the background it doesn't make a lot of sense to have a small render dialogue box with screen space all around that cannot be used. Perhaps it would be better to use that space to launch the user into the full experience of rendering? (perhaps more on this later).

 

Bottom line: Netrender is a great asset (and the fact that it's included with A:M is invaluable) but wherever it deviates from A:M's internal renderer there will always be gotchas and workarounds. As such it can only be part of an over all rendering solution.

 

(My apologies for the off topic)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...