Page MenuHome

A new modifier, Morph a source mesh to a Target mesh modifier
Closed, ArchivedPublicPATCH

Description

Hi

I have been working on this modifier and it is at a point where I thought that it deserves a review by our patch team`s attention.

Basically this modifier will morph the source mesh to a given target mesh(assuming that both have the same vert order naturally, for now). It might sound silly to have morph modifier since Blender has shapekeys, but having it as a modifier with weightmaps support makes it possible to create many variations of the source and much more interesting animation possibilities.

It has 2 modes (via interface toggle)

- 1st mode is plain morphing the source to target. In this mode the modifier works like a transparency over the modified mesh(if there are modifiers under the morphtargetmodifier). So depending on the shape of the previous modifier you can get results decent results. The difference is calculated based on the base source mesh(original mesh) and the target mesh.

- 2nd mode uses the mesh from the modified mesh by the previous modifier (derived mesh). The difference is calculated based on the derived mesh and the target mesh


The modifier supports selecting a target object, weight maps, weight multiplier and strength.



If it makes to the trunk

+I will add these features for the next version

- The modifier should be aware of the target mesh`s mesh state (does it have modifiers applied, is it animated etc)

- Maybe carry over vertex/ polygon properties as well so it is not just shape transformer

- if possible support real time updating of the source when target is in Sculpt mode. So you can sculpt the target and see the results on the source (one with the modifier)

And for the future versions

- I want to make topologically aware morphing where mesh vert order has lesser importance when morphing so that morphing between arbitrary meshes with topological similarity can happen.


Please check out the attached files. I tried to provide sensible dicumet. And please feel free to ask for better coding standard, improvement or optimization. I would like to make it better naturally. But for the initial version I am done with the features that I have planned for.

thanks

