Its frustrating hunting through the list of input channels. I commonly use I/C to create the node but then get stuck hunting for a channel in the flyout. I can see why position/velocity are at the top as most used, but after that things are not alphabetical and don’t have any logic. Furthermore, most of my sources don’t have these channels. I think it’d be great if Krak would recognize which channels were missing and either hide them or color them gray and list them after all the channels that DO exist.
-
The channel sorting in the I>C menu is the same as defined in the InputChannel operator, which has a bunch of sorting / filtering options (16 last time I checked), including Factory Defaults, Usage History (most often used channels float to the top of the list over time), and Alphabetical. If you switch an InputChannel to Alphabetical, all future InputChannels and I>C menus will stay alphabetically sorted until you modify the filter option again. Since the Mapping2 to 99 channels are too many, we even have an Alphabetical, Mapping Last mode to send those to the end of the list.
-
We added a Filter option to Input and Output nodes in KMX 2.5 so you can type in a search pattern to quickly find what you want.
-
You can hit the `/~ key (the upper left key next to the 1) or press CTRL+SPACE to open the ActiveType and start entering the name of any channel, and it will show up. Of course, that list is also based on the factory list we ship with, but we are trying to keep up with the changes to Krakatoa, Stoke and Frost and add any new channels to that list so you can easily find them. Yesterday I realized that we are missing OUT: MtlIndex in ActiveType, so I will do another pass to ensure we have all known channels included there.
-
I cannot check via MAXScript what channels exist at a specific level of the modifier stack. I could check what is on top of the stack, and filter out the input channels list to only include those, if that would help. We have something like that when sampling other particle systems (Active Channels Only) as there it is easy to ask for the channels on top of the stack of another particle system.
-
I was toying with the idea of making the I>C menu open a menu with the letters A to Z with the channels sorted inside the sub-menus when in Alphabetical mode. That would make the top level channel list shorter, but would require access to a sub-menu each time you need a channel.
That’s some good info. The reorder list will probably solve my problem, but it begs the question of where the Factory Default Order comes from? There’s no rhyme or reason to it. I guess my suggestion would be to remove it and let alphabetical, mapping last be the default. The number of different configurations makes me think this is customizable, where I could make the list myself?
I don’t like the idea of the flyout menus.
The Flyout menus would be useful because then all channels that start with a letter would end up in the same sub-menu, and this would allow me to give each one of them a unique hotkey. So for example if you want the Age channel, you would hit I>C>A>G (because I cannot give A to an entry if the parent menu already has a hotkey of A, Age would have the G underscored as a hotkey). Right now a lot of channels don’t have direct hotkeys in the I>C menu because I have run out of letters when they are all together.
That being said, the most important channels already have direct shortcuts, so if you want Age, you better hit SHIFT+A
The factory defaults is the order in which I use the channels
It is the order defined in the file “Krakatoa_MagmaFlowManager.ms”. Look for the function loadChannelsList() and you will find the list. You can reorder it youself, but next time you update Krakatoa, the changes will be lost.
Regarding the removal - I don’t want to remove the factory defaults mode - it is the only mode on the list that does not change. so it is the only one that lets your muscle memory remember where to find a channel. That’s why I use it.
When working in Krakatoa, most of the time I need the major particle channels used by the renderer - Position, Velocity, Density, Color, etc. That’s why they are on top of the list. Then follow other rendering-related channels like Absorption, Emission, various shader-related channels like SpercularPower etc, followed by less-often used ones, Stoke channels, Fume channels, Naiad channels etc.
Ok, here is a prototype of the Magma editor with “Show Existing Channels Only” option for the InputChannel node.
The checkbox is unchecked by default.
When checked, it will filter the current list (respecting its current content and sorting) to only the channels that are found in the PRT object(s) that the Magma is applied to. If instanced across multiple PRT objects, the UNION of the channels lists (not the intersection) will be shown, so it would be possible to make a modifier that is valid on one PRT object, but not on another if the channel does not exist in all. Let me know if you would prefer the intersection of the channel lists in such cases…
The state of the checkbox is sticky between settings via the INI file and will persist in all Magma editors in all 3ds Max sessions until changed again.
Its state will also affect the I>C menu list, showing a much shorter menu when checked.
When Existing Channels is checked, it will also include custom channels on the menu and in the node’s list (it did not before). E.g. if you make a channel called “Oatz” in a Magma modifier and then add another Magma above it and press I>C, that channel will show up in the menu, and the InputChannel node will show it on its list too.
KNOWN LIMITATION: Since I am asking for the list of the channels on top of the modifier stack (but excluding material evaluation), all Magma modifiers will show all channels on the stack, even if they don’t exist at the current level. E.g. in the above example, the channel “Oatz” created by the bottom Magma will show up in the I>C menu of both the modifier that created the channel, and the one that can actually read it. Obviously, trying to access that channel from the bottom modifier will lead to an error.
You will have to replace the Krakatoa_MagmaFlow.ms in your Krakatoa MX\Scripts\ folder. Write permissions and Administrator rights might be necessary to replace it.
Please let me know if you find any issues with it.
Krakatoa_MagmaFlow_InputChannelExistingOnly.zip (85.1 KB)
I’ll give the new one a try. I was wondering if you could load a menu from another file that wouldn’t be overwritten in the install, much the same way in which the private sanity check works in deadline?
Technically yes, I could. But that list is only half-hard-coded, and the rest is a bit procedural/conditional depending on what node is asking for it, and in what environment. The list then runs through a sorting and filtering function. So I would rather add a way to define custom sorting via an external file that just lists the channel names in the order you want them, and reorders the main list. This way, you don’t have to worry about all the elements of the arrays like data type, arity, and description. There is already a mechanism for adding custom channels to the list (via the Save Particles dialog).
But once you have tried the new feature, you might not need anything else.