2. Basic Muscle Pass — Transcript
Full transcript
- 0:00okay let's start by diving into this
- 0:01geometry object and we'll drop down the
- 0:04capibara test
- 0:06geometry with the capar asset we can
- 0:09output the outer skin the muscle
- 0:10surfaces bones and the animated skeleton
- 0:13which we'll use shortly so let's switch
- 0:15the output to muscles and then we can
- 0:17convert these polygonal surfaces to
- 0:19solids we'll use a muscle solidify node
- 0:21to do that for us this node will Loop
- 0:24through each of the connected pieces on
- 0:25the incoming geometry and convert it to
- 0:27tetrahedrons
- 0:30um there are parameters here that allow
- 0:31us to go in and change the resolution of
- 0:34those tets um so for instance if I just
- 0:37raise the minimum size slightly we're
- 0:39going to get a slightly coarser model
- 0:41but that should be sufficient for what
- 0:42we're going to do here today now I might
- 0:45also add that all the muscle tools that
- 0:46we're going to be interested in can be
- 0:48found by hitting the tab menu going
- 0:50under character effects and then over to
- 0:52the muscles subtab so everything we need
- 0:55we'll find in this area here so while
- 0:57we're here we're going to grab the
- 0:59muscle solver node
- 1:00which we can now drop down and append to
- 1:02our
- 1:05Network let that
- 1:08initialize and if we look at the output
- 1:12of this node here now um we're ready to
- 1:15start simulating with this geometry um
- 1:17let me just first turn on the ground
- 1:19plane so that we have something to
- 1:20collide with so if I run that um we
- 1:24won't have much of a muscle
- 1:25simulation going on as much as we do
- 1:27just a bunch of soft body objects
- 1:29falling to the floor and colliding with
- 1:31each
- 1:37other let me come over here and adjust
- 1:39my frame
- 1:46range and if we play
- 1:49that like I said it's a uh just a
- 1:52collection of soft body objects
- 1:56falling so how do we get this to look
- 1:58more like a muscle simulation
- 2:00let's duplicate the capua asset and
- 2:03switch the output to Bone
- 2:06surfaces and this will now give us our
- 2:09skeleton model which um is not animated
- 2:13at all it's a static it's a static
- 2:16skeleton and if we wire the output to
- 2:19the second input on the muscle solver
- 2:22the second input is expecting the
- 2:24attachment Target for the
- 2:26muscles and maybe we can play our
- 2:28simulation at this point to to get an
- 2:30idea of where things
- 2:41are and now we get a new Avalanche of
- 2:43soft body objects this time finding new
- 2:46Collision geometry on its way
- 2:49down so let's take this one step
- 2:53further let's come back over to our
- 2:56solid muscles and let's layer on some
- 2:58attributes that will inform the muscle
- 3:01solver node how to configure the
- 3:03constraints that will attach to the
- 3:05bones so we'll drop down a muscle
- 3:07constraint properties
- 3:09node and as we wire that in um we'll
- 3:13save the details for exactly how the
- 3:15muscles relate to the bones um for later
- 3:18on in the video series for now we'll
- 3:20just U connect it to the muscle solver
- 3:23and just get the default values to work
- 3:26for us for this example
- 3:30Let's uh hit play and see where our
- 3:31simulation goes
- 3:36next and as that solving already we can
- 3:39see that the muscles are no longer
- 3:40falling
- 3:42off they are um they are keeping an
- 3:45attachment somewhat springy but um again
- 3:48nothing's been tweaked at this
- 3:50point okay so let's continue to build on
- 3:53this and maybe we can add some more
- 3:55movement as things currently stand we're
- 3:58using the static non at output from the
- 4:00capar asset to give us our
- 4:03skeleton um but this asset does give us
- 4:05animated joints on the second and third
- 4:08outputs so what we can do is drop down a
- 4:10joint to form
- 4:13node and as we wire that
- 4:17up all of a sudden now we see we have
- 4:20animation on our
- 4:24skeleton now normally we'd be able to
- 4:26take this animated skeleton and feed it
- 4:28directly into the muscle solver but
- 4:29there is a small issue that we're going
- 4:31to need to address before moving on if
- 4:33we look at the components as they arrive
- 4:36into the muscle solver uh we see that
- 4:38the initial position for the bones and
- 4:40the muscles no longer sink up and this
- 4:43is due to the skeleton geometry coming
- 4:46from an animated position right from
- 4:48frame one and the muscles being set up
- 4:52in uh the rest
- 4:54position to fix this we'll need to
- 4:56intercept The Joint animation coming out
- 4:58of the third input and transition into
- 5:01it from the rest position so we'll use a
- 5:04skeleton blend soap here to blend from
- 5:07the tpost position into the animated
- 5:11output and we can simply key frame that
- 5:15transition so that at the first frame
- 5:18we're at a weight of zero I.E the rest
- 5:21pose and by frame five let's say we
- 5:23transition fully into our animated
- 5:26joints
- 5:29confirm that the transition is
- 5:31working and if we look at the initial
- 5:34setup for the muscle
- 5:37solver we are
- 5:39now back in business we'll start the
- 5:42simulation up and we can see now that
- 5:45the muscles are staying attached to the
- 5:48animated bone
- 5:52positions that's looking pretty springy
- 5:55and loose as far as an attachment goes
- 5:57so maybe we can tweak that a little bit
- 5:59just before we we move
- 6:00forward we'll come back up here to the
- 6:02muscle constraint properties and I'm
- 6:05just going to go over to the um muscle
- 6:07to Bone Tab and enable the stiffness
- 6:11parameter let's see what a stiffness
- 6:13value of 10 is going to give us come
- 6:16back to the solver node run that one
- 6:19more
- 6:20time and sure enough that has stiffened
- 6:22up the constraints quite a bit so this
- 6:24is a constraint that's attaching each
- 6:26muscle to whatever bone it finds in the
- 6:29in its vicinity and uh by stiffening it
- 6:32up we've um removed a lot of the springy
- 6:36quality that the muscle to Bone
- 6:38attachments
- 6:39had so maybe the stiffness here is a
- 6:42little too high uh we may want to bring
- 6:44back a little bit of the bounce and uh
- 6:47just relax that spring a little bit so
- 6:49let's do that once again come back up
- 6:51here let's say take that down to
- 6:58five and we'll run it once
- 7:03more so that's looking a little more
- 7:06Dynamic we're getting some bounce and
- 7:08some secondary
- 7:13motion so I'm just about to run my
- 7:15simulation and write the output to disk
- 7:17I've added a file cache node here to
- 7:19capture the output but before I do that
- 7:21there's um uh one or two things we want
- 7:23to just talk about real quick here um
- 7:26the uh when the when the muscle solver
- 7:29uh config figures its constraints it
- 7:30does this by um going back to a rest
- 7:34position so it takes away your animation
- 7:36puts your gometry in the rest position
- 7:38and configures the constraints there the
- 7:41uh the rest position by convention is
- 7:43something we're calling T pose now where
- 7:45is T POS coming from uh for starters on
- 7:47the muscle solver if we scroll down we
- 7:50see here that under rest position the
- 7:52muscle solver is expecting to find a
- 7:53toose attribute on the muscle input and
- 7:55a separately named toose attribute on
- 7:57the bones now the muscle input
- 8:00um if we look at from the point when we
- 8:01solidified the geometry that toose
- 8:04attribute was generated for us
- 8:05automatically so basically it's
- 8:06capturing the construction position for
- 8:09all the data and and storing it as a
- 8:12rest position named to POS on the bone
- 8:15side uh since the source of the bones
- 8:18could be from anywhere um we need to
- 8:20ensure that the attribute is placed
- 8:22there
- 8:23manually by by default if the uh solver
- 8:27does not find uh these attributes the
- 8:31the rest position attributes it will use
- 8:33the start frame the initialization frame
- 8:36here as though it were the T POS so it
- 8:38will um Park everything at this Frame
- 8:40construct the constraints and Carry On
- 8:42from there um but let's put in a a t POS
- 8:46attribute in here explicitly so to do
- 8:48that we simply um append
- 8:51um um a modified version of the rest
- 8:54position swap that we find here under
- 8:57this tool called set T pose
- 9:01and what it's doing is it's simply
- 9:02capturing the uh incoming position as a
- 9:05rest attribute naming it t pose so now
- 9:07as this data flows through um the muscle
- 9:10solver will find the T pose and make all
- 9:12the necessary connections as it did
- 9:14before and just before we run our
- 9:16simulation and save it out the output
- 9:19from the muscle solver included uh all
- 9:22the original attributes and U groups
- 9:25that were necessary for it to run um as
- 9:27we move forward into the next pass for
- 9:29the tissue solver those attributes and
- 9:32groups are no longer
- 9:34needed also we only really need
- 9:36polygonal geometry uh when we get to our
- 9:39tissue pass so we're going to go ahead
- 9:40and convert the tetrahedrons to polygons
- 9:42as
- 9:44well okay so for the cleanup um as I
- 9:47said we are converting uh our tits to uh
- 9:51polygon so what we end up with here are
- 9:54just the polygonal shells that surround
- 9:55our our muscles um we're going to delete
- 9:58all attributes so I've used this syntax
- 10:00here to just basically say clear out all
- 10:02attributes and if you notice here we're
- 10:04saying everything except the T POS
- 10:06attribute we're going to hang on to that
- 10:08now a word about that the um you may
- 10:11find it's more efficient to uh save out
- 10:15your T pose separately and then uh
- 10:17reapply it uh later on as I'm writing
- 10:20out a full sequence of uh the simulation
- 10:23frame by frame every single frame in my
- 10:25case is going to contain data that
- 10:27represents the T pose and it doesn't
- 10:28change so so uh you can choose to uh
- 10:31have a more efficient workflow if you
- 10:32like but for for my purposes this is
- 10:35just a test so uh we're going to just
- 10:37make it simple do that uh and then
- 10:39finally uh removing any groups uh again
- 10:42we don't need anything so we've
- 10:43basically stripped everything down uh
- 10:46very close to the bare minimum
- 10:47here uh also I've um just simply renamed
- 10:51uh this file cache node as a name that I
- 10:54can easily reference later on and I've
- 10:56appended a null sop to our bone anim so
- 10:59that that can also be referenced and
- 11:01easily uh retrieved when we need it from
- 11:04our second pass so let's uh run our
- 11:07simulation and uh move forward
About this transcript
This page contains the full transcript of 2. Basic Muscle Pass by Houdini, generated from the public captions YouTube serves with the video. The transcript has 1,787 words across 262 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.
What you can do with it
Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to translate the transcript into 100+ languages.
Free YouTube transcript tool
YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, translation to 100+ languages, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.