Thursday 24 May 2012

Slide


A neat animation of Ryan going down a slide. The rotation at the bottom of the slide is a little too quick - so in hindsight a little extra friction on the ragdoll would have given a better effect.

In summary, Gravity -7, ragdoll friction 0, ragdoll damping 0.002, ragdoll jointlimitpercent 0.5, and the friction on the slide was 0.05.

The slide was created with a Poser Hires Square and 2 magnets!

Tuesday 22 May 2012

Dancing Girl


I'm not sure if this is brilliance, and just plain silly. This is a PoserPhysics ragdoll simulation, with a tiny python script which propels her upward once she gets below a certain level.

The python script (PoserPhysics2012 version)for this is follows:


import poser

import os, sys
(folder, bundle) = os.path.split(poser.AppLocation())
sys.path.insert(0, os.path.join(folder, "Runtime", "Python", "poserScripts", "PoserPhysics"))

import PhysicsWxP9
from PhysicsWxP9 import *
import PhysicsToolsP9
from PhysicsToolsP9 import PhysicsToolsError

upForce = 2 # Assumes gravity of -5 (set manually via the PoserPhysicsGUI)
goingUp = 0

# Add forces if below a certain height (checked each frame)
def callback():
    global prevHipPos, goingUp
  
    fname = poser.Scene().CurrentFigure().Name()
    if poser.Scene().CurrentFigure().ActorByInternalName("hip").ParameterByCode(poser.kParmCodeYTRAN).Value() < 0.17:
        goingUp = 1
    if poser.Scene().CurrentFigure().ActorByInternalName("hip").ParameterByCode(poser.kParmCodeYTRAN).Value() > 0.25:
        goingUp = 0
       
    if goingUp == 1:
        p.applyForce(fname + "/hip", [0, upForce * 0.5, 0], verbose = 0)
        try:
            p.applyForce(fname + "/waist", [0, upForce * 0.6, 0], verbose = 0)
        except:
            pass
        p.applyForce(fname + "/abdomen", [0, upForce * 0.7, 0], verbose = 0)
        p.applyForce(fname + "/chest", [0, upForce * 0.8, 0], verbose = 0)
        p.applyForce(fname + "/neck", [0, upForce * 0.9, 0], verbose = 0)
        p.applyForce(fname + "/head", [0, upForce, 0], verbose = 0)
        p.applyForce(fname + "/lForeArm", [0, upForce * 0.1, 0], verbose = 0)
        p.applyForce(fname + "/rForeArm", [0, upForce * 0.1, 0], verbose = 0)
        p.applyForce(fname + "/rHand", [0, upForce * 0.1, 0], verbose = 0)
        p.applyForce(fname + "/lHand", [0, upForce * 0.1, 0], verbose = 0)
        p.applyForce(fname + "/rHand", [0, upForce * 0.1, 0], verbose = 0)
    else:
        p.applyForce(fname + "/lForeArm", [0, upForce * -0.3, 0], verbose = 0)
        p.applyForce(fname + "/rForeArm", [0, upForce * -0.3, 0], verbose = 0)
    p.applyForce(fname + "/rFoot", [0, upForce * -0.3, 0], verbose = 0)
    p.applyForce(fname + "/lFoot", [0, upForce * -0.3, 0], verbose = 0)
   
print
print "Dancing Girl Sample"

# Bend the knee a little
poser.Scene().CurrentFigure().ActorByInternalName("lShin").ParameterByCode (poser.kParmCodeXROT).SetMinValue(20)
poser.Scene().CurrentFigure().ActorByInternalName("rShin").ParameterByCode (poser.kParmCodeXROT).SetMinValue(20)
poser.Scene().CurrentFigure().ActorByInternalName("lThigh").ParameterByCode (poser.kParmCodeXROT).SetMaxValue(-10)
poser.Scene().CurrentFigure().ActorByInternalName("rThigh").ParameterByCode (poser.kParmCodeXROT).SetMaxValue(-10)

p = PhysicsTools.PoserPhysicsEngine()
p.importDefaults()
p.setGroundPlane(1)
p.setPerFrameCallback (callback)
p.setupSimulation()
p.runSimulation()

print "Simluation Complete"


Make sure you select the figure you want to dance prior to running the script.

Thursday 17 May 2012

Another Parented Prop Sample


Another example of parenting props to make complex shapes in PoserPhysics2012.  The wheel/fins are a capsule and 2 flattened boxes joined together, and they simulate as a single physics body.  The length of time they spin for after being hit by a ball can be adjusted by changing the friction of the spindle (the capsule).

I will do a full video tutorial on how to do this once PoserPhysics2012 is released.

Sunday 13 May 2012

Bowling with PoserPhysics


The is a Poser animation done using PoserPhysics2012, which provides a more realistic simulation of bowling pins than using a box for each pin.  Each pin is made up of 5 rigidly joined props, which better simulate the movement of a bowling pin when hit by the ball.  The density of the top small ball, and bottom small box in each pin can be adjusted to give different weight distribution in the pin.  The friction and bounciness of the components can also be adjusted to give the desired effect.

I will do a full video tutorial on how to do this once PoserPhysics2012 is released.

Thursday 10 May 2012

Spinning Top


This spinning top animation demonstrates the new PoserPhysics2012 feature of being able to join two props together. The capsule is parented (in Poser) to the flattened square, so the simulator treats the 2 objects are 1. To start the spinning, 2 balls (with very high density) are launched from (invisible) cubes on either side of the top.

What is impressive about this simulation is that the simulator is keeping the Top upright (so is taking the gyro forces into account).

Ideally the top would slow down over time (due to wind resistance), which can be easily be done by increasing the friction of the capsule.

Tuesday 8 May 2012

Tower Animation



This is a sample PoserPhysics2012 animation.  This took quite some time to setup, since creating the tower presenting some challenges, getting the structure secure enough to simulate well.  There are 170 blocks in the tower, and the simulation time was approx 5sec per frame.  The tower was built using a python script (message me if you want a copy).  

The balls are launched into the tower by moved a "Keyframed Until Hit" ball inside a large immoveable cube left of the scene - which caused each ball to be repelled toward the tower at great speed.  

I will do a tutorial at some point detailing how this was done.

Other Videos
Here are some other videos which I've recently put up on youtube:


The above is a PoserPhysics2012 Tutorial


The above is a PoserPhysics Demo Real


PoserPhysics2012 New Features

PoserPhysics2012 is nearing completion.  Unfortunately it is running quite behind schedule, but hopefully the wait will be worth it.  In summary, the new version of PoserPhysics includes the following:
  • An all new user interface, which is much easier to use, and is fully dockable and compatible with the Poser GUI.
  • The ability to specify the gravity of the scene via the GUI.  This is particularly useful for giving the impression of scale and magnitude (ie. Reduce gravity from -9 to -4 to give buildings a truly massive feel)
  • Simulations can now be stopped/cancelled prior to completion
  • Props can be parented to other props (via the Set Parent button in Poser), which results in PoserPhysics joining those two (or more) props in the simulation.  So complex simulation shapes can now be formed.
  • Ragdoll physics has been improved and is more robust
  • A Friction paramaters can now be set for each ragdoll and prop in the scene, to specify how "slippery" they are
I'll be posting a number of animations and tutorials here in order to help bring people all to speed on these new features.