OVERVIEW OF CUSTOMISING TYPES
If you're reading this, it means you are ready to be confused. But it also means you need to configure Janus to the point where the default configuration is not meeting your needs. So let me open up with a quick overview of group types and command types. There are some important concepts that must be explained first.
First, I will be using several terms repeatedly, and those are commands, parameters, and directives. I will be using all these in the context of creating Janus types, not in context with normal Janus operations. Meaning a 'command' in Janus as you are actually using it is not the same as 'command' when I am talking about customising types.
Commands point to scene commands that change scene settings. Parameters point to item parameters, for example, light intensity. Directives, on the other hand, is a generic term I use to mean an intent to modify either a scene or item setting. Any thing that causes modification to LightWave data is a directive.
In LightWave we divide entities in two categories: item and scene. When I say 'item-related' or 'item-centric' I simply point to actual items in LightWave, which may be meshes, nulls, lights, and cameras (no bones recognised in Janus). As you know items can 'carry' plugins with them. A mesh item may have a displacement map (or displacement plugin), or a clip map. A light may also have a projection image, or a volumetric setting. Whenever a particular parameter, or plugin is related to an item, we consider that parameter 'item-centric.
However, when I say 'scene-related' or 'scene-centric' I mean those parameters that are not directlyassociated with an item. Entities such as Image Filters, background images, raytrace settings, start and end frames, etc - those are attached to the scene itself.
Janus has two lists of commands or parameters. One is item-centric (and is also referred to as group directives - because it affects group settings), and the other is scene-centric (also called scene directives).
Group types can use group directives..
Command types can use both group and scene directives.
This may cause some confusion in practice, because command types have intrinsically two ways to execute the exact same thing. Let me use the UBC (Unseen By Camera) parameter as an example. UBC can be expressed in command type like this:
ACTIVE.BG.UBC=true
And it can also be expressed this way:
SCENE.CMD=UBCBOTHON
The main point to understand here is that UBC (group directive) is the keyword. When expressed as a command type parameter (the top example) it has different syntactical rules from when is expressed as a subcommand (the bottom example). But the keyword UBC itself is universal, as well as other item-centric parameters.
Group Types vs Command Types Syntax-wise
The common parts of group types and command types are the group directives, which means the parameters that dictate how a group's settings will be set. In group types they are expressed in lines like these:
ACTIVE.UBC=true
GLOBAL.SRF="mySurface.srf"
OTHER.MATTEOBJECT=NOMINAL
While in command types they are expressed like:
ACTIVE.BG.UBC=true
GLOBAL.FG.SRF="mySurface.srf"
OTHER.BG.MATTEOBJECT=NOMINAL
Note how command types have three parameters, while group types have only two. But this is not simply the difference. Commands tell groups what to do based on a layer type, and based on what 'status' a group is in, and a group's status is totally dependent on the command's target group. So when a command is defined in this manner:
ACTIVE.BG.UBC=true
What it's actually saying is: set the active group's UBC (UnseenByCamera) to true if the command's layer type is set to BG.
Groups types' parameters, on the other hand, are interpreted passively. When a group type is defined like this:
ACTIVE.UBC=true
What this means is that if this group is considered by the command to be the active group then set the UBC setting to true.
Remember that we are still talking about group directives which denote parameters that affect settings of a group. This is markedly different from scene directives which change scene parameters and is only available in command types.
Scene directives are simple.
SCENE.CMD=fogtypeoff
That is an example of a scene directive telling the command type that it wants to have the fog off. The confusion comes in when group directives are used within a scene directive such as:
SCENE.CMD=UBCACTIVEON
Again, as I have mentioned earlier, this is completely valid, but is a possible source of confusion. Because remember, since it is executed as a scene directive its application to the group differs as well. The above directive is actually saying: set UBC to true onto the active group regardless of layer type. (I have not yet touched on override prioritisation, which will affect the final result of the settings).
In conclusion, the important thing to gather from all this is:
List of Directives
The list of directives is documented in the subcommand list. In this list you will be able to know which directive is of the group type or the scene type. When customising group types or command types, we follow the syntax for these INI files. But when we input them as a subcommand, their syntax changes as well. The subcommand list only shows the syntax when inputting it in context of a subcommand. The next sections Creating Your Own Group Types, and Creating Your Own Command Types will introduce you to the syntactical variations when using these directives in context with type customisation.
Hopefully this introduction gets you started with customising types in Janus.