User Tools

Site Tools

You are not allowed to perform this action

THIS DOCUMENT IS INCOMPLETE. THE INFORMATION FOUND HERE IS BEING REVISED AND INCORPERATED INTO THIS DOCUMENT.

Enhanced Remote Control (ERC)

Developed By:

Developed For:

  • Poser® Format Content

Also Known As:

  • Enhanced Morph Control (EMC), 2000-2001 - Rob Whisenant
  • Extended Motion Control (EMC), 2002 - Charles Taylor
  • Arithmetic Remote Control (ARC), 2003 - “VK”

Authored By: © 2000, 2006 Rob Whisenant

Frequently Asked Questions

Preface

ERC consists of a number of methods for remotely controlling various channels within Poser (4+) content. Previously referred to as Enhanced Morph Control (EMC), it has since taken a more fitting name… given that the “Morph” moniker implies a limit to the scope of what is actually possible. ERC, as does its predecessor (EMC), boils down to an exploitation (otherwise known as a 'hack') of the internal data found in Full Body Morphs (FBM); a feature implemented in Poser 4. The “channels” that can be influenced by ERC span the gamut of those within Poser's content files, with a few exceptions…

History

The Beginning

ERC's predecessor, EMC, was first brought to the attention of the masses in late June 2000 by Charles Taylor and myself; in a thread on the “Character Creators” forum of Renderosity (I was the moderator back then). The concept of linking a property to another wasn't new by any means, in fact higher level applications had been doing it for some time. Poser even had a simplistic means of doing it… it was getting Poser to use some form of expression, that was the challenge.

It all became public knowledge when Charles made a post looking for a way to “…make a morph channel affect more than one body part.” In answering his post, I first stated that it wasn't possible. I didn't want to elude to my findings yet, which were later labeled Partial Body Morphs (PBM), because I needed to pin down the specifics of how it worked before I tried to explain it to someone else; I was stalling. He replied with findings of his own on what later came to be known as Joint Controlled Morphs (JCM), forcing me to speak up. JCM had been something I'd been attempting in the months prior but failed to place the data in the correct location… I'd been trying to put the code in a controlling channel and point it at the slave, when it should've been the opposite (at least, to operate the way I intended it to).

At the point that Charles asked about the possibility of performing such a task in Poser, I'd been fiddling with it off and on for a couple months… but I had become frustrated with it and shelved my work (I was serving my country at the time, and my duty to country had higher priority). When I first began pursuing this, I was no stranger to the cryptic internals of Poser's files… but I didn't yet completely understand them. A lot has changed since then ;-).

Focus at that point seemed to be on controlling morph targets, so naturally the next candidate was conforming figures (i.e. Clothing; this later came to be known as “crosstalk”). Eager to find a solution, Charles and I, independently, set after it. It wasn't long… we already had the basic concept nailed. Tutorials on how it was accomplished came within a matter of days and EMC was born (you're reading the evolution of mine, Charles' can be found at the link above). Aside from the initial thread, for whatever reason (or perhaps no reason at all), Charles and I headed our own directions. He seemed fixed on conquering the conforming issue on a grander scale, I was hungry for the specifics of “why?” and “how?” it worked… and if there was more.

Evolution

Beginning a month or so later, having the information fairly fresh in my mind, I couldn't “leave well enough, alone”. The newness, and shock of actually getting it to work, began to wear a little thin and it occurred to me that what we discovered could quite possibly affect more than just morphs. So, I began testing; any and every channel I could find. I was ecstatic with what I found. Nulls (valueParm), morphs (targetGeom), rotation, translation, scaling, deformers, lights, cameras… they all worked! One factor that slowed research a bit was that this was all being explored in my “spare” time …again, I was still in the military at the time and obligations to my country consumed the majority of my day. I had also been developing content to broker via DAZ Productions (the Poser Division of Zygote, at the time)… so it took a bit longer than it could/should have to make publicly known. The first announcement I made, regarding my continued research and EMC's evolution into ERC, was in late March 2001. Since then, I don't think I could count the number of times I've tried to explain it… even to a few folks at Curious Labs (the previous owners of Poser). But, I digress, I'm far from done… (see DAZ|Studio).

Purpose

Simply put? The automation of [multiple] parameters based on the manipulation of one (or many).

PBM | Partial Body Morphs

A method much like Full Body Morphs (FBM). The difference being, instead of the controlling channel being located in the “BODY” actor of the figure, it can be placed in any actor. This method of ERC has been used quite extensively in several figures to date, beginning with DAZ's 2nd generation Millennium figures. This method allows you to place the controlling channel in the body part you would logically want it. For instance, you have a morph for the breast size of Victoria (2), or pectoral size of Michael (2)… instead of having to adjust a morph for both the right and left collars, you place the control channel in the chest group and have it simultaneously control both of them.

