Need help with rug fibers particles on a rolled carpet


I’m working on a project where I need a rolled carpet. My first attempt is using a spiral curve, next I created a thin long plane the length of the carpet roll and used an array and curve modifiers to get the rolled mesh. After I applied both modifiers, went into edit mode to remove doubles and then applied a sub surf to the spiraled mesh.

The look I’m tryingto achieve is this: (bottom row, first shaggy roll of carpet)

For the particle system I created four fiber strands on a separate layer and added them to a “Rug_Fibers” group and used this group to render the hair particles.

This is where I’m running into issues. The fibers on the spiraled mesh don’t point outwards from the mesh surface, they just point up (I did recalculate normals)

However, if I apply the same particle settings to a round cylinder the fibers point outward correctly around the entire cylinder’s surface. Although this one has it’s own issues, the fiber surface reflects the mesh surface via the gaps running along the cylinder’s surface. This doesn’t go away even if I add a sub surf modifier in front or behind the particle modifier.

Particle settings used:

Can someone look over my particle settings to see if I missed something or have a better idea? I fairly new to Blender and CG in general and I have dealt very little with the particle system.

Layer 1: Spiral Mesh
Layer 2: Round Cylinder
Layer 4: Rug Fibers
Layer 6: Spiral Mesh backup before modifiers were applied

Hmmm, played around with your rug and am a bit puzzled. Something is going on with the normals on the spiral. Tried the obligatory recalc normals / Remove duplicates and nothing. I was however able to get a modified spiral rug working using Rickyblender’s AWESOME spiral generator. Why it’s not searchable as an add-on I don’t know. You just paste the script into the text editor, click run script and voila a new mesh item appears. Any ways this what I did. Added a rickyblender archimedes spiral (32 , 10, 0) Extruded it. Added a solidify modifier. Scaled the whole rug down (the spirals come in pretty large) Added your particle system / dupli group back onto it. Increased the particle numbers a little bit. it’s pretty realistic. I little tweaking of the fibre/materials and it’s probably there.

EDIT: I think had to flip direction on the normals on the Rickyblender spiral

I included a screenshot of your old spiral normals, someone probably knows what’s going on there. Anyways if you want to mess with the new rickyblender rug I’ll post your modified blend back.

rickyblender rug:

modifed blend:

Thank you! :smiley:

Finally had some time yesterday to check out the blend file you posted and the new spiral you generated works perfect.

Silly question but where can I get the script for this spiral generator?

It’s in the blend file from Kryptonian8077, just open the text editor. Choose the entry “text”.

Note: If you use rickyblender’s script, make sure to take a look at the spiral from top AND side views, to see how high the spiral is – if you only look at the top view you may be tricked into thinking that the spiral is flat, when by default most (All?) have some height. And like most (all?) objects added to the scene you can only change those parameterss, in the object tools panel, right when it’s created.

The add-on worked great. I did however run into another issue.

After creating the spiral I manually added a lip to represent folded up carpet.

The normals on this added lip look correct so what would cause the fibers to look the way they do on the lip?

Blend file:

Hmm, took a quick look at it, won’t have a lot of time for a couple days to really go over it. I agree that the normals are fine, something is going on with your fibre group. I replaced the fibre group with a simple cylinder and it rendered correctly, so I’d replace the fibres one by one testing each. As for the clumping I think the problem is this. You are applying the system to the entire carpet (large area) even though 95% of is hidden. I would probably add a loop cut a short distance from the front, create a vertex group of just the front (spiral) section and include verts from the whole folded flap area, as those are the only places where you’d be able to see the fibres. And then make the sytem only apply there. For one thing you’ll need ALOT less parent and children particles. And when you have large numbers of children and not enough parents you get that sort of clumping. But you should be able to decrease your numbers anywhere from 50-90% I’d think. Good luck. And p.s. Why not use Cycles!

Thanks blenderallday,

I had planned all along to create a better fiber group, I just used the simple ones for concept and testing. I’ll replace them one by one with new ones and test. And I’ll also use the vertex group tip, no need for the model to be populated by countless fibers that will never show in the final render.

And the final render will definitely be in Cycles.

