Mike Lyndon

My views on vfx, education and me

RBD Design – Secondary Fracturing

One way to get some more variation and interest out of your rbd simulation is to add secondary fracturing.  This can be done in a number of ways but the basic idea is to setup your initial sim with a mixture of hero pieces and supporting pieces (I talk more about that in this video). Then create a second beat to your animation by breaking the pieces down further when they collide with other objects.  I prefer to control this manually but you can also set this up to happen procedurally.

 

Video Training Sucks (and what we can do to make it better)

I’m just going to put it out there – the state of video training for a lot of subjects suck. The number of times I’ve almost fallen asleep from a bad video tutorial or had the excitement for a new topic wrenched from me over the course of hours of wasted watching time is beyond me. I love learning and I’m a big fan of video training. I definitely think there’s a benefit to the medium and the endless hours on Vimeo, YouTube or training websites means there’s a market. But I think we can do better. Like, a lot better.

I’m almost always learning something – a language, an art technique or a new aspect of Houdini. I use video training for most of these as my primary source of information because I think it offers a great way to connect the thinking with the doing. For this post I’m going to focus on Houdini because it’s my domain and I think I have something to offer. But these gripes and ideas could probably be applied to other areas of interest.

And in case you think this is just a rant I’ve included some links at the end for video training I find highly informative, well produced and entertaining.

What is my experience?

I’ve had the pleasure of assisting a number of people in my team either learn the basics of Houdini or improve their skills in specific areas. Because I’m balancing that with other work responsibilities I decided the best way for me to help is provide suggestions for video training specific to the persons needs at the time. I do that by either recommending videos I’ve found useful in the past or doing a quick search and review. I’ll watch a bunch of videos at double speed (sometimes I wish there was a 3x option) and skip through to get the gist of the level the information is being presented at and the quality of the teaching. Based on my findings I’ll make a recommendation. After the person has had a chance to watch the video and put some of the ideas into action we’ll do a review to clarify points and confirm there’s been a transfer of knowledge. I think this is a good balance of passive and active learning.

This is what I’m looking for in a training video:

  • The instructor has relevant production experience.
  • The information presented is a match for the level of the student.
  • The training provides some insight on the thinking behind the decision making process, not just the numbers to plug in or the order of operations.

And you know what? 90% of the videos out there fail these basic criteria. I’ve been in CG for a while now and I’m pretty good at weeding out the bad stuff before it takes up too much of my time. But what about a student who’s just starting out and eager to grow their skills? They don’t know any better and will spend money on ‘5 hours of in depth training’ that could probably be reduced to half an hour focusing on core concepts and some practice.

I feel like a lot of content lacks focus or tries to cram too much info into a single video. I get that people want to share everything they know on a particular topic but it’s not helpful to a learner who has to process, practice and reproduce the knowledge. And just like a live class there’s the possibility of instructors taking tangents which distracts from the purpose of the video.

My biggest gripe is around the why. Why is someone using a certain technique? Why are they using a specific node? Why did they choose that specific number? This last one really gets me. An instructor will either plug in a number they worked out earlier or make a statement like, “just try different values until it looks right”. What is right? We should define the concept and thought process that leads to finding a useful value. Because the purpose of the training is to empower the learner to use their new found skills in their own work.

Here are my observations on where video training falls short and my suggestions for improving it.

Limit your focus.

I’ve already mentioned that some video presenters try to cover too much. Pointing out every knob and button isn’t training – it’s a product demo. Product demo’s have their place but don’t confuse them with training. When describing a new node try and focus on the most commonly used parameters or even better the ones that you’re going to use for your example. Going through every value creates an overload of information for someone trying to grasp what they’re seeing. And if you’re not going to follow it up with examples of how those values will be used you’re just creating a distraction.

Show what you’re talking about

I’ve noticed a trend where an instructor will spend 10 minutes describing an idea while the video is a static view of the software being used. There’s no connection between what is being said and what is being shown. We’re assuming that our explanation is sufficient when a visual representation would enhance the experience. One of the benefits to video training is the ability to use the audio and video to tell and show at the same time. I get it. It’s easier to give a quick explanation. It takes time and effort to edit the video or prepare an example to better convey the message. I think we’re doing the learner a disservice if we don’t find a way to effectively communicate an idea.