JCM | Joint Controlled Morphs

A method in which joint rotation channels can be linked to adjust morph channels as the actor rotates (axis of rotation being at your discretion). This is useful because you can accomplish things like having the elbow of your figure bend, and a flex morph for the bicep is adjusted accordingly. This method, when used correctly can give your figures more realistic movement without the tedious work of adjusting morphs every time a joint is moved.

JCJ | Joint Controlled Joints

A method in which joint channels can be set up to control other joint channels. This could be useful in a number of ways. You can accomplish things like rotating a bicycle crank, and having the rear wheel follow in kind. Or, cascade like child joints of a figure to mimic that of the parent, for things like swimming fish where smooth transition across multiple groups is needed.

MCJ | Morph Controlled Joints

A method as useful as the others, imagine being able to adjust a morph for the flexing of a bicep and having the elbow bend depending on the amount of morph applied.

CM | Conforming Morphs

aka “Super Conforming”

A method used to compensate for problems such as body parts poking through clothing when they are placed in extreme poses. This method, when used in compound cr2s, can be set up to adjust morph channels in conforming clothing figures when the target figure is positioned, eliminating the peek-a-boo body parts.

MCT | Morph Controlled Translation

A method used to accomplish things like adjusting a morph for, say a figure's face, that decreased the distance between the eyes… Well, you'd also need to translate the eyes to into position so that they fit into their sockets and still rotate about the centerpoint of the eyeball.

JCT | Joint Controlled Translation

Useful for things like having a mechanical device, that has a track to follow, be able to do that as the base of said device rotates.

TCM | Translation Controlled Morphs

A method that can be used for things like the animating of a ball that compresses as it translates toward a wall or the ground to simulate the effect of inertia.

ETC | Etcetera

I've merely described a subset of relationships between joints, morphs and translation in the paragraphs above. There are, however, numerous correlations that can be created beyond these. If you are interested in a much more scientific look at the posibilities, take a look at the tutorial by “VK”, located at http://www.atlantis23.com/arc_download.html.

Function Follows Form

Form

Every method of ERC follows the same structure, that is to say it uses the same 4[5] statements. There are actually 6 different forms of ERC, 5 of which are comprised of the first 4 statements, and 1 comprised of all 5. The statements are as follows:

  1. A statement that declares a channel as being controlled, in some way, by another channel
  2. A statement that points to the figure that has control
  3. A statement that points to the controlling actor within the figure named above
  4. A statement that points to the channel within that body part, that has control
  5. A statement that gives the ratio at which control is applied

Scope

In an effort to help you realize the potential of these statements, I've included a table below. Pick any item in column A, match it up with any item in column B, and with the exception of “FB” and “PB”, place the word “controlled” between them and you have a “method”. Keep in mind, because all methods are based on the same theory, all methods can be cascaded off of one another. This also makes them susceptible to loops, which in most cases would be undesirable because the effect would be exponential… and likely cause Poser to become unresponsive and/or crash.

A B
Figure Specific & General Overall
FB - Full Body
PB - Partial Body
N - Null (used in FB & PB) N - Null (used in FB & PB)
M - Morphs M - Morphs
J - Joints (XYZ) J - Joints (XYZ)
T - Translation (XYZ) T - Translation (XYZ)
S - Scale (XYZ) S - Scale (XYZ)
PS - Propagating Scale (XYZ) PS - Propagating Scale (XYZ)
Tpr - Taper Tpr - Taper
TOff - Translation Offset (XYZ) TOff - Translation Offset (XYZ)
Camera Specific
Foc - Focal Length Foc - Focal Length
H - Hither Distance H - Hither Distance
D - Dolly (XYZ) D - Dolly (XYZ)
Rll - Roll Rll - Roll
Ptch - Pitch Ptch - Pitch
Yw - Yaw Yw - Yaw
CamAs - Camera Auto Scale Camas - Camera Auto Scale
CamAc - Camera Auto Center (XYZ) CamAc - Camera Auto Center (XYZ)
CamAf - Camera Auto Focus (XYZ) CamAf - Camera Auto Focus (XYZ)
Light Specific
Ss - Shadow Strength Ss - Shadow Strength
Dms - Depth Map Size/Strength Dms - Depth Map Size/Strength
Kd [R/G/B] - Red/Green/Blue Value Kd [R/G/B] - Red/Green/Blue Value
KdI - Color Intensity KdI - Color Intensity
LfoS - Lite Fall Off Start Angle LfoS - Lite Fall Off Start Angle
LfoE - Lite Fall Off End Angle LfoE - Lite Fall Off End Angle
LaSD - Lite Atten Start Dist LaSD - Lite Atten Start Dist
LaED - Lite Atten End Dist LaED - Lite Atten End Dist
Deformer Specific
Mag - Magnet Mag - Magnet
MagB - Magnet Base MagB - Magnet Base
MagZ - Magnet Zone MagZ - Magnet Zone
WvP - Wave Phase WvP - Wave Phase
WvA - Wave Amplitude WvA - Wave Amplitude
WvL - Wave Length WvL - Wave Length
WvSt - Wave Stretch WvSt - Wave Stretch
WvAN - Wave Amplitude Noise WvAN - Wave Amplitude Noise
WvFN - Wave Frequency Noise WvFN - Wave Frequency Noise
WvSin - Wave Sinusoidal WvSin - Wave Sinusoidal
WvRect - Wave Rectangular WvRect - Wave Rectangular
WvTri - Wave Triangular WvTri - Wave Triangular
WvTurb - Wave Turbulence WvTurb - Wave Turbulence
WvOff - Wave Offset WvOff - Wave Offset

