Wed, Oct 2, 10:23 PM CDT

Renderosity Forums / Poser - OFFICIAL



Welcome to the Poser - OFFICIAL Forum

Forum Coordinators: RedPhantom

Poser - OFFICIAL F.A.Q (Last Updated: 2024 Oct 02 9:25 am)



Subject: Does ValueOpKey work on Visibility?


ockham ( ) posted Sun, 17 May 2020 at 2:06 AM · edited Tue, 01 October 2024 at 2:21 PM

I've used valueOpKey often on rotates and tranlates and scales, so I'm generally familiar with the trick.

In this case I've got a series of pieces that need to appear and disappear in sequence under control of a ValueParm. I tried applying a valueOpKey paragraph to a Visibility parm, but it doesn't seem to do anything. The rest of the setup is good, because the same valueOpKey paragraph works when it's applied to the Scale parm. But Scale doesn't really do what I want here.

The Poser reference PDF makes a single mention of valueOpKey on a rotate parm, and doesn't say anything else about it.

Has anyone tried this before?

My python page
My ShareCG freebies


KarinaKiev ( ) posted Sun, 17 May 2020 at 7:36 AM · edited Sun, 17 May 2020 at 7:43 AM

I did, in all thinkable variations, because it would be so useful.

Unfortunately this seems to be one more of Poser's "internal" functions which can't be controlled from the outside.

Time to change that!! You hear me, RENDO?

Until that happens (maybe in Poser 2525?), your best bet is to use the scaling dial instead. Since the current Poser can actually scale down any object 0,000 %, there would only remain a minute dot of it (which you can then move completely out of sight with the yTran dial if needed)

Addendum:

I don't know what you exactly want to achieve. But if you want to make it "slowly" become in/visible: The visibility dial works boolean, so either ON or OFF. No values in between... You could try to animate the "transparency" nodes in the MAT room . Don't forget to include the "specular" value or you'll get ghost speculars...

HTH

K


an0malaus ( ) posted Sun, 17 May 2020 at 7:50 AM

I use valueOpTimes for controlling Visibility Channels. Generally, visibility can only be completely on or completely off. This is not transparency we're talking about. So the visibility channel and any channel controlling it should probably have its sensitivity set to 1.0, so a click on the up or down increments will go between 0 and 1 without intermediate values.

On my main figure, I add dials for visibility of whatever clothing props and figures I conform or parent to it. On the clothing figures or props, the visibility channel (on the Body actor for figures) gets a valueOpTimes from the main figure's control for that clothing item. Simple. No mess, no fuss, and it can be saved as part of the main figure's pose.

I have not had ANY trouble in P11 with visibility of items except for a few esoteric items which were missing the key icon next to the visibility checkbox in the actor properties palette. That meant that you couldn't make the visibility channel visible and hence keyframable. I can't remember exactly what it was, and it may have even been fixed since.

@ockham, if you can show some of what you are seeing that doesn't work, such as code snippets or screenshots, that could help in troubleshooting.



My ShareCG Stuff

Verbosity: Profusely promulgating Graham's number epics of complete and utter verbiage by the metric monkey barrel.


ockham ( ) posted Sun, 17 May 2020 at 8:26 AM

Thanks for verifying. The OpTimes and OpAdd won't help here because I need a sequence, not a linear function. I'll just do it with a PZ2 instead of ERC. I know PZ2 can control visibility.

My python page
My ShareCG freebies


ockham ( ) posted Sun, 17 May 2020 at 8:51 AM

Here's the sequence in action, set up purely in the PZ3 scene, before trying to copy the action into an ERC or PZ2. This is one of my 'old tech' animations, the original patent of Poulsen's wire recorder.

The sequential part is the wire entering and leaving the two reels. It's actually 8 cylindrical segments on each reel, but the disp tex makes them appear as a smoothly unrolling wire.

poulsen-topview.gif

My python page
My ShareCG freebies


ockham ( ) posted Sun, 17 May 2020 at 8:53 AM

Well, Rendo doesn't show the GIF moving. Here's a link.

http://ockhamsbungalow.com/blog123/poulsen-topview.gif

My python page
My ShareCG freebies


KarinaKiev ( ) posted Sun, 17 May 2020 at 9:08 AM

an0malaus posted at 8:49AM Sun, 17 May 2020 - #4389320

I use valueOpTimes for controlling Visibility Channels. Generally, visibility can only be completely on or completely off. This is not transparency we're talking about. So the visibility channel and any channel controlling it should probably have its sensitivity set to 1.0, so a click on the up or down increments will go between 0 and 1 without intermediate values.

On my main figure, I add dials for visibility of whatever clothing props and figures I conform or parent to it. On the clothing figures or props, the visibility channel (on the Body actor for figures) gets a valueOpTimes from the main figure's control for that clothing item. Simple. No mess, no fuss, and it can be saved as part of the main figure's pose.

I have not had ANY trouble in P11 with visibility of items except for a few esoteric items which were missing the key icon next to the visibility checkbox in the actor properties palette. That meant that you couldn't make the visibility channel visible and hence keyframable. I can't remember exactly what it was, and it may have even been fixed since.

@ockham, if you can show some of what you are seeing that doesn't work, such as code snippets or screenshots, that could help in troubleshooting.

