Posted by: Jeff | 2010/02/11

FumeFX – Partitioning

In some rare cases, dividing a fumeFX grid into separate parts can help create a bigger simulation area. This entry will discuss a script called the FumeFX Partitioner to tackle this task.

Normal Grid / Partitioned Grid

FumeFX Partitioner

current version as of 2012-may-11 is 0.11
last working version as of 2010-feb-11 is 0.10

This script will divide a FumeFX Grid into partitions. The script is divided into two parts, one for partitioning, and one for simulating the partitions.


Partiton Options:

Partition Options Group

Pick FumeFX Grid – Select a FumeFx grid that you wish to divide into parts.
Holding down the ALT button will select whatever FumeFX Grid object you’ve selected.
Holding down CTRL will clear the selected item and delete it’s corresponding Preview Objects and Layers from the scene.

Grid Count –  Shows the number of grids that the script will generate. (X*Y*Z)

Length/Width/Height (X/Y/Z) – Set the number of partitions on all 3 axes.

Overlap – This is the overlapping space between the partitions. 1 unit of overlap equals the spacing size of the picked grid.

G – The overlap size would be based on the Grid Spacing.

Display Preview – Displays a preview (in the form of frozen box objects) of the partition settings in the viewports.

Create Layers – Will create a separate Layer for the generated grids.

Create Selection Set – Will create a Selection Set for the generated grids.

Pick Folder Path – Choose a base folder path on where to store the FXD cache files.
Hold ALT to open the chosen path in an explorer window.

Create Partition – This will generate the partitions using your settings above. The created partitions will then be automatically added to the Simulation FumeFX List.

X – This will simple delete the generated partitions.


Simulation:

Simulation Group

FumeFX List – This is where items (FumeFX Grids) for simulation is placed and arranged. You may Double-Click on the item to select it on the viewport.

+/- -Add or remove selected items from the list.

Up/Down – Move selected items in the list. You can select multiple items to move around.

Network Simulation – Turn this ON to send separate partition jobs to Backburner.
This method uses the command line method of submission (3dsmaxcmd.exe).

Manager Name – Set the manager name to send jobs to.

Initially Suspended – Sends the jobs as suspended. It is recommended that you set this to ON, because there’s no way to assign servers using the command line. You must assign the servers for the jobs using the Backburner Manager.

Priority – The priority of the job as it is queued by the manager.

Platform – switch between 32bit or 64bit servers.

Simulate Locally – This will simulate the FumeFX Grids on your local machine, it will follow the FumeFX List as the sequence starting from the top. It will also print out a summary of simulation time in the listener after it has finished everything.
This button is visible if you have Network Simulation Turned OFF.

Send Simulation – Send each partition to Backburner as separate jobs. A command prompt window  showing each file getting sent will appear.
This button is visible if you have Network Simulation Turned ON.

* More notes on Send Simulation at the bottom. *



Some Use Cases:

* Cases shown here were all done on a 32bit machine, 2Gig ram (3Gig switch ON) *

Case A: Thin Trails

 

Preview

Original Grid:
100x100x100 @ 0.2 (500x500x500)
4888 mb

Partition Settings:
4x4x4 Parts | 64 FumeFX Grids

Partitioned Grid:
29x29x29 @ 0.2 (145x145x145)
120 mb

Thin Fire Trails

Thin Smoke Trail

Case B: Straigh Trails

Long Smoke Preview

Original Grid:
100x1000x100 @ 0.45 (222x2222x222)
4282 mb

Partition Settings:
1x15x1 Parts | 15 FumeFX Grids

Partitioned Grid:
109×75.667×109 @ 0.45 (242x168x242)
385mb

Long Smoke


Don’t Use Cases:

Case C: Buoyant Fluids – data won’t transfer well to neighboring grids.

Bouyancy Wire

Bouyancy

Case D: Turbulent Grids – notice the obvious  separation.

Turbulent

Turbulent

Misc:

Use Container Edges Falloff – This helps smooth out the overlapping edges of the grids, slightly eliminating the separation visible n Fig A below.

Grid Wireframe

Fig A – Falloff Type: None

