Saturday, August 29, 2009

Point cache editing

Some more info in the commit message.


  1. What a great idea to use the path manipulation tools for soft bodies and cloth! I never thought it could be useful for something like that, too.

  2. I think I only have an inkling of how useful and powerful these new capabilities will be ... and I'm still blown away by it!

    Thanks for this! Awesome work indeed. :)

  3. Hi jahka,great work again!

    I have some suggestions,more related to hair particles,I tell you here because I don't know where to put them,sorry,but you are so close to perfection that I think it's important to help with suggestions.
    I use your particles for more than one year now I have some understanding of things that work good and things that could work better.

    First off,when you are in particle mode we have the smooth brush.
    It's cool,but I think it could be more cool if this brush has an option also to only smooth(average) the hair length,not the path direction(the action of the brush makes the hair have the same length,depending on strength)
    I'm working of a mane lion and it's really difficult avoid overlapping caused by wrong length.

    Another thing you could see if it's possible to do is tweaking how particles tangents are calculated at the start.
    This is really important to have some not linear workflow.
    In the past I have tried to use the tanRot vertex group to paint starting hair direction,the idea is that as when you model you have sometimes to change topology(and changing topology is a problem for particles hair edited)
    The problem is that tanRot seems to be flipped on the x axis,if I paint a particular color weight in the right side of the model it gives me and orientation,on the left side another(flipped).
    It could be cool if the direction in the left and right plane of the mesh is the same.

    About visualization I have and idea to help to see better hair particles in editing mode.
    What about particles groups?
    Hair edited particles could have and additional property,the membership to a group.
    My dream is also to have groups with different colors,but even without different colors,if groups can be hided,selected and so on could become really important.

    AND groups could be used to hair parting(group could work in 2 way,like a selection group,or like parting group),only the particles in the group are used to interpolate the children particles.
    From an user point of view the user could jump in particle edit mode,select some particles and do a CTRL-G(create group),he gives to the group a name(and what kind of group is,selection or parting) and that's all,I think it could work.

    Last,a way to transfer hair combing between meshes with different topology(same space position and shape but with some difference in edge flow and faces),sadly this is much more important that it can seems,because sometimes you have to change topology and restarting the combing from scratch can be depressing.
    At work I use 3dsmax hair,it has 2 cool features "recomb from spline" and the inverse "convert hair guides to spline" that allow to transfer the combing between meshes.
    Particles modifier is allready able to convert the particles to a mesh with only edges,there is a script that can convert edges in curves(edges to curves),so what is missing is a function that can use and external curve object(several curves in one object),or a mesh with only edges to find the particle edited combing(based on the distance)for every particles.

    Sorry again to bother,but if I don't say to you this now that you are working on it,when!
    For me your system is allready better than 3dsmax,really,so please continue developing it!

  4. pino:
    Thank you for these great ideas!

    The smooth brush extension should be easy, I'll add this to my immediate-todo list.

    About the initial hair direction. The whole weight-paint approach to define tangent direction is in my opinion quite a clumsy way to do it. I know I just removed the "make editable" button, but what if I brought it back and before making the hair editable you could paint the initial locations and velocities of particles (hair roots) directly in particle mode and then run the simulation (hair growing) based on those initial conditions. This could be very nice for non-hair particles too and allready is on my todo-list as "paintable particle distribution".

    The particle groups is quite a nice idea and would help the editing process quite a bit. I don't think it will be a good solution to hair parting though as it can't handle the ends of partings well. For example in this picture I can't imagine a grouping that could handle the ending of the parting at the back of the head nicely.

    Last night I actually coded a nearly ready solution for hair transfer with the added bonus of enabling non-hair-destructive mesh editing after combing the hair. The way it works is by disconnecting the hair from the emitter before a emitter topology changing operation and then reconnecting it afterwards. It's currently a manual operation (good for transfering hair from mesh to another) but I have plans on making the whole process automatic while in mesh edit mode.

  5. About the parting,yes,you are right,that example isn't doable with my approach,I should have thinked better!,sorry
    Actually I was thinking more on editing and selecting and I founded that maybe could work.
    About parting,I can tell you how parting is done in Houdini if you are interested.
    They use external curve to do the parting, a bit like your old/current option to use seams edges but with the advantage to be indipendent of the mesh,so you can have muscle topology for the mesh(muscle topology for an animal don't work well for parting fur in my experience,parting has nothing to do with how the mesh is done)but we have to deal with others objects

    I agree also with the initial direction stuff,actually I also don't like painting direction with weight, it was a workaround to have a way to transfer some work when changing topology,but if you are working on transfering the combing it's really a minor stuff!

    Did you really mean that it will be possible to change the emitter mesh keeping the combing?
    Let's say I have combed mesh A,but I have cloned and changed that mesh topolgy a bit and now I call this mesh B.
    You mean I can transfer the combed particle from A to B?(meshes have practically the same shape,only the edge loops and vertices counts changes,but the shape is the same)
    Seriously,this is great,it's fantastic,I don't have words for that!

    I forgot previously a little thing,it's possible in the future to have bspline interpolation NOT affecting the first point(the start point)of the hair?
    Bspline gives a smoother an better look,but makes the hair not touching the surface at start anymore and for close shoot it's visible.
    Maybe you could see if it's possible to use the endpoint interpolation type(found in Blender for example in the nurbs curve),or make the first segment always linear and the other bspline interpolated.
    Or at least a global displacement option for the hair that can have negative value so we can fill the gap when using bspline moving close to surface along the normals.

    Sorry again for bothering and keep it up,you are doing a wonderfull job!

  6. The last part of my comment about bspline was related to interpolated particles from Particles,not faces obviously(from faces bspline works really good)

  7. pino:
    Yes, some kind of curve approach (like Houdini) is what I have in mind too.

    And yes I really mean that it will be possible to change the emitter mesh and keep the combing. I haven't thought through a nice workflow for transfering yet, but in theory it should work really nicely.

    About the children from particles.. the problem is not in the interpolation, but in the fact that the child strands actually start away from the emitter mesh. Their locations are based only on the parent particles, not on the emitter mesh at all.

  8. Thanks janka,I'm so happy about the possibility to change the emitter,accurate combing takes time,redoing the thing is depressing(for example I have combed the lion I'm working on for 15 full days,but now I have changed the topology to make it better,you can understand that it's daunting(it's the 3 time I have to redo the comb!)
    Btw,great to see also you want to do the curve approach for the parting,it gives you the advantage to use the direction of the curve to find where the parting start.
    I understand now the children from particles issue,actually is really a minor stuff,particles from faces are most important and works really well.

  9. Hi Janne,
    Your work is truly extraordinary. As an animator and director of 22 years, I'm floored by the speed at which you work and by the way you implement your tools ain an artist friendly manner.
    I do however, have a question/request for brushing trajectories of particles/hairs/softboides et al.
    I made a flag that flaps back and forward and wanted to paint some idiosyncratic behaviour in the tail of the fabric. What I found is that the fabric flaps back and forward carrying the verts through much the same world space in cycles, and when I painted one section of the animation, it affected all the verts in that area (that is, if the tail is in the same spot on frame 0, 20, 40 and 80 and I paint the tail into a pleasing shape on frame 80, it affects the shape in 0, 20, and 40). I was hoping that limiting the verts with fade time would also limit the painting to those verts visible. I hope that is clear. I have a real knack of describing things no one can understand but me. :)

    Thanks again for your great work,

  10. Glenn Melenhorst:
    Yes I understand and I'll definitely look into this, as it's not the way it's supposed to work. Thanks for the report!