updates
[[https://developer.blender.org/T34635#42 | Detail for the patch from May 20 2014]]

[[https://developer.blender.org/D542 | Diff Review for May 20 2014 patch]]





kursad k


Event Timeline

Btw I forgot to add that I also would like to add a way to make it work with bone spaces if the source has bones in the future versions. Ton has mentioned a botu a script for corrective morphing but I believe a modifier would be a better candidate.

Uploaded an updated patch with some warnings quited.
diff_4Review_v2.diff

Checked on the functionality, and I couldnt get this working in a simple cases - attached.

Hi

Just for the record, this current version wont take a target mesh with modifiers into account. This version intended to work with raw target meshes.

thanks

Hi

I added a new Linux64 binary build for testing. (portable install)

https://www.box.com/s/v3bicxewcmpt8sxdl2ok


thanks

Hi Kursad,
Congrats on the review :)
I added a Win7 x64 build for the patch on graphicall for testing = http://www.graphicall.org/1044

Happy Morphing :)
Cheer's
~Tung

Hi @kursad k (kursadk),
any news on this? Is this ready for inclusion?

kursad k (kursadk) added a comment.EditedJan 15 2014, 5:39 AM

@Thomas Beck (plasmasolutions)

Unfortunately the devs are not seem to be much interested in my patch. It is pretty sad because I need this patch`s functionality 2-3 times a week at least. It is hard to keep the patch consisten with the updates. ;( And I am sure it could have been useful to others as well.

At this point I am not sure about what I can do to get this in. However I encourage the interested parties to talk to the devs directly. I brought it up couple times already.

Hi @kursad k (kursadk),

as I am a Blender developer too I would not quite say that we got no interest ;)

For me, the current state of the patch is important: Are the points from the introduction done already? Because the problem is: When it is in trunk, we have to fix bugs and implement features - therefore it should be the most feature complete as possible...

Greetings, Thomas

@Thomas Beck (plasmasolutions)

I do not remember being asked to work on any fixes or bugs. There has not been any real talk since I submitted my patch. Considering that there was not much activity since then I stopped working on it. it has been almost a year.

If it is accepted into the trunk I will be more than happy to work on it again and squash any bugs along the way while implementing new features probably. When I finished my initial verison I made my tests and used in cases it seemed to do what I wanted it do.

Ok, this weekend I will review and test it and give you feedback.
If we agree on including it I will push it to trunk (previously I will discuss it with Cambell).

Thomas

@Thomas Beck (plasmasolutions)

Let me know then. I will have some free time this week. If you guys decide to include it in the trunk, this week will be good time for me to focus on it.

I'm currently working on a project, this modifier will greatly help with the animation rig I'm working on. Has there been any additional progress in this area?

kfoong

There has been no progress since no one accepted this modifier into the trunk. It was compiling fine last time I checked.

If it's ready, I hope it will be added to trunk soon. Many rigs will definitely will benefit from this feature. Maya and other software already has this feature, which allows for some pretty interesting things to be done as you already probably know. But yeah, I hope it will be added to trunk, there's lots of good work there.

kursad k (kursadk) added a comment.EditedApr 20 2014, 5:13 PM

kfoong

I know the importance of the morph modifier as well and it was puzzling to see that the devs did not see enough importance to integrate it in Blender. As an artist I need this kind of modifier for modeling, animation and rigging a lot of the times and I am sure it is very helpful to others too.

The modifier does not have all the fanciness at the moment, like proper pose space deformation stacking or respecting couple other rigging possibilities. I am glad that I did not put all that time into it considering that it is left in limbo. However if it is somehow accepted I might be able to add other fancies that I wanted in it when I have more time.

My main reason of attempting to write this plugin was the limitations of the current morphing in Blender. I happen to need to work with other softwares for modifying my meshes, therefor it is important that the morphing is not tied to some internal data structure(which it is in Blender atm). This limits the artists, almost strangles them because of the implicit nature of the morphing in Blender. You are tied to those sliders and working on the model offline. And also the morphing happens before everything else so you cannot be creative with your morphs and modifiers.

Another sucky thing with the current morphing is that you cannot edit/mix your morphs and see your results while editing morphs because there can be only one morph target enabled in edit mode as far as I know.

I hoped that my modifier filled that gap.

cheers

I suggested at some moment a similar feature but inside Shrinkwrap modifier, like a 'direct' or 'index' mode...

I will watch this closely, I look forward to it getting added. Have you tried blender's IRC? Seeing as adding this should bring Blender's animation tools closer to the level of Maya's, I think it should get the attention of some developers.

kursad k (kursadk) added a comment.EditedApr 20 2014, 7:21 PM

kfoong,

I actually talked to Ideasman(campbellbarton) couple times. The onyl way they probably will do if more users pressures them.

@lower case (lowercase)

I agree about the shrinkwrapper. I also thought about making this part of the shrinkwrapper but I did not want to patch an existing modifier, so I created a new one, also it is easier to that way because you can keep things separate.

Updated this modifier patch to the newest trunk

- was not applying cleanly as some things changed: f.e. macros were introduced to ease the vgroup access.

To me, it really looks a bit rough atm, those are the things (only from my side) that are stopping it from being considered for inclusion:

  • no documentation (this is very important as every user should know what to do with it and how to do it)
  • no checks if you enter an object that owns no vertices (crashes are occurring)
  • no support for modifiers on the control object (when I add a wave mod on a control object I would assume that the morph mod would result in the same deformations)
  • not too variable atm... don't you think that there should be a way to automatically determine the position of the target vertices (atm, the vertex order has to be exactly the same)

And as a last thing: Yeah, it's really a long way this mod took already but don't forget that many of us are working on Blender on our free time, that's not always easy to plan ... but what you always should do is to help us by keeping your patch up to date so it applies to trunk.

@Campbell Barton (campbellbarton) did you look at it already and have other / further requests?

Greetings, Thomas

@thomas (thomas)

I do understand how our Blender is developed and I realize how hard it is to develop software especially when people have to put their free time into it whenever they can. I was not trying to be bossy whatsoever, but it is just sad that we have so many patches laying around needing to be ultimately discarded or incorporated into Blender.At the moment most are in limbo and this is hard for the developers of the patches also hard for the Blender devs because at some point they have to purge this stuff.

Now back to my patch. I made what i thought would be the best way to correspond my and similar minded artists`s needs in a reasonable time frame for me. When I was done with it I opened a forum page, included couple intro videos and a working scene sample. I did not make other efforts to improve it or document it because I did not want to put more of my time into something that was not going to make into trunk in case. Because it gets harder to maintain my own branch constantly against the trunk. If it was not accepted to Blender, then I probably would just abandon it.

So that was the first reason why you are seeing what you mentioned above. The second reason why it feels rough because I wanted to hear complaints, critics and some mentoring to make it better before integrating into the main . However that does not happen easily with active Blender development going on mostly because all of our devs are already busy with more important stuff, and keeping up with constant updated builds is not so easy for me. I already talked to Ton and Campbell about it back then on the irc, but there is so much pushing I can do. It will be just plain annoying at some point. So I just abandoned it after some months. Well our lovely users keep poking at it though.

As far as your suggestion go, I agree with them and almost all of them were on my personal todo list well except that a check on the integrity on the target, that is a must have fix . There can be many ways this modifier would crash Blender due to data access. Thanks for reporting.

Anyway as I mentioned in my original post above, if there is intention of including in Blender I would be willing to put more time and make it better as good as I can. However that is your call guys.

cheers

@kursad k (kursadk) It's a bit like a slap in the face for me and all of us that are reviewing patches - we are constantly reviewing them and when we consider them good enough we are integrating them - yes, there are exceptions where some important patches slip through our fingers, but all in all we're getting better at processing them.
I agree with you that when those patches are laying around it's depressing for the author - I and in general we Blender devs are really trying hard to improve the situation ... I would not have rebased your patch when I wouldn't care! Btw. we are very friendly when I look at other open source projects - often it's like that: Patch is not compilable->reject it ;)

I disagree with you though on the order of the steps you propose:

  • The author has to make sure the patch is current when he likes to get it in. It's no big deal to keep it up to date, especially when you rebase it once a month!
  • First, you have to develop it so that it is bug free and is as useful as it could be.
  • Then there has to be documentation! No feature commit without doc!
  • After that it could go to trunk if enough users need it and the code quality is good enough. I don't want to have half way done features in Blender, do you? Or features that are only working for one use case and you have to know for which one (f.e. only when having no mod on control objects).

I hope that you see that I want to help you get it in, not block you...and that this makes the further steps clear.

P.S.: Not the devs should give you feedback, users should. And therefore it doesn't matter if devs are working on other features, you should create builds and put it out in the wild (as you probably did / link to them &vids & threads in the patch description!).
I create the Blender developer sneak peek and rocket science series https://www.youtube.com/channel/UCQB_JPnenWON0sB3QBoGx-Q , maybe you know it. There I present interesting patches from time to time... but with very limited time I will only show feature complete patches!

Many greetings, Thomas

kursad k (kursadk) added a comment.EditedApr 24 2014, 7:23 PM

plasmasolutions

Thanks for taking time to create an up to date diff file. I appreciate your help and intentions. In the end we all are trying to make/expand a tool that is useful and joyful to use by Blender users. Some of us are working harder than the others but the bottom line is that we all are well intentioned and I believe every Blender user/developer appreciates all efforts regardless of whether they can express those feelings properly at all times.

While I agree with your points, it is really hard to keep a patch to up to date regularly until the patch is approved, given that the Blender code base changes regularly and some of us do not know the source that well to be able to keep it so neat every time, considering that an approval might take a long time. This almost implies that I need to rebase and fix lines every couple days. Also there are times I personally can`t touch Blender for months do to my professional production art work. However I understand your your points, and all are well expressed.

I applied the diff and it seems to work against the current trunk. I will see what I can do from this point on.

p.s: I did not know about your youtube channel I will check out, thanks for letting me know
Cheers

Hello, just curious on any updates? If there's anything I can help with or help test, I'd be glad to help out.

kfoong

I got a new system, so I had to move all my dev stuff and setup a likes. I got it patched and build Blender with the modifier, but I have not had time to start finalizing it. I am hoping that I will be able to start working on it very soon

cheers

k

kursad k (kursadk) added a comment.EditedMay 8 2014, 9:31 PM

Hi

I started adding some stuff to my progress wiki. I am intending to keep it updated as I go however I do not have a clear timeline since I can do this only on my free time.

This is the original list of the things I wanted to implement. Please list any additional wishes/bugs to here or to Blender artist forum page. I will try to keep an eye on both.

http://wiki.blender.org/index.php/MorphTarget_ShapeBlender_Modifier

cheers

Some Updates

http://wiki.blender.org/index.php/MorphTarget_ShapeBlender_Modifier

[DONE] [FEEDBACK] The modifier should be aware of the target mesh`s mesh state (does it have modifiers applied, is it animated etc)

[INPROGRESS] Maybe carry over vertex/ polygon properties (weights, edge values etc) as well so it is not just shape transformer

[INPROGRESS] Bug cleanup.

[DONE] [FEEDBACK] Real time updating of the source when the target is in Sculpt mode. So you can sculpt the target and see the results on the source (one with the modifier)

[FEATURE] Topologically aware morphing

[FEATURE] Corrective morphing with bone space deformations

[FEATURE] Add vertex color morphing

Hi

Here is the most recent patch that is supposed to take care of

  • crashes
  • taking the target item`s modifiers into account
  • and some other refactorings

You can use the attached blend file to do the preliminary testing.


I will start working on the help page for the modifier. However if it is going to be rejected it is best to know it early.

I also updated the forum page.

http://blenderartists.org/forum/showthread.php?337131-Updated-Morph-Target-Modifier-by-kkar

And the wiki page
http://wiki.blender.org/index.php/MorphTarget_ShapeBlender_Modifier

cheers

k

kursad k (kursadk) renamed this task from [WIP] A new modifier, Morph a source mesh to a Target mesh modifier to A new modifier, Morph a source mesh to a Target mesh modifier .May 21 2014, 2:07 AM

Can you make a phabricator differential patch for review? It would help a lot!

kursad k (kursadk) updated the task description. (Show Details)
Campbell Barton (campbellbarton) changed the task status from Unknown Status to Unknown Status.Nov 19 2014, 9:01 PM

This kind of functionality can work better with nodal modifiers, which is planned.

Id rather leave this for now. archiving.

@Campbell Barton (campbellbarton) I was a little skeptic about this modifier for the same reason, it's really a workaround for nodes. But gah! I could certainly use this modifier now, well only if it gets the ability to use modified meshes as targets..

Keen Foong (kfoong) added a comment.EditedMay 3 2015, 9:58 PM

Yeah especially since we've been waiting for it for years, its a shame to see it archived like this... Unless nodes come in the next couple of months