Home 3D Art Showcase & Critiques

Help with a chainsaw

Well, I've been faffing about with 3ds max for well over a year or so, and right now I'm working on building a chainsaw for an FPS skin. The body won't be too much concern; what I'm focusing on right now is the blade.
SawbladeRender01.jpg?t=1288151864

Here's what it looks like so far. The chain itself consists of the same chain link instanced about 50 times and constrained to a path, each one linked to the other. The good news is that it looks totally badass and actually spins around. The bad news is that its way too high-poly for my taste- this render alone is over 4200 polygons total. I'm trying to bump it down at least by half of that. I've looked online for tutorials on making 3D chainsaws, but haven't had any luck. I've seen chainsaws in several other games, namely Left 4 Dead 2. how do their chains work?

Replies

  • JonConley
    Offline / Send Message
    JonConley polycounter lvl 14
    You'll see a poly strip where the blade is in the low poly, it can be done completely horizontally or vertically, that way you can have animated uv coordinates which simulate the movement.

    The poly strip in the low poly will have transparency and baked normals from the high poly, which when moving will make it almost impossible to notice that it isn't actual geometry.
  • Ryan Hawkins
    Render to texture the Blades then use a few plane strips apply the render to texture bakes of the blades then alpha out the negative space. A good example of something like this is in Raul's art dump he recently did a chainsaw and his low poly might be something for you to take a look at.
  • Omny87
    Uuuhhh... yeah, most of what you guys just said went way over my head. But I'll check out Raul's stuff.
  • EarthQuake
    This will explain the uv thing a bit. I did this with solid geometry, but you could use the same concept for alpha'd planes as well to get the shape you have.

    Or even better, solid geo for the base shape and alpha planes for the "claws"


    chainsaw.gif

    A little more on how i did this:
    1. I make a low poly mesh
    2. I copy part of the low poly chain, and stretch the uvs to cover the 0-1 range
    3. I make a tiling section that matches the "bake" mesh, this is larger with some overlap to make sure bakes/AO come out right.
    4. Bake the "bake" mesh, and apply to the "low". Make sure your uvs are consistent as is your smoothing on each model.

    PS: You'll notice i have the uvs split up here, i wanted to use some hard edges to avoid the overly gradiated normals(so you dont get smoothing errors as the texture scrolls). So i needed to split my uvs there as well.

    chainsaw01.jpg
    chainsaw02.jpg
    chainsaw04.jpg

    Now, you're ready to animate the blade by scrolling the uvs! In a game engine this would most likely be done via a shader that allows texture scrolling, should be very simple in something like UDK for instance, but dont ask me about specifics there.
  • Vailias
    Offline / Send Message
    Vailias polycounter lvl 18
    You can also do it with a looping animation. You don't need the chains to go a full revolution, just the distance from one tooth to the next. You can split the chain up into 3 sections (rig/skeleton wise) one bone for the top straight portion, one for the bottom straight portion, and one for the curved front.
    The top and bottom slide, while the front rotates. Just have to make sure your bone placement is right.
    Here's a rough example

    Fafnir.gif
  • EarthQuake
    Won't that result in "snapping" as the animation loops?
  • Xoliul
    Offline / Send Message
    Xoliul polycounter lvl 16
    Hey, nice job explaining that, EQ. Though I think that it's probably best to put the texture that will scroll on it's own separate sheet (like a 512 x 128 or something). You're gonna need two drawcalls at least anyway, as you don't want to scroll the UVs of the rest of the object.
  • Omny87
    Thanks a bunch, guys. This is really great stuff. Though I don't know if its because you're using a different program than mine (I have 3ds max), but what exactly do you mean by "bake"? Also, I don't know really know how to animate textures.

    Thanks for the bone animation, too. I had a feeling it involved something like that (looping animation from one tooth to the next), but wasn't sure exactly how it was done. Though like earthquake said, it does look a little snappy. Maybe if I speed it up enough it won't be noticable?
  • BlvdNights
    Offline / Send Message
    BlvdNights polycounter lvl 8
    I was expecting some bodies that needed to be cut up from the thread description! I'm horribly disappointed!
  • Vailias
    Offline / Send Message
    Vailias polycounter lvl 18
    The animation looks snappy mainly be use it's a gif and it actually is a bit rough of an animation.
    May depend on the engine you use but you get super smooth motion with unreal based stuff. Though you will have to specify that it shouldn't interpolate between the last frame and the first on the loop.
  • Omny87
    BlvdNights wrote: »
    I was expecting some bodies that needed to be cut up from the thread description! I'm horribly disappointed!

    What, and alert the neighbors?
  • EarthQuake
    Xoliul wrote: »
    Hey, nice job explaining that, EQ. Though I think that it's probably best to put the texture that will scroll on it's own separate sheet (like a 512 x 128 or something). You're gonna need two drawcalls at least anyway, as you don't want to scroll the UVs of the rest of the object.

    Yeah you're very much right if you want to use alpha , as you'll be doubling your diffuse texture memory by doing that, instead of just throwing in a smaller map.

    However without alpha it isn't really a big deal, like you said you'll have to use an extra draw call anyway, but if you can fit it on the same sheet you'll make it easier to texture and use less texture memory, so even though you'll need two mats, you're still getting better performance keeping it on the same sheet. Unless you can use 1/2 the texture memory for the main, and 1/4th the texture memory for the chain for example by spliting them.
Sign In or Register to comment.