Very slow Edge Loop selection?

Howdy folks,

I’ve got a subsurf mesh to which I’ve applied the subsurf modifier and am now in the process of optimizing/cleaning it. To do so, the most straight-forward thing to do has been to select sequential planar (or nearly-planar) edges, select their corresponding edge loops (Ctrl-E > Edge Loop), nuke the verts, and then bridge (using the Edge Tools script) the remaining border edges.

However, the edge loop selection takes a really long time. The mesh right now stands at 100,000 faces, which doesn’t strike me as incredibly high. Is this a common issue, or something unusual? Does anyone have any idea what might be going on here, and how to solve it?

At this rate, I might have this model cleaned up by next week. :confused:

Side note: is there a non-destructive way to delete multiple parallel edge loops? I’ve been doing some searching and a lot of the responses I see are along the lines of, “Well, you can’t have non-four-sided faces, so no.” However, that’s not really what I’m looking for – I want to end up with four-sided faces once the operation is completed; I just want to essentially do what I’m already doing, but consider that a single “delete” operation.

Using 64-bit 2.57b, if that helps.

Thanks!
-R

You are doing it wrong in the first place to tell the truth.

You apply subsurf and then delete unnecessary geometry? That´s not really good practice.
Your geometry should be the way you want it before you apply subsurf. You delete the unneeded edgeloops out of the low poly model and then apply subsurf.

And you can use Blenders meshsimplifyer, or use Meshlab and simply let the tool remove all edges between faces that have an an angle of less than X° automaticall.

Other than that, loopselect works fast for me. (2.57b x64) Might be a lack of RAM or CPU power.

For organic meshes, sure. For hard surface modeling, when you need to cut detail into the hi-poly mesh, it’s the only way I’ve ever seen it done. Unless you want to try and put all of your detail into the control mesh and subsurf the whole thing. It’s been my experience that that’s even more of a headache.

And you can use Blenders meshsimplifyer, or use Meshlab and simply let the tool remove all edges between faces that have an an angle of less than X° automaticall.

Only thing I’ve found so far like this is the Decimate modifier, which results in pretty ugly topology. Is there a different tool than that?

Other than that, loopselect works fast for me. (2.57b x64) Might be a lack of RAM or CPU power.

6 GB of RAM, Intel i7-930. So, not likely. :wink: The rest of the operations are fairly quick. Deleting the selected edge loops is fast, bridging them is (reasonably) fast, selecting any other collection of things is fast. It simply chugs on selecting edge loops.

arexma is right, u need to have your mesh/object topology good before the suburf, it doesn’t matter if its organic or hard surface, and only reason to apply subsurf is to use resulting model for sculpting other than that is completely unreasonable process…
you can cut holes and add detail to the subsurfed model with ease, and one of the strong points of subdivision modeling IS that you dont need to work with 100k polys at once on your screen

but it would be probably better to see in pictures what are u actually trying to achieve, what geometry trying to add etc

I appreciate where you’re coming from. Let’s agree to disagree.

This thread is about slow performance of the Edge Loop selection tool. :slight_smile: Have you encountered performance slowdowns with this tool on 100k poly meshes before? Is this normal, or something unusual?

yup normal, and thats why dont apply sunsurf, did a quick test on my laptop, subdevided a cube to 100k faces and it completely crashed if tried to loops select edges… on subsurf enabled model the laptop can handle 3 miljon polygons with ease :yes:

That’s unfortunate. I wonder if anyone’s written a scripted version of the Edge Loop select that’s more efficient than the built-in one. The commerical packages tend to handle this sort of selection with ease.

on subsurf enabled model the laptop can handle 3 miljon polygons with ease :yes:

Yes, because it isn’t actually 3 million polygons. :wink:

true, true

but my mind is still boggling, what is this object and what kind of detail editing requires you to clean up a 100k poly enabled model, that cant be done with subsurf edit? because maybe i can give few hits how to do it without that many polys enabled :o

That’s unfortunate. I wonder if anyone’s written a scripted version of the Edge Loop select that’s more efficient than the built-in one. The commerical packages tend to handle this sort of selection with ease.

