|Changes from 3.2-5 to 3.2-6
1. Local Simulation bug fix : when we truncate cache and try to run it, Maya either crashes to a close or the solve just hangs, not wanting to sim à Fixed
A. Start local sim at any cached frames or at the start frame, and the selected solver continues the simulation starting from the currently cached pose, and overwrites and replaces the cache of current frame.
2. Gravity map, Thickness map, Pressure map modification flag bug fix : as painted in the cloth attributes (attribute editor) when you have painted it. The map works regardless but doesn't show up as painted. à Fxied
Changes from 3.2-4 to 3.2-5
1. Collision handling bug
A. Under multi-cloth solver, truncating a single cloth cache caused incorrect collision response at the restarting frame. à Fixed
Changes from 3.2-3 to 3.2-4
1. qlUpdateInitialPose bug fix à works fine in batch mode
2. qlBatchRun script update à qlBatchRun.mel is separated from qlUtil.mel and updated.
Usage : maya –file -batch –command “qlBatchRun 1 10”
qlBatchRun will simulate all the clothes in the scene between start/end frames given as parameters. (1 and 10 respectively in the above case)
qlBatchRun assumes all the cache file names are set for each cloth object in the scene.
Changes from 3.2-2 too 3.2-3
1. Performance improvement under partially cached condition
A. In a multi-cloth object, re-simulating single cloth object only took almost the same time as whole cloth objects are simulated. This performance is improved. To reduce the re-sim time further, consider making some cloth objects “inactive” which are irrelevant to the cloth being simulated.
2. Vertices are getting stuck on colliding geometry à fixed
A. Requires further test
3. qlUpdateInitialPose bug fix
A. qlUpdateInitialPose produced error message related to “.cacheWrittenFlag” in 3.2-2, and this is fixed
4. A debug message is removed : “setExternalConstraints with subsampling : X X“
5. Support for newer versions of Maya
A. The plug-in binary for Maya 2013 was built against Maya 2013 service pack 1, and it is replaced with Maya 2013 service pack 2.
B. The plug-in binary for Maya 2014 is added (this requires further test)
Changes from 3.2-1 to 3.2-2
1. Truncating single cache from multi-cloth caused instability à Fixed
2. Enable/Disable collisions between two object did not work properly à Fixed
3. Consistent damping adds unwanted drag to goal constraint à Fixed
A. In addition, all kinds of constraints including goal constraint are free from consistent damping effect
4. Turning on/off sim for individual cloth mesh à Added
A. “active” attribute is added to qlCloth node at the category of Material Property
1. Goal constraint maps are paintable on the goal output mesh dangling to the original goal mesh. Do not paint goal constraint maps on cloth mesh. Remember that a cloth can have multiple goal constraints, so the goal constraint maps should be multiple.
2. Turning off individual cloth mesh increases computation speed, but truncating cache on single caches in a multi-cloth object does not increase speed yet. This improvement will be made at the next version
Changes from 3.1-10 to 3.2-1
1. Solver cache has been removed
A. Solver has no attributes related to caches any more (No need to maintain solver caches separately from cloth)
B. All caches are stored by cloth objects only
2. Clearing cache on multi-cloth object behave like partial resim
A. Cloth with cache doesn’t resim, and it acts as a collider to others.
3. Preserve wrinkle control over rest mesh
A. qlClothShape has new attributes under category of “Rest Shape Attributes”
B. The stretch/bending features from the rest shape are separately controlled.
i. “Update Stretch” means the triangle areas are accepted from the rest shape mesh
ii. “Update Bending” means the angles between triangles are accepted from the rest shape mesh
4. All constraints have a toggle for self collision
A. All types of constraints have an additional attribute named “Enable Collision”.
B. Hard/Soft feature are decoupled from collision/no-collision feature
5. Gravity override
A. Each cloth object can have its own gravity.
B. To override qlSolver’s graivity, check “Override Gravity” in “Material Property” categroty of qlClothShape, and set the gravity values below it.
C. Each qlPattern node can have its own qlProperty node, and each qlProperty has also gravity override, too.
6. Gravity Map / Pressure Map are added
7. Breakable spring
A. qlSpring node has new attribute “Break Length”.
B. In case the spring length exceeds the “Break Length”, qlSpring disable itself.
C. If “Break Length” is zero, then it never breaks.
8. Strain Map for scrubbing playback
A. The strain maps are updated for scrubbing playback.
B. Two menu commands “Show Strain Map” and “Hide Strain Map” are added
i. Select multiple cloth objects and do “Show/Hide Strain Map”
ii. High strain corresponds to red color, and low strain corresponds to gray color.
Changes from 3.1-9 to 3.1-10
1. A Collision property “Thickness” is added to qlClothNode.
A. Thickness implements the cloth to cloth offset between different cloth objects.
B. If you turn off “overrideThickness”, the defaults cloth-to-cloth offset assigned to the corresponding cloth object is same as its “proximity criterion”.
C. If you turn on “overrideThickness” and set a value of “Thickness”, it acts as the offset between different cloth objects, separately from “proximity criterion”.
D. Thickness has a map named “ThicknessMap”, and it can be painted per cloth. This map is a weight map, i.e., it scales the thickness.
Changes from 3.1-8 to 3.1-9
1. ‘Re-initialize solver’ didn’t work after ‘update initial pose’ à fixed
2. The cache file of the first frame were overwritten every scene re-opening à fixed
3. ‘Truncate cache’ didn’t work when only a solver is selected. à fixed (all the caches of the cloth objects belonging to the solver are truncated.)
Changes from 3.1-7 to 3.1-8
1. Per-cloth proximity criterion bug fix
A. Each qlCloth node can override the proximity criterion of the solver it belongs to. Former version didn’t deal with the per-cloth proximity criterion properly, so it produced vibrating proximity handling between cloth objects. This update fixed the problem, and the per-cloth proximity criterion works correctly.
2. Strain Map
A. Strain map is an attribute map like other material property maps except that it is automatically computed by solver. Painting the map does not affect the solver. Strain map is updated by solver automatically at each frame.
B. To make it visible, just try to paint the “qlClothShape-strainMap”, then the resulting strains at each vertex will be updated automatically during simulation.
C. The range of the strain value is not limited. You can adjust the displayed value range from the paint tool settings of Maya. Also you can get the actual values by mel command “getAttr qlClothShape1.strainMap”.
D. Currently, only a single cloth object can show the strain map at a time, since it is an attribute map associated to the cloth mesh.
Changes from 3.1-6 to 3.1-7
1. Clear Cache bug fix
A. Previously, “Clear Cache” didn’t work when there are variables in the path. It is fixed thanks to Ark and Kris.
2. Cache subframes
A. qlCloth didn’t produce cache subframes, but it works now. Note that the cache subframes of qlSolver and qlCloth work independently.
B. The subframe digits were 2 in the previous version, now it is 3. The subframe caches are named like XXX.0001.125, XXX.0001.250, etc.
3. Preserving UV maps for Collider offset mesh
A. The collider offset mesh created by collider node didn’t preserve the UV map of the original mesh. It now preserves it.
4. Obsolete attributes are removed
A. qlSolver.animatedRestShape attribute is removed. Since Q3, it is renamed to qlSolver.restShape.
5. qlSolver update bug fix
A. In the former version, when “Create Seam” is executed, the solver was not updated properly. This happened when a cloth is transferred to other solver. This solver update bug has been fixed.
Changes from 3.1-5 to 3.1-6
1. Collision relationship editing bug fix
A. Disabling collision between two cloth objects in a solver didn’t work properly in 3.1-5, and it works correctly now.
Changes from 3.1-4 to 3.1-5
1. Local Simulation
A. Select a solver, and click “Local Simulation>Start”. Then all the clothes belonging to the solver start to move without increasing the time. Even if you select a single cloth object in a solver, all the clothes belonging to the same solver will start to move. The current caches of all the clothes and the solver are replaced with the locally simulated results. To stop the local (time) simulation, click “Local Simulation>Stop” or press ESC key.
2. Proximity Criterion override bug fix
A. “Proximity Criterion” of qlCloth has higher priority to that of qlSolver. Thus, if you turn on “override proximity criterion” of qlCloth, the “Proximity Criterion” of qlSolver is disregarded.
B. Proximity criterion can be interpreted as “Thickness” of a cloth, so you can assign unique ‘proximity criterion’ to a cloth object. Only when the proximity criterion of a cloth object is not specified, the value of qlSolver is used, and again if you don’t specify the value of qlSolver either, then the default value decided internally is used. In any case, the proximity map works in the same way as scale factors.
Changes from 3.1-3 to 3.1-4
1. Clear/Truncate cache bug
A. There were still “clear cache” bug at 3.1-3. It was related to path separator ‘/’ of the per-frame cache folder name attribute of qlCloth and qlSolver. Regardless of specifying the cache names, this version works correctly always.
2. dependency graph cycle bug
A. Field filter node and goal constraint node had DG cycling bug, and it caused unexpected errors in collision handling. Now it is fixed, but fields and goal constraints are needed to be re-created, for the bug fix to take effects.
3. Field scene crash bug
A. A scene with fields, opened at a frame where there is no cache, Maya crashed. This bug is fixed
4. Partial re-simulation crash bug
A. Partial resim crashed when trying to solve a frame where no cache exists. This bug is fixed.
5. Attributes of qlCloth and qlSolver are sorted and unnecessary ones are removed.
Upcoming updates in 3.1-5 which is due to 11st July.
1. Local (time) simulation feature
2. Proximity criterion of qlCloth overriding bug fix
Changes from 3.1-2 to 3.1-3
1. Clear/Truncate cache bug
A. Cache path name retrieving had a bug which caused ‘clear cache’ not to work. This problem is fixed.
B. Minus frame numbers for cache caused ‘clear cache’ and ‘truncate cache’ to work abnormally. The problem is fixed.
2. New material attribute ‘Pressure’ added
A. This force pushes cloth toward surface normal. Used with closed surfaces, you can get balloon-like wrinkles and motions.
Changes from 3.1-1 to 3.1-2
1. Self-collision crash bug fix – doing self collision without any collider in a solver caused qualoth to crash in 3.1-1, and now it’s fixed.
2. Cache folder bug fix – clear/truncate cache works correctly. (requires additional extensive verification from field tests.)
Changes from 3.0-8 to 3.1-1
1. Collision Relation Editing Feature
A. “Enable/Disable Collision Between Two Objects” commands are added.
B. If no collision relationship is specified between any two objects in a solver, they collide to each other by default. Note that the collision flags, collision maps are still can control the collision behavior. That is, if no explicit collision relation is set by these new commands, the collision behaviors works exactly the same way as the previous qualoth versions.
C. Usage example :
i. Scenario #1 : control cloth-cloth collision
1. Select two cloth meshes which belong to a same solver, then do “Qualoth>Disable Collision Between Two Objects”
2. A node named after those two cloth meshes is created, which looks like “qlClothShape1__to__qlClothShape2_collision”. If there is already such a node that relates those two cloth nodes, just the collision attribute of the node is reset.
3. The newly created node controls the collision between the selected object pair. If the attribute “collision” of the node is set to false, then the collision between qlClothShape1 and qlClothShape2 is not handled.
4. To enable the collision again later, you can just set the “collision” value of the collision relationship node to 1. It is a keyable attribute. Also, you can just select the two objects and do “Qualoth>Enable Collision …”, then it has the same effect.
ii. Scenario #2 : control cloth-collider collision
1. Select a cloth and a collider, then do “Qualoth>Disable Collision Between Two Objects”
2. A node named after those two objects is created, which looks like “qlClothShape1__to__qlColliderShape1_collision”.
3. You can modify “collision” value of the node later.
D. Note #1 : If a cloth is transferred to other solver, this collision relationship node remains. Even though the relationship node lives, it does not take effect until the both objects belong to a same solver. This behavior is much like a qlSpring which connects vertices of two cloth meshes.
E. Note #2 : If you select a cloth node or a collider node, and it has collision relationship nodes connected, they will appear in the attribute editor.
Changes from 3.0-7 to 3.0-8
1. Painted maps are re-initialized when reopened à fixed.
Changes from 3.0-6 to 3.0-7
1. Separated ‘Reinitialize Maps’ from ‘Reinitialize Solver’.
2. Changing the solver of multiple cloth objects : Select multiple cloth object meshes, to change their solvers simultaneously.
3. Springs connected across different cloth meshes are preserved even though those cloth meshes do not belong to the same solver.
A. The spring does not work if it connects vertices belong to different solvers each
B. Once the vertices belong to a same solver, the spring starts to work
C. ‘Change Solver’ does not remove such inter-connected springs
4. ‘Save/Load Hysteresis’ now works the same way as Q2
Changes from 3.0-5 to 3.0-6
1. Update initial pose added : This works per-cloth basis
2. Rest Shape added
A. Select a cloth and rest shape mesh, and then do ‘Qualoth>Connect Objects>Rest Shape`;
B. To disconnect it, do ‘Qualoth>Disconnect Objects>Rest Shape`. After this, do ‘Qualoth>Reinitialize Solver’ to make disconnecting take effect in simulation. Otherwise, the last rest shape just before disconnection affects the solver.
3. Update collision color map added
A. Select a cloth or a solver, then do ‘Qualoth>Update Collision Color Map’.
4. Solver Statistics flag added
A. Turn off `qlSolverShape.solverStatistics` at the attribute editor of qlSolver to disable printing timing info of the solver.
Changes from 3.0-4 to 3.0-5
1. Reinitialize Solver added
Usage : Select a cloth mesh, or multiple cloth meshes, or a solver node, then perform Qualoth>Reinitialize Solver
a) When a cloth mesh is selected : the cache of the selected cloth is cleared, all the maps are initialized to the default values, and the output is recovered to its original shapes even if it has been tweaked using “Update Tweaks”. The solver which the selected cloth belongs to is re-initialized, too. When the solver is re-initialized, the solver’s cache is cleared, and restored to the original input meshes, all the hysteretic evolvements are initialized, and the internal dynamic solver is re-initialized.
b) When multiple cloth meshes are selected : The selected cloth nodes are re-initialized, and the solvers the selected cloth nodes belong are re-initialized.
c) When a solver node is selected : All the cloth nodes belonging to the solver node are re-initialized, and the solver is re-initialized
2. Maya 2008~2010 menu bug fixed – Qualoth works the same way with all maya versions from 2008~2012
3. Length scale has been made keyable, which was not possible.
Changes from 3.0-3 to 3.0-4
1. Constraint>Get Verts bug fix
2. Plane Constraint, Line Constraint bug fix
3. Clear Velocity has been ported from Q2
4. Modified Maps flags are updated correctly as Q2
5. Self friction between cloth meshes : Self-friction coeff’s of two cloth nodes are averaged when they interact.
Changes from 3.0-1 to 3.0-3
1. Attach constraint now works correctly.
2. Solid collision/Self collision flags of qlCloth now work correctly.
3. When a solver is re-named and it was the current default solver, then “Create Cloth” uses a new solver instead of printing an error message. This behavior is same as that of nCloth and nucleus solver.
4. Unnecessary shell outputs are removed.
5. Update Tweaks is added.
6. Painting cloth properties are enabled.
7. The related solver appears in the attribute editor when a cloth is selected.
Changes from 2.2-5 to 3.0-1
A. Solver and Cloth are separated, which were combined as a Simulator formerly. ( qlSolver + qlCloth = qlSimulator )
B. You can assign a solver to each cloth by “Qualoth>Change Solver”, or by the option menu of “Create Cloth” or “Create Pattern”.
C. New cache behavior
i. Each cloth and each solver maintains their own cache.
ii. If you do “Clear Cache” of a selected cloth, the cloth cache and solver cache are cleared. The cache of other clothes belong to the same solver are not cleared.
iii. If you do “Clear Cache” after selecting a solver (e.g. qlSolver1), then the solver’s cache and all the caches of clothes which belong to the solver are cleared. That is, all the caches related to the solver are cleared.
D. New spring behavior
i. Vertices of a spring must belong to a same solver though they can belong to different clothes.
ii. A spring that connects vertices that belong to different solvers cannot be created or such spring can be removed as a result of “Change Solver” menu command.
E. Length scale
i. Each cloth and each solver have their own length scale
ii. Each cloth has its own length scale map.
iii. The final effective length scale is the multiplication of those length scale values ( qlCloth.lscaleMap * qlCloth.lscale * qlSolver.lscale )
iv. Each pattern has its own length scale and it overrides that of qlCloth.
i. Colliders are connected to solver, not a cloth.
i. Constraints are connected to cloth, not the solver
H. Some menu commands are not ported yet, and they will appear again in Qualoth-3.1-1
I. Some menu commands which are obsolete are removed.
Changes from 2.2-4 to 2.2-5
1. Goal constraint bug fix
- Goal constraints caused crash when frame samples is bigger than 1. Now it works fine.
Changes from 2.2-3 to 2.2-4
1. Bake Make command now supports sub frames.
- Usage: qlBake –n -f -s -e –b -sf -p –w
qlBake –n qlSimulatorShape1 –f “/abc/def/test” –s 1 –e 2 –sf 4 –p –w
- Subframe is supported only for per-frame cache (-p option must be present)
- By-frame must be set to 1 or left unspecified for sub-frames output.
- -w option means writing world coordinate positions of vertices (default)
- Option window for ‘Bake Mesh’ is not yet implemented, so users have to use qlBake mel command directly to use the sub-frames option.
Changes from 2.2-2 to 2.2-3
1. Improved dynamics stability
A. When wide flat area of a cloth stand still regardless of contact status, the cloth mesh starts to jiggle after a while. This bug has been around for a long time (since version 1.4-1). This effect could be observed clearly when large area became flat and motionless, and subtle oscillation could be observed sometimes even when those conditions are not met.
The above two improvements eliminated many sources of jiggling effects of previous versions, and even the ill-shaped triangles are handled very well with this improvement.
Changes from 2.2-1 to 2.2-2
1. Improved contact stability
A. The switch between contact and free status is now more stable and jiggling effects reduced greatly when large area contacts solid objects.
Changes from 2.1 to 2.2-1
1. Goal as a constraint
A. Select a goal mesh, and qualoth mesh, then click Qualoth>Constraint>Goal Constraint, to create a goal constraint.
B. Two nodes are created : Suppose the goal mesh name is “test”.
i. Test_GoalConstraint : Contains the goal control parameters, which were originally in qlSimulator node.
ii. Test_Goal : The goal constraint output mesh, which is a topologically same mesh as the initial goal mesh. This mesh is initially hidden, and this mesh is used to paint the goal constraint maps such as “strength map”, “damping map”, “force limit map”, which were also in the qlSimulator node in previous version.
iii. Currently, the goal mesh must match the cloth mesh topologically. In the future (2.3 or 2.4), topologically different meshes can be assigned as a goal by matching the closest point projection (at startup or per frame basis).
C. You can add multiple goal meshes as normal constraints. To remove the goals, just select and remove the goal constraint node and the goal output mesh
D. The previous scene files which used goal shapes would not work with this version. The goal setup should be done again.
2. Solid friction handling bug fix
A. The inconsistent behavior of solid friction when the cloth is far from the origin seems to be eliminated during upgrading the collision handling parts.
3. A minor collision handling improvement
Qualoth-2.1 has been released.
The changes from 2.0 are,
1. Multi-threaded collision handling
- The collision handling procedures are multi-threaded. According to the CPU architecture, 2~6 times performance gain could be observed with 8 threads. Intel i7 architecture showed the best performance (6 times faster with 4 cores).
- ‘Sharp feature’ is not multi-threaded. I recommend set ‘sharp feature’ off since it has undesirable artifacts for moving objects let alone not supporting multi-threading. It is useful only when the collision objects are static. In the future, the artifacts of ‘sharp feature’ will be removed and multi-threaded too.
2. Minor bug fix for solid-contact
- The contact checking between cloth-vertex and solid-vertex was disabled mistakenly in previous versions. Most time this causes no problem since other primitive checking routines cover it, but sometimes this causes cloth vertices to flip when they contact collision objects and all the other primitive checking couldn’t replace it. This artifact must have happened very rarely in previous versions, but this version fixed it and collision handling became a little bit more robust.