Wed, Nov 20, 12:03 AM CST

Renderosity Forums / Poser - OFFICIAL



Welcome to the Poser - OFFICIAL Forum

Forum Coordinators: RedPhantom

Poser - OFFICIAL F.A.Q (Last Updated: 2024 Nov 18 10:25 pm)



Subject: How do I use erc?


  • 1
  • 2
xantor ( ) posted Mon, 24 January 2005 at 1:37 AM · edited Wed, 20 November 2024 at 12:02 AM

I am making some 4 wheeled vehicles and I want the wheels to turn using one dial, how do I do that?


Little_Dragon ( ) posted Mon, 24 January 2005 at 3:51 AM

file_174680.jpg

Open your CR2 file in a text editor. In the BODY section, add the following ValueParm channel, like so:
           valueParm WheelsRotate<br></br>                      {<br></br>                   name WheelsRotate<br></br>                   initValue 0<br></br>                 hidden 0<br></br>                    forceLimits 4<br></br>                       min 0<br></br>                       max 1<br></br>                       trackingScale 0.004<br></br>                 keys<br></br>                                {<br></br>                           static  0<br></br>                           k  0  0<br></br>                             }<br></br>                   interpStyleLocked 0<br></br>                 }<br></br>

That'll give you the master control dial.



Little_Dragon ( ) posted Mon, 24 January 2005 at 3:53 AM

file_174681.jpg

Then, for each wheel body-part, insert a valueOpDeltaAdd block in the appropriate Rotate channel:
                  valueOpDeltaAdd<br></br>                             Figure 1<br></br>                            BODY:1<br></br>                              WheelsRotate<br></br>                        deltaAddDelta 1.000000<br></br>

This will slave that channel to the master control dial.



xantor ( ) posted Mon, 24 January 2005 at 6:04 AM

Great! thank you.


ziggie ( ) posted Mon, 24 January 2005 at 9:31 AM

Little Dragon: where will the WheelsRotate dial appear..? In with the main Body parameter dials.... or in the dials for the wheels..?

"You don't have to be mad to use Poser... but it helps"


kawecki ( ) posted Mon, 24 January 2005 at 10:13 AM

"where will the WheelsRotate dial appear..?" In the Body. The value after deltaAddDelta, in this case 1.0000, is the scale factor of the rotation and can be negative.

Stupidity also evolves!


xantor ( ) posted Tue, 12 February 2008 at 6:22 AM

Can this be done using a dial instead of in the body?

I mean that if I have a moving part and want the movement dial for that to affect the erc parts can that be done?

For example, a boats rudder to be able to be turned by turning the steering wheel on the boat.


bopperthijs ( ) posted Tue, 12 February 2008 at 8:20 AM

There is a difference in this between Poser6 and Poser7 in this. I remember when I made my beachchair I wanted to make it foldable, but valueOpDeltaAdd didnt work and I had to use the new valueOpKey but that doesn't work in Poser6.
There is a workaround for this: change the versionnumber in the cr2 file from 7 to 6 and use valueOpDeltaAdd so it will work in both versions.
The advantage of using valueOpKey is that you have more control, at least that's what the manual says, haven't tried it yet

my €0.02

Bopper.

-How can you improve things when you don't make mistakes?


BeyondVR ( ) posted Tue, 12 February 2008 at 3:09 PM

At 3DC, in the Poser tutorials section is an excellent tutorial on ERC by VK.  It is very comprehensive.  It may also be available here, but I haven't seen it.

John


xantor ( ) posted Tue, 12 February 2008 at 8:13 PM

