July 30, 2014, 14:55 (GMT) |
Fix problem of hair root animation by keeping the solver around as a runtime instance. The SolverData also functions as a short-term history for constructing the hair root animation/deformation curves. This is necessary because the DerivedMesh data on its own does not have interpolation intervals nor velocity information. It also means that we have to keep this data alive over multiple frames in order to do root animation properly. So now the solver is created as a runtime instance. |
July 30, 2014, 14:22 (GMT) |
Base support for hair root animation. Note: This does not work currently, because of the way the solver is reconstructed in every time step currently, and so does not provide actual changes in the transform. Note2: The mesh sampling system does not support changes in DerivedMesh topology so far. It can be necessary to move the hair system to the bottom of the modifier stack, because the hair roots are created for the final mesh version and for animation support it can only use the mesh being passed to the modifier. Any later subsurf etc. (constructive modifier) will alter the topology and cause a difference in the DM used for hair roots vs. DM used for calculating deformation. |
July 30, 2014, 10:11 (GMT) |
Also handle the applying of solver data to the scene DNA in the SceneConverter class. |
July 30, 2014, 09:51 (GMT) |
Moved Blender hair data conversion for the solver to a dedicated SceneConverter class. This should handle all the details of the DNA/SolverData differences and keep the rest of the solver code clean. |
July 30, 2014, 08:42 (GMT) |
Define hair root points when copying from particles, by converting the old num/fuv data. |
July 30, 2014, 06:25 (GMT) |
Use particle systems on the same object for "copy from particles" operator. This allows using the same geometry reference for hair roots. |
July 29, 2014, 16:42 (GMT) |
Fix for error when converting int -> unsigned int with strict compiler flags. |
July 29, 2014, 16:42 (GMT) |
Changed mesh sample definition to use 3 vertex weights instead of a face index. This is easier to sample uniformly and avoids the need for tesselation for evaluating. |
July 29, 2014, 16:42 (GMT) |
Normalize the normal vector after sample eval to account for interpolation. |
July 29, 2014, 16:42 (GMT) |
Added a bool return to the eval function to give feedback on invalid samples. |
July 29, 2014, 16:42 (GMT) |
Added a basic RNA definition for the mesh sampling system. |
July 29, 2014, 16:42 (GMT) |
Eval function to get a location and normal vector from mesh samples. |
July 29, 2014, 16:42 (GMT) |
Usable random distribution algorithm. Does not include area weighting yet. |
July 29, 2014, 16:42 (GMT) |
Skeleton code for sampling meshes. |
July 29, 2014, 16:42 (GMT) |
Merge branch 'master' into hair_system |
July 29, 2014, 13:44 (GMT) |
Bending forces and damping for hair. This adds some stiffness to hairs along bends, such that the hair does no longer behave like a chain of freely rotating segments. Note that there is no bending force on the root segment yet, which means the hair swivels around the root point without resistance. |
July 29, 2014, 12:27 (GMT) |
Precomputation of rest "bend" vectors in the solver data. These vectors determine the bending amount of the hair, by giving a fixed reference from the rest position. The same calculation is done for the state vectors in every step, but the precomputation saves roughly half of the cost by avoiding a useless loop over the rest data. |
July 29, 2014, 11:47 (GMT) |
Removed the unused is_dynamic property from solver points. For the solver data it is quite important to keep the data structs small, much more than in the DNA data. |
July 29, 2014, 11:45 (GMT) |
Transform3 type for pure rotational matrices. |
July 29, 2014, 10:37 (GMT) |
Implemented hair frame calculation using parallel transport along curve segments. This can be done on-the-fly but rotating the root hair frame incrementally according to each hair segment angle. Note: a similar approach can be found in the Blender curve code for calculating twist vectors. A novel feature of the hair frame calculation is the use of smoothed hair curves. This prevents artifacts in case of sharp segment angles by removing small-scale noise from the curve. |
|