Xsi Metaballs v2 Developed & tested under Xsi 4.2 //////////////////////////////////////////////////////////////// // Quickstart - After you install the addon, you can find the menu under Get › Primitive › Metaballs - To create a metaball geometry primitive, clic Get › Primitive › Metaballs › Metaballs - To add a new metaball input object, with the geometry primitive selected, from the Get › Primitive › Metaballs menu choose the type of input you want to add (Add metasphere, Add metacube, etc.) - For other informations (in random order) read the Documentation and FAQ sections below. //////////////////////////////////////////////////////////////// // What's new in v2 final - Graph evaluations without timeline jumps, faster and safer. - Added support for enveloped polygon mesh objects. - Fixed a bug related with rendering and execution states, on-the-fly evaluation, write-cache mode. - Particle scale has been substituted with particle size (due to performance reasons, it was simply too slow). //////////////////////////////////////////////////////////////// // What's new in v2 beta - No more toolbars, instead you will find the menu under: 1) Get › Primitive › Metaballs 2) Right clic over an object in the viewport › context menu "Metaballs" - Grid, "Paint" mode: positive metaballs can be used as brushes, and negative ones as erasers (viscosity is supported also for this one); remember that at the start_frame, the "3D canvas" gets reset. - Grid, Execution state: a caching system has been added, which saves geometry/normals data into binary cache-file sequences (this is useful when you want to have low memory usage / faster playback, or when you need to send stuff to a renderfarm). 4 modes are supported: 1) Interactive (no caching); 2) Evaluate on the fly (evaluates all connected inputs, no caching); 3) Write (same as previous one, but writes to disk); 4) Read (the same file can be read by multiple operators, and input objects can be deleted too). - Grid, Volume-based optimizations: these can "trim" the influence of metaballs into a user-defined volume (volume-bounded metaballs are always restricted and optimized). - A new blending model called "Inverse blending" has been added, which generates the surface between metaballs (you'll need at least 2 positive metaballs to generate some surface) - Parameter names have been renamed so now it's easy to understand what they do. - Metaparticles and metapoints support negative scaling. - Better presets. - Voxel polygonizer added, which generates cubical cells instead of polygonized geometry. - Metaobjects can be moved (or shared) between different metaballs systems (see the new pick commands in the menu). - Added Linux version. - Added AMDx64 version. NOTE: Backward compatibility has been completely preserved: if you notice something different when opening old scenes with the new version of the plugin, it's only because the default blending model has been switched from "Metaballs (Hyperbolic)" to "Volume (Bounded)". //////////////////////////////////////////////////////////////// // Buglist - Known bug #1 Description: Crash under some specific conditions. Conditions: (the bug happens ONLY when all these conditions are verified at the same time) (1) timeline is playing; (2) surface normals are enabled; (3) user is orbiting / panning the viewport; (4a) region is set as "grid" with viscosity enabled or (4b) region is set as "infinite" and some particles have been connected to the metamesh. Affects versions: 1, 2-beta, 2-final Explaination of the problem: Mmmh... no idea yet. After a couple of wrong refreshes, a crash happens. Workaround: None atm; don't do all these 4 things at the same time. This bug doesn't happen at rendertime. //////////////////////////////////////////////////////////////// // DOCUMENTATION (SOME IMPORTANT WARNINGS AND THINGS YOU NEED TO KNOW BEFORE USING THIS PLUGIN) LIGHT GRAY = Informations about the plugin, easy explained. DARK GRAY = Additional technical details, you can skip these. 1 - The Surface normals option causes a big slowdown: enable this option only when it's really needed (for example at rendertime or when doing previews). Due to some specific limitations with custom geometry generators and clusters, the plugin has been split into 6 operators that share geometry and usernormals informations. When the surface normals option is enabled, the duplicate-polygons operator is used to correctly resize the samples' cluster. This is done before the geometry primitive is updated by the GeometrySet and NormalsSet operators. This workaround is the only way to update the components of a cluster when generating geometry on the fly, but it's very slow. 2 - Applying DEFORMERS or creating CLUSTERS on the geometry primitive can give unpredictable results. Please keep in mind that this plugin works as a geometry generator, which is not fully supported by Xsi (this problem is related only with custom operators). 3 - When the Region is set to Grid, Surface normals are generated correctly ONLY for metaspheres, metaclouds and metapolygons. Metacubes and metacylinders cannot generate correct surface normals, and their presence produces wrong surface normals for the whole grid. As a workaround you can still use geometry normals with some postprocessing filters. When the Region is set to Infinite, Surface normals are ALWAYS generated correctly. 4 - The Postprocessing geometry filters do not affect Surface normals. This is not really a limitation, because surface normals are different from geometry normals, and cannot be affected by a geometry deformer. For this reason it's better not to use filters and surface normals at the same time. 5 - If you need to FREEZE the geometry primitive, do it when viewport shading is enabled (not in wireframe or bounding box display). Xsi's operator graph is very well optimized, and tries to determine if updating a specific output connection is really needed. For example, usernormals properties are not updated when the viewport display mode is set to wireframe, because wireframe display means no shading, and no shading means no need for normals. This can be a problem for this custom operator, which cannot automatically update the usernormals property before being destroyed. 6 - During a SIMULATION, normals are simulated also. If the Surface normals option is turned off at some point, normals' data (gradients) will not be simulated and saved in the grid. Enabling surface normals later without resetting the simulation will display incorrect surface normals. 7 - The METACYLINDER primitive parameters are not supported. Instead of changing the primitive parameters, scale the cylinder. This happens because the cylinder equation implementation has been kept very simple. //////////////////////////////////////////////////////////////// // FAQ Q: What can I do to improve the interaction speed? A: If you are not rendering, you can: - disable the Surface normals option (strongly recommended); - disable the Postprocessing options; - lower the Accuracy - this is the number of binary subdivision steps; - use a lower Resolution; - enable Simple root search - this triggers less seedpoint finding tests (it's a bit faster but sometimes may be unable to find some parts of the surface); - whenever possible, use Bounded blending: this blending model enables many internal optimizations ans is very efficient when working with Grid simulations; this option is strongly recommended when working with particle clouds and polygon mesh objects; - if you're working with Grid mode, make use of the Standard No Caching mode to preview at a specific frame. Q: How do I use the liquid metaball simulation mode? A: Switch the Region parameter to Grid: this enables the liquid simulation mode. - Viscosity is the strength of the liquid effect; this parameter affects the whole grid. - Start frame determines at which frame the 3D voxel grid is filled with empty values. To see the liquid effect in action, the current frame needs to be higher than the start frame (ex. if the start frame is 1, you need to go at frame 2 to see the dynamics). - Simulation mode defines if the simulation will be interactive or if will be calculated when the timeline jumps to another frame. - Placing a key on the Force update parameter tells Xsi to evaluate the operator also if none of its inputs is animated. Q: Can I delete some input objects (for example an implicit sphere or a particle cloud used as input)? Yes. Remember that removing all inputs from a geometry primitive doesn't remove it from the scene: you can still add some input objects later or delete it too. Q: Can I use particle clouds to generate metaballs? A: Yes. From the Get › Primitive › Metaballs menu, clic Pick particle cloud and then pick a particle cloud. Every point of the particle cloud defines a metasphere. Particle clouds need to be cached when the Standard No Caching simulation mode is enabled. The size of every point is defined by Particle size and Component scale parameters. Q: Can I use polygon objects to generate metaballs? A: Yes. From the Get › Primitive › Metaballs menu, clic Pick polygon mesh and then pick a polygon mesh object. Every point of the polygon mesh object defines a metasphere. Polygon mesh objects need to be frozen after every geometry edit. The size of every point is defined by Point size and Component scale parameters. Q: When working with ultra-hyper-giga-high resolution surfaces, the infinite region mode may be unable to create any geometry. Why? A: Sometimes binary subdivision requires more steps to converge to the surface. To solve this, raise the Accuracy value. Q: Is it possible to have negative metaballs? A: Negative scaling does exactly that. Q: The Display grid volume option doesn't display anything. Why? A: The 3d voxel grid volume is displayed with a geometry wireframe cube, which can be seen only if the mesh is selected, or if the viewport display mode is set to wireframe.