Is 3dc 3d commune?  I couldn`t find any VK tutorials there.


BeyondVR ( ) posted Tue, 12 February 2008 at 9:44 PM

I just looked for it, and it is indeed gone :(   What was so special about it was the way it was organized, illustrated and easy to understand.

You can go to the sites of the main originators of ERC, Charles Taylor (www.nerd3d.com) and Robert Whisenant (www.rbtwhiz.com).  All the information is there, though probably not in as user-friendly a form.  VK really boiled this stuff down and provided some very useful examples.

On the other hand, Charlie's and Rob's sites probably have more up-to-date data.  I haven't visited either in some time.  If you have MS Word you can copy the pages quickly.  There is quite a bit to read about this stuff, and a lot to digest.

John


xantor ( ) posted Tue, 12 February 2008 at 10:13 PM

Ok, thank you.


BeyondVR ( ) posted Tue, 12 February 2008 at 10:21 PM

You're very welcome!  BTW, if you downloaded that Cobra 427 that VK offered as a freebie in this forum a couple of years ago, you should take a look at it.  It uses extensive ERC, and does some amazing things.

John


xantor ( ) posted Tue, 12 February 2008 at 10:27 PM

I did download the cobra, I will have a look at it, thank you for the tip.


xantor ( ) posted Sun, 17 February 2008 at 6:38 AM

I did some investigating, and it seems like you can only use ERC in the body of the figure.


BeyondVR ( ) posted Sun, 17 February 2008 at 7:33 AM

ERC dials (valueParm) go in the body of the model, but any body part  can be coded to respond to them.  The valueParm just makes a dial appear, and can have limits, etc.  The individual body parts have to be coded, in the rotation or translation channels, refering to the valueParm.

Little_Dragon's examples show the valueParm coding (first), and then the coding that goes in the body part's channel (second).

ERC can also be automatic and invisible to the user.  This is how a JCM works.  The coding goes in the morph channel, but nothing needs to go in the joint's channel.  The code refers to the joint, and reacts when the appropriate channel is used.

John


R_Hatch ( ) posted Mon, 18 February 2008 at 7:41 AM · edited Mon, 18 February 2008 at 7:45 AM

I think you're referring to the fact that Poser itself won't add ERC to anything but the body, and it will only add morph controls.

As long as you do it by hand, you can have the master ERC dials in any body part, and they can control any type of dial you want. If you look in one of the Poser 6/7 figures' CR2, you'll see that the head controls eye rotation using ERC.

I recommend CR2Builder for Poser file editing.


kuroyume0161 ( ) posted Mon, 18 February 2008 at 8:02 AM

Took the words right out of my fingertips, R_Hatch. ;)

C makes it easy to shoot yourself in the foot. C++ makes it harder, but when you do, you blow your whole leg off.

 -- Bjarne Stroustrup

Contact Me | Kuroyume's DevelopmentZone


EnglishBob ( ) posted Mon, 18 February 2008 at 10:10 AM

Attached Link: http://www.atlantis23.com/erc_download.html

VK's ERC tutorial is at the link. If you're a mere mortal, provide caffeine and/or painkillers according to your preference. (No offence intended, VK!)


lesbentley ( ) posted Mon, 18 February 2008 at 10:41 AM

Quote - Can this be done using a dial instead of in the body? I mean that if I have a moving part and want the movement dial for that to affect the erc parts can that be done?

For example, a boats rudder to be able to be turned by turning the steering wheel on the boat.

Yes the master channel can go in any actor (body part), a 'valueParm' can go in any actor as R_Hatch said. The master channel does not need to be a 'valueParm' channel almost any type of channel can be a master, targetGeom, scale, rotate, and translate channels can all be used as masters.

When the actor that contains the master channel is above the slave channel in the figure hierachy, or in the same actor, or no more than one step below the slave, its easy. Just edit the slaving code to reflect the name and location of the master channel. Eg, if you have a boat with actors named "rudder" and "tiller", and you want the 'yrot' channel in the rudder to be slaved to the 'yrot' channel in the tiller, you would use this slaving code in the yrot channel of the rudder:

                        valueOpDeltaAdd
                                Figure 1
                                tiller:1
                                yrot
                        deltaAddDelta 1.000000

The above assumes that the actor number in your cr2 is ":1", if not edit as appropriate. When the actor that contains the master channel is more than one step below the prospective slave in the hierachy, it's a bit more complicated, you need to cascade the ERC through the intervening actors. I will say more about this in my next post.


BeyondVR ( ) posted Mon, 18 February 2008 at 10:58 AM

Thanks for finding that tut, EnglishBob!  It's the best resource I know of for someone who is serious about ERC.

John


xantor ( ) posted Mon, 18 February 2008 at 11:16 AM

Lesbentley, thank you, that was exactly what I wanted to know.


xantor ( ) posted Sat, 03 October 2009 at 10:41 AM

I have another question about this, If I want two dials to rotate in a figure but using a different amount of rotation, how could I do that using this method?


kuroyume0161 ( ) posted Sat, 03 October 2009 at 2:39 PM

valueOpDeltaAdd Figure 1 tiller:1 yrot deltaAddDelta 1.000000 valueOpDeltaAdd Figure 1 tiller:1 xrot deltaAddDelta 0.500000

A single master dial can control any number of slave dials
(and any single slave dial can be controled by any number of master dials).

C makes it easy to shoot yourself in the foot. C++ makes it harder, but when you do, you blow your whole leg off.

 -- Bjarne Stroustrup

Contact Me | Kuroyume's DevelopmentZone


markschum ( ) posted Sat, 03 October 2009 at 4:52 PM

the slave part

valueOpDeltaAdd
     Figure 1
     tiller:1             <<<<<<<<< body part where master is 
     xrot                 <<<<<<<< master dial
deltaAddDelta 0.500000

you can add as many of these slave channels as you have master dials


xantor ( ) posted Sun, 04 October 2009 at 9:50 AM

What I was actually asking was how to set the amount that each dial is changed, for example, if I had two objects that rotate but one is to rotate 90 degrees and the other has to rotate 120 degrees then how is that done?

I found a workaround but I would like to know the answer for future reference.


chriscox ( ) posted Sun, 04 October 2009 at 10:19 AM · edited Sun, 04 October 2009 at 10:21 AM

Quote - What I was actually asking was how to set the amount that each dial is changed, for example, if I had two objects that rotate but one is to rotate 90 degrees and the other has to rotate 120 degrees then how is that done?

I found a workaround but I would like to know the answer for future reference.

 



 



“deltaAddDelta” value multiplied by value of the Master dial gives the amount slave is changed

So for something to change 90 make its deltaAddDelta 90 for another to change 120 make its deltaAddDelta 120

Chris Cox



xantor ( ) posted Sun, 04 October 2009 at 10:40 AM

Great, thank you.


kuroyume0161 ( ) posted Sun, 04 October 2009 at 11:48 AM · edited Sun, 04 October 2009 at 11:49 AM

Remember that valuOpDeltaAdd is simply additive.  There are purportedly other operators (pulling up my notes):

            valueOpDeltaAdd
            valueOpDivideInto
            valueOpDivideBy
            valueOpTimes
            valueOpMinus
            valueOpPlus
            valueOpKey            (Poser 7)

The last is much more dynamic in that you can set up relationships between the master and slave dial values.  Together, these allow different types of mathematical relationships between the master and slave values.  With valueOpKey, for instance, you could set up a logarithmic or exponential relationship:

valueOpKey
            beginValueKeys
            valueKey           0 1
            valueKey           1 2
            valueKey           2 4
            valueKey           3 8
            valueKey           4 16
            endValueKeys
 

  • valueKey [master value] [slave value]

C makes it easy to shoot yourself in the foot. C++ makes it harder, but when you do, you blow your whole leg off.

 -- Bjarne Stroustrup

Contact Me | Kuroyume's DevelopmentZone


xantor ( ) posted Sun, 04 October 2009 at 3:22 PM

Are these valueOp things only in poser 7 and above?


kuroyume0161 ( ) posted Sun, 04 October 2009 at 4:17 PM

Only valueOpKey.  The rest have been around for a long time.

C makes it easy to shoot yourself in the foot. C++ makes it harder, but when you do, you blow your whole leg off.

 -- Bjarne Stroustrup

Contact Me | Kuroyume's DevelopmentZone


Little_Dragon ( ) posted Sun, 04 October 2009 at 4:20 PM · edited Sun, 04 October 2009 at 4:23 PM

The first six, in fact, have been around since at least Poser 4.



xantor ( ) posted Sun, 04 October 2009 at 4:25 PM

I just didn`t remember seeing them in any cr2 files.