@ anomalaus: I think we're talking about two different things here:

Surely you can make the "visibility" dial animated, butt (TM):

  • There is no way to set the channel to anything except "fully visible" or "fully invisible", which is what (I guess) @ockam wanted to do.
  • So you can't make an object become slowly visible in a sequence by setting that dial anywhere in between 0 and 1 (like 0,3). It's either fully "on" or fully "off" - no in-between!

K


an0malaus ( ) posted Sun, 17 May 2020 at 1:51 PM

I think I do understand what's required here. I often use a single control dial to select from a sequence of other items. It doesn't matter whether the targets are morphs or actor visibility dials. The master control can step through a range of values, at each of which, one, or a number of other parameters can be keyed for visibility. I do it with constraints, so an object can be constrained, one at a time to a range of constraint targets. Each one, at the detents (valid settings) is the only one active. At each other value, individual targets are inactive/invisible.

In the case of the wire recorder, it might appear that you have one coil of wire, but you can only see the front of each coil on either side. Decide how many you want to be visible at a time, and they can remain visible on the takeoff spool until the master control reaches the value at which the half coil would appear on the other spool or disappear.

            groupNode Orientation
                {
                parmNode Position
                parmNode Holstered
                parmNode RightGripped
                parmNode LeftGripped
                }
            groupNode Visibility
                {
                parmNode Visible
                }
            }
        constraintParm Holstered
            {
            name Holstered
            initValue 0
            hidden 1
            enabled 1
            forceLimits 1
            min 0
            max 1
            trackingScale 0.005
            masterSynched 0
            keys
                {
                static  0
                k  0  0
                }
            interpStyleLocked 0
            valueOpKey
                _NO_FIG_
                Luger Grip
                Position
            strength 1.000000
                beginValueKeys
                    valueKey 0 0
                    valueKey 1 1
                    valueKey 2 0
                    valueKey 3 0
                endValueKeys
            constraintTarget Luger Holstered:1
            }
        constraintParm RightGripped
            {
            name RightGripped
            initValue 0
            hidden 1
            enabled 1
            forceLimits 1
            min 0
            max 1
            trackingScale 0.005
            masterSynched 0
            keys
                {
                static  0
                k  0  0
                }
            interpStyleLocked 0
            valueOpKey
                _NO_FIG_
                Luger Grip
                Position
            strength 1.000000
                beginValueKeys
                    valueKey 0 0
                    valueKey 1 0
                    valueKey 2 1
                    valueKey 3 0
                endValueKeys
            constraintTarget Luger Right Grip:1
            }
        constraintParm LeftGripped
            {
            name LeftGripped
            initValue 0
            hidden 1
            enabled 1
            forceLimits 1
            min 0
            max 1
            trackingScale 0.005
            masterSynched 0
            keys
                {
                static  0
                k  0  0
                }
            interpStyleLocked 0
            valueOpKey
                _NO_FIG_
                Luger Grip
                Position
            strength 1.000000
                beginValueKeys
                    valueKey 0 0
                    valueKey 1 0
                    valueKey 2 0
                    valueKey 3 1
                endValueKeys
            constraintTarget Luger Left Grip:1
            }
        valueParm Position
            {
            name Position (Loose|Holstered|RightGrip|LeftGrip)
            initValue 1
            hidden 0
            enabled 1
            forceLimits 1
            min 0
            max 3
            trackingScale 1
            masterSynched 1
            keys
                {
                static  0
                k  0  0
                }
            interpStyleLocked 0
            }

The example above is for constraints. I can't think of any reason that will not work for visibility channels, unless it happens to work for me on macOS while not working on Windows, which I highly doubt.

Give me a detailed example of what you've tried that didn't work, so I know we're not talking at cross purposes.

There is also the possibility of animating geometry, though that doesn't work really well with unimesh figures, but for props, there's no need for unimesh. It might make sense to animate between versions of a prop with graduated parts visible.

Rereading the explanation of the wire recorder mechanism, each of the 8, separate coil props doesn't ever actually need to disappear, they always remain within the mechanism, they can even rotate with whichever spool their positioned around, all that would be required is that at a frame change, you constrain them to the other spool.

As in the pp2 file snippet above, each coil can have constraints to both spools, only one of which is active at a time. The master rotation control steps through which spool each frame is constrained to via valueOpKey settings.

I know that takes a lot of setting up. I DO. I built a luger pistol from imported obj prop components in Poser and used constraints everywhere, which is utterly tedious to setup, rig and debug, but works.



My ShareCG Stuff

Verbosity: Profusely promulgating Graham's number epics of complete and utter verbiage by the metric monkey barrel.


an0malaus ( ) posted Sun, 17 May 2020 at 1:56 PM



My ShareCG Stuff

Verbosity: Profusely promulgating Graham's number epics of complete and utter verbiage by the metric monkey barrel.


ockham ( ) posted Sun, 17 May 2020 at 4:34 PM

Update: I made the PZ2, and it works properly. Not too surprising, since I'd previously used PZ2s for visibility.

My python page
My ShareCG freebies


ockham ( ) posted Sun, 17 May 2020 at 5:07 PM

Thanks to all for verifying that I wasn't just missing something!

My python page
My ShareCG freebies


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.