Fri, Oct 4, 10:27 PM CDT

Renderosity Forums / Poser Technical



Welcome to the Poser Technical Forum

Forum Moderators: Staff

Poser Technical F.A.Q (Last Updated: 2024 Sep 17 7:30 pm)

Welcome to the Poser Technical Forum.

Where computer nerds can Pull out their slide rules and not get laughed at. Pocket protectors are not required. ;-)

This is the place you come to ask questions and share new ideas about using the internal file structure of Poser to push the program past it's normal limits.

New users are encouraged to read the FAQ sections here and on the Poser forum before asking questions.



Checkout the Renderosity MarketPlace - Your source for digital art content!



Subject: Quick Questions


illicit ( ) posted Mon, 05 May 2003 at 11:54 AM · edited Fri, 04 October 2024 at 10:27 PM

Hi all! I'm a Lightwave user that is attempting to make props and figures for poser and I need a little help. Valandar told me to post this question here. I made a pool table figure with rack and balls in the start position. I'd like to have the balls be able to move individually. I made groups of everything, but that didnt work. What did I miss? Also, I made a dartboard cabinet with swinging doors. The doors swing exactly how I want them to, but I don't want the user to have to select each door to do it, I want two dials on the main cabinet for the door swing. If these are easy fixes, feel free to help here, or please point me in the right direction for some good tutorials. I couldn't find any that give good details. Thanks for your time...


maclean ( ) posted Mon, 05 May 2003 at 8:52 PM

2nd point first. If your dartboard is already a cr2 figure, then you can use ERC (Enhanced Remote Control) to do it. This just means you make a master channel which controls 2 slave channels, (the rotation channels in each door). You end up with one channel in any body part you like, which opens both doors together. I don't know how much you know about poser though. Is your dartboard a cr2 figure? And do you know much about the internal structure of a cr2? I can post the exact settings and you can paste them in. Let me know. The pool table. I'm not sure what you mean by 'groups'. Again, it would need to be a cr2 figure with each ball as an individual body part which moves independently. It's not that difficult to do. You just need to take it a step at a time. Give more info and I can tell you what you need to do. Also, which version of poser are you using? mac


illicit ( ) posted Tue, 06 May 2003 at 7:11 AM

Okie dokie... I don't know too terribly much about poser, but I'm picking it up pretty quickly. (vP4) I have had alot of help from chemicalbrother. The dartboard is a cr2 figure, I just imported the 3 obj files (1 for each piece), set up the heirarchy, and clicked new figure. I don't know how to set up the ERC, but I'd rather actually learn than just copy and paste. Do I just edit it in notepad like the pp2 files? Are there any online resources, or are you it? 8^) For the pool table, it also is a cr2. By groups I mean that I used the group tool and made a group for each piece. I really don't know why I did that, I just thought it seemed like the right thing to do. Thanks, ill


lesbentley ( ) posted Tue, 06 May 2003 at 3:00 PM

You can use ERC to open the doors from the main cabinet, paste two instances of the following channel in the main cabinet actor. Edit the second instance, replacing both instances of "OpenLeftDoor" with "OpenRightDoor". There is a line with "channels" followed by a line woth a "{" place the code under that. valueParm OpenLeftDoor { name OpenLeftDoor initValue 0 hidden 0 forceLimits 0 min -100000 max 100000 trackingScale 0.004 keys { static 0 k 0 0 } } Now find the actor for the left door, within that actor find the "rotateY" channel. Scrole down to a line that says "interpStyleLocked". Under that line paste the following code to slave the "rotateY" channel to the "valueParm OpenLeftDoor" channel: valueOpDeltaAdd Figure 1 cabinet:1 OpenLeftDoor deltaAddDelta 1.000000 where in the above code "cabinet:1" is the name of the actor that contains the master channel. The number after "Figure" and "cabinet:" should be consistant with the figure number of your cr2, the number 1 above is only an example. Actually in Poser 4 you can usually leave the colon and number out altogether. Find the actor for the right door, and its "rotateY" channe, paste in the same code snippet, changing the line "OpenLeftDoor" to "OpenRightDoor". Now resave the file and test it. --- Notes: Much of this is case sensitive. The slaved channel will read its value from any channel named "OpenLeftDoor", it does not have to be a "valueParm" channel. The number after the "deltaAddDelta" determins the controle ratio (strangth of the effect on the dial), 1.000000=1:1. Figures that use ERC suffer from crosstalk. This means that if two figurs with the same master channel names are loaded into a document you get problems, the best way to fix this is with a NULL figure. If you prefer you can use one dial to open both doors at once just name the valueParm channel "OpenDoors" and replace "OpenLeftDoor" and "OpenRightDoor" in the slaved channels with "OpenDoors".


