Adverti horiz upsell

Free polyScatter -- Spread objects across a surface for Maya 1.0.0 (maya script)

The script focuses on scattering objects without any unnecessary cluttering or unwanted holes.

License
Button download
11,531 Downloads

Compatibility

  • 2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 9.x, 2009, 2008, 8.x

Operating Systems

  • Mac
  • Windows

History

Created:07/05/2011
Last Modified:09/27/2016
File Size: 6.81 KB

Keywords

Tips, modeling, mel, maya

polyScatter is for distributing objects across a surface and yes, I am aware of the fact that there are already some (and quite useful) scripts available. But everything I tried didn’t give the expected results, no matter how the process worked. There are either scripts that emit particles based on textures, some that let the user paint objects on the surface and some that use some other random placement configuration. But the result is usually rather spotty, meaning that the distribution of objects shows either large gaps or the objects are very closely placed right next to each other. This might work in certain situations but I needed something more evenly spread out since I needed to create a large grass plane (without any use of hair or anything) and also trees, bushes and things like that.

So I came up with the idea of using the grid structure of the scatter surface to generate the objects, using the positions of the vertices. With an optional offset of the vertices the resulting placement is not visible as being based on a grid and still the copies will be evenly spread out without any particular gaps or clusters.

The script itself is pretty straight forward. The user can only do what he’s supposed to do and this should lead to less errors. All modifications are being made on a copy of the original surface leaving it untouched in the background.

 

Installation:

Just copy the script to any script directory that is accessed via maya. Run the script by executing “icPolyScatter” (without quotes) in the script editor. You may as well build a shelf button for easy access.

 

Parameters:

- Scatter Name: You must define a scatter name in order to access the functions. This name is added to all generated nodes and helps any naming problems.

- Vertices: The vertex count of the (reduced) scatter surface. Surfaces up to 1000 vertices should still perform fine. The higher the count the slower the script will execute it’s functions.

- Reduce %: The amount of poly reduction that is applied to the surface to reduce the density of vertices and to help with the distribution. Use the ‘Edit‘ button to adjust the poly reduce node.

- Max Face Area: Displays the maximum face area that will not be subdivided. This value is based on the average area of every 5th face. Higher values lead to less faces being subdivided when using the subdivision option.

- Random Offset: Defines the maximum offset for a vertex when displaced. The calculated value is a 3rd of the average edge length. This helps to beak up any regularity of dense scatterings.

- Subdivide: Subdivides any face which area is above the given ‘Max Face Area‘ value.

When applying the displacement any vertices that are generated by either the subdivision option or the poly reduction process will be conformed to match the height of the underlying original surface. This should prevent any positional offsets which can make the instances float above or below the surface.

- Position Offset: Offsets the instances to above or below the surface. This is only an offset and not an absolute value. The value can be interactively adjusted once the scattering is completed.

- Rotation Offset: The maximum amount in both directions that each instance gets rotated along the y axis. The value can be interactively adjusted once the scattering is completed. The attribute is not available after scattering when using the ‘Align To Surface Option‘, as the alignment is only calculated during the initial scattering. If another value is needed the scattering must first be undone.

- Tilt Offset: The maximum amount in both directions that each instance gets tilted along the x axis. The value can be interactively adjusted once the scattering is completed. The attribute is not available after scattering when using the ‘Align To Surface Option‘, as the alignment is only calculated during the initial scattering. If another value is needed the scattering must first be undone.

- Scale Offset: The maximum uniform scale amount that modifies the original scale of the scatter object. The value can be interactively adjusted once the scattering is completed.

- Min Distance: The minimum distance the instances should be apart from another. This is an additional function to help with any clustering of instances.

- Dropout %: Generates holes in the scatter. The higher the value the higher the chance that a vertex is skipped.

- Include Small Area Vertices: On: The dropout percentage is calculated from all vertices, including the vertices from small faces. This results in a little sparser scattering. Works only with the reduction feature.

- Assign IDs: Set to the amount of different objects to instance. Automatically assigns IDs to the instancer to randomly assign different scatter objects. The value can be interactively adjusted once the scattering is completed.

- Align To Surface: Rotates each instance to make it perpendicular to the surface.



Please use the Bug System to report any bugs.
Please use the Feature Requests to give me ideas.
Please use the Support Forum if you have any questions or problems.
Please rate and review in the Review section.

