Decimeter Scale question

I had a question yesterday and thought this might be something common enough to put on the forum. A client works in decimeters, so to get their scale right they added TransformGeo prior to their Mesh to Volume node. This requires also scaling their camera and any other things that might be coming into the scene, which sounds like more opportunity for things to go wrong, and if I have this correctly, they would be scaling up to match Nuke’s & Eddy’s defaults, which sounds like it could potentially make evererything calculate slower.

in the Scale video, Matt talks about changing the dimensions in the E_Element node, but I was curious about whether there would be any difference between that and using the transform parameters in the E_Channel node that would come after the Mesh_to_Volume. Is there any difference in the two different approaches, in terms of speed or optimization for Eddy? IE, instead of scaling up their Mesh to match Nuke units, would it be better/faster to scale down their channel node, or should they always use the grid dimensions parameter in the E_Element node?

And it also struck me that Mesh_to_Volume seem to be the only node that didn’t have transform parameters built into it, which is what led me to the transform parameters in the E_Channel node. But I was curious if there was some specific reason that this was the case?

Anyway, after typing this out I have thoroughly confused myself and I am not even sure I am thinking about this correctly. :slight_smile: So maybe I should just ask, a client is working in decimeters, whats the best way to optimize their scene for Eddy?

Hi Gary,

Scaling is tricky in subtle ways so whenever possible I’d recommend to always work in Eddy units (distance unit of meters).

However - if you need to scale the data there is no real performance difference between changing the dimensions in the E_Element (assuming the effective resolution is the same) and scaling the E_Channel node.

In most cases the best way to avoid mistakes is to change the dimensions of the E_Element to match your chosen units. However - in general this is a bit dangerous as physics is scale dependent and the simulation behavior could be different at different scales. Currently in Eddy the only parameter to be mindful of is kinematic viscosity which is scale dependent. If your simulation is viscous where the viscosity is intended to be physically accurate rather than an artistic effect I recommend using Eddy units for the Element dimensions etc.

Scaling the E_Channel can be useful - but also dangerous. The data output by the E_element (and any caches written) will have values in the scale of the E_Element. For scalar channels like density or temperature this is usually fine but for velocity the values would not be what you expect at your chosen scale. This can for example affect motion blur. If your E_Element is set up using meter scale and your put your results in a decimeter scale scene the velocity magnitudes would be off by a factor 10 from what you would expect. If relevant this can be fixed by scaling the velocity values as well with an E_Merge (Multiply) node but you’ll need to remember to do this wherever relevant.

So to sum up:

  • When scaling the element: Be mindful of any E_Element parameters that would have different values at different scales (e.g. kinematic viscosity).

  • When scaling the channel (or cache loader): Be mindful that the channel values will still be in the units used by the E_Element that generated the data.


1 Like

Just chiming in here. From 1.6 there’s now a “Simplified Grid Setup” option for scaling voxel size. This allows you to adjust the voxel size without worrying about dimension grid.
This is similar to what FX people are used to in Houdini. Setting this to 0.05 for example makes the “smallest feature size” 5cm in size, so for a small campfire this may be way too coarse and not sim correctly. This mode allows you to measure your scene using 1Nuke Unit - 1 meter, then split that up to determine a ballpark voxel size.

In the campfire example lets assume the campfire model is 75cm diameter approx. If we were to then decide you want 25 voxels across the campfire, you would divide 75/25 = 3cm, or 0.03 voxel size. This would give you a decent starting point for a medium voxel resolution, depending on your GPU of course.

1 Like