maclean ( ) posted Tue, 06 May 2003 at 3:19 PM

Attached Link: http://www.rbtwhiz.com/rbtwhiz_ERC.html

Good, illicit. Now I know what you've got. OK, ERC is a poser hack discovered by 2 users. You can read about it at the link above. VK has a wonderful series of ERC tutorials, but I don't have the link. I can mail the pages if you want. So, ERC consists of a master chammel which controls 1 or more slave channels. What you would be doing is putting a master dial in the dartboard body part, and adding 5 lines of code to the rotation channels in the 2 door body parts. Here's what the master channel looks like. -------------------- MASTER CHANNEL --------------- valueParm vpdooropendx { name open all initValue 0 hidden 0 forceLimits 4 min -1 max 1 trackingScale 0.001 keys { static 0 k 0 0 } interpStyleLocked 0 } ---------------------------------------- This goes into your dartboard body part under the lines channels { ---------------------------------------- 'name open all' - This is the name that appears on the dial, so you could put 'name open doors', or whatever. The line 'vpdooropendx' can be anything you want, like 'vpmynamedx'. As long as it's 'vp-----dx' Next, you add 5 lines to the rotation channel of each door. I assume it's Yrot. Here's what the Yrot channel normally looks like. -------------------------------------- rotateY yrot { name open/close initValue 0 hidden 0 forceLimits 4 min 0 max 180 trackingScale 1 keys { static 0 k 0 0 } interpStyleLocked 0 } ----------------------------------------- You need to add these 5 lines to it valueOpDeltaAdd Figure 1 doorL:1 vpdooropendx deltaAddDelta 180.000000 -------------------------------------------- so it looks like this -------------------- SLAVE CHANNEL --------------- rotateY yrot { name open/close initValue 0 hidden 0 forceLimits 4 min 0 max 180 trackingScale 1 keys { static 0 k 0 0 } interpStyleLocked 0 valueOpDeltaAdd Figure 1 doorL:1 vpdooropendx deltaAddDelta 180.000000 } ---------------------------------------------- Here are the things you need to change in the above. 'name open/close' - This can be any name you want. ---------- min 0 max 180 - For the 2nd door, you will have to reverse these 2 lines , so they read min -180 max 0 and also change the line 'deltaAddDelta 180.000000' to a minus, so it reads 'deltaAddDelta -180.000000' ---------- Figure 1 doorL:1 The Figure number varies according to what number it was in poser when you saved it, so this may read 3 or 5 or whatever. Use the numbers in your cr2. doorL:1 - This should read 'dartboard:?' - 'dartboard being whatever name you gave to your body part, and '?' being the number of the Figure in the cr2. To be continued...... mac


maclean ( ) posted Tue, 06 May 2003 at 3:33 PM

Attached Link: http://groups.yahoo.com/group/PoserTECH/

OK. I had to take a break in case Rosity ate my message. I also see les has been posting while I was writing. Never mind, I'll carry on with mine and you can combine the info. Looking at les's, one difference is that I'm using the line 'forceLimits 4', not 'forceLimits 0'. This line tells poser to stop moving the object when it reaches a certain point. It's the same as checking 'Use Limits' in the menu, except it's permanant. I use it with doors, because otherwise, they tend to swing round and go through the main object without stopping. It's up to you. Also, my ERC is specifically for rotation, which is why it reads 'deltaAddDelta 180.000000' instead of 'deltaAddDelta 1.000000'. Not a big deal. Between us, I think we've pretty much covered it. Just make sure that when you modify the second door's rotation channel, that you point it to the correct body part for the master channel, ie. the lines, Figure 1 dartboard:1 and, reverse the min/max and delta values. You may find you have to do it the opposite way round, and reverse the 1st door instead. It depends on how you made them. In addition, I strongly reccommend you go to Poser Tech group, (link above), register, and get John Stalling's cr2Edit (v1.51 NOT 1.52 - it's buggy). This is the best app for editing cr2s - WAY better than messing around in notepad. And it's free. As far as the pool table goes, you'll have to have each ball a separate body part, then use X and Z trans to move them around. Try the dartboard first, then we'll come back to the pool table. mac