People who favorited this item:

  • wari
    wari
  • thedon2k
    thedon2k
  • joshomation
    joshomation
  • jomaro110
    jomaro110
  • tero  lai
    tero lai
  • skurdifur
    skurdifur
  • ellight
    ellight
  • leooooel
    leooooel
  • bla1234567890
    bla1234567890
  • ecosky
    ecosky
  • immzorz
    immzorz
  • hk
    hk
  • Craig Towsley
    Craig Towsley
  • trabi0
    trabi0
  • david negra
    david negra
  • Liensch
    Liensch
  • Ivan Arsic
    Ivan Arsic
  • xtvjxk
    xtvjxk
  • Dmitry Shcherbakov
    Dmitry Shcherbakov
  • mehdi moradi
    mehdi moradi
  • eric dima-ala
    eric dima-ala
  • chakalele
    chakalele
  • vonfokker
    vonfokker
  • Pumbaa
    Pumbaa
  • hmy911
    hmy911
  • moohyun jang
    moohyun jang
  • EvilPikmin
    EvilPikmin
  • eddie bad
    eddie bad
  • timpiglia
    timpiglia
  • kirakik
    kirakik
  • Jorge Bouza
    Jorge Bouza
  • Bieto
    Bieto
  • rushcg
    rushcg
  • Scorpion_laz
    Scorpion_laz
  • Justin G
    Justin G
  • hx wssg
    hx wssg
  • 7cmblue
    7cmblue
  • amorsia
    amorsia
  • wolkiger
    wolkiger
  • koloss
    koloss
  • sh kim
    sh kim
  • henk69
    henk69
  • David Alpizar
    David Alpizar
  • Byron Mallett
    Byron Mallett
  • Arturo Gil
    Arturo Gil
  • joie
    joie
  • Ke Jiang
    Ke Jiang
  • paragpatel
    paragpatel
  • kursat turkay
    kursat turkay
  • Przemek Lodej
    Przemek Lodej
  • leon cenedy
    leon cenedy
  • jasonhuang1115
    jasonhuang1115
  • gagikangelo
    gagikangelo
  • Fomen
    Fomen
  • Dennis Persson
    Dennis Persson
  • JesperEight
    JesperEight
  • RobC
    RobC
  • GFXRTist
    GFXRTist
  • visumax
    visumax
  • JeffCLin
    JeffCLin
  • Docktorbob
    Docktorbob
  • Salvador Simo
    Salvador Simo
  • RobPhobos
    RobPhobos
  • Abbin Thomas
    Abbin Thomas
  • DanielEgads
    DanielEgads
  • sakeeb82
    sakeeb82
  • taipoh
    taipoh
  • JackHorner
    JackHorner
  • Rorab
    Rorab
  • MixaNik
    MixaNik
  • Yan Gang
    Yan Gang
  • Xerima
    Xerima
  • Artizan
    Artizan
  • robertPLUS
    robertPLUS
  • cocoatoorennzi
    cocoatoorennzi
  • murakami masanori
    murakami masanori
  • xeoon
    xeoon
  • Ivan
    Ivan
  • nuntavit
    nuntavit
  • saaamit
    saaamit
  • khaerterich
    khaerterich
  • sneath
    sneath
  • MasterGunz67
    MasterGunz67
  • Max Steven
    Max Steven
  • fahjung
    fahjung
  • kalesha
    kalesha
  • rev_akira
    rev_akira
  • Juanjo Bernabeu
    Juanjo Bernabeu
  • 454533239
    454533239
  • fab4ever
    fab4ever
  • whitesuri
    whitesuri
  • mahesh m
    mahesh m
  • gurus
    gurus
  • piipegarcia
    piipegarcia
  • Dellamorte
    Dellamorte
  • dustin meyer
    dustin meyer
  • rm ss
    rm ss
  • g2mXagent
    g2mXagent
  • adnaninside
    adnaninside
  • rogerio britto
    rogerio britto
  • RemyRancid
    RemyRancid
  • riverkat16
    riverkat16
  • Santi Gutierrez
    Santi Gutierrez
  • ShaheenCG
    ShaheenCG
  • sai ita
    sai ita
  • PanoptIcoN
    PanoptIcoN
  • henrikhdk
    henrikhdk
  • ael w
    ael w
  • kaiyongman
    kaiyongman
  • DanielQC
    DanielQC
  • wan helsing
    wan helsing
  • Owen Rees-Hayward
    Owen Rees-Hayward
  • yuki nagato
    yuki nagato
  • xerberus333
    xerberus333
  • Chris Ekhlas
    Chris Ekhlas
  • sanguo sanguo
    sanguo sanguo
  • nicmatsunaga
    nicmatsunaga
  • THEaks
    THEaks
  • djlosi
    djlosi
  • bharadwaj v
    bharadwaj v
  • TogTobias
    TogTobias
  • nario
    nario
  • Pavel Guglava
    Pavel Guglava
  • mahyar tavakoli
    mahyar tavakoli
  • Scoopy
    Scoopy
  • Alexander
    Alexander
  • HyperRex
    HyperRex
  • io ivn
    io ivn
  • MrThx
    MrThx
  • Janice Liu
    Janice Liu
  • zhang fei
    zhang fei
  • GlennimusPrime
    GlennimusPrime
  • kelandria
    kelandria
  • xu chao
    xu chao
  • newbottle
    newbottle
  • Gigasonic121
    Gigasonic121
  • aicaofang
    aicaofang
  • Richard Schmidbauer
    Richard Schmidbauer
  • runswithfork
    runswithfork
  • wang850
    wang850
  • riuthamus
    riuthamus
  • zhu yong
    zhu yong
  • Sarfaraz_Yeaseen
    Sarfaraz_Yeaseen
  • Linaldo Alves
    Linaldo Alves
  • lacio drom
    lacio drom
  • Spid192
    Spid192
  • apecornelius
    apecornelius
  • Vojtech Lacina
    Vojtech Lacina
  • tony yang
    tony yang
  • U-Jin
    U-Jin
  • alwaysamitabha
    alwaysamitabha
  • Artpcce
    Artpcce
  • Matt
    Matt
  • Thacken5
    Thacken5
  • Mohamed Karaoke
    Mohamed Karaoke
  • stoian djjorgov
    stoian djjorgov
  • aloblu
    aloblu