MOPS icon indicating copy to clipboard operation
MOPS copied to clipboard

MOPs LOPs

Open pixel-ninja opened this issue 2 years ago • 5 comments

Hey, I just wanted to gauge the interest in bringing the MOPs tools into LOPs. Here's a proof of concept with shape falloff and transform modifier working on both xforms and point instancers.

I'd be happy to keep developing the LOP nodes, but not sure of the best process for integrating it here (assuming you're interested in integrating that is).

MOPs_LOPs_ProofOfConcept.zip

pixel-ninja avatar May 03 '23 22:05 pixel-ninja

I'm definitely interested, just overwhelmed with work and haven't had time to properly sit down and think about integration. Let me take a look at what you've built here! I can add you as a contributor if you want to submit pull requests.

toadstorm avatar May 03 '23 22:05 toadstorm

Fair enough! There's not really any rush, I don't know how many motion designers are really getting stuck into LOPs yet. And even if they are there still ways to leverage the SOP tools in LOPs.

Thanks! I'm running an indie license though so I probably won't be able to push without polluting repo with hdalc files. I could try making a repo with python build code for the nodes. It slows down development but the upside is much clearer git history (as there are no binary files) and they can then be built for whatever license.

pixel-ninja avatar May 03 '23 23:05 pixel-ninja

Hi Matt! I'm not totally into LOPs (yet), but it's on my list of things to learn :)

Best. Jason

On Wed, May 3, 2023 at 5:23 PM Matt Tillman @.***> wrote:

Hey, I just wanted to gauge the interest in bringing the MOPs tools into LOPs. Here's a proof of concept with shape falloff and transform modifier working on both xforms and point instancers.

I'd be happy to keep developing the LOP nodes, but not sure of the best process for integrating it here (assuming you're interested in integrating that is).

MOPs_LOPs_ProofOfConcept.zip https://github.com/toadstorm/MOPS/files/11391570/MOPs_LOPs_ProofOfConcept.zip

— Reply to this email directly, view it on GitHub https://github.com/toadstorm/MOPS/issues/332, or unsubscribe https://github.com/notifications/unsubscribe-auth/AC47R544IZRVYVQSZK6TXVDXELLFXANCNFSM6AAAAAAXVAEZAM . You are receiving this because you are subscribed to this thread.Message ID: @.***>

tweekskratch avatar May 04 '23 14:05 tweekskratch

@pixel-ninja the python thing sounds like an interesting option for sure. i could handle the FX license conversions if you supply the code.

looking through your code, there's a lot I still need to familiarize myself with regarding how various instance transform types work in LOPs, but your code comments are helpful. Things I noticed:

  • transforming references that are not specifically point instances is very slow!
  • the transform operations stack, because of how USD wants to have a kind of additive history of each transform. this could get messy with multiple MOPs modifiers applied. is it possible to instead overwrite a single output "mops" transform repeatedly, similar to how MOPs handles it in SOPs?
  • does it make sense to write some analogue to MOPs Apply Attributes for handling all the various kinds of transformations that MOPs does? thinking about nodes like MOPs Randomize that can either accumulate or overwrite transforms in local or world space. it can get complicated writing all these exceptions into every node. Transform Mod is an easy starting point because it's always additive.

It would probably be a good idea to carefully scope what MOPs-like tools are worth translating into LOPs land! I'm getting sweaty just thinking about dealing with pivots and MOPs Orient and all that.

toadstorm avatar May 04 '23 17:05 toadstorm

  • Yeah I'll need to do some digging on the transform speed for references. I suspect it either has something to do with either reading the primvars or adding the transform ops.
  • I thought that too. The Xform LOP seems to have options for flattening and overwriting the xformOpOrder stack so it must be possible but I couldn't find a vex function for it. I might need to hit up SideFX. Failing that it should be possible with python using the usd module but I'm not sure of the speed implications of that.
  • Probably yeah. For this initial test I didn't want to deal with nested hdas though. There is also a lot of duplicated vex code that might be better moved to a central mops vex header (i.e. near identical linear falloff code for sops, lop xforms and lop point instances).

Agreed. I tried to completely avoid pivots here. haha. I'll do some more tinkering and let you know when I have something worth checking out.

pixel-ninja avatar May 04 '23 22:05 pixel-ninja