Forum: Poser Technical


Subject: Some observations on conformers

_dodger opened this issue on Aug 07, 2003 ยท 18 posts


VK posted Wed, 20 August 2003 at 5:38 AM

As far as my experience goes, the channel parameters are: - "initValue": The initial value of the channel. The channel is set to initValue, when you use an "Edit > Restore" menu command, or when you option/alt click the dial name/dial slider. By default, initValue is 0. To store a new initValue for a dial in Poser, you set the dial to the new value, and choose menu "Edit > Memorize > Element". Poser copies the actual dial value to the initValue parameter. - "static" and "staticValue" define, whether a channel is animatable or not. An animatable channel has "static 0" (off), and the staticValue is omitted or ignored. A non-animatable channel has "static 1" (on), and the actual channel value is stored in the staticValue line. By default, the deformer channels (trans, rot, MTs, etc.) are animatable (so static=0 and no staticValue). The "offset" channels are non-animatable (thus static=1 and staticValue available). You can make any channel static (non-animatable), but you can't make an offset channel animatable. The "geomChan" channel (sets alternate geometries) can be static or not. In the Poser 4 skeleton figure, the hand shapes are animatable, so the geomChan has static=0. In the "P4 Nude Man" figure, the geomChan (chooses the hip geometry) is static, because it is set by the "Genitals" menu, and shouldn't be animatable. - "k" lines: The keyframe data stores the key index, and the actual channel value (if the channel is animatable). The key index is a base zero index (like the delta index of a MT), it starts with 0 for the first frame. Line "k 0 1.2" means, the channel value in the first frame is 1.2. More frames add more "k" lines. When a channel is static=1 (non-animatable), the channel value (dial setting) is stored in "staticValue", and existing "k" lines are ignored (but not removed). When a channel is static=0 (animatable), the channel value is stored in the "k" lines, and an existing staticValue is removed (IIRC). - The "offset" channels are very special. When a library or document loads, Poser copies the origin coordinates to the three "offsetA" channels (first block of offset channels), and the inverse (negative value) of the origin to the "offsetB" channels (second block of offset channels). The offsetBs are the exact inverse of the offsetAs, so "0" becomes "-0". Poser uses the channels as templates to store the origin data, so the channel values are always replaced by the respective origin data at runtime. The offset channels are only required, if the object needs a defined rotation center (for rotate & scale channels). The offset channels are always static, i.e. the origin coordinate is stored in the staticValue (and initValue) parameter. Unfortunately, the offset channels behave not very consistent: Changes of the origin data in the Joint Editor are stored in the "origin" parameter and the staticValues of the offset channels. But when the Joint Editor is open, you can make the offsetA channels visible in the dial palette, and set the channel values. However, changing dial values aren't correctly updated. Since the offset channels are always static, the origin data is not animatable. Some of my models need dynamic rotation centers, so I searched for a method to create animatable origins. I found out that every Poser object has two (static) origins by default. Obviously, Poser uses the offset channels to create its own origin. Thus, you can add a second set of rotation/scale channels, to rotate/scale about two different centers. And since Poser uses channels to create the origin, you can write ERC-code to modify the origin dynamically. The code adds a dial, for example "xCenter", so you can set the x coordinate of the origin. The basic version of the code needs 2 channels for one dimension, more complex variants need 4 channels per dimension (plus one optional master channel).