Function

As mentioned above, Poser provides 6 unique forms of ERC:

valueOpPlus

This form of ERC is used to add the value of the controlling parameter to the value of the controlled parameter, applying the result to the controlled parameter.

valueOpMinus

This form of ERC is used to subtract the value of the controlling parameter from the value of the controlled parameter, applying the result to the controlled parameter.

valueOpTimes

This form of ERC is used to multiply the value of the controlling parameter by the value of the controlled parameter, applying the result to the controlled parameter.

valueOpDivideBy

This form of ERC is used to divide the value of the controlled parameter by the value of the controlling parameter, applying the result to the controlled parameter.

IMPORTANT: Care must be taken to prevent a divide by zero condition (whereby a value of 0 is specified for the controlling parameter), as it will cause Poser to crash.

valueOpDivideInto

This form of ERC is used to divide the value of the controlling parameter by the value of the controlled parameter, applying the result to the controlled parameter.

valueOpDeltaAdd

The most prolific and the first to be discovered, this form of ERC is used to control the value of the controlled parameter by the result of an expression (a ratio multiplied by the value of the controlling parameter), applying the result to the controlled parameter.

Considerations

Master? Slave?

If you've made it this far, there will likely come a time where you'd like to have one channel affected when more than one other channel is adjusted. This is possible by way of the example below. As you can see, all your doing is simply using the same 4[5] statements stacked on top of one another… referencing different channels.

Example:

			interpStyleLocked 0 // (for reference purposes)
			valueOpDeltaAdd // Identifies the following as the controller
				Figure 1 // Control Figure
				BODY // Control Actor
				FBMObese // Control Channel
			deltaAddDelta 1.0 // Control Ratio
			valueOpDeltaAdd // Identifies the following as the controller
				Figure 1 // Control Figure
				BODY // Control Actor
				FBMEmaciated // Control Channel
			deltaAddDelta -1.0 // Control Ratio

In contrast, you will also likely encounter situations where you want one channel affecting multiple others. The important thing to remember here is that in every case you aim to use this technology with your own work, you MUST place the ERC declarations in the slave channel. The slave being the channel where you want the effect to take place, and the master being where you want control to stem from.

One thing to keep in mind is, though you can place the master channel in an actor of the hierarchy and affect the actor(s) above it… due to a redraw issue in Poser, any link established beyond an actor that is greater than a single level higher (e.g. Grandparent; the parent's parent) may not redraw until something is done to force Poser to redraw the scene (like moving the camera).

Dependency Hierarchies

aka “EasyPose”

This also brings up the topic of cascading control or dependency hierarchies. By placing ERC statements in a slave channel and then also placing ERC statements in that channel's master (to yet another master), you effectively cascade control from the topmost master in the chain down to the very last slave. It doesn't stop there either… because, you can branch control at any level and create subsequent hierarchies within. Complicated? Sure…

"INJection"

Some have asked whether ERC can be “injected” from an external file. The answer is yes, but [so far] it cannot be removed in the same manner. If multiple attempts at injecting ERC are conducted, what will happen is, Poser will stack each subsequent attempt on top of the previous attempt. Things can get pretty sticky, pretty quick…

Issues

Crosstalk

What is it?

"Fixed" Names as a Workaround

The NULL Approach