lesbentley ( ) posted Tue, 06 May 2003 at 3:33 PM

Re: The pool table. The balls are probably children of the table actor, try making them children of the BODY actor. In the figure section (near the end of the file above the materials section), you should see something like this: figure { name Figure 1 root BODY:1 addChild table_1:1 BODY:1 addChild ball_1:1 table_1:1 addChild ball_2:1 table_1:1 Change it to this: figure { name Figure 1 root BODY:1 addChild table_1:1 BODY:1 addChild ball_1:1 BODY:1 addChild ball_2:1 BODY:1 Now the balls should move independantly of the table. Another good idea is to go to the translate* channels of the balls and change the line "hidden 1" to "hidden 0", this will display dials for these channels in the paramiters pallet so you can move the balls without using the mouse. Also seting the value of "allowsBending" in the figures section to "0", is a good idea for non organic things, otherwise moving one part can bend another.


maclean ( ) posted Tue, 06 May 2003 at 3:37 PM

One last point. The line 'deltaAddDelta 180.000000' refers to 180° of rotation. If you want 150°, change it to 'deltaAddDelta 150.000000', or whatever you want, not forgetting to add the minus before the opposite door.

mac


maclean ( ) posted Tue, 06 May 2003 at 3:43 PM

Here I am again. Going back and reading les's post properly, there are 2 points to note. 1. This is code for 2 master channels, each of which controls a slave. Mine is for 1 master controlling 2 slaves simultaneously. You can do it either way to suit yourself. 2. Les says 'The slaved channel will read its value from any channel named "OpenLeftDoor", it does not have to be a "valueParm" channel' Thsi is why I call mine 'vp - yaddayadda - dx' That way, it can only read from the master channel. Whew! Exhausted.... mac


lesbentley ( ) posted Tue, 06 May 2003 at 4:35 PM

Actually an easier way to make your pool table is probably to make the table as a cr2, then add the balls as props in Poser, parent them to the table, then resave the the table to a pallet. Because the balls are parented to the table they will save with it. They will mone whenever the table moves, but can be moved independantly of it, their translation dials are already showing, and you don't have to use the Grouping tool to set up the materials. In this case the only reason the table is made as a cr2, rather than a pp2 is so the balls will be deleted when the tabls is deleted.


lesbentley ( ) posted Tue, 06 May 2003 at 8:53 PM

Re: The Dartboard. The "trackingScale 0.004" in the master channel, and the "deltaAddDelta 1.000000" in the slave channel, that I gave in my example were not a good combination. If you use a deltaAddDelta of 1.000000 in the in the slave channel, then the trackingScale in the master should be 1.000, that way, a master dial setting in Poser of 180.000 would = 180 degrees of rotation. Doing it this way the min and max values in the master channel should = the min and max angles for the door rotation, e.g. "min 0" and "max 180". The deltaAddDelta value may need to be negative depending on which way the door opens. If using one master to open two doors one deltaAddDelta value will usually need to be positive the other negative. Dodger's method is another way of doing it. With a "deltaAddDelta 180.000000" in the slave, and a "trackingScale 0.001" in the master, a value of "1.000" on the master dial would represent 180 degrees of rotation.


illicit ( ) posted Wed, 07 May 2003 at 7:24 AM

First off let me say that you guys kick mucho ass! I was honestly expecting the standard "figure it out" answer. I will definately join that group and get cr2edit... I was busy with studying for my Exchange Server cert last 2 nights, but I'm free tonight to try this out. I will post some results tomorrow. Thanks again for all your time and help ~illicit~ ~insert hilarious or enlightening line here~


maclean ( ) posted Wed, 07 May 2003 at 2:20 PM

No problem, illicit. I'm just passing on what other people did for me. VK spent a lot of time and patience writing me huge, long e-mails that explained ERC. Someday, you can pass it on too, That's what it's all about. mac


maclean ( ) posted Wed, 07 May 2003 at 2:47 PM

Attached Link: http://64.38.105.73/erc_download.html

Illicit, I just found the link for VK's ERC tutorials. He posted it in the thread above (by sheer chance). You may find a lot of it is over your head (it's over mine too), but it's a great tute and it shows you how many things are possible with ERC. mac


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.