Underlying concepts

Put the tool aside for a second if possible and spend some time explaining a concept in way that works for the visual medium. A great example of this was The Guerrilla CG Project videos way back when. The explanation of the difference between euler and quaternion rotations and what causes gimbal lock will be embedded in my brain forever thanks to those videos. Strip away the tool, focus on the idea and present it in a way that’s compelling.

Take a note from your favourite cooking show

If you know that there’s a section of your process that is repetitive then cut it out. Have a file waiting in the wings that you can open to skip forward. Edit the video down to remove those times when you’re waiting for a sim or repeating the same task.

Let’s say I want to wrap a bunch of nodes into a simple tool. I want to create a number of parameters on the digital asset which will be used as references for various parameters inside the asset. I can show how to setup the first couple of parameters but after that skip past the rest and provide a list and hints for the learner to implement on their own. You could also provide a before and after file so they have something to reference if they get stuck.

Cover one idea at a time

I think sometimes we try and cover too much at once because we haven’t taken the time to organise our thoughts or break down what it is we’re trying to convey. When teaching a subject there are multiple aspects to it that the learner needs to be familiar with. Order of operations, underlying concepts, specific nodes and their usage, etc. It would be better to create individual building blocks that can be learned separately but work in concert with each other. If we try and show too much at the same time it’s difficult for the learner to parse the information. Think about it this way, if I do an hour long video could I easily cut it into multiple pieces and have each piece make sense on its own?

Entertainment value

Okay, so this isn’t necessary but man would it make a difference. A lot of us are working in the entertainment industry. So why aren’t our training videos entertaining? This one is a stretch but the videos I remember years later are the ones that had some entertainment value. And if I remember the video then I probably remember the information that was being taught as well. Even a little production value can go a long way to improving the learning experience. So next time try injecting a little more personality. Connect with the person watching your video.

Video Training I really appreciate

This is a sampling of what I think makes for good video training. I’d love to list more Houdini options but in my opinion and from what I’ve been exposed to this is it. If you think there’s video training out there that meets the criteria I’ve mentioned above let me know on twitter, @mike_lyndon.

Applied Houdini by Steven Knipping
I recently discovered Steven’s series on volumes and rigid body dynamics and the guy is killing it. He does a great job of starting from the basics and ramping up to the more advanced stuff without leaving anyone behind. Each section is broken up in a way that allows for the topic to stand on it’s own. I wish there were more training like this.

Learn how to draw with Stan Prokopenko
This isn’t Houdini specific but if you’re looking to improve your traditional art skills I highly recommend Stan Prokopenko’s video series for portraits, the figure and anatomy. Each video is concise, informative and entertaining. There’s no fluff. It’s always well presented and Stan has brought his own personality to the videos.

Basics of Digital Painting by Matt Kohr
Not Houdini specific but digital art related, Matt’s videos are well thought out. He breaks things down into manageable pieces. He’s very specific about what he’s going to cover in each video. I think his videos are a great example that an idea can be presented in a couple of minutes at most and then let the learner fill the rest of the time practicing.

 

I’m not immune from these ideas. I’ve committed the same mistakes I’ve mentioned above. I’m trying to find a better way to teach others. You can find some of my attempts here:

RBD Design – Fracture Size

RBD Design – Timing and Weight

Learning Houdini Like A Language

So here’s an idea – what if a new student to Houdini approached the process like learning a language? There are 2 ideas that I think new users to Houdini could benefit from. The first is learning the 20 most common nodes in the SOP context first. This is similar to language learners starting with a frequency list of the 2000 most common words in a chosen language. A learner can achieve 85% proficiency in a language with those words and 75% with as little as 1350 (out of almost 1 million in the English language). I think the same principle could apply to learning Houdini. If the student is comfortable with certain nodes first they would be more comfortable building basic networks quicker.

The second language learning idea is to learn common sentences or phrases to understand the structure of the language and learn basic combinations. So start with simple phrases (node trees) and progress to more complicated examples later on.

I reached out to Sidefx and they were kind enough to provide me with a list of the 50 most common nodes in SOP’s not including HDA’s. The top 20 were:

