Forum Coordinators: RedPhantom
Poser - OFFICIAL F.A.Q (Last Updated: 2024 Nov 18 10:25 pm)
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.
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?
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
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
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.
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
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!)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.
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
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
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
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
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
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
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.
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).
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) ?
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.
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
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.
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.
I am making some 4 wheeled vehicles and I want the wheels to turn using one dial, how do I do that?