Probably not. You have a few options.
Use the right tool for the job. If blender is an unsuitable tool don’t waste your time using it, use a program that can do the job you need.
Spend time manually removing edge loops
Use a poly reducing script but they are all pretty rubbish, you will get a mesh you cannot control the topology.
Start again using a more efficient work method adding edge loops where you need them not over all your model with the subsurf blanket approach.
Whatever, there is no quick win for you.

http://meshlab.sourceforge.net/

If you need it better, faster, cleaner… prepare to get your wallet out. :wink:

For your particular anorganic modelling it seems it would have been better to use a solid modeling tool. You could try 123D from Autodesk (free tool) or one of the FOSS solid modeling tools.

Personally I subdivide anorganic meshes only where I need holes, I add “unclean” geometry in form of additional objects for beveled stuff or details.
And most of my projects involve construction site plants and other heavy machinery. I can try all I want I rarely get below 1m polys and I never used subsurf.

I have to concur with arexma - you do seem to be doing it wrong, but I would need a picture to confirm that.
What you want to do is to add edgeloops manually (select edge-ring, subdivide in edge edit mode). Then use the edge slide command to place the edgeloop. You will get faster results with a lot less geometry.

[ctrl+tab->edge select, CTRL+ALT+click to select edge ring, w->subdivide, ALT+CLICK to select edge loop, CTRL+E->edge slide] is the quick way to do it

There are a couple of other things you could try.
If you already have a high def mesh. you could try the retopo tools http://www.blender.org/development/release-logs/blender-243/retopo/ to build a optimised mesh out of it.
There are some addons towards this end you could look at.

The edge select being slow is still a valid complaint however. You may find the BMesh branch more to your liking (should be faster for this operation - but slower at just about everything else) or you could try wings3d and my [plug]https://github.com/kayosiii/io_scene_wings[/plugs] wings3d importer for blender

My instinct when something like this comes up is to try and fix it. Part of what I do professionally involves writing artist tools in Python (for Maya, specifically, since that’s what the studio uses), so when I encounter any kind of tool-related inefficiency, I am compelled to want to figure out what the problem is and fix it! :wink:

Looking through the Blender source tarball, there are several compilable .c files (editmesh_*.c) that seem to be candidates for actually executing the Edge Loop select command, but there’s also some stuff in bpy_types.py that looks likely, too. Anyone know what’s actually being invoked when you click the Edge Loop menu command? Is it a Python script, or compiled code?

Can´t help you there, I am still stumbling around in Blenders source like a pegleged mole.
However, countersuggestion:
You could try to open up your project in a current bmesh build and check the selection there. Maybe optimizing it in the trunk wasn´t a priority anymore as it might have been done so in bmesh which should be merged into trunk.
So optimization in the current trunk would be redundant.

If you want to know more though I suggest you check the comment header in editmesh_ and get on IRC and pester the developer who´s maintaining it… I am sure it takes him 1 minute to tell you where to look…

The slowness is more likely a design limitation than a bug. To select edge rings/loops quickly you need to store the mesh data in a way that makes this easy. You may wish to read up on the winged edge, half edge and radial edge data structures to see how other applications do this. The BMesh project addresses these short comings. You may wish to help getting that branch ready for inclusion in blender main.

Also when starting out with any large new code base grep is your friend :slight_smile:

grep ain´t talking to you if you don´t know what to ask. :wink:
It´s better to get directions by someone who knows his way around in the code than poking the code with random searchqueries.

well in this case I would probably look for edge-loop and variations there on. Figuring out what to grep for is a skill that can be developed

Asking other devs is fine - but you probably want to ask somewhere devs are likely to be reading :stuck_out_tongue: If you can get somebody to talk to you on IRC is probably best. Forums and Email are fine but I usually find that I have found the answer before somebody gets back to me on my questions

Anyways this is a tangent. BMesh is essentially the answer to this issue, it currently is in testing and it will replace the code you would be looking for in the (hopefully) near future.

I’d love to help if there’s anything I can do. Where do I sign up? :wink: