Shag carpet using Forest Pack


First of all, let me relinquish any credit for this tip. The idea for this post was sparked by another BB, the famous Benjamin Brosdau, in a forum discussion on how to achieve the best-looking shag carpet (I’ve long been baffled by the realism of Ben’s carpets).

Ben suggested creating small fibre elements and scattering them on a high-res mesh using R&D Group’s MultiScatter – essentially the dominant workflow for grass these days. This post is about how I created the image below using another 3ds Max plugin, namely the excellent Forest Pack by Itoo Software.

The first step was to create the element to be scattered. Using splines and a bend modifier, I first modelled a few distinct carpet fibres. Then, I used the AdvancedPainter script to distribute these four or five strands into a small carpet patch (make sure you use the “copy” option in AdvancedPaint and not “instance”) and merged these strands into one small object.

You can model your own patch, indeed you should if you’re after a very special look. But for a quick test, you can download this patch for free from my TurboSquid model store.

The next step was to create the carpet’s base mesh. Mine was a cylinder with grooves, a few levels of Turbosmooth and a noise modifier for some randomness. Make sure your carpet is one-sided only – you don’t want to scatter fibres below it (well, no-one will notice if you do, but it would be a waste of resources, wouldn’t it).

The last step was to create the Forest Pack object by selecting the bald carpet as target object and the patch as the scatter object. Here are the settings for the image at the top. All settings not shown here were left at their default values. I used the Pro version of Forest Pack for this. You may be able to approximate the results with the free version, which only allows object to be scattered on flat surfaces.

This is a pretty basic setup, but as you can see, it works quite nicely and looks even better from a certain distance. Of course, this won’t be applicable to all sorts of carpets. Hair systems or image-based displacement may work better in some circumstances, but for the kinds of dense shag carpets you see in most furniture catalogues these days, it seems to be the best approach.

32 Responses

  1. BBB3VIZ says:

    Hi Mark. I think the free version allows you to scatter custom objects, but only on a flat surface. You should check that your scattered objects are set to custom geometry, not billboards, which, strangely, still seems to be the default option.

  2. mark runza says:

    I dont have the option to choose the carpet shag piece as the item I want to scatter. I can only put trees down. Is this because i have te free version?

  3. zaff says:

    awesome tutorial Bertrand! . can you tell me about the material used for the carpet. i saw in one of your images a fast sss shader. :)

    could it be a fast sss material with a very low specular value? any scattering special settings?

    thanks a lot!

  4. BBB3VIZ says:

    I think it looks pretty good. Using Forrest, you can randomize scale, rotation and location as well as material tint. I suggest you try to use maps (perhaps a procedural noise) to drive the variations, especially for rotation. Also, do not confine it to the Z axis. You can have a little bit of rotation in the other axes too for more pleasant variety.

  5. BBB3VIZ says:

    Make sure the orientation of the map matches the orientation of the UVs. From memory I seem to remember there is an option in MultiTexture to turn the map 90 degrees. See if that helps. Otherwise you may want to contact Thomas at CG-Source for advice. All my CG-Source maps work flawlessly out of the box.

  6. Glauco says:

    Hi Bertrand’s okay? I wanted to ask you a question. I bought the texture of CG Source of this floor, but I find it difficult to map, ie the grain I go out wrong, how can I do? Greetings and see you soon Grimaldi Glauco

  7. Rafael says:

    Ok. But is it possible to save it as an editable poly or mesh (colapse) so i can use it on a pc without forest pack, for instance? I say that beacause when i save this carpet in a max file and then try to merge it in another scene, the strands just disapears!

  8. Rafael says:

    Hello? How can I transform this object in a editable poly or mesh? When I merge it on another scene, the strands just desapear…

  9. BBB3VIZ says:

    Well, for this particular image I just used a very basic SSS2 material. Not the best choice, probably, so I may revisit this.

  10. Pingback: int test + carpet - Ronen Bekerman - 3D Architectural Visualization Forums

  11. mossawi says:

    hey man,

    real awesome tutorial, thanks a lot for sharing!

    when you first created the strands in the first step, is everyone of them just 2 splines bending around each other, and then that cloned several times and rotated? or was each created separately and has different bend values?

    thanks… :)

  12. Behrendt says:

    Hey Zom-B,

    do you got the Hair Module? If you got it, it’s a very nice and easy way to setup individual patches. You only have to define the properties of the hair one time and then there is a random seed which generates different patches in no time.
    If you got the properties right it should be very promising. I’m also fiddling around with it at the moment, but I think I still have to work on the right properties for the hair itself.


  13. BBB3VIZ says:

    Zom-B, that looks great. I would perhaps vary the scale of the instances a little (or a little more if you have already). Even better, as Benjamin suggested, would be to scatter different versions of the strand mesh to introduce a little more variety or randomness.

  14. Zom-B says:

    I just stumbled across the free download on Turbosquid and end up with a nice looking rug using C4D’s MoGraph to place the patches across the base carped mesh.
    Thanks a lot for this Tutorial + Download Bertrand!
    My Indigo based test:


  15. Tora_2097 says:

    Great work Bertrand, and thanks for the credits and kind words. I’ll do my carpets in this way although I use multiscatter as a tool and am scattering different parts, but naturaly this will depend on the type of carpet one is after.
    From time to time I refer to Vrayfur too if the the individual strands are short enough. I especially dig the twisted parts in your carpet, a nice touch.


  16. Pingback: Tweets that mention Shag carpet using Forest Pack « --

  17. raylab says:

    Maybe not the smartest thing. But i needed a reason for a light-source there :) Glad you like my gallery, there is some maxwell and fry stuff there, but most of it is vray! And a most say i love your work to! You and some other guys are a big reason i start to think 3d is fun again, so thanks!


  18. BBB3VIZ says:

    You must have read my mind. Or I yours. Your example is definitely cool. But this lamp on the carpet looks pretty dangerous to me!

    PS: Love your gallery. Your a Fry or Maxwell user, right? These unbiased renders look gorgeous in the right hands.

  19. Love it! the idea is rather simple and well done for basically almost all grass we see lately… just displacement does not “cut” it any more like we want too :-)

    Doing it on a small scale area like a carpet seems to make so much more sense to me so why didn’t we so far? hi hi


  20. BBB3VIZ says:

    Hi Tom,
    I always use pretty high settings so my renders are never very fast. Render times here were faster than when using hair (geometry or mprim) and about comparable to displacement, I would say. Of course, this is much faster than rendering large expanses of proxy grass.

  21. tom says:

    that was really nice idea. Just a question thought. The realness is way on top of other techniques Í’ve seen or used, but how about render times versus displacement, vray fur etc?..

    thanks in advance


Leave a Reply