emrahgunduz
always eats his vegetables
Blog RSS Feed
  • twitter
  • friendfeed
  • linkedin
  • facebook
  • vimeo
  • flickr
  • lastfm

Random Face Deletion / Selection with Maxscript

Random Face Deletion / Selection with Maxscript

For sometime now, some of my friends asked me to write a script for random face selection for poly objects. Here is a simple code for doing exactly what it’s asked for:

sel = selection as array count = 1 undo on (   if sel.count > 0 then   (     while count <= sel.count do     (       select sel[count]       count += 1             facenumber = polyop.getNumFaces $       randomset = #()       for i=1 to facenumber do       (         rand = random 0 100         if rand < 50 do append randomset i       )             polyop.deleteFaces $ randomset delIsoVerts:true     )   ) ) select sel
It is not hard to write a simple random face select/delete script. This script will go through every selected poly object, and randomly delete some of the faces. I did not add any error checking in this, so if you select any object that’s not a poly, you’ll get an error. You can also disable the viewport update and enable after the faces get deleted. This will make the script run faster on high-poly count objects.

If you are experiencing errors before script deletes any faces, change the random range’s 0 to 1. For more randomness use a big number for the second part of the random statement. 100 seems OK. If you do not want to delete isolated vertices –vertices that do not belong to any faces-, just change delIsoVerts to false. For keeping the original object, just add an Edit Poly modifier and then run the script. By this way, removing the modifier might save you some production time.

Requested addition #1: And, this script will only randomly select faces, but not delete them :

sel = selection as array count = 1 undo on (   if sel.count > 0 then   (     while count <= sel.count do     (       select sel[count]       count += 1             facenumber = polyop.getNumFaces $       randomset = #()       for i=1 to facenumber do       (         rand = random 0 100         if rand < 50 do append randomset i       )             subobjectlevel = 4       polyop.setFaceSelection $ randomset     )   ) ) select sel
Requested Addition #2: This one will assign a new material id that is not used on the mesh to the randomly selected polys.

sel = selection as array count = 1   undo on (   if sel.count > 0 then   (     while count <= sel.count do     (       select sel[count]       count += 1       facenumber = polyop.getNumFaces $       randomset = #()       newID = 0         for i=1 to facenumber do         (           if (polyop.getFaceMatID $ facenumber) > newID do newID = (polyop.getFaceMatID $ facenumber)+1           rand = random 0 100           if rand < 50 do append randomset i         )       polyop.setFaceMatID $ randomset newID     )   ) ) select sel

Here are some screenshots:

  • Random Delete Torus
  • Random Delete Box
  • Random Delete Sphere
  • Random Face Selection

This post's short url is: http://emrg.me/5k

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <span style=""> <p> <li> <ol>

Calendar

May 2012
M T W T F S S
« Feb    
 123456
78910111213
14151617181920
21222324252627
28293031  
Web Analytics
Author: Emrah Gunduz