I have a lowpoly scene with clusters of grass that I want to put a little sway into. How do I do this so that I can just duplicate the grass and offset the animation here and there?
Duplicating the object doesn't bring over the animation because I'm animating a cluster of vertices at the top of the grass. If I make the duplicate an instance I get the animation, but then I can't offset the animation because its all driven by the first cluster (unless I'm missing something there).
Now, I can Duplicate Special>Duplicate Input Graph the cluster itself and that gets me a copy of the grass as well, but I can't move the cluster node itself, because of course that warps the grass.
The best answer I could come up with was duplicating the clusters, moving the new grass about, and then using outliner to select each one of the clusters at the central location (they all pile up in the exact same spot) and offset the animation randomly. It works, but its not very user friendly and if someone was doing a large scene, it would get unmanageable.
So, my concern is that I'm missing an easier path to this. Can I bake the animation of the cluster to the base mesh and then offset that? Is clusters the right way to go at all?
No, that won't work for Sketchfab, but I'm just using Sketchfab as an easy export/display. This video is really great and I'll definitely work through it. Thanks a lot.
It looks like they might support instances, have you tried that? Another solution is to combine all your grass meshes into a single one, and then either bone or cluster animation for the whole set. You'd only need one cluster/bone (well, two bones), but you can't rotate them. Or blend shapes.
The issue with both of those ideas (and I think instances will work once it's saved out for Sketchfab), is that all the grass would be waving at the same time. I need to be able to offset the animations.
Can you place a bone at the top of each grass clump, then drive those bones with an animated noise pattern?
The trouble is that Sketchfab animation is limited like most game engines in that you can't import constraints/custom attributes/controllers/etc. It only accepts baked vert anim from bone hierarchies.
But can't you drive the bones with a meta-controller, and bake that down? I'm not a Maya guy, but I know in 3ds Max I can have a control rig which is not exported, driving a game-rig which is the one exported, which in turn drives the vertices. I keep hearing Maya has deeper rigging access than Max, so a control rig has got to be possible.
I apparently wasn't very clear-headed in my previous reply, sorry about that.
@KeirKieran SouP has a TimeOffset node, but it connects to a shape node, which you're not going to be able to do with instancing. Gonna agree with musashidan that all the grass meshes will need to be unique anyway. So this TimeOffset node would be a simple solution for you. If there's a lot of them already in place, it could be scripted, instead of inserting the node by hand.
@Eric Chadwick The rig you describe is also easily doable in Maya and baked down to standard animation channels, pretty standard practice. (unless you're a dummy like me, and trying to drive a shader...)
But can't you drive the bones with a meta-controller, and bake that down? I'm not a Maya guy, but I know in 3ds Max I can have a control rig which is not exported, driving a game-rig which is the one exported, which in turn drives the vertices. I keep hearing Maya has deeper rigging access than Max, so a control rig has got to be possible.
Yes, Eric, I'm on Max aswell but I know that Maya/Max .fbx process is pretty much identical for SF. So any controllers driving bones, and ultimately verts through skin mod, will bake.
Thanks a lot for all the suggestions. For this project, I'll keep it on the simple side. It's not a very large scene (SketchFab has limits). My real concern was what to do if I was working on a large scene (away from SketchFab) and I've got some solid options here.
Replies
Export to sketchfab as .fbx and bake the keys. The sketchfab site has a set of simple guidelines to follow.
Now, I can Duplicate Special>Duplicate Input Graph the cluster itself and that gets me a copy of the grass as well, but I can't move the cluster node itself, because of course that warps the grass.
The best answer I could come up with was duplicating the clusters, moving the new grass about, and then using outliner to select each one of the clusters at the central location (they all pile up in the exact same spot) and offset the animation randomly. It works, but its not very user friendly and if someone was doing a large scene, it would get unmanageable.
So, my concern is that I'm missing an easier path to this. Can I bake the animation of the cluster to the base mesh and then offset that? Is clusters the right way to go at all?
https://www.youtube.com/watch?v=B4j5tzAIflU
@KeirKieran SouP has a TimeOffset node, but it connects to a shape node, which you're not going to be able to do with instancing. Gonna agree with musashidan that all the grass meshes will need to be unique anyway. So this TimeOffset node would be a simple solution for you. If there's a lot of them already in place, it could be scripted, instead of inserting the node by hand.
@Eric Chadwick The rig you describe is also easily doable in Maya and baked down to standard animation channels, pretty standard practice. (unless you're a dummy like me, and trying to drive a shader...)