CofMA3 V3 V4
══════════════════
Introduction
══════════════════
scripts that compute the center of mass of Aiko3, Victoria 3 and Victoria 4
these scripts worked for Daz Studio 2 and maybe !, and may work fine with Daz studio 3
CofMV3.ds, CofMV4.ds and CofMA3.ds
══════════════════
History
══════════════════
01/12/2010 Release
══════════════════
Installation
══════════════════
Download : see the attachments at the bottom of this page
the zip contains the script and the associated icon, typically you should unzip this in your
c:\program files\daz\studio\content\scripts
══════════════════
Use
══════════════════
The weights were guesstimated using the volume of the bounding boxes of each bone as reported by daz studio
Usage:
- select a human figure
- select an object, example a sphere
- run the script
the selected object should jump to the location of figure's center of mass
often times you'll want to put Vickie or Aiko's feet right below the center of mass so they can keep their balance
The script below, computes the center of gravity of V4 based on the positions and weights of her body parts.
This script should also work for figures that comprise the following bone names:
hip
abdomen
chest
neck
head
rCollar
rShldr
rForeArm
rHand
lCollar
lShldr
lForeArm
lHand
rThigh
rShin
rFoot
lThigh
lShin
lFoot
if you adapt this script to other figures, it's crucial that the sum of the weights in your list of bones/weights match the value of the variable named "totalweight"
<HR>
Code:
//======================================================
// usage:
// -- select a human figure
// -- select an object example, a sphere
// -- launch the script
// the object should move to the position of the center of mass of the figure
// this works only if all the body parts listed below are present for this figure
//======================================================
//note totalweight must be exactly equal to the sum
// of the weights listed in computecenofgravity()
var totalweight = 50000; //50 Kg or 110 lbs
skel = Scene.getSelectedNode(0).getSkeleton()
var cofm = new DzVec3( 0, 0, 0 );
computecenofgravity( skel )
App.statusLine( "( " + cofm.x + "," + cofm.y + "," + cofm.z + " )" )
var node = Scene.getSelectedNode( 1 );
if( node )
{
node.setWSPos( cofm )
}
//======================================================
//
//======================================================
function addweight( name, weight )
{
var bone = skel.findBone( name );
if( bone )
{
var cen = bone.getWSBoundingBox().getCenter();
cofm.x = cofm.x + cen.x * weight / totalweight;
cofm.y = cofm.y + cen.y * weight / totalweight;
cofm.z = cofm.z + cen.z * weight / totalweight;
}
}
//======================================================
//
//======================================================
function computecenofgravity()
{
addweight( "hip", 5800 );
addweight( "abdomen", 5800 );
addweight( "chest", 5800 );
addweight( "neck", 1300 );
addweight( "head", 3000 );
addweight( "rCollar", 2000 );
addweight( "rShldr", 1000 );
addweight( "rForeArm", 680 );
addweight( "rHand", 350 );
addweight( "lCollar", 2000 );
addweight( "lShldr", 1000 );
addweight( "lForeArm", 680 );
addweight( "lHand", 350 );
addweight( "rThigh", 6000 );
addweight( "rShin", 3440 );
addweight( "rFoot", 680 );
addweight( "lThigh", 6000 );
addweight( "lShin", 3440 );
addweight( "lFoot", 680 );
}
===============================================
below is the source code of CofMA3.ds
The script below, computes the center of gravity of A3 based on the positions and weights of her body parts.
This script should also work for figures that comprise the following bone names:
hip
abdomen
chest
neck
head
rCollar
rShldr
rForeArm
rHand
lCollar
lShldr
lForeArm
lHand
rButtock
rThigh
rShin
rFoot
lButtock
lThigh
lShin
lFoot
if you adapt this script to other figures, it's crucial that the sum of the weights in your list of bones/weights match the value of the variable named "totalweight"
===============================================
Code:
//======================================================
// usage:
// -- select a human figure ( designed for Aiko3 )
// -- select an object example, a sphere
// -- launch the script
// the object should move to the position of the center of mass of the figure
// this works only if all the body parts listed below are present for this figure
//======================================================
//note totalweight must be exactly equal to the sum
// of the weights listed in computecenofgravity()
var totalweight = 50000; //50 Kg or 110 lbs
skel = Scene.getSelectedNode(0).getSkeleton()
var cofm = new DzVec3( 0, 0, 0 );
computecenofgravity( skel )
App.statusLine( "( " + cofm.x + "," + cofm.y + "," + cofm.z + " )" )
var node = Scene.getSelectedNode( 1 );
if( node )
{
node.setWSPos( cofm )
}
//======================================================
//
//======================================================
function addweight( name, weight )
{
var bone = skel.findBone( name );
if( bone )
{
var cen = bone.getWSBoundingBox().getCenter();
cofm.x = cofm.x + cen.x * weight / totalweight;
cofm.y = cofm.y + cen.y * weight / totalweight;
cofm.z = cofm.z + cen.z * weight / totalweight;
}
}
//======================================================
//
//======================================================
function computecenofgravity()
{
addweight( "hip", 4100 );
addweight( "abdomen", 2500 );
addweight( "chest", 5500 );
addweight( "neck", 600 );
addweight( "head", 3700 );
addweight( "rCollar", 5000 );
addweight( "rShldr", 900 );
addweight( "rForeArm", 1000 );
addweight( "rHand", 300 );
addweight( "lCollar", 5000 );
addweight( "lShldr", 900 );
addweight( "lForeArm", 1000 );
addweight( "lHand", 300 );
addweight( "rButtock", 4200 );
addweight( "rThigh", 2200 );
addweight( "rShin", 2600 );
addweight( "rFoot", 600 );
addweight( "lButtock", 4200 );
addweight( "lThigh", 2200 );
addweight( "lShin", 2600 );
addweight( "lFoot", 600 );
}
===============================================
below is the source code of CofMV3.ds
The script below, computes the center of gravity of V3 based on the positions and weights of her body parts.
This script should also work for figures that comprise the following bone names:
hip
abdomen
chest
neck
head
rCollar
rShldr
rForeArm
rHand
lCollar
lShldr
lForeArm
lHand
rButtock
rThigh
rShin
rFoot
lButtock
lThigh
lShin
lFoot
if you adapt this script to other figures, it's crucial that the sum of the weights in your list of bones/weights match the value of the variable named "totalweight"
===============================================
Code:
//======================================================
// usage:
// -- select a human figure ( designed for Victoria3 )
// -- select an object example, a sphere
// -- launch the script
// the object should move to the position of the center of mass of the figure
// this works only if all the body parts listed below are present for this figure
//======================================================
//note totalweight must be exactly equal to the sum
// of the weights listed in computecenofgravity()
var totalweight = 50000; //50 Kg or 110 lbs
skel = Scene.getSelectedNode(0).getSkeleton()
var cofm = new DzVec3( 0, 0, 0 );
computecenofgravity( skel )
App.statusLine( "( " + cofm.x + "," + cofm.y + "," + cofm.z + " )" )
var node = Scene.getSelectedNode( 1 );
if( node )
{
node.setWSPos( cofm )
}
//======================================================
//
//======================================================
function addweight( name, weight )
{
var bone = skel.findBone( name );
if( bone )
{
var cen = bone.getWSBoundingBox().getCenter();
cofm.x = cofm.x + cen.x * weight / totalweight;
cofm.y = cofm.y + cen.y * weight / totalweight;
cofm.z = cofm.z + cen.z * weight / totalweight;
}
}
//======================================================
//
//======================================================
function computecenofgravity()
{
addweight( "hip", 5370 );
addweight( "abdomen", 3200 );
addweight( "chest", 6200 );
addweight( "neck", 600 );
addweight( "head", 2090 );
addweight( "rCollar", 4900 );
addweight( "rShldr", 900 );
addweight( "rForeArm", 950 );
addweight( "rHand", 250 );
addweight( "lCollar", 4900 );
addweight( "lShldr", 900 );
addweight( "lForeArm", 950 );
addweight( "lHand", 250 );
addweight( "rButtock", 4020 );
addweight( "rThigh", 2500 );
addweight( "rShin", 2300 );
addweight( "rFoot", 450 );
addweight( "lButtock", 4020 );
addweight( "lThigh", 2500 );
addweight( "lShin", 2300 );
addweight( "lFoot", 450 );
}