1-5 6-10 11-15 16-20
1. xform 6. group 11. box 16. grid
2. delete 7. color 12. objectmerge 17. blast
3. null 8. attribwrangle 13. file 18. mountain
4. geo 9. sphere 14. copy 19. attribvop
5. merge 10. polyextrude 15. scatter 20. pointwrangle

This was a good start but I wanted a little more data about the frequency of the node usage so I wrote a script that traversed a directory structure, counted up all the SOP nodes and generated a csv. If you’re interested you can find a link to the script at the end of this post. The csv is ordered by frequency and includes the percentage each node is used and accumulative percentage. This gave me a way of figuring out where the diminishing returns were. And it turns out that roughly 23 nodes are used 80% of the time. It took another 20 nodes or so to reach the 90% mark. Here’s a list based on the hip files on my personal computer.

NodeType Count Percentage Total Percentage
1. Switch 14893 12.333% 12.333%
2. Transform 11026 9.130% 21.463%
3. Attribute VOP 9371 7.760% 29.223%
4. Null 9366 7.756% 36.979%
5. Attribute Wrangle 7954 6.587% 43.565%
6. Attribute Create 5460 4.521% 48.086%
7. Object Merge 5327 4.411% 52.497%
8. Merge 4709 3.899% 56.397%
9. Add 3261 2.700% 59.097%
10. File 2992 2.478% 61.575%
11. Group 2846 2.357% 63.932%
12. Alembic 2572 2.130% 66.061%
13. Blast 1996 1.653% 67.714%
14. Grid 1927 1.596% 69.310%
15. Sphere 1792 1.484% 70.794%
16. Line 1668 1.381% 72.175%
17. Copy 1650 1.366% 73.541%
18. VOP SOP 1465 1.213% 74.754%
19. Attribute Rename 1450 1.201% 75.955%
20. Facet 1406 1.164% 77.119%
21. Delete 1400 1.159% 78.279%
22. Tube 1226 1.015% 79.294%
23. Circle 1143 0.946% 80.240%

If you look at the 2 lists you’ll notice some differences. Sidefx has a much larger sample size and I have some personal preferences when choosing which node to use. My list also includes HDA’s which is probably why the switch node is right at the top. It also occurred to me that users and studios might have a different top 20 based on the work they do and their specialities. For instance I’d be interested to see the difference between a game studio and a film studio.

So what can we learn from these lists? If you’re new to Houdini I think focusing on examples that include these nodes will give you a good grasp of the basic building blocks. How many people feel completely overwhelmed when they are first introduced to Houdini? Even as someone who had been using the software for 3-4 months I had days when I thought I would never be able to remember or learn all the nodes that were available. This way a learner can focus on a small list knowing that it will cover most of their needs early on.

But just like a language, learning individual words doesn’t help you effectively communicate until you start stringing them together. Which leads me to my second point. Learning basic phrases can teach the principles of the language and the context of the word. How does this translate into Houdini? Take the trusty copy SOP. On it’s own it has no meaning, but combine it with a couple of the other common nodes and you can show the strength of proceduralism and how Houdini differs from other packages.

Copy Example

Staying with this idea of learning simple combinations let’s look at the group node. By providing the user with a simple example of grouping components procedurally you create a fundamental building block and highlight the procedural nature of the package.

Procedural Grouping

I know that a lot of tutorials and classes already cover these fundamentals. What I’m attempting to do is provide an alternative mindset to the learning process and a framework within which to focus the learning process.

I started with SOP’s because I’m of the opinion that anyone starting out in Houdini should get comfortable with procedural modelling first. It gives the user an opportunity to get comfortable with the package in a familiar context and understand some of the different approaches to creating a model. I think this idea of knowing the most common nodes could apply to other contexts as well. I think VOP’s would be the next logical step.

On that note I think the one caveat to this approach for a beginner are VOP’s and the wrangle nodes. Both are a rabbit hole all on their own. Thankfully there’s generally a node that can cover most use cases for a beginner and avoid using something vex related.

I would like to continue my little investigation and produce a frequency list for nodes used in VOP’s and functions used in wrangles. Just from anecdotal evidence I’m pretty sure there’s a similar list of 20 or so nodes/functions that are used 80% of the time.

If you’d like to generate a frequency list based on your own hip files you can find my script with instructions here.