Forum: Poser - OFFICIAL


Subject: Great Found 600 free BHV motions(Poser) in case you haven't

tebop opened this issue on Oct 30, 2007 · 56 posts


diolma posted Fri, 09 November 2007 at 6:51 PM

#-----------------------------------------------------------------------------

Spread param changes between chest and abdomen

Copyright (c) 2007 John Avery (Diolma)

10th Nov 2007

Figure must be selected for the script to run properly.

All key-frame rotations for the chest will be spread between abd. and chest (50/50)

It is not advisable to run this script twice on the same figure in the same scene!

#-----------------------------------------------------------------------------

import poser
scene = poser.Scene()

- Sanity check...

Figure = scene.CurrentFigure()
if not Figure:      raise "No figure selected"
RCollar = Figure.Actor( "Right Collar" )
if not RCollar:     raise "Right Collar not found"
LCollar = Figure.Actor( "Left Collar" )
if not LCollar:     raise "Left Collar not found"
RShldr = Figure.Actor( "Right Shoulder" )
if not RShldr:      raise "Right Shoulder not found"
LShldr = Figure.Actor( "Left Shoulder" )
if not LShldr:      raise "Left Shoulder not found"
RCBend = RCollar.Parameter( "Bend" )
if not RCBend:      raise "RCBend not found"
LCBend = LCollar.Parameter( "Bend" )
if not LCBend:      raise "LCBend not found"
RSBend = RShldr.Parameter( "Bend" )
if not RSBend:      raise "RSBend not found"
LSBend = LShldr.Parameter( "Bend" )
if not LSBend:      raise "LSBend not found"

OK. Try it..

                              
for F in range(scene.NumFrames()):
    scene.SetFrame(F)

    # Deal with this frame
    # try a very simple "fix" for now..
    cv = RCBend.Value()    # save the Collar bend value
    RCBend.SetValue( 0 )   # clear it
    sv = RSBend.Value()    # get the shoulder bend
   
    # adjust the shoulder bend.
    # Due to the different "sensitivities" between the collar and
    # the shoulder, the collar value cannot be directly
    # transferred to the shoulder.
    # The following was worked out empirically using Posette.
    # It will probably have to be changed for different figures.   
    newSV = sv + (cv * 1.5)
    RSBend.SetValue( newSV )   # set the shoulder
   
    # Now do the same for the left side..
    cv = LCBend.Value()    # save the Collar bend value
    LCBend.SetValue( 0 )   # clear it
    sv = LSBend.Value()    # get the shoulder bend   
    newSV = sv + (cv * 1.5)
    LSBend.SetValue( newSV )   # set the shoulder
   

End while 1

Tidy up

scene.SetFrame(0)