Polygon Reduction maintaining shape

Hi People

I’ve got a question concerning a subsurfed mesh. i want to reduce the number of verts, but the shape should stay as sharp as shown in the rendering.

Using the PolyReducer or the Decimate Modifier destroyes the edges. They get ‘frayed’.

In fact i need a method to reduce only that verts that stay on the resulting edge, if you you what i mean. the postion of every vert must stay in place.

Anyone knows about a script or tool or technique?

Thank you very much, this is my first post.


I think your best bet in this case would be to select individual edge-loops and deleting them manually (Alt + right click on an edge loop then press ‘x’ -> ‘edge-loop’)

That’s probably the best way.
Any other method wouldn’t work like you’d want it to.

hmm, thx for the fast proposal. thought about that too. but for recurring situations (and for the lower verts of the model) there must be a smart solution…

i was also thinking about writing a script, what shouldn’t be that hard. but i dont want to spend too much time in re-inventing the wheel.

any further ideas?

EDIT: The algorithm should check for the neighbouring verts that, if you connect the neightb. verts: Would the vert in question be on that line. (for 2D). Than tranlate the algorithm in 3D space…

@morio (nice gun): i’ll try that. maybe it’s less work than i think. =)

Problem while doing it… this what i done so far:

  1. Box-Select the upper verts of the keyboard (Attach1)

  2. Select -> Less (Attach2)

  3. Region to Loop (Attach3)

when i want to ‘x’ the edge loop i get the following error: loop crosses itself…

any ideas? =)



I can’t code,but yes it is probably pretty simple and easy.

I collapsed the selection with the following result: :ba:

im not happy with that


You seem to have masses of edge loops flowing in each direction of your model. You should be able to delete many that don’t inpact the edges of the keys.This would have to be done manually. The way you have described above you are not selecting edge loops, thats why you get the error.


one way to do this a bit faster would be to select some face loops, then in edge-select mode, de-select the edgeloops you want removed (sounds logical doesn’t it?) and you should get something like I have in the image below. Then press ‘alt + m’ and select collapse, this allows you to remove multiple edge-loops at once


Subsurf does not like triangles unless on a flat plane. Delete the vertices ontop of the keys, Select the edge loop around the top, extrude, then extrude again to the centre of the key, remove doubles. Where you have subsurf on a curve, you still have quads. If the key top is flat, haveing tris should not be a problem.


Thanks for the profound tips. At the moment i am figuring out a solution which is a mixture of a smart selecting strategy, collapsing and poly-reducing. One question remains: Why do the collapsed textures look so ‘collapsed’…?

Will post final solution, when found.

Excuse my english



i found a final solution, which works great. I subsurf a 4x subdivided plane and displace it afterwards. The result is a much cleaner mesh. I looks nice now (Attachments supported).

Thanks for your help. A great Forum.



YEA Found the Solution

The ‘Mesh Optimizer’ - Skript !


the mesh is already unnecessarily high-poly, so subdividing it more to solve the problem is very ineffecient, especially if you’re using the model in a scene with a lot other different verts and faces…

i don’t know how you modeled the keyboard to begin with, but when i tried to do it myself, the only way i could think of is to model the keys and base separately… modeling the base would take a lot of effort but it’ll pay off because you’ll get a clean and efficient mesh…

  • d

What you mean is you subdivided a NEW plane right? Then displaced it, nice solution.
Just looked at your attachment agian, you right back where you started, you’ve got the subsurf modifer at level 5, which works out to the same amount of verts you had before, probably even more.
Unless you went withthe Meshoptimizer?
How did you end up with the object in the first post tho? thats a HUGE number of verts.
Apply subsurf by mistake?

No, i tried Multires, what is in fact the same. The Meshoptimizer worked quite good in terms of topology, but twisted the normals in a way that Recalculating them (outside/inside) didn’t work as desired.

So i am still working on a solution, just for learning purpose. Atm im thinking about just modelling the keyboard edges and the gradient around the keyboard, which embedds the keys in the unibody (MacBook). Then add the bottom and the ‘floor’.

Still not sure, how the ‘official’ solution could be.

Thank e.g. good, it’s Monday =)

And here is my Texture + Displacement map


Any ideas left?


Actually modelling every button might give the best result in this case. just make one button and duplicate and scale it. using your keyboard texture as a background

Fastest way would probably be to model 1 corner of 1 button, mirror it on x and y with a mirror modifier.

From object mode apply that modifier.

From this point you just need 1 original copy that you can adjust for the different shaped buttons, and another copy to array modifier duplicates of to create all the same shaped buttons.

From that point it’d just be a matter of attaching them together (if… you really need to, technically you could just simply merge them all to 1 object, UV everything using a texture that is a copy of your base, then split them all so you can animate each button individually, but that’s more a question of if you are doing an animation that’d need it.

I can explain this in more detail if you need it later (I’d actually done the same thing in 3ds max for a class project some months ago). But to give you an idea, I did this method in blender in about 15 minutes prior to this post and attached my result (it’s 30 minutes prior because i hadn’t started learning to render out from blender until… yeah… just now lol). Not complete, but it should be enough to give you a general idea. (Note: the two weird unfinished buttons look like that because I accidentally pushed the faces in the wrong direction… i was doing this quickly lol


Thanks alot. I am very happy, that people look at my problem and share their thoughts.

Your solution is nice, having less verts and still looking good.

Ping, Pang, Pow ! :cool: