It started as a layout discussion of how to reorder parameters, but some of the other replies were coming in and stating to use customparamsets for other things which custom properties were better suited. When I saw your reply I interpreted it along those lines. Hence the reply as stated.
If you all you care about is dynamic layout, I still advise using the custom property over the customparamset because you can use an external layout file with a custom property to abstract the problem away from being embedded in the scene. This gives you full control over the layout of the property page including ordering of parameters and definition of PPGEvents, if needed. Parameters can be reordered at any time and take effect the next time the custom property is inspected or refreshed. That's a better solution than customparamsets as was otherwise suggested which essentially have no PPGLayout other than through the use of .preset files (which have since been deprecated), or using the workaround hack of dynamically generating all the layouts every time a scene is loaded. That is more maintenance and prone to problems. I do not disagree the Softimage layout options are quite limited, but at the same time they can respond to user input on the fly if you code as such. I do not understand what problems you're encountering in this respect. If you want a widget that isn't offered, OK, I see that. If you're missing a more elegant PPGEvent callback, OK I can see that. But I don't understand these other errors you're getting with monitoring and running farm automation with false positives. Why would UI be involved in that stuff in the first place? That is my question to you. Matt From: [email protected] [mailto:[email protected]] On Behalf Of Raffaele Fragapane Sent: Monday, December 03, 2012 6:07 PM To: [email protected] Subject: Re: reorder custom parameters I thought we WERE talking layouts here, otherwise why would you even remotely care about re-ordering parameters? Of course if you're just adding tags, go ahead, do whatever, it doesn't matter then because if a user has to see tags you have a mistake somewhere in the design or are not providing the right tools for inspection. You might as well add blobs at that point though, they are much better insurance against user mistakes and provide clear entry and exit states, and the price of ser/deser is negligible even on large amounts of them, and at that point you're at least not limited in data types anymore. I don't remember the past discussion you mention, but no, I don't like define callbacks to begin with, and sure don't use them for layouts :) I have experimented with a number of solutions over the years, including exploiting the current system with events and file monitoring, but in the end it's simply too damn limited. All you point out about files makes sense in the context you describe it in, but you're still up a creek without a paddle if you need any dynamism to the layout, whcih is what I'm referring to. PPGs (which front custom properties, unavoidably) are THE only inbuilt mechanism in XSI to offer interfaces that persist with the scene, if you need them to be created on the fly and respond to user interaction, what you describe is simply impossible in Soft, whereas it is in some other applications. You are offering a very limited subset of what a custom property is in the first paragraph, as you are limiting it to a collection of unchanging (as far as the user interaction is concerned) parameters, and something else that doesn't address the problem I'm talking about in the third. I'm now confused about what we'd be discussing here :) Replacing or tweaking parameters through events is possible, and has been done, but again it doesn't offer a thing when it comes to user interaction, and the cost can be exorbitant. Doing it sparsely like on scene load or save is far from enough, and doing it more frequently like on selections is simply going to lag the user into ripping their hair out. It's not that people haven't tried it because they don't like the idea, many have tried it and found it simply insufficient. As for names, as long as your tag has an ID bundled it's easy to repair any damage for a minimal cost, as a fall back or as a manual process. I am officially confused to hell now though about what we're trying to shed some light on, so I'll probably bow out of this :) On Tue, Dec 4, 2012 at 11:37 AM, Matt Lind <[email protected]<mailto:[email protected]>> wrote: A custom property is a structured userdata intended to be placed within a specific scene context, such as on an object, cluster or other scene entity. They're useful for tagging objects and for identifying scene items. A sticky-note, of sorts. If you're using them for any other purpose, then you should re-evaluate why you're using them at all. We do very aggressive scanning and validating of data and have never run into such a problem of 'false positives'. Not even once. We use custom properties because they provide a way of tagging scene elements that is not prone to user error. No matter how hard the user tries, they cannot change the property's "Type". Our assets have to function in software environments which need to make safe assumptions at runtime. Custom properties provide that safe haven. CustomParamSets do not as there is nothing in them you can depend on to get the same answer twice with certainty. All it takes is for a user to rename a CustomParamSet and all hell breaks loose. Often happens from routine operations such as duplicating or merging objects. Self installed Custom Properties are immune to that problem. The Layout of a custom property is separate from its definition. In fact, you can define the PPGLayout in a separate file and have it linked in using PPGLayout Logic. That alone likely avoids the problem you are now reporting. The external file supports both PPGLayout logic and PPGEvent logic. We have parameters that need to be populated by SQL queries as our assets can go years at a time without being touched. Our databases, on the other hand, go through frequent change as gameplay and other systems are frequently tweaked and honed. Tables often change in structure or get dropped and moved around. The custom properties in the scenes reading from those tables need to respond without having to be opened again. Having the PPGLayout dynamically driven from external file makes it possible as we merely have to update the external file and push the change into the workgroup. Based on past discussion, I am lead to believe you are using the ad hoc method putting logic at the bottom of your _Define callback in your custom properties to see if parameters exist or not, then dynamically stuff them in after the fact if they don't. I know some people advise that route, but I strongly disagree as it creates a scenario of complex uncertainties which leads to later instability. Try using the method I've long suggested that nobody seems to try - use events and replace the properties en masse on scene load. This involves a scene load event which scans the scene for custom properties, and compares versions of the properties in the scene vs. those installed in the workgroup. If the scene version is older, you re-instance the custom property into the scene, copy the old parameter values across to the new property then delete the old property. This ensures data is up to date and synced with the latest state of the property. Yes it is a little work to set it up, but it's significantly more reliable and easier to trouble shoot because the rules are simpler, centralized, and predictable. It also allows you to extend the system for other options such as conditional updates, deprecation, or conversion from one property type to another. Whatever problems you're experiencing, we have never encountered them here and we lean on custom properties very heavily. Matt From: [email protected]<mailto:[email protected]> [mailto:[email protected]<mailto:[email protected]>] On Behalf Of Raffaele Fragapane Sent: Monday, December 03, 2012 3:06 PM To: [email protected]<mailto:[email protected]> Subject: Re: reorder custom parameters The problem with properties having to exist in a plug-in is that the moment you need any decent extent of dynamism in the layout you are SOL, so it's not really an option, and while you could get users to ignore errors, if you have automatic log compiling, summaries, monitoring etc (and we do) then you get false positives, and those are beyond annoying and enter dangerous grounds. Even if we accept that users will not panic and will remember what failures are tolerable and which ones aren't, purely for the sake of argument, because it ain't gonna happen, when you go to the farm/automation then you have to handle all those exceptions to erroring, and sorry, but that's just NOT going to happen as the risk for an excessively fault tolerant farm environment is never, ever, worth it. The only way around the lot is to have your own property cooking to create and destroy the error prone parts of the process on various events, but again, it will only be fine if your dynamism is at creation time, the moment you want truly dynamic layouts with proper garbage collection, there truly is no way out of it (without having hundreds of parameters stashed away hidden for when you might need them, with all the unacceptable added load that entails). In short: No, sorry, custom properties and persisting faulty layouts that appear to be working despite a polluted log are not conducive to a clean and healthy pipeline, they are the exact opposite, they are a damaging and muddying nugget in the pipe that usually turns cantankerous quick. -- Our users will know fear and cower before our software! Ship it! Ship it and let them flee like the dogs they are!