Little_Dragon ( ) posted Sun, 04 October 2009 at 4:52 PM

valueOpDeltaAdd is the keystone of ERC, and gets most of the attention.  The rest haven't been as extensively used.

I'd noticed that DAZ implements some of them in Victoria 4.

I used valueOpTimes in Krystal, myself, to work around some issues with her blink morphs.



wdupre ( ) posted Sun, 04 October 2009 at 8:36 PM

I use valueOpMinus a lot to do sequential morphs, where I want the morphs to trigger in sequence using a master dial.



xantor ( ) posted Fri, 30 October 2009 at 9:04 AM · edited Fri, 30 October 2009 at 9:05 AM

Would I use valueOpMinus to make a part move in a negative way?

e.g. If I want a part to move -0.7


xantor ( ) posted Fri, 30 October 2009 at 9:22 AM

I have a figure using ERC that has two different actions happening when the dial is turned, is there any way to change the order in which the actions happen?

If I could make the second one happen before the first then the dial would work as it should.


kuroyume0161 ( ) posted Fri, 30 October 2009 at 10:53 AM

You'll get more information than you ever wanted from this set of html pages (zipped) from vk:

www.kuroyumes-developmentzone.com/poser/arc1to4beta.zip

It is too old to include the valueOpKey operation though.