Fig B – Falloff Type: Box (Strength 0.25)


Considerations:

  • Use this method on scenes with low or zero fluid motion.
  • Avoid having a smoke that would travel to a neighboring grid because of turbulence/gravity/bouyancy.
  • 32bit machines will be able to better handle the sim because of partitioning.
  • Can be simply used as a Batch Simulation tool.

Notes on Sending Sim to Backburner:
*** I haven’t fully tested the Network Sim feature, I might rewrite the way it sends jobs to the server, use with caution ***
– After pressing  Send Simulation, the script will save out multiple max files (set to simulate a single grid partition) on to a temporary location.
– Then a batch window will appear utilizing 3dsmaxcmd.exe to send max files as jobs on to the specified server.
– The strange thing is, the jobs would use ALL SERVERS by default, so it is recommended that send the files as Suspended. Assign the servers yourself from Backburner.

Advertisements

Responses

  1. Epic Jeff! I did a little studying on overlapping grids but nothing to this extent! Wonderful going to give that script a shot 🙂

    • Thanks johnny! hope you find it useful! 😀

  2. Didn’t know you have a blog dude! Subscribed, kickass stuff here!

    • Thanks Hristo! Yeah I just started this a couple of months ago. I’m still trying to pick up some pace with updates haha 😀

  3. great script!

  4. great job! keep going…..

  5. I would like to thank you for creating this.
    Fantastic.
    I’m creating an fog effect like this one: http://www.youtube.com/watch?v=vvDJwZLmEZs
    I’ve achieved the look I want but I have a large scale to cover I would like to know if using FumeFx partitioning is a good way instead of increasing the grid to huge values to cover the entire scene. I never tried it that’s why I’m asking.
    Keep up the good job.
    Thanks

    • I saw the vid, and it seems like the smoke movement that you’re after wouldn’t work with this Partitioning technique.. becuase if you break it down to partitions, you won’t be able to transfer velocity data from one grid onto the next. I’ve tried it with maxscript… and it was VERY slow. Notice the Don’t Use Cases samples…

      • Thanks for the tip.
        I’ve decided to increase the container.
        It’s doing fine.
        Cheers

  6. […] did find a very handy script while researching this shot: https://limjeff.wordpress.com/2010/02/11/fumefx-partitioning/ , but I didn’t use it in the end.  I’ll give it a go for the missile smoke trail and […]

  7. I tried the script but i dont know where i’m going wrong – coz’ the max files for the respective partitions are not getting created. can you please help me out.

    • My apologies for the extremely late reply.
      Max version, FumeFX version and Windows version?
      The script was created on FumeFX 1.2, tested on Max versions 9 to 2010, WinXP 64.

      • Hi,

        FumeFX – 2.1
        3dsMax – 2010 and 2011
        WinXP-64,Win7-64

        This is a great script for me.. I want to use it to the fullest. Please give some pointers so we start using it.

  8. Which version fumefx script works? I have 2.1a – does not work.

    • The script was created/tested on FumeFx 1.x.
      I have yet to test it on 2.x, but if memory serves, I think setting the cache path through maxscript changed.. I’ll check it out as soon as I get time.

  9. It would be really cool if you have upgraded the latest version fumefx
    my error –Argument count error: RunSimulation wanted 1, got 0

    max 2010 fumefx 2.1a

  10. I’ve got the Fume Fx 2.1 and the script work well except for the simulation.

    You create the partition, and for simulate it, just click on each container, simulate, choose an other etc… could be long, but it work =)

    I waiting too for an update ^^

  11. Hi! thanks for the nice script, it’s pretty useful.
    It is possible to switch between Backburner or Deadline for sending partition ?

    thanks

    I use fumefx 2.1a and I need to add on your script one thing like this to make script operable on fumefx2.1a

    theList[i].RunSimulation(0) —-> need to add 0 is default , if you put 1 is wavelet

    regards
    Gaetan

    • thanks for looking into it, I will try to post an update soon..
      I don’t have Deadline, but if I get time I’ll look into it 🙂

  12. hello jeff.
    can u tell us what did u from start to finish for examples.
    yes i want little tutorial about thin fire trails.
    i made a logo from glass.
    using vray1.5 64 bit w7 3ds max 11-10
    i just want that fire things moving in my glass logo.
    please help mate.
    cheer.

    • and i am using 2.1a fumefx v. script is working good getting grids.
      but thin fire trails on moving line path.i just cant do that…

      • Hi, I think I still have the max file for that.. But if I remember correctly, the setup is pretty simple, it’s just a path constrained fire emitting fume src object.
        Also, I believe that you’ll get an error if you press “simulate locally”, because the script was written for fume version 1.x, there’s a post above by gaetan for the fix, but I will try to post an update probably during the weekend to support version 2.x

  13. hi jeff.thanks for reply.
    yes i just fixed simulate locally error with gaetan post.
    just throw that max file to here if u can.
    and using vray 1.5sp5 any tips would be good about fire in glass renders.
    cheer.

    • dont forget us jeff ! (:
      cheer

  14. Hi Jeff, I have an issue here!
    fumefx 2.1b
    max2011 64

    The Output path seam to be broken here, all partition save the .fxd in the same place then the parent and all have the save name. so every partition overwrite the partition before. also the partition folder stay empty?

    need help!
    regards
    Gaetan

    • thanks, i’ll try to look at it this weekend.. (i only have up to 2010 though) hopefully i’ll have something by monday.

      • Out of curiosity, did you ever fix that? I’m toying with your script now and might take a crack at it if you haven’t.

      • Hi, nope I haven’t given it time yet. Feel free to update/fix it 🙂

      • Already did. 🙂

        Needed to change the setpath to #default instead of “” at the end, and as others have indicated, a argument needs to be passed to the sim call. 🙂

      • Cool, thanks! I was also planning to look into detecting the fume version so that the script can be used both for versions 1 and 2.
        I might try checking it against a property that is nonexistent in version 1.

      • Actually, as far as I can tell, the #default trick will work for both versions (I analyzed some other maxscripts that used FumeFX.

        As for the argument, adding a rollout option to select Default or WT (0 or 1 for the argument) could work, then add logic that if WT is selected, call simulate(1) and otherwise try call simulate(), catch simulate(0) – FumeFX 1 doesn’t have WT that I know of, so if it’s ticked in the rollout you know that it is 2. If it’s default, then it’ll try 1 first, and if it throws an error, catch to version 2’s method. 🙂

  15. I got working after specifying, i out zero theList[i].RunSimulation(0)

  16. But folders are empty

  17. Hey jeff- playing with your script. i was just wondering if you tried working with
    Adaptive to ‘off’ for your partition grids?
    -so the entire box is calculated. I haven’t tried this myself but I am going to try it with your script result.

    • I can’t remember exactly though, just be careful of your velocities, sometimes doing an adaptive off tends to shoot stuff out very fast. Another note, I haven’t updated this script for fumefx 2.0 yet, a workaround can be found somewhere here in the comments. Best of luck with your test 🙂

  18. It would be awesome to get his working with deadline! you can get a free copy(2 render nodes max) version of deadline from thinkbox software to test it. I use this script for simulating multiple grids one after another on a single machine. But what I would like to do is send the grids to the farm instead and have each node handle a fume sim, come back in the morning and have like ten different sims or ten variations or whatever… I wish my maxscripting was up to scratch 😦 help! sigh…

  19. RunSimulation simMode

    simMode – 0 – Default Simulation

    1 – Simulation from Initial State

    2 – Wavelet Simulation

    3 – Retimer

  20. hi thanks your script this is good script ~!
    I’ll ask you a question, this is can’t Max2012?
    I can’t run “simulatr locally”

  21. Finally had time to fix the Local Sim.. updated the script to v0.11

  22. maybe I do something wrong? when I try to run the script 3ds max tell me
    “– Syntax error: at /, expected
    — In line: */”

    can somebody help me?

    • Hi, what version of 3dsmax and FumeFx are you using?
      I haven’t actually used the script for a very long time since fumefx has had quite a lot of great updates.
      Take note that this script was made during the FumeFx version 1 years.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Categories

%d bloggers like this: