Max certainly presents some unique issues related to deeply integrating FE. I am assuming the various FabricMax node types FE provides are meant to contend with Max's lack of something like a dependency graph.
Here are some thoughts and questions that are coming up for me as I work with FE in Max. I realize there may not be answers to them currently, but I think it's useful to note sort of things that we are running into:
- Is there a way to prevent Max from triggering unnecessary updates? Max doesn't seem to know when an update is actually needed, so unnecessary evaluations are kicked off: clicking and not editing an input port on a transform controller, for instance.3
- Array attributes don't appear to be available. Very limiting. Max limitation? Other options?
- Moving data between Max and Fabric: How best to set up a multi node solver? For example, if I wanted to write a custom limb solver and drive part of an existing character, what would that look like in Max? Should I use the FabricMax transform controllers, or should I use a standard Max controller and write to its inputs using parameter wiring, etc?
- Ideally I would prefer to use FE to handle as much as possible. Introducing Max specific idioms, like parameter wiring and scene hierarchy, etc., makes the implementation more complex and less portable.
- In a test I did the transform controllers didn't perform very well, but it could have been due to the nature of my implementation. In reference to #3 & #4 above, I wanted to keep as much functionality in FE as possible: I wanted to use FE constructs to move data around, not Max's parameter wiring. To this end I created a singleton to hold some data that could be accessed by each of the 451 involved controllers. This was slow and took up a lot of memory.
- We have to use DirectX, so unfortunately, we can't use any of FE's drawing capabilities within Max. This is very disappointing because a big attraction of FE has been the possibility to provide rich visual feedback without sacrificing performance.
At this point I have no strong opinions about FE's integration within Max - just questions. I am still looking at ways of solving the above outlined problems. It's very important to us that our implementation be portable because we plan on migrating away from Max.