C makes it easy to shoot yourself in the foot. C++ makes it harder, but when you do, you blow your whole leg off.

 -- Bjarne Stroustrup

Contact Me | Kuroyume's DevelopmentZone


xantor ( ) posted Fri, 30 October 2009 at 11:11 AM

OK, thank you.


wdupre ( ) posted Fri, 30 October 2009 at 12:05 PM · edited Fri, 30 October 2009 at 12:07 PM

Quote - I have a figure using ERC that has two different actions happening when the dial is turned, is there any way to change the order in which the actions happen?

If I could make the second one happen before the first then the dial would work as it should.

Yes this is the sort of thing that ValueOpMInus is perfect for, set both morphs with hard limits of 0 min and the second morph to 1 max have both morphs refrence a master dial with a standard valueOpDeltaAdd statement than on the first put a valueOpMinus statement refrencing the second morph. basically the valueOpMinus statement tells the first morph to subtract the value of the second morph before referencing the master dial so if the master is set to .5 than the second morph is also .5 and that would make the first morph -5 added to the master which is .5 which means the first would be at zero, only when the second morph stops would the first be able to go into the positive. You can do a whole chain of sequential morphs like that, each referencing all of the previous ones with valueOpMinus statements, though I have found that the more you do in sequence the more difficulty poser has calculating the math I find 6 or 7 work ok but beyond that things get choppy.



wdupre ( ) posted Fri, 30 October 2009 at 12:10 PM

I should also say that the valueOpKey operator could do the function you want as well with only a single value operator per morph, but it only works in Poser 7 and 8



xantor ( ) posted Fri, 30 October 2009 at 8:50 PM

Quote - I should also say that the valueOpKey operator could do the function you want as well with only a single value operator per morph, but it only works in Poser 7 and 8

