Build an Advanced Drifting Car Rig in 3ds Max – Day 2

Tutorial Details
  • Program: 3ds Max
  • Difficulty: Advanced
  • Completion Time: 1-2 hours

In this advanced level tutorial, you will learn all of the steps necessary to build a fully functioning car rig in 3D Studio Max. This rig features working suspension, steering and body roll, as well as some functionality for drifting and powerslides. You will learn how to set up internal functionality through links, constraints, expressions, and parameter wiring. The final result will be a robust rig with easy, and accessible controls.

This tutorial is Day 2 in a series – Go to Day 1

Final Effect Preview


Get the Flash Player to see this player.

Project Files Download: FinalCarRig.rar

Full Video

Download

Note: click the ‘Monitor’ icon to view tutorial in full-screen HD.

Start at the beginning – Go to Day 1

Don’t miss more CG tutorials and guides, published daily – subscribe to Cgtuts+ by RSS.

Add Comment

Discussion 66 Comments

  1. Emin says:

    Wow… Can you make a Maya Tutorial for that… look great I’ll try this in Maya by my own…

    • Staff

      Most of the time the authors choose to do a tutorial in a specific application because that is the one that they are most comfortable on, or the one that they are most knowledgeable in. For that reason, it is usually very rare to be able to re-create a specific tutorial in a different application than the one that it was originally created in. That is, of course, unless the artist is equally proficient in multiple applications…which is sometimes possible.

    • blaze says:

      :) If you know Maya you can notice, that all sollutions are simmilar to Maya :)

  2. Felice DeNigris says:

    thank you , i’ve been looking around for a car rigging tut and this matches what i wanted to achieve

  3. Cinema 4d artist says:

    I just figured why you guys haven’t posted a Cinema 4d tutorial in a month. You’re in the process of creating a site dedicated to Cinema 4d, right? Well…if not a C4D tutorial would be awesome!!!

  4. andi says:

    How would I go about controlling the speed when the car is constrained to the path? Also any tips for keeping the car wheels touching the road vertically when the road has hills/dips/banks/etc?

    • Laurens says:
      Author

      You’re basically gonna have to guess the correct speed andi. I didn’t do any more complex methods because it would be beyond the scope of the tutorial.
      For touching the road: well it’s hard to imagine what you actually want, a lot can be done with the wheel suspension controls, if you want to go beyond that, you’ll have to rotate the car’s root. This isn’t optimal and the rig wasn’t really built for that. You could go ahead however, and build a control between the root and the rest that has the same 4-point orientation control (maybe even 2-point) without suspension compression. You should be abel to figure it out if you fully rasp this tutorial.

      • andi says:

        Hi Laurens, I finally got through both videos and built my own rig, it took all day and there was SO MUCH info and help packed in there that now I feel embarressed about asking you for more! I’d never done any rigging before and now my brain is about to explode with all the new stuff I’ve learned, I can’t thank you enough. It’s amazing that such a deep tutorial like this is free.

        I had a few issues with the lookat up nodes, because my car was facing a different direction to yours, I had to adjust the center axel as well (you only did front and rear) in order to stop things flipping. Also I noticed in the second video at 03:23 you had rotation for X,Y,Z all unticked in Dummy_Body_Susp – in the first video it only showed you unticking Z, so this caused me some confusion until I noticed. Everything works great now though!

        By the way, at 17:03 in the second video you spotted that the percentage-along-path values had strayed away from the proper 50%, and you said this is probably because of the testing you did. But actually I noticed this occur when linking the dummies to other objects such as the SlidePivot – Max makes them move a little bit, I think it may be a bug because it moves a different amount each time and sometimes hitting undo doesn’t make it go back, this problem bugged me until I noticed on your video you can see the same thing happen right when you create the links.

        I typed too much :o Thanks again!

      • Laurens says:
        Author

        Hey Andi, great to get some feedback like this! Rigging really is an interesting thing to do in 3D. I love how it’s all about solving mechanical puzzles, kind of like I used to do with my Lego Technics when I was a kid ;) Very satisfying once you solve some tricky issue. If you want to get more into it, I’d suggest trying to rig some stuff yourself: come up with a rig that has functionality and is easy to use. Especially the” easy to use” is hard to get right first, since you have to keep the big picture in mind when working on individual parts. It actually took me 4-5 iterations to get to the car rig in the tutorial. The bus you see in the intro is generation 2 I think, the grey drift car is generation 3 or 4.
        Some interesting stuff to try and rig could be a steam train, a motorcycle, a suspension linkage or a robot arm. Just find something cool!

        About your issue’s: yeah lookats are tricky. Especially since there are multiple ways of fixing/changing the issues. And you noticed about me disbaling X, Y and Z between video’s. I tried really hard to keep the max file intact between vid 1 and 2, but that one slipped in and I only noticed afterwards, when it was too late to change. Good job for paying so much attention!

        And yes, now that you mention the jumping of values I remember that happens sometimes. It’s so slight I never noticed when building the car. It isn’t much of a problem here since you can reset the values easily, I do remember in character rigs it can be a small issue due to skinning.

        Anyway, if you really wanna know more, you can always email me or something, always nice to talk with motivated people!

        Also to all: the succes of my tutorial convices me I might do some more about rigging. i’ve already got some “Car Rigging Extra” in my mind, on how to expand this car rig with more cool functionality! Thanks for being so supportive!

    • Spider says:

      There is a tutorial on area forum of autodesk about skin * parameter that simulate the collision of the ground.
      You can set this parameter to the dummy

  5. midoo-64 says:

    I thank you for your effort , i realley learned a lot and understande how can i rig a car and balance it l becase i was looking for for how to rig a car after a saw some videos about sigraph 2004 about rigging a car but the speacker didn’t show how really doing it and didn’t ex[lain a lot thatcan help me in my next real car animation i’m working on it,

    i understood your videos , but , i don’t understande how you can do the same thing for the bus? , like i f i want to open the doors , the doors getting from inside to outside , i thought to make that by a dding attribute holder to the door the make an expretion to the x axis but i think it will not make it move from inside to out ,

    befor i saw your video i saw some video from someone ealse that explain how to rig the car but diffrent way exept it didn’t had an spring controller but it uses less dummes , it’s only a fast rig to make the car one part and front wheels with lookin at constriant , but then i found that it’s not so advanced rig work

    so i thank you for your work , and you did some great job , i will make the animation soon and send it back to you if you want later

  6. midoo-64 says:

    But i want to ask , did you figure it out by your own or you studyed it at some school , becase the float expression controller is hard to work with , like i don’t know the rulles or the languge that it must be written to get the right goal you want , and i looked to the max helper and i found great stuff there and more explaination about it but nothing help about cars and rigs ( i’m still reading it)

    like when you make somthing like “NT*Slider” to make a wheel spining i don’t know if i get it righ , i know how to right that but say if i want to do somthing else i can’t becaes i don’t know what to write and how , i’m just asking about it becase i’m kinda new to expression controller and didn’t use it befor , but what i learned so far was imposibol to me when i saw some rigs on the net

    • Laurens says:
      Author

      Hey midoo, thanks for the feedback.

      For the bus: there’s actually an invisible “arm” dummy setup that makes the bus door move. I suggest you go look at a real bus door mechanism and try to see how it works, then try to rebuild it. It’s more complex than you’d think when you first see it, but not all that hard to build. Just two linked dummies and then a position constraint ;)

      Float expression: well yeah, good point. These things are quite technical and can be puzzling. I have quite some programming background as well as some math & physics, so this stuff isn’t really an issue for me. It’s a bit tough for me to give tips on how to get better at this: some people will really never be able to grasp this kind of technical thing. Maybe try getting a bit more into maxscripting ? That way you can do programming in a usefull, not too complex way.Reading up on physics,trying to understand the formulas can help aswell. All there is to this expression writing is just understanding how to translate (3D) operations into a mathematical formula.

      • midoo-64 says:

        Yes your right , i know if i want like to make a 3d robobt in action i can take a look at how the robo really work and do the same in basic way and that’s is no problem to me the only thing is the controller that i’m now fully understood and what is it left is the “Float expression” to learn , i will try later to learn more about the max script if i got free time , thanks for sharing some information.

        Just last thing i want to talk about , i saw some esclator rig that some sites are selling and there are a video and i don’t know if you saw it befor or not

        http://www.axyz-design.com/axyz-design-3d-humans-characters-metropoly2-rigged-meanescalator.php

        , but i just want to ask is this something done with max script and only max script can do it?

  7. Brick Top says:

    Awesome mate, just awesome.

    Vince

  8. filmgrain says:

    That’s a really cool Car-Rig. I finished mine today and hope to show it in action after i add some scene around it :) And i’m curious about the “Car Rigging extra”, definitely looking forward to that one.
    A nice extra lesson in my opinion would be how to automate the whole process :D

    One thing i want to mention is that you can always copy a controller inside the curve editor and paste it onto another object. It can save a little to a tremendous amount of time.
    Another little thing that is helpful when working with float expressions: after creating the scalar/vector and trying to find the right object with the desired controller, before clicking on the “assign to controller”-button just select the wanted object in the viewport. if you click now on the button the object will be highlighted in the list.

  9. Valensi says:

    Thanks a lot from your tutorial, Laurens.. it’s really helpful, I was stuck for weeks and I couldn’t find any way to achieve a fully functional/wheelturning car…

    Anyway I have a little problem here:

    I set the path line and animate the car to move correctly, but it goes too fast I can’t even see the wheels spinning, I want the car to move soft and slow with its correct wheelturning/ratio

    So… I can add more frames, and expand the start time from 0 to 400 for example, the car goes slow, but the wheels stop turning at the custom frame (100) how can I make the wheels to continue spinning until the end of the animation?

    Thanks for all your help Laurens, I really appreciate it.

    Sorry for my nonperfect english.

  10. Mark says:

    Fantastic tutorial Laurens, I appreciate your work and felt I’ve learnt a lot from it.

    I found the rig very easy to animate except for one aspect (as mentioned above), and that’s the wheel spin. While I found that changing the values of the ‘DriveSpeed’ parameter to exceed 100 solved the problem of extending the wheelspin animation, I had immense troubles controlling the wheel rotation. Not sure what I’m doing wrong, but it seems to have a mind of it’s own.

    It does seem to work if I continually increase the DriveSpin value throughout the animation, but it can be very inconsistent. I’d love to hear from anyone else that had similar problems animating the wheels. It’s almost like it’s not the value of DriveSpin that controls the wheels, but the velocity of it’s value as it’s being incremented. Does this make any sense?

    In any case, thanks for teaching me so much in your great tutorial. I might post my animation when it’s finished to show off what you helped me accomplish!

  11. Felice DeNigris says:

    Hello Laurens Corijn, the tutorial is great and its a handful of information. Its helped me rig my car. However i am running into an issue. My rear wheel spin and my drive speed only function from frame 0 – 100. Is this a Max Issue or is it something i need to redo? I can’t figure it out hopefully you may know.

  12. Felice DeNigris says:

    I know if you plug in F*Slider instead of -NT*Slider you can get wheel spin for infinite number of frames however the speed of the wheel speed is extremely fast. If anyone else can contribute their ideas on this please do

  13. jtg says:

    Very good tutorial…But wheels are not rotating after 100 frame. What’s the reason..?

  14. rasyidxtremeâ„¢ says:

    Thank you so much for the tutorial, very useful…

  15. Laurens says:
    Author

    Hey guys,
    Yes there is a problem with the wheels stopping at 100. My mistake, I don’t know exactly what went wrong, since i’ve animated files with this setup before.

    The solution is to use the following expression:
    -(T/4800)*Slider
    Replace the 4800 by another number if you want, since it’ll still be faster than when using NT. T is elapsed ticks, and there are 4800 per second. Double or triple could be correct also, but just keep the 4800 in mind: don’t go any lower (or it’ll look like the wheel is reversing since it’s so fast)!

    If I do a follow-up video this will be one of the first things to get a mention.

  16. tristip says:

    this is a perfect tutorial, i have done every single thing in that tutorial to my car in 3dsmax, but the rotation of my car body changes rotation in Z axis 180′ , i cant understand that… when the car is going forwards in animation, it continues suddenly backward on the same path….. i thought it is a mistake by linking the body to the dummy_body_susp but i have done that correctly.. can anybody help me during that problem??

  17. rasyidxtremeâ„¢ says:

    Hi, could you make another tutorial for the wheels are connected to the steering wheel, just like what you did for the bus…it’s awesome! thanks in advance…

  18. Midoo-64 says:

    Hi again , i had somting in minde that i worked on it , lets say if i want to rotat w wheel as long as i’m moving the body of the car and when i move the car by hande fster the wheel is going faster , to be more clear i made two wheels and i have a dummy , i wired the dummy on pozition x and with the wheel on rotation y , it worked out fine , but now what i want to ask is : can i controll the speed of the rotation of the wheel as fast as the dummy moving ? to be more clear it’s will need to make 2 dummys at the wheel too , one for moving and one for rotating as you know , so i can move the dummy to front so the wheel go with it and moving , and when i move it fast , the wheel will rotating as fast the dummy is moving to forward or backward , so you can controll your animation with out making an attribute holder to rotating the wheel and for accurat animating too , so is can be done using a simple expresion maybe or a simple max script?

    the main goal is to make the wheel moving as you move the body of the car ( Dummy) and rotating as much as you move the car body

    i thank you if you have time to read this and i appreciated too , any hint or any thing will help too as i’m preparing to study some of max scripts and to make a car animation too soon , and do you think this rig is good and perfect for advanced usese?

    • Midoo-64 says:

      and one more thing , can you give a hint for make the driver of the bus catching the wheel and rotating , i know i’m getting too mutch but you can respond as the details you want , thanks

  19. Steve says:

    I know this was about rigging and not animation, but I was wondering if anyone had any success with animating the car along a spline using a path constraint? The wheels don’t seem to spin at all using this approach – does anyone know a way around this? Even collapsing the path animation of a dummy along a spline, saving this out and loading it into the car base has no effect. The only thing I can get to work is key framing each position change along 3D space (with no spline). Can anyone help please?

    • Steve says:

      BTW – my thanks for making the rig available – I have learnt heaps about rigging now – too much to take in quite yet.

  20. Steve says:

    Sorry – must be working. Just hard to tell with viewport and jumping from frame to frame. Thanks again for the rig Laurens. Will try rigging another vehicle now. : )

  21. Abbas says:

    waoooooooooooo .and thax so n so

  22. JM says:

    thank you very much!its really usefull tutorial! :)

  23. jorgerosa says:

    Just to say… AWESOME! Thankyou!

  24. Ic3m4n says:

    Awesome Tutorial ! Thanks a lot for your effort !

    I have made a sweet Comic Car, wich is laying around for a long time now, because i could not find a real (and free) solution to rig it. But your videos gave me hope to finish and finally animate my car.

    Cheers

    PS: Hope to see more from you

  25. Ali Waqas says:

    ur better than the guyz at lynda and digital tuts…

  26. saeedhhhhh says:

    please.not download

  27. Tobi says:

    Hey there,

    fantastic rig…. I just love it

    one last question (after some senseless one that came before):
    When I try to animate a car driving slowly and then stopping, I realized that when you animate the Drivespeed slider from 2 on Frame 0 to 0 at frame 30, the wheel starts rotating backwards when the value of the slider comes towards 0 – obviously is 0 the initial rotation state of the whell, but shouldnt it just stop when you put that slider to 0 instead of rotating to its initial state?

    I guess if you do a full brake then it doesnt matter, but especially when animating how the car slowly stops… how have you others dealt with that?

    Thanks for any comments,

    Tobi

    • Laurens says:
      Author

      Not sure what you mean? The wheel will never rotate backwards if you don’t go negative with the speed, the formula prevents this. It might look like this due to interpolation (constant time mapped to interpolated keyframes), but it doesn’t really happen.
      What could also be happening, is that your curves are going slightly negative without you noticing in the keys. Check the curve editor.

  28. Rick says:

    Hello Laurens, awesome tutorial! took me a few tries but i finally got the rig working correctly. just one question tho…if i want to make the animation longer than 100 frames, how do i get the wheels to keep turning? right now they stop at 100 and i increased the value for the ROOT in the parameter editor from 100 to 1000, but it still didn’t work. could u help?

    thanks again, great job!

  29. Olly says:

    Brilliant, albeit, knackering tutorial. Brain knackering that is.
    Had an attempt at this months back, couldnt fathom it, now with more 3DS experience finally finished it, love it. Works brilliantly, one of the most helpful tutorials out there.
    One issue. Its late, and my brain is tired so I cant figure it out. How to do this for another car without redoing the entire thing.
    I put in another car model I had, and every car is different, the wheel base was way off. Is it simple to move or is it a complete redo of the entire thing?!

  30. vihack says:

    Hey man nice tutorial, 1 question i had a little bit problem with the rotation of wheels, couse they are not rotaiting in his place they move a little like your front wheel left (video time 40:13) i try to align x,y,z, Axis position but i fail, how could i fix this?. thanks

    • Laurens says:
      Author

      Well, it’s not really hard to fix; all it means is your pivot of the wheel mesh is not aligned with the mesh center and/or the wheel dummy. Unlink, align, relink.

  31. Jean says:

    Good morning, first thank you for this nice tutorial. It really helps me, but I have a problem with my car. (min 30:05 with the dummy_body_susp, doing the orientation constraint with the rear axle doesn’t matter but after doing that it rotate a little bit when i add orientation constraint with the front axle i don’t khnow why !!! The car separates when I move the wheel hub !!! Sorry for my english but I do the best i can to be clear, hope you understand what I mean. Thank you

  32. Tanishq Dubey says:

    Hey, this is a great tut and I am just a max newbie. But I had a question, could you use this rig in reactor to create a bumpy road and let the momentum and suspension dynamically react to the environmental factors? If there is a process a tutorial on how to use this in reactor would be great

    ================
    Tanishq Dubey
    ================

  33. StaunchMaldoon says:

    I want to learn rigging so bad, but every time I start a project, I get lost. It’s so damned confusing. But this really did help me out. The funny thing is, I watched this entire two part video just to get to the part about how to make the wheels spin. I ended up with a fully functional drifting rig for a city bus that’s only going to drive in a straight line for about a block.

  34. OC says:

    Hi,

    this tutorial is great. But I’ve got a problem at the wheel animation part. I added a custom control ‘DriveSpeed’ like described. After I created the variable ‘Slider’ in the rotation float expression for Dummy_Wheel_FL and tried to assign it to the custom attribute this doesn’t work. Everything is grayed out except some ‘Bezier Float’-Values anywhere else. Do I have to convert the values or sth simular?
    BTW, I’m using 3ds max 7.
    Greetings

    OC

  35. Neeraj says:

    I try to solve First problem as shown in the video but it doesn’t work.My Dummy_Momentum_Target is still going down when i rotate slidepivot.

    PLz Help.

  36. Or1on says:

    Thanks for awesome tutorial!

  37. shakeel says:

    helloo i used your technique for my animation but i have a problem with float expression my wheel stop rotating at 80 frame i want my wheel to move more than 80.can u plz help me out ??

  38. amin vanaki says:

    there is a big problem for wheels
    if the car moves slowly and then stop , wheels will back to original rotation state
    we have to add last key rotation state to the Expression

    s*slider + ( last key rotation amount )

    but how to do that ?????

  39. Mohammad Al-Hayek says:

    great job, these what I looking for, Thank you pro.

  40. Phoenix says:

    Hi.. thanks alot for the tut its great but i have a problem.. on the front and rear line axis i changed it from world to the slide pivot but it still does the same thing the center of the rig keeps flippin any ideas?

  41. Albert says:

    hai lauren, great tutorial. and i tried to do your tutorial, but i’ve had some problems with the flipping car body susp dummy.

    i tried to unchecked the x y z link info like andy mention in his comment. but it’s still not working my car body susp still flipin up side, not fliping rotating, it just jump up side. how do i fix this, any advice?
    best regard.

  42. Albert says:

    lol, i’m sorry i already fix this.

    thanks andi and laurens,

    Note : if your car doesn’t face the same direction at the tutorial and the dummy body suspension are flipping
    please try this : – unchecked z inherit rotation.
    – line axle body upnode to slide pivot.

    thanks for the great tutorial laurens and thanks for your advice andi.

  43. Albert says:

    i’ve found some problems again, when i tried to rotate the rectangle the car flip again, front to back and back to frond rapidly, do you have any ideas how to fix this?

  44. Albert says:

    well, i’m sorry i already fix it reading up the comment section.
    if i may adding some comment.

    about rotating wheels,
    you could use the fixed float expresion that laurens give in his comment which is -(T/4800)*Slider
    NOTE : if your wheel rotating backwards try to change/delete the (-) so it will be (T/4800)*Slider

    and for the Rear wheels,
    same as the front wheels, assign as controller to Slider and Rear Spinner but this time the expression should be (T/4800)*(Slider+Slider2)
    NOTE : add the negative (-) sign if your wheels rotating backward. adjust it to the right direction by change the negative and positive.

    well sometimes we must do negative to do positive things =D hahaha i’m kidding….
    i’m interested to contact you, did you have any email address?
    please send me an email black_shady88@yahoo.com

    Thanks Lauren you’re the best!!

Add a Comment

To add a code snippet to your comment, please wrap your code like so: <pre name="code" class="html">YOUR CODE</pre>. You can replace the class name with "js," "css," "sql," or "php." If there are any "<" or ">" within your code, please search and replace them with: &lt; and &gt; respectively.