I’ve been thinking, if I have all the fibers pointing outwards instead of inwards I won’t need the lip. Can I flip the normal direction or how could I get the fibers to point out from the other side of the mesh?

Yeah, edit, select all, and in the object tools on the left ‘flip normals’ , tab back to object mode and the system should reverse to reflect the new normals. That solves a couple other problems too, because right now if you have any kind of random sizing/scaling in the system, a small number of fibers “poke through” to the next layer creating a kind of peach fuzz – and so you wind up making them smaller than they should be to avoid it, but reversing the rollup will solve that as they will be hidden by the outermost layer.

So I had some time to work on this last night and I’ve made some progress. I added three very thin fibers to the existing group for this render (I plan on redoing the fiber strand group and create more realistically shaped fiber strands tonight). I’m not happy with the fiber density, direct top views show the carpet base material. For the attached render I had 2000 particles with 1500 interpolated children.

When I tried adding more children my 4GB GTX680 crapped out. I did create a vertex group for just the visible outside edges and surfaces and restricted the fibers to that vertex group.

Are there other tricks I could use to increase the density or give the illusion of denser fibers?

Looking good!

Your fibers are extremely thin and long, which means you’ll need really large particle numbers to achieve density. I deleted the thinnest ones, and fattened up the others. Kind of forget why I changed the colors. Fiddled with the ps settings a little. Oh, I made the loops cuts a lot closer to the ends, as every “inch” inward you go adds a lot of square footage of particles as there are so many spirals. Got the particle numbers down to 700/500 parent/child which is a lot faster too. There are a lot of other ways you could fake the carpet effect using baked normals, displacement, or just a image texture with a tiny number of fibers at the end. Although if you are going to need close shots this is not a bad way to go.

This is a render I made at 1200 samples, took 30 minutes on my mid level laptop. It’s funny, it finishes “rendering” after a few minutes, and then just sort of sits there for the rest. The render bar keeps moving though, it’s not frozen. Not sure why that happens. It’s tempting to take a screenshot and then go into photoshop. Knocked the light paths down a little, as there is no glossy in this. If you add gloss later bump it back up.

I think that – ignoring the floor, background and spindle – it’s heading in the realistic direction.


p.s. Maybe add a little z scaling on the whole thing to give the sagging look.

You are my hero blenderallday! Thank you so much for taking the time to help me :slight_smile:

I took your advise and made thicker fibers. I actually ended up making twisted fibers. And with heaver fibers I was able to reduce the particles down to 1500/600

As for the colors I’ll fine tune them later but for now I took a flashlight to my own carpet and used those colors (My brother happened to walk in right when I did this and gave me a good :confused: look)

I also flattened the top of the roll and stretch the bottom out to try and give it a sagging look.

The final project is going to involve an animation of a fork lift lifting the carpet from the floor so I made the stretched out mesh the mesh base and created shape keys for the carpet and the two straps. The shape keys flatten out the carpet roll and straps at the bottom for when the carpet is going to be set down onto the floor.

Render Time was 3m

Tomorrow I’ll play around with combing the fibers. We’ll see how that goes.

Again, thank you so much for your help :slight_smile:

@blenderallday, really good idea. I thought about the problem of how to get more density, but this simple trick didn’t came to my mind.

@Kryptonian8077, your red one already looked good. But this is really a great advance.

3 minutes for the last render? Wow!

Nice! Looking real good. It has a good industrial carpet look. And the sag on the bottom sells it a lot more.

The only thing that looks a little off is the strap width seems to change as it goes over the “flap”. Perhaps it’s supposed to be that way for some reason? But definitely coming along nicely. Would love to see the final animation.

Also consider making 3 loop cuts: before, in the middle, and after each strap. Scale the middle ones down a little to pinch the carpet under each strap. But that’s a judgement call as this type of carpet might not compress much.

Strap width:

hmmm the more I look at it, maybe it’s just the fibers in front of it.

It was the strap, which wasn’t much of a strap but rather an extruded black circle.

I made an actual strap and modified my vertex group so fibers aren’t present underneath the strap

I also combed the fibers around to give more randomness

Closeup of just the strap

1 Like