I want it to work in older versions of poser as well (the newest version I have is 6 so I couldn`t check if the valueOpKey worked).


xantor ( ) posted Fri, 30 October 2009 at 8:57 PM

Quote - > Quote - I have a figure using ERC that has two different actions happening when the dial is turned, is there any way to change the order in which the actions happen?

If I could make the second one happen before the first then the dial would work as it should.

Yes this is the sort of thing that ValueOpMInus is perfect for, set both morphs with hard limits of 0 min and the second morph to 1 max have both morphs refrence a master dial with a standard valueOpDeltaAdd statement than on the first put a valueOpMinus statement refrencing the second morph. basically the valueOpMinus statement tells the first morph to subtract the value of the second morph before referencing the master dial so if the master is set to .5 than the second morph is also .5 and that would make the first morph -5 added to the master which is .5 which means the first would be at zero, only when the second morph stops would the first be able to go into the positive. You can do a whole chain of sequential morphs like that, each referencing all of the previous ones with valueOpMinus statements, though I have found that the more you do in sequence the more difficulty poser has calculating the math I find 6 or 7 work ok but beyond that things get choppy.

The second movement (it is not a morph) already uses ValueOpMinus.

How do I do the valueOpMinus statement referencing the second morph (movement) ?


wdupre ( ) posted Fri, 30 October 2009 at 9:24 PM

well the fact that there is already a valueOpMinus operator involved complicates things a bit, I would need to know the whole rundown of what you want to do and how you want to time it in order to advise you.
but another thing you can do is create a dummy dial that is only there to change the forumula of a rotational or translational dial to one that is easier to work with by setting the dummy dial up with erc code that refrences rotation so that it can give a 0 to 1 (or whatever other number range you need) result and do your subtraction from that.



xantor ( ) posted Fri, 30 October 2009 at 10:26 PM

The valueOpMinus I am using is really just to correct an error where one part of the figure effects another (when I move the first part forward it also moves the second part and I don`t want the second part to be moved).


xantor ( ) posted Sun, 01 November 2009 at 3:00 AM · edited Sun, 01 November 2009 at 3:00 AM

Quote -

on the first put a valueOpMinus statement refrencing the second morph.

How do I write out these lines in the cr2?


wdupre ( ) posted Sun, 01 November 2009 at 3:40 AM · edited Sun, 01 November 2009 at 3:40 AM

It would go right before the ValueOpDeltaAdd in the morph, it references the bodypart and the morph that is the first one in the sequence.

valueOpMinus
Figure
hip
FirstMorphInSequence
valueOpDeltaAdd
Figure
BODY
MasterDial
deltaAddDelta 1

than of course if you are doing a whole sequence of morphs you want to do in order you can string them together, each morph adding another valueOpMinus so the second would just refrence the first and the third would reference the first and second and the fourth would reference the first second and third, like this.

valueOpMinus
Figure
hip
FirstMorphinSequence
valueOpMinus
Figure
hip
SecondMorphinSequence
valueOpMinus
Figure
hip
ThirdMorphinSequence
valueOpDeltaAdd
Figure
BODY
MasterDial
deltaAddDelta 1



xantor ( ) posted Sun, 01 November 2009 at 7:43 AM

What would I call the firstmorphinsequence and secondmorphinsequence?

They are not morphs they are a rotation dial and a translation dial.


wdupre ( ) posted Sun, 01 November 2009 at 11:46 AM

they would be whatever the internal name of the translation and rotation dials are. though you may not be able to use them as is particularly if one or more of them are running in the negative, you may need to work from a dummy dial that is slaved to the rotation using standard valueOpDeltaAdd to give you a more controllable number to feed into the valueOpMinus. you should really read up on all the variables involved in the process in that erc manual linked to by kuroyume0161 above.



xantor ( ) posted Sun, 01 November 2009 at 7:06 PM

I managed to remove the negative setting, so it shouldn`t be a problem.


xantor ( ) posted Sun, 01 November 2009 at 7:39 PM

It did work eventually but unfortunately it still was not what I wanted to do.


  • 1
  • 2

Privacy Notice

This site uses cookies to deliver the best experience. Our own cookies make user accounts and other features possible. Third-party cookies are used to display relevant ads and to analyze how Renderosity is used. By using our site, you acknowledge that you have read and understood our Terms of Service, including our Cookie Policy and our Privacy Policy.