Sorry - I meant physics-based sound: using physical properties of objects to
generate sound.
--- In dancedev@yahoogroups.com, el hadri akram <ehakram@...> wrote:
>
> Send me everything that you have (while it doesn't demands you a lot of
> effort), and it would be better if you add it to a section to your web
> site so every one can use it. I said to send me everything because I'm
> busy these days (weeks?), so I would like to have these plugins on my
> disk, waiting for the day that I would have more free time.
> You spoke about sound-based physics, I googled that and I didn't find a
> lot of material about that. What do you mean by sound-based physics?
> Thanks
>
>
>
>
> ________________________________
> De : shapiroari <shapiroari@...>
> � : dancedev@yahoogroups.com
> Envoy� le : Mar 27 Octobre 2009, 22 h 43 min 50 s
> Objet : [dancedev] Re: available plugins
>
>
> During the course of time that DANCE was developed, there have been many
plugins built for various versions of the software; everything from cloth
simulators to particular simulators to sound-based physics, to motion
retargeting, to sound-based facial animation and so forth. Most of the plugins
were built in a short period of time and used sparingly, so i didn't include
them as part of the main DANCE distribution. Also, I spent most of my time
concentrating on the skeleton/rigid body aspects of DANCE and included all the
plugins related to that.
>
> If there is something in particular that you are looking for, I might be able
to dredge up the code for it. But I haven't seen anyone else post their plugins
or share them yet (although it would be nice if they would :) )
>
> Ari
>
> --- In dancedev@yahoogroup s.com, "ehakram" <ehakram@ > wrote:
> >
> > Hey everyone
> > I'm new to 3D animation and to DANCE. I wanted to know if there is a place
where we can download user created plugins, so I can try different already
implemented technics.
> > Thanks
> >
>
Send me everything that you have (while it doesn't demands you a lot of
effort), and it would be better if you add it to a section to your web
site so every one can use it. I said to send me everything because I'm
busy these days (weeks?), so I would like to have these plugins on my
disk, waiting for the day that I would have more free time.
You spoke about sound-based physics, I googled that and I didn't find a
lot of material about that. What do you mean by sound-based physics?
Thanks
De : shapiroari <shapiroari@...> À : dancedev@yahoogroups.com Envoyé le : Mar 27 Octobre 2009, 22 h 43 min 50 s Objet : [dancedev] Re: available plugins
During the course of time that DANCE was developed, there have been many plugins built for various versions of the software; everything from cloth simulators to particular simulators to sound-based physics, to motion retargeting, to sound-based facial animation and so forth. Most of the plugins were built in a short period of time and used sparingly, so i didn't include them as part of the main DANCE distribution. Also, I spent most of my time concentrating on the skeleton/rigid body aspects of DANCE and included all the plugins related to that.
If there is something in particular that you are looking for, I might be able to dredge up the code for it. But I haven't seen anyone else post their plugins or share them yet (although it would be nice if they would :) )
Ari
--- In dancedev@yahoogroup s.com, "ehakram" <ehakram@... > wrote:
>
> Hey everyone
> I'm new to 3D animation and to DANCE. I wanted to know if there is a place where we can download user created plugins, so I can try different already implemented technics.
> Thanks
>
During the course of time that DANCE was developed, there have been many plugins
built for various versions of the software; everything from cloth simulators to
particular simulators to sound-based physics, to motion retargeting, to
sound-based facial animation and so forth. Most of the plugins were built in a
short period of time and used sparingly, so i didn't include them as part of the
main DANCE distribution. Also, I spent most of my time concentrating on the
skeleton/rigid body aspects of DANCE and included all the plugins related to
that.
If there is something in particular that you are looking for, I might be able to
dredge up the code for it. But I haven't seen anyone else post their plugins or
share them yet (although it would be nice if they would :) )
Ari
--- In dancedev@yahoogroups.com, "ehakram" <ehakram@...> wrote:
>
> Hey everyone
> I'm new to 3D animation and to DANCE. I wanted to know if there is a place
where we can download user created plugins, so I can try different already
implemented technics.
> Thanks
>
Hey everyone
I'm new to 3D animation and to DANCE. I wanted to know if there is a place where
we can download user created plugins, so I can try different already implemented
technics.
Thanks
To add the translational values, you could create another function:
void CharJoint::addFrame(Quaternion* quat, double x, double y, double z)
which is similar to the existing:
void CharJoint::addFrame(Quaternion* quat);
function with the addition that the x,y,z values will be assigned to the XPOSITION, YPOSITION and ZPOSITION channels.
This will work for the root joint.
Ari
From: yejink76 <yejink76@...> To: dancedev@yahoogroups.com Sent: Monday, September 21, 2009 3:09:00 PM Subject: [dancedev] Re: Adding or updating quaternion value to CharJoint class
I tried the addFrame(Quaternion ), but it seems not working. So I compared "void CharJoint::addFrame (Quaternion* quat)" with "void CharJoint::addFrame (double* vals)", and found that "m_frames.push_ back(newframe) " is omitted from "void CharJoint::addFrame (Quaternion* quat)". Isn't it necessary to fill m_frames to get an animation sequence?
Also, I need to add both translatoinal (for root) and rotational data into a single frame without converting quaternion to Euler angles as my quaternion to Euler conversion function only works angle between -90 and +90 degrees. Is there a way around to add both data into a single frame? Or does Dance include quaternion to Euler conversion function that outputs angles between 0 and 360 degrees?
--- In dancedev@yahoogroup s.com, Ari Shapiro <shapiroari@ ...> wrote:
>
> Are you trying to add translational information in the first call to addFrame() and then the rotational information in the second call to addFrame()? This will add two separate frames.
>
> If you wanted to add them both together, you'd have to decompose the quaternion to Euler angles and add them in a single addFrame() call.
>
> Normally, the addFrame(Quaternion ) will work if the joint has no translational components.
>
> Ari
>
>
>
>
>
>
>
>
>
>
> ____________ _________ _________ __
> From: yejink76 <yejink76@.. .>
> To: dancedev@yahoogroup s.com
> Sent: Thursday, September 17, 2009 5:02:01 PM
> Subject: [dancedev] Adding or updating quaternion value to CharJoint class
>
>
> Hi, Ari.
>
> Relating to adding root translation and joint rotation data to CharJoint class, I am trying to add quaternion value to CharJoint class directly. I have found that "void CharJoint::addFrame (Quaternion* quat)" seems to do this. So I have tried to add quaternion like following way:
>
> ------------ --------- --------- --------- --------- --------- -
> int *channels = new int[numChannels] ;
> double *AngleFrames = new double[numChannels] ;
> Quaternion QuatFrames;
>
> // RootPos contains a root translation data loaded from a motion file
> // while JointQuat contains quaternion rotation values for joint
> // converted from Euler angle in a motion file.
> for (int i = 0; i < m_pCharacter- >getNumJoints( ); i++) {
> CharJoint *pCurJoint = m_pCharacter- >getJointByIndex (i);
> pCurJoint->getChann els(channels) ;
>
> for (int j = 0; j < pCurJoint->getNumCh annels(); j++) {
> if (channels[j] == CharJoint::XPOSITIO N)
> AngleFrames[ j] = RootPos.x();
> else if (channels[j] == CharJoint::YPOSITIO N)
> AngleFrames[ j] = RootPos.y();
> else if (channels[j] == CharJoint::ZPOSITIO N)
> AngleFrames[ j] = RootPos.z();
> else if (channels[j] == CharJoint::XROTATIO N)
> QuatFrames.set( 0, JointQuat[i] .x());
> else if (channels[j] == CharJoint::YROTATIO N)
> QuatFrames.set( 1, JointQuat[i] .y());
> else if (channels[j] == CharJoint::ZROTATIO N)
> QuatFrames.set( 2, JointQuat[i] .z());
>
> QuatFrames.set( 3, JointQuat[JointIdx] .w());
>
> pCurJont->addFrame( AngleFrames) ;
> pCurJoint->addFrame (&QuatFrames) ;
> }
> ------------ --------- --------- --------- --------- --------- -
> However, this doesn't properly add quaternion value to each CharJoint. Do you have any example how to use this function properly? I don't want to add rotation data in Euler angle as it requires another quaternion to Euler conversion.
>
> Thanks.
>
I tried the addFrame(Quaternion), but it seems not working. So I compared "void
CharJoint::addFrame(Quaternion* quat)" with "void CharJoint::addFrame(double*
vals)", and found that "m_frames.push_back(newframe)" is omitted from "void
CharJoint::addFrame(Quaternion* quat)". Isn't it necessary to fill m_frames to
get an animation sequence?
Also, I need to add both translatoinal (for root) and rotational data into a
single frame without converting quaternion to Euler angles as my quaternion to
Euler conversion function only works angle between -90 and +90 degrees. Is there
a way around to add both data into a single frame? Or does Dance include
quaternion to Euler conversion function that outputs angles between 0 and 360
degrees?
--- In dancedev@yahoogroups.com, Ari Shapiro <shapiroari@...> wrote:
>
> Are you trying to add translational information in the first call to
addFrame() and then the rotational information in the second call to addFrame()?
This will add two separate frames.
>
> If you wanted to add them both together, you'd have to decompose the
quaternion to Euler angles and add them in a single addFrame() call.
>
> Normally, the addFrame(Quaternion) will work if the joint has no translational
components.
>
> Ari
>
>
>
>
>
>
>
>
>
>
> ________________________________
> From: yejink76 <yejink76@...>
> To: dancedev@yahoogroups.com
> Sent: Thursday, September 17, 2009 5:02:01 PM
> Subject: [dancedev] Adding or updating quaternion value to CharJoint class
>
>
> Hi, Ari.
>
> Relating to adding root translation and joint rotation data to CharJoint
class, I am trying to add quaternion value to CharJoint class directly. I have
found that "void CharJoint::addFrame (Quaternion* quat)" seems to do this. So I
have tried to add quaternion like following way:
>
> ------------ --------- --------- --------- --------- --------- -
> int *channels = new int[numChannels] ;
> double *AngleFrames = new double[numChannels] ;
> Quaternion QuatFrames;
>
> // RootPos contains a root translation data loaded from a motion file
> // while JointQuat contains quaternion rotation values for joint
> // converted from Euler angle in a motion file.
> for (int i = 0; i < m_pCharacter- >getNumJoints( ); i++) {
> CharJoint *pCurJoint = m_pCharacter- >getJointByIndex (i);
> pCurJoint->getChann els(channels) ;
>
> for (int j = 0; j < pCurJoint->getNumCh annels(); j++) {
> if (channels[j] == CharJoint::XPOSITIO N)
> AngleFrames[ j] = RootPos.x();
> else if (channels[j] == CharJoint::YPOSITIO N)
> AngleFrames[ j] = RootPos.y();
> else if (channels[j] == CharJoint::ZPOSITIO N)
> AngleFrames[ j] = RootPos.z();
> else if (channels[j] == CharJoint::XROTATIO N)
> QuatFrames.set( 0, JointQuat[i] .x());
> else if (channels[j] == CharJoint::YROTATIO N)
> QuatFrames.set( 1, JointQuat[i] .y());
> else if (channels[j] == CharJoint::ZROTATIO N)
> QuatFrames.set( 2, JointQuat[i] .z());
>
> QuatFrames.set( 3, JointQuat[JointIdx] .w());
>
> pCurJont->addFrame( AngleFrames) ;
> pCurJoint->addFrame (&QuatFrames) ;
> }
> ------------ --------- --------- --------- --------- --------- -
> However, this doesn't properly add quaternion value to each CharJoint. Do you
have any example how to use this function properly? I don't want to add rotation
data in Euler angle as it requires another quaternion to Euler conversion.
>
> Thanks.
>
Are you trying to add translational information in the first call to addFrame() and then the rotational information in the second call to addFrame()? This will add two separate frames.
If you wanted to add them both together, you'd have to decompose the quaternion to Euler angles and add them in a single addFrame() call.
Normally, the addFrame(Quaternion) will work if the joint has no translational components.
Ari
From: yejink76
<yejink76@...> To: dancedev@yahoogroups.com Sent: Thursday, September 17, 2009 5:02:01 PM Subject: [dancedev] Adding or updating quaternion value to CharJoint class
Hi, Ari.
Relating to adding root translation and joint rotation data to CharJoint class, I am trying to add quaternion value to CharJoint class directly. I have found that "void CharJoint::addFrame (Quaternion* quat)" seems to do this. So I have tried to add quaternion like following way:
------------ --------- --------- --------- --------- --------- -
int *channels = new int[numChannels] ;
double *AngleFrames = new double[numChannels] ;
Quaternion QuatFrames;
// RootPos contains a root translation data loaded from a motion file
// while JointQuat contains quaternion rotation values for joint
// converted from Euler angle in a motion file.
for (int i = 0; i < m_pCharacter- >getNumJoints( ); i++) {
CharJoint *pCurJoint = m_pCharacter- >getJointByIndex (i);
pCurJoint->getChann els(channels) ;
for (int j = 0; j < pCurJoint->getNumCh annels(); j++) {
if (channels[j] == CharJoint::XPOSITIO N)
AngleFrames[ j] = RootPos.x();
else if (channels[j] == CharJoint::YPOSITIO N)
AngleFrames[ j] = RootPos.y();
else if (channels[j] == CharJoint::ZPOSITIO N)
AngleFrames[ j] = RootPos.z();
else if (channels[j] == CharJoint::XROTATIO N)
QuatFrames.set( 0, JointQuat[i] .x());
else if (channels[j] == CharJoint::YROTATIO N)
QuatFrames.set( 1, JointQuat[i] .y());
else if (channels[j] == CharJoint::ZROTATIO N)
QuatFrames.set( 2, JointQuat[i] .z());
QuatFrames.set( 3, JointQuat[JointIdx] .w());
pCurJont->addFrame( AngleFrames) ;
pCurJoint->addFrame (&QuatFrames) ;
}
------------ --------- --------- --------- --------- --------- -
However, this doesn't properly add quaternion value to each CharJoint. Do you have any example how to use this function properly? I don't want to add rotation data in Euler angle as it requires another quaternion to Euler conversion.
Hi,
my first demo is finished :-D thank you very much indeed. Now the new goal is to
interact with the skeleton using the inverse kinematics. In details, i would
move the arm of skeleton to a target point in the space.
I wrote this example code but the plugin don't work (sorry for the mistakes of
typing but I don't remember all functions :) )
ArticulatedObject* ao = dynamic_cast< ArticulatedObjec t*>(dance: :AllSystems-
>get("skeleton"));
ao->setActiveIKChain(0); // chain left arm
Vector origin;
Vector goal;
ao->getIKChain(ao->getActiveIKChain())->getOrigin(origin)
goal[0] = origin[0];
goal[1] = origin[1] + 1.0;
goal[2] = origin[2];
ao->getIKChain(ao->getActiveIKChain())->setGoal(goal);
ao->activeIKchain();
Thanks to all
Stefano Debattisti
--- In dancedev@yahoogroups.com, "shapiroari" <shapiroari@...> wrote:
>
> The attachments are connected to the links, so you can:
>
> Joint* joint = ao->getJoint(linkNum);
> joint->getOutboardLink()->setAttachmentStatic(NULL);
> ao->getSimulator(0)->checkAttachments(); // this needs to be called to
reconcile the attachments in the simulator
>
> Yes, you can add/remove attachments during any time step during the
simulation.
>
> Ari
>
> --- In dancedev@yahoogroups.com, "stefanodebattisti" <stefanodebattisti@>
wrote:
> >
> > Hello,
> > thanks for the suggestions, they work fine.
> > Now I have one remaining problem, related to removing attachments.
> > I have set two static attachments in my plugin's constructor and I want to
remove them during the simulation. Is it possible? And in which way?
> > Thanks to all,
> > Stefano Debattisti
> >
> >
> > --- In dancedev@yahoogroups.com, Ari Shapiro <shapiroari@> wrote:
> > >
> > > The CollisionSphere is also a 'skeleton' of sorts, and you can get a
reference to it in your skeleton's controller by using very similar code:
> > >
> > > ArticulatedObject* cs = dynamic_cast< ArticulatedObjec t*>(dance:
:AllSystems- >get("sphere_system")); // use whatever name is used for the
collision sphere system
> > >
> > > Joint* csjoint = ao->getJoint( 0);// get the first joint
> > > Vector jointPosition;
> > > csjoint->getPosition(jointPosition); // jointPosition now holds the xyz
coordinates of the sphere
> > >
> > > To get the radius of the sphere for collision purposes, you would need to
access the Geometry connected to the Link:
> > >
> > > DGeometry* sphereGeometry = cs->getLink(0)->getGeometry();
> > > Vector scale;
> > > sphereGeometry->getScaling(scale); // scale will now contain the xyz
scaling for the sphere
> > > double radius = scale[0] / 2.0;
> > >
> > > Ari
> > >
> > >
> > >
> > >
> > >
> > > To: dancedev@yahoogroups.com
> > > Sent: Monday, August 31, 2009 1:01:31 AM
> > > Subject: [dancedev] Re: Using DANCE
> > >
> > >
> > > Hello,
> > > i've undestood your reply, but there are still some problems.
> > > My goal is to create a simulated environment where a skeleton can interact
with a CollisionSphere with a linear motion; as interaction i mean that the
skeleton have to avoid contacts with the CollisionSphere. In order to avoid
collisions, the skeleton has to perceive the world around it and has to perceive
the sphere .
> > > At this point, i can know the exact position of the sphere but only in the
CollisionSphere scope, so i don't know how to communicate this data to the
skeleton's controller.
> > > My question is: how i can do this or there's another way to do the same
things?
> > > Best regards,
> > > Stefano Debattisti
> > >
> > > --- In dancedev@yahoogroup s.com, Ari Shapiro <shapiroari@ ...> wrote:
> > > >
> > > > You can get state information in a couple of different ways:
> > > >
> > > > For ArticulatedObjects/ skeletons, first get the reference to the
ArticulatedObject:
> > > >
> > > > ArticulatedObject* ao = dynamic_cast< ArticulatedObjec t*>(dance:
:AllSystems- >get("myskeleton "));
> > > >
> > > > 1) To get the position of a joint:
> > > >
> > > > Joint* myjoint = ao->getJoint( 0); // index of the joint
> > > > Vector jointPosition;
> > > > myjoint->getPositio n(jointPosition) ;
> > > >
> > > > 1a) To get the 'state' of the joint, which usually refers to the angles
in radians of the joints, and, if this is a free joint, the XYZ position
> > > > double mystate = myjoint->getState( 0); // index of the state, i.e. 0 =
first dof, 1 = second dof, etc.
> > > >
> > > > 2) To get the position of a link/bone:
> > > >
> > > > Link* myLink = ao->getLink( 0); // index of the link/bone
> > > > Vector bonePosition;
> > > > myLink->getPosition (bonePosition) ;
> > > >
> > > > (there are other calls in $DANCE_DIR/systems/ ArticulatedObjec t/Link.h
like getOrientation( ), getEndEffector( ), getAxes(), etc.)
> > > >
> > > > 3) To get velocity information, it's best to get that information
directly from the simulator:
> > > >
> > > > ArticulatedObject* ao = dynamic_cast< ArticulatedObjec t*>(dance:
:AllSystems- >get("myskeleton "));
> > > > DSimulator* sim = ao->getSimulator( 0); // get the first simulator,
usually the only one
> > > > Vector offset = {0,0,0};
> > > > Vector boneLinearVelocity;
> > > > sim->GetVel( 0, offset, boneLinearVelocity) ; // get the linear
velocity of the link/bone with no offset from the COM for the 0th link/bone);
> > > > Vector boneLinearVelocity;
> > > >
> > > > sim->GetAngVel( 0, boneAngularVelocity ); // get the angular velocity
of
> > > > the link/bone for the 0th link/bone);
> > > >
> > > > Regards,
> > > >
> > > > Ari Shapiro
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > ____________ _________ _________ __
> > > > From: stefanodebattisti <stefanodebattisti@ ...>
> > > > To: dancedev@yahoogroup s.com
> > > > Sent: Tuesday, July 14, 2009 5:25:26 AM
> > > > Subject: [dancedev] Using DANCE
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > Hello, i've got a question about using DANCE: is the post n�199 the
only way to get the state (position, velocity, etc.) of the objects in the DANCE
world? Is it possible to do the same thing in C?.
> > > >
> > > > Regards,
> > > > Stefano Debattisti
> > > >
> > >
> > >
> > > From: stefanodebattisti <stefanodebattisti@>
> > >
> >
>
Hi, Ari.
Relating to adding root translation and joint rotation data to CharJoint class,
I am trying to add quaternion value to CharJoint class directly. I have found
that "void CharJoint::addFrame(Quaternion* quat)" seems to do this. So I have
tried to add quaternion like following way:
----------------------------------------------------------------------
int *channels = new int[numChannels];
double *AngleFrames = new double[numChannels];
Quaternion QuatFrames;
// RootPos contains a root translation data loaded from a motion file
// while JointQuat contains quaternion rotation values for joint
// converted from Euler angle in a motion file.
for (int i = 0; i < m_pCharacter->getNumJoints(); i++) {
CharJoint *pCurJoint = m_pCharacter->getJointByIndex(i);
pCurJoint->getChannels(channels);
for (int j = 0; j < pCurJoint->getNumChannels(); j++) {
if (channels[j] == CharJoint::XPOSITION)
AngleFrames[j] = RootPos.x();
else if (channels[j] == CharJoint::YPOSITION)
AngleFrames[j] = RootPos.y();
else if (channels[j] == CharJoint::ZPOSITION)
AngleFrames[j] = RootPos.z();
else if (channels[j] == CharJoint::XROTATION)
QuatFrames.set(0, JointQuat[i].x());
else if (channels[j] == CharJoint::YROTATION)
QuatFrames.set(1, JointQuat[i].y());
else if (channels[j] == CharJoint::ZROTATION)
QuatFrames.set(2, JointQuat[i].z());
QuatFrames.set(3, JointQuat[JointIdx].w());
pCurJont->addFrame(AngleFrames);
pCurJoint->addFrame(&QuatFrames);
}
----------------------------------------------------------------------
However, this doesn't properly add quaternion value to each CharJoint. Do you
have any example how to use this function properly? I don't want to add rotation
data in Euler angle as it requires another quaternion to Euler conversion.
Thanks.
The attachments are connected to the links, so you can:
Joint* joint = ao->getJoint(linkNum);
joint->getOutboardLink()->setAttachmentStatic(NULL);
ao->getSimulator(0)->checkAttachments(); // this needs to be called to reconcile
the attachments in the simulator
Yes, you can add/remove attachments during any time step during the simulation.
Ari
--- In dancedev@yahoogroups.com, "stefanodebattisti" <stefanodebattisti@...>
wrote:
>
> Hello,
> thanks for the suggestions, they work fine.
> Now I have one remaining problem, related to removing attachments.
> I have set two static attachments in my plugin's constructor and I want to
remove them during the simulation. Is it possible? And in which way?
> Thanks to all,
> Stefano Debattisti
>
>
> --- In dancedev@yahoogroups.com, Ari Shapiro <shapiroari@> wrote:
> >
> > The CollisionSphere is also a 'skeleton' of sorts, and you can get a
reference to it in your skeleton's controller by using very similar code:
> >
> > ArticulatedObject* cs = dynamic_cast< ArticulatedObjec t*>(dance:
:AllSystems- >get("sphere_system")); // use whatever name is used for the
collision sphere system
> >
> > Joint* csjoint = ao->getJoint( 0);// get the first joint
> > Vector jointPosition;
> > csjoint->getPosition(jointPosition); // jointPosition now holds the xyz
coordinates of the sphere
> >
> > To get the radius of the sphere for collision purposes, you would need to
access the Geometry connected to the Link:
> >
> > DGeometry* sphereGeometry = cs->getLink(0)->getGeometry();
> > Vector scale;
> > sphereGeometry->getScaling(scale); // scale will now contain the xyz
scaling for the sphere
> > double radius = scale[0] / 2.0;
> >
> > Ari
> >
> >
> >
> >
> >
> > To: dancedev@yahoogroups.com
> > Sent: Monday, August 31, 2009 1:01:31 AM
> > Subject: [dancedev] Re: Using DANCE
> >
> >
> > Hello,
> > i've undestood your reply, but there are still some problems.
> > My goal is to create a simulated environment where a skeleton can interact
with a CollisionSphere with a linear motion; as interaction i mean that the
skeleton have to avoid contacts with the CollisionSphere. In order to avoid
collisions, the skeleton has to perceive the world around it and has to perceive
the sphere .
> > At this point, i can know the exact position of the sphere but only in the
CollisionSphere scope, so i don't know how to communicate this data to the
skeleton's controller.
> > My question is: how i can do this or there's another way to do the same
things?
> > Best regards,
> > Stefano Debattisti
> >
> > --- In dancedev@yahoogroup s.com, Ari Shapiro <shapiroari@ ...> wrote:
> > >
> > > You can get state information in a couple of different ways:
> > >
> > > For ArticulatedObjects/ skeletons, first get the reference to the
ArticulatedObject:
> > >
> > > ArticulatedObject* ao = dynamic_cast< ArticulatedObjec t*>(dance:
:AllSystems- >get("myskeleton "));
> > >
> > > 1) To get the position of a joint:
> > >
> > > Joint* myjoint = ao->getJoint( 0); // index of the joint
> > > Vector jointPosition;
> > > myjoint->getPositio n(jointPosition) ;
> > >
> > > 1a) To get the 'state' of the joint, which usually refers to the angles in
radians of the joints, and, if this is a free joint, the XYZ position
> > > double mystate = myjoint->getState( 0); // index of the state, i.e. 0 =
first dof, 1 = second dof, etc.
> > >
> > > 2) To get the position of a link/bone:
> > >
> > > Link* myLink = ao->getLink( 0); // index of the link/bone
> > > Vector bonePosition;
> > > myLink->getPosition (bonePosition) ;
> > >
> > > (there are other calls in $DANCE_DIR/systems/ ArticulatedObjec t/Link.h
like getOrientation( ), getEndEffector( ), getAxes(), etc.)
> > >
> > > 3) To get velocity information, it's best to get that information directly
from the simulator:
> > >
> > > ArticulatedObject* ao = dynamic_cast< ArticulatedObjec t*>(dance:
:AllSystems- >get("myskeleton "));
> > > DSimulator* sim = ao->getSimulator( 0); // get the first simulator,
usually the only one
> > > Vector offset = {0,0,0};
> > > Vector boneLinearVelocity;
> > > sim->GetVel( 0, offset, boneLinearVelocity) ; // get the linear
velocity of the link/bone with no offset from the COM for the 0th link/bone);
> > > Vector boneLinearVelocity;
> > >
> > > sim->GetAngVel( 0, boneAngularVelocity ); // get the angular velocity of
> > > the link/bone for the 0th link/bone);
> > >
> > > Regards,
> > >
> > > Ari Shapiro
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > ____________ _________ _________ __
> > > From: stefanodebattisti <stefanodebattisti@ ...>
> > > To: dancedev@yahoogroup s.com
> > > Sent: Tuesday, July 14, 2009 5:25:26 AM
> > > Subject: [dancedev] Using DANCE
> > >
> > >
> > >
> > >
> > >
> > > Hello, i've got a question about using DANCE: is the post n�199 the only
way to get the state (position, velocity, etc.) of the objects in the DANCE
world? Is it possible to do the same thing in C?.
> > >
> > > Regards,
> > > Stefano Debattisti
> > >
> >
> >
> > From: stefanodebattisti <stefanodebattisti@>
> >
>
Hello,
thanks for the suggestions, they work fine.
Now I have one remaining problem, related to removing attachments.
I have set two static attachments in my plugin's constructor and I want to
remove them during the simulation. Is it possible? And in which way?
Thanks to all,
Stefano Debattisti
--- In dancedev@yahoogroups.com, Ari Shapiro <shapiroari@...> wrote:
>
> The CollisionSphere is also a 'skeleton' of sorts, and you can get a reference
to it in your skeleton's controller by using very similar code:
>
> ArticulatedObject* cs = dynamic_cast< ArticulatedObjec t*>(dance:
:AllSystems- >get("sphere_system")); // use whatever name is used for the
collision sphere system
>
> Joint* csjoint = ao->getJoint( 0);// get the first joint
> Vector jointPosition;
> csjoint->getPosition(jointPosition); // jointPosition now holds the xyz
coordinates of the sphere
>
> To get the radius of the sphere for collision purposes, you would need to
access the Geometry connected to the Link:
>
> DGeometry* sphereGeometry = cs->getLink(0)->getGeometry();
> Vector scale;
> sphereGeometry->getScaling(scale); // scale will now contain the xyz
scaling for the sphere
> double radius = scale[0] / 2.0;
>
> Ari
>
>
>
>
>
> To: dancedev@yahoogroups.com
> Sent: Monday, August 31, 2009 1:01:31 AM
> Subject: [dancedev] Re: Using DANCE
>
>
> Hello,
> i've undestood your reply, but there are still some problems.
> My goal is to create a simulated environment where a skeleton can interact
with a CollisionSphere with a linear motion; as interaction i mean that the
skeleton have to avoid contacts with the CollisionSphere. In order to avoid
collisions, the skeleton has to perceive the world around it and has to perceive
the sphere .
> At this point, i can know the exact position of the sphere but only in the
CollisionSphere scope, so i don't know how to communicate this data to the
skeleton's controller.
> My question is: how i can do this or there's another way to do the same
things?
> Best regards,
> Stefano Debattisti
>
> --- In dancedev@yahoogroup s.com, Ari Shapiro <shapiroari@ ...> wrote:
> >
> > You can get state information in a couple of different ways:
> >
> > For ArticulatedObjects/ skeletons, first get the reference to the
ArticulatedObject:
> >
> > ArticulatedObject* ao = dynamic_cast< ArticulatedObjec t*>(dance:
:AllSystems- >get("myskeleton "));
> >
> > 1) To get the position of a joint:
> >
> > Joint* myjoint = ao->getJoint( 0); // index of the joint
> > Vector jointPosition;
> > myjoint->getPositio n(jointPosition) ;
> >
> > 1a) To get the 'state' of the joint, which usually refers to the angles in
radians of the joints, and, if this is a free joint, the XYZ position
> > double mystate = myjoint->getState( 0); // index of the state, i.e. 0 =
first dof, 1 = second dof, etc.
> >
> > 2) To get the position of a link/bone:
> >
> > Link* myLink = ao->getLink( 0); // index of the link/bone
> > Vector bonePosition;
> > myLink->getPosition (bonePosition) ;
> >
> > (there are other calls in $DANCE_DIR/systems/ ArticulatedObjec t/Link.h like
getOrientation( ), getEndEffector( ), getAxes(), etc.)
> >
> > 3) To get velocity information, it's best to get that information directly
from the simulator:
> >
> > ArticulatedObject* ao = dynamic_cast< ArticulatedObjec t*>(dance:
:AllSystems- >get("myskeleton "));
> > DSimulator* sim = ao->getSimulator( 0); // get the first simulator,
usually the only one
> > Vector offset = {0,0,0};
> > Vector boneLinearVelocity;
> > sim->GetVel( 0, offset, boneLinearVelocity) ; // get the linear velocity
of the link/bone with no offset from the COM for the 0th link/bone);
> > Vector boneLinearVelocity;
> >
> > sim->GetAngVel( 0, boneAngularVelocity ); // get the angular velocity of
> > the link/bone for the 0th link/bone);
> >
> > Regards,
> >
> > Ari Shapiro
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > ____________ _________ _________ __
> > From: stefanodebattisti <stefanodebattisti@ ...>
> > To: dancedev@yahoogroup s.com
> > Sent: Tuesday, July 14, 2009 5:25:26 AM
> > Subject: [dancedev] Using DANCE
> >
> >
> >
> >
> >
> > Hello, i've got a question about using DANCE: is the post n°199 the only way
to get the state (position, velocity, etc.) of the objects in the DANCE world?
Is it possible to do the same thing in C?.
> >
> > Regards,
> > Stefano Debattisti
> >
>
>
> From: stefanodebattisti <stefanodebattisti@...>
>
All,
I released a new version of the DANCE code which integrates many of the build
issues that have been discussed here, as well as the elimination of many
warnings during compilation.
Also, I added some code to automatically calculate the inertia of rigid bodies.
You can download this new version at:
http://www.arishapiro.com/dance/
If there are any problems with this distribution, please let me know.
Regards,
Ari Shapiro
The CollisionSphere is also a 'skeleton' of sorts, and you can get a reference to it in your skeleton's controller by using very similar code:
ArticulatedObject* cs = dynamic_cast< ArticulatedObjec t*>(dance: :AllSystems- >get("sphere_system")); // use whatever name is used for the collision sphere system
Joint* csjoint = ao->getJoint( 0);// get the first joint Vector jointPosition; csjoint->getPosition(jointPosition); // jointPosition now holds the xyz coordinates of the sphere
To get the radius of the sphere for collision purposes, you would need to access the Geometry connected to the Link:
DGeometry* sphereGeometry
= cs->getLink(0)->getGeometry(); Vector scale; sphereGeometry->getScaling(scale); // scale will now contain the xyz scaling for the sphere double radius = scale[0] / 2.0;
Ari
To: dancedev@yahoogroups.com Sent: Monday, August 31, 2009 1:01:31 AM Subject: [dancedev] Re: Using DANCE
Hello,
i've undestood your reply, but there are still some problems.
My goal is to create a simulated environment where a skeleton can interact with a CollisionSphere with a linear motion; as interaction i mean that the skeleton have to avoid contacts with the CollisionSphere. In order to avoid collisions, the skeleton has to perceive the world around it and has to perceive the sphere .
At this point, i can know the exact position of the sphere but only in the CollisionSphere scope, so i don't know how to communicate this data to the skeleton's controller.
My question is: how i can do this or there's another way to do the same things?
Best regards,
Stefano Debattisti
--- In dancedev@yahoogroup s.com, Ari Shapiro <shapiroari@ ...> wrote:
>
> You can get state information in a couple of different ways:
>
> For ArticulatedObjects/ skeletons, first get the reference to the ArticulatedObject:
>
> ArticulatedObject* ao = dynamic_cast< ArticulatedObjec t*>(dance: :AllSystems- >get("myskeleton "));
>
> 1) To get the position of a joint:
>
> Joint* myjoint = ao->getJoint( 0); // index of the joint
> Vector jointPosition;
> myjoint->getPositio n(jointPosition) ;
>
> 1a) To get the 'state' of the joint, which usually refers to the angles in radians of the joints, and, if this is a free joint, the XYZ position
> double mystate = myjoint->getState( 0); // index of the state, i.e. 0 = first dof, 1 = second dof, etc.
>
> 2) To get the position of a link/bone:
>
> Link* myLink = ao->getLink( 0); // index of the link/bone
> Vector bonePosition;
> myLink->getPosition (bonePosition) ;
>
> (there are other calls in $DANCE_DIR/systems/ ArticulatedObjec t/Link.h like getOrientation( ), getEndEffector( ), getAxes(), etc.)
>
> 3) To get velocity information, it's best to get that information directly from the simulator:
>
> ArticulatedObject* ao = dynamic_cast< ArticulatedObjec t*>(dance: :AllSystems- >get("myskeleton "));
> DSimulator* sim = ao->getSimulator( 0); // get the first simulator, usually the only one
> Vector offset = {0,0,0};
> Vector boneLinearVelocity;
> sim->GetVel( 0, offset, boneLinearVelocity) ; // get the linear velocity of the link/bone with no offset from the COM for the 0th link/bone);
> Vector boneLinearVelocity;
>
> sim->GetAngVel( 0, boneAngularVelocity ); // get the angular velocity of
> the link/bone for the 0th link/bone);
>
> Regards,
>
> Ari Shapiro
>
>
>
>
>
>
>
>
>
>
>
> ____________ _________ _________ __
> From: stefanodebattisti <stefanodebattisti@ ...>
> To: dancedev@yahoogroup s.com
> Sent: Tuesday, July 14, 2009 5:25:26 AM
> Subject: [dancedev] Using DANCE
>
>
>
>
>
> Hello, i've got a question about using DANCE: is the post n°199 the only way to get the state (position, velocity, etc.) of the objects in the DANCE world? Is it possible to do the same thing in C?.
>
> Regards,
> Stefano Debattisti
>
Hello,
i've undestood your reply, but there are still some problems.
My goal is to create a simulated environment where a skeleton can interact with
a CollisionSphere with a linear motion; as interaction i mean that the
skeleton have to avoid contacts with the CollisionSphere. In order to avoid
collisions, the skeleton has to perceive the world around it and has to perceive
the sphere .
At this point, i can know the exact position of the sphere but only in the
CollisionSphere scope, so i don't know how to communicate this data to the
skeleton's controller.
My question is: how i can do this or there's another way to do the same things?
Best regards,
Stefano Debattisti
--- In dancedev@yahoogroups.com, Ari Shapiro <shapiroari@...> wrote:
>
> You can get state information in a couple of different ways:
>
> For ArticulatedObjects/skeletons, first get the reference to the
ArticulatedObject:
>
> ArticulatedObject* ao =
dynamic_cast<ArticulatedObject*>(dance::AllSystems->get("myskeleton"));
>
> 1) To get the position of a joint:
>
> Joint* myjoint = ao->getJoint(0); // index of the joint
> Vector jointPosition;
> myjoint->getPosition(jointPosition);
>
> 1a) To get the 'state' of the joint, which usually refers to the angles in
radians of the joints, and, if this is a free joint, the XYZ position
> double mystate = myjoint->getState(0); // index of the state, i.e. 0 = first
dof, 1 = second dof, etc.
>
> 2) To get the position of a link/bone:
>
> Link* myLink = ao->getLink(0); // index of the link/bone
> Vector bonePosition;
> myLink->getPosition(bonePosition);
>
> (there are other calls in $DANCE_DIR/systems/ArticulatedObject/Link.h like
getOrientation(), getEndEffector(), getAxes(), etc.)
>
> 3) To get velocity information, it's best to get that information directly
from the simulator:
>
> ArticulatedObject* ao =
dynamic_cast<ArticulatedObject*>(dance::AllSystems->get("myskeleton"));
> DSimulator* sim = ao->getSimulator(0); // get the first simulator, usually
the only one
> Vector offset = {0,0,0};
> Vector boneLinearVelocity;
> sim->GetVel(0, offset, boneLinearVelocity); // get the linear velocity of
the link/bone with no offset from the COM for the 0th link/bone);
> Vector boneLinearVelocity;
>
> sim->GetAngVel(0, boneAngularVelocity); // get the angular velocity of
> the link/bone for the 0th link/bone);
>
> Regards,
>
> Ari Shapiro
>
>
>
>
>
>
>
>
>
>
>
> ________________________________
> From: stefanodebattisti <stefanodebattisti@...>
> To: dancedev@yahoogroups.com
> Sent: Tuesday, July 14, 2009 5:25:26 AM
> Subject: [dancedev] Using DANCE
>
>
>
>
>
> Hello, i've got a question about using DANCE: is the post n°199 the only way
to get the state (position, velocity, etc.) of the objects in the DANCE world?
Is it possible to do the same thing in C?.
>
> Regards,
> Stefano Debattisti
>
In the $DANCE_DIR/build/dance.vcproj file, remove the line:
StackReserveSize="480000000"
This will prevent some build errors (particularly in BitmapRenderer) and a
runtime error in Debug mode.
This fix comes from Professor Michael Neff at UC Davis. Thank you!
Regards,
Ari Shapiro
Actually I was at SIGGRAPH until this afternoon.
We have the setup on the 3rd floor in the Studio.
We'll touch base when you get back.
Tracy
> Hi Tracy,
>
> I'm in New Orleans this week for the SIGGRAPH conference.
> Perhaps we can get together when I get back.
>
> Ari
>
>
>
>
>
> ________________________________
> From: "Tracy@..." <Tracy@...>
> To: dancedev@yahoogroups.com
> Sent: Wednesday, August 5, 2009 7:34:44 AM
> Subject: Re: [dancedev] Plugins
>
>
> are you at SIGGRAPH?
>
> We will be doing a demo in LA over on McConnell off Jefferson Tuesday if
> you want to come over and see what we are doing, and figure out how we can
> start working together.
>
> Tracy
>
>
>
>
>
>
I'm in New Orleans this week for the SIGGRAPH conference. Perhaps we can get together when I get back.
Ari
From: "Tracy@..." <Tracy@...> To: dancedev@yahoogroups.com Sent: Wednesday, August 5, 2009 7:34:44 AM Subject: Re: [dancedev] Plugins
are you at SIGGRAPH?
We will be doing a demo in LA over on McConnell off Jefferson Tuesday if
you want to come over and see what we are doing, and figure out how we can
start working together.
are you at SIGGRAPH?
We will be doing a demo in LA over on McConnell off Jefferson Tuesday if
you want to come over and see what we are doing, and figure out how we can
start working together.
Tracy
Actually I was trying to open other defualt plugins automatically, which I need for each characters(such as articulatedobject window...). Finally I did it. Thanks for your answer, inheriting the classes(as an idea) can be useful for my project in the future.
Best regards.
sinan.
From: Ari Shapiro <shapiroari@...> To:
dancedev@yahoogroups.com Sent: Tuesday, August 4, 2009 4:51:10 PM Subject: Re: [dancedev] Plugins
Hi Sinan,
Do you mean that you want to subclass, say, the class ArticulatedObject, but be able to reuse the GUI of that class so that all the original functionality (joint selection, mass assignment, etc.) is still present?
To do that, you could create your subclass:
class Whatever : public ArticulatedObject { .. ... };
then subclass the ArticulatedObjectWi ndow as well:
class WhateverWindow : public ArticticulatedObjec tWindow { .. .. };
Is this what you mean?
Regards,
Ari Shapiro
From: Sinan
Mutlu <sinanmut@yahoo. com> To: dancedev@yahoogroup s.com Sent: Friday, July 31, 2009 7:48:35 AM Subject: [dancedev] Plugins
Hi,
I want to implement a new plugin in DANCE. While this plugin is created it will create some other plugins with some defualt values, such as: It will create an articulated object, ODESim.. How I can do this? For example I have created an articulated object by
Do you mean that you want to subclass, say, the class ArticulatedObject, but be able to reuse the GUI of that class so that all the original functionality (joint selection, mass assignment, etc.) is still present?
To do that, you could create your subclass:
class Whatever : public ArticulatedObject { .. ... };
then subclass the ArticulatedObjectWindow as well:
class WhateverWindow : public ArticticulatedObjectWindow { .. .. };
Is this what you mean?
Regards,
Ari Shapiro
From: Sinan Mutlu <sinanmut@...> To: dancedev@yahoogroups.com Sent: Friday, July 31, 2009 7:48:35 AM Subject: [dancedev] Plugins
Hi,
I want to implement a new plugin in DANCE. While this plugin is created it will create some other plugins with some defualt values, such as: It will create an articulated object, ODESim.. How I can do this? For example I have created an articulated object by
I want to implement a new plugin in DANCE. While this plugin is created it will create some other plugins with some defualt values, such as: It will create an articulated object, ODESim.. How I can do this? For example I have created an articulated object by
m_ArticulatedObject = new ArticulatedObject(); m_ArticulatedObject->loadSdfast("C:\\DevTools\\source_dance\\dance_v4\\sdfastobjs\\skel18\\skel18.sd");
but I could not succeed to show the ArticulatedObjectWindow on the plugins area. So my aim is to show these on the plugins area.
You can get state information in a couple of different ways:
For ArticulatedObjects/skeletons, first get the reference to the ArticulatedObject:
ArticulatedObject* ao = dynamic_cast<ArticulatedObject*>(dance::AllSystems->get("myskeleton"));
1) To get the position of a joint:
Joint* myjoint = ao->getJoint(0); // index of the joint Vector jointPosition; myjoint->getPosition(jointPosition);
1a) To get the 'state' of the joint, which usually refers to the angles in radians of the joints, and, if this is a free joint, the XYZ position double mystate = myjoint->getState(0); // index of the state, i.e. 0 = first dof, 1 = second dof, etc.
2) To get the position of a link/bone:
Link* myLink = ao->getLink(0); // index of the link/bone Vector bonePosition; myLink->getPosition(bonePosition);
(there are other calls in $DANCE_DIR/systems/ArticulatedObject/Link.h like getOrientation(), getEndEffector(), getAxes(), etc.)
3) To get velocity information, it's best to get that information directly from the simulator:
ArticulatedObject* ao
= dynamic_cast<ArticulatedObject*>(dance::AllSystems->get("myskeleton"));
DSimulator* sim = ao->getSimulator(0); // get the first simulator, usually the only one Vector offset = {0,0,0}; Vector boneLinearVelocity; sim->GetVel(0, offset, boneLinearVelocity); // get the linear velocity of the link/bone with no offset from the COM for the 0th link/bone); Vector boneLinearVelocity;
sim->GetAngVel(0, boneAngularVelocity); // get the angular velocity of
the link/bone for the 0th link/bone);
Regards,
Ari Shapiro
From: stefanodebattisti <stefanodebattisti@...> To: dancedev@yahoogroups.com Sent: Tuesday, July 14, 2009 5:25:26 AM Subject: [dancedev] Using DANCE
Hello, i've got a question about using DANCE: is the post n°199 the only way to get the state (position, velocity, etc.) of the objects in the DANCE world? Is it possible to do the same thing in C?.
Hello, i've got a question about using DANCE: is the post n°199 the only way to
get the state (position, velocity, etc.) of the objects in the DANCE world? Is
it possible to do the same thing in C?.
Regards,
Stefano Debattisti
Ok, so I downloaded VC++ Express 2008, and here's what you need to do to get
DANCE compiling with it:
When you first open the DANCE projects in Visual C++ Express 2008 and open the
$DANCE_DIR/build/vs2005 project, Visual C++ express will convert the project
files, but it will forget to include the extensions, so you need to do the
following:
Under Tools->Options->Projects and Solutions->VC++ Directories, add the
following:
1) Choose Include Files in the upper right dropdown menu
2) Add:
$(DANCE_DIR)/extensions/fltk-2.0.x-r4773
$(DANCE_DIR)/extensions/ode-0.10.1/include
$(DANCE_DIR)/extensions/lib3ds-1.3.0
C:\Program Files\ImageMagick-6.4.7-Q8\include (or whatever the path to the
ImageMagick directory is)
C:\Python25\include (Or whatever the path to your Python installation is)
3) Choose Library files in the upper right dropdown menu:
4) Add:
$(DANCE_DIR)/lib
C:\Program Files\ImageMagick-6.4.7-Q8\include
C:\Python25\libs
5) remove the file glaux.lib from all the dance_v4 project libraries (Project
Properties -> Linker -> Input -> Additional Dependencies
6) If needed, remove the lib3ds.rc file from the lib3ds project before building.
7) Make sure to build the projects in the $(DANCE_DIR)/extensions area first
(ODE, FLTK, lib3ds)
8) make sure that you have the service pack 1 (SP1) with hotfixes for Microsoft
C++ Express (my version is 9.0.30729.1 sp)
Regards,
Ari Shapiro
Right - I think it was oversight, more than intentional design. The original
code was written primarily for physical simulation, and not primarily for motion
capture. As a result, the basic storage file format is a file that describes the
links, joints, masses and inertias, and not just the rotations necessary for
replaying mocap. Picture a bunch of bodies that exist in global space, that are
then connected together; this is a slightly model than than having a hierarchy
of joints.
That being said, there's no reason why DANCE can't include such important
rotation information. This can probably be done by including an orientation
matrix with every joint that rotates the joint in the way specified by the asf
file. The data could then be translated back to global axes under the hood.
Ari
--- In dancedev@yahoogroups.com, "Joel Horne" <joel@...> wrote:
>
> Well the problem is that without this axis information, the bone rotation is
too global. This may just be a design decision but for me it is inconvenient.
Here are two examples of why:
>
> 1. Here's the ASF file I've been using:
> http://mocap.cs.cmu.edu:8080/subjects/69/69.asf
> It's just a walk subject from the cmu mocap database, in ASF format. The
character's zeroed stance is not a t-position, but more like a star-jump
position with legs apart. Because the legs aren't pointing straight down to
start, none of the rotations of the slider bars on the lower leg actually bends
the knee as you would expect, so no sensible limitation can be put on this
joint. You can see this problem if you just create a new articulated object with
two joints from 0,0,0 to 1,1,1 and 1,1,1 to 2,2,2. None of the slider bars bends
this joint back on itself in any direction, but if I created a character like
that (or got one from mocap data) then I would want the axes of rotation to be
naturally correct.
>
> 2. In the same ASF file, look at the joint limits for elbows. Both are (-10,
170). This is relative to the rotation of the limbs. In the standard skeleton in
DANCE, the elbow limits are global (so something like (-10, 170) and (-170, 10).
This not only means that I can't use the limits directly from the ASF file but
also just isn't intuitive as I want to define how far I can bend a joint from
whereever it is in the ref pose.
>
> So are these design decisions or known issues? What is the reasoning for not
using relative joint axes?
>
> Thanks,
> Joel
>
>
> --- In dancedev@yahoogroups.com, Ari Shapiro <shapiroari@> wrote:
> >
> > Hi Joel,
> >
> > As you pointed out, the asf/amc file formats include bone axes get removed
when you create a simulated character. However, the data should convert
smoothly. Is your asf/amc file format much different from the 02.asf and
02_01.amc in the $DANCE_DIR/data/motions directory?
> >
> > If you send me your data files (shapiroari@), I can take a look to see
what's going wrong.
> >
> > Regards,
> >
> > Ari Shapiro
> >
> >
> >
> >
> >
> > ________________________________
> > From: Joel Horne <joel@>
> > To: dancedev@yahoogroups.com
> > Sent: Tuesday, June 9, 2009 3:42:16 AM
> > Subject: [dancedev] Re: Automatic geometry problem
> >
> >
> >
> >
> >
> > Hi Ari,
> >
> > I appreciate that it is difficult for you to provide full support.
> >
> > I'm continuing to try to automatically create a properly setup character
based on an ASF file, and the further I go the further it seems like big changes
will be needed. When an ASF/ACM is read in as a motion, then that char converted
to a simulated character, most of the joint information is lost. Even once I got
the limits to read from the ASF, it seems all of the axes information was lost
from the joints (ASF files specifies the axis for each joint, which I think is
often redundant when you have the direction and length, but when it comes to,
say, which way the elbow bends then this is important). Also if the character
isn't zeroed with the legs pointing straight down, none of the 3 knee joint
rotations rotate a knee as it should (i.e. it is rotating on global axis, not
the axes of the joint).
> >
> > I just want to check that I am not doing something massively against your
method. Have you never used ASF files to create a simulated character that
responds exactly as the motion characters would?
> >
> > Thanks
> > Joel
> >
> > --- In dancedev@yahoogroup s.com, "shapiroari" <shapiroari@ ...> wrote:
> > >
> > > Hi Joel,
> > >
> > > Thanks for the code fixes.
> > >
> > > These days I work full time for a visual effects company (Rhythm & Hues)
and can only work on DANCE outside of work when I have time (plus, I just had a
new baby girl born last month, which is also taking up a lot of my time),
> > >
> > > I am finding some time to incorporate all the code fixes that my users are
reporting into the code base, and am trying to release a new version on a fairly
regular basis. However, this is a far cry from being 'actively' supported and
developed.
> > >
> > > If there is a commercial or noncommerical entity that would like to
partner to improve the product (or to license the code), I would be happy to
discuss that (You can email me directly if you are interested: shapiroari@ ..).
Right now, the license on the software is for non-commerical use.
> > >
> > > Regards,
> > >
> > > Ari Shapiro
> > >
> > >
> > >
> > > --- In dancedev@yahoogroup s.com, "Joel Horne" <joel@> wrote:
> > > >
> > > > Hi Ari,
> > > >
> > > > I am currently evaluating DANCE to see if I can use it for my research
project, so I'm looking for more permanent solutions. It certainly has a lot of
features, but seems to have quite a few holes and bugs. Are you still intending
to support it or are you doing something else?
> > > >
> > > > For example, the cube orientation problem was something to do with the
strange way the cubes were being created. You had them being scaled in varying
directions using a 'whichdim' method. A simple change that just created the
right length cube scaled to bone length in the z dir then rotating it to the
joint orientation seems to work OK.
> > > > The capsules were also at the wrong rotation, as a result of this around
line 400:
> > > > q.rotateAxis( capsuleAxis, boneAxis);
> > > > which I think should be
> > > > q.rotateAxis( boneAxis, capsuleAxis) ;
> > > > as this actually works.
> > > >
> > > > In the same class, I don't know if this is intentional but you have:
> > > > double curVolume = lengthX * lengthY + lengthZ;
> > > > which should surely be
> > > > double curVolume = lengthX * lengthY * lengthZ;
> > > > ??
> > > >
> > > > So what is the status of support on this program? fixing it up as I go
along takes time, but it's probably faster than trying to write my own, and
despite my complaints there is a lot of good code in there too :)
> > > >
> > > > Joel
> > > >
> > > > --- In dancedev@yahoogroup s.com, "shapiroari" <shapiroari@ > wrote:
> > > > >
> > > > > For the problem with cube orientation, you can try selecting the
particular piece of geometry (which is named the same as the bone) and then use
'Rotate X/Y/Z' in order to orient the cubes to better align with the bones.
> > > > >
> > > > > Regarding the large hands/writst, I'll have to look at the code to see
why. The code is in:
> > > > > $DANCE_DIR/systems/ ArticulatedObjec t/AutomaticSetti ngsWindow. cpp
> > > > >
> > > > > Again, the temporary solution is to find the offending geometry object
and scale it down.
> > > > >
> > > > > Ari
> > > > >
> > > > >
> > > > > --- In dancedev@yahoogroup s.com, "Joel Horne" <joel@> wrote:
> > > > > >
> > > > > > Hello,
> > > > > >
> > > > > > I am interested in using dance to create controllers that track
MoCap data. To do this, I want to generate geometry for the character based on
the MoCap data. However, when I tried to do this with several different sets of
asf/amc MoCap data, the geometry for the legs is attached at completely the
wrong angle is cubes or spheres are used. The links look right and capsules come
out OK but cubes and spheres fail on several different examples of motion data.
Also when capsules are used, the hands are huge and I'm not sure why.
> > > > > >
> > > > > > Any ideas?
> > > > > >
> > > > > > Thanks,
> > > > > > Joel
> > > > > >
> > > > >
> > > >
> > >
> >
>
Well the problem is that without this axis information, the bone rotation is too
global. This may just be a design decision but for me it is inconvenient. Here
are two examples of why:
1. Here's the ASF file I've been using:
http://mocap.cs.cmu.edu:8080/subjects/69/69.asf
It's just a walk subject from the cmu mocap database, in ASF format. The
character's zeroed stance is not a t-position, but more like a star-jump
position with legs apart. Because the legs aren't pointing straight down to
start, none of the rotations of the slider bars on the lower leg actually bends
the knee as you would expect, so no sensible limitation can be put on this
joint. You can see this problem if you just create a new articulated object with
two joints from 0,0,0 to 1,1,1 and 1,1,1 to 2,2,2. None of the slider bars bends
this joint back on itself in any direction, but if I created a character like
that (or got one from mocap data) then I would want the axes of rotation to be
naturally correct.
2. In the same ASF file, look at the joint limits for elbows. Both are (-10,
170). This is relative to the rotation of the limbs. In the standard skeleton in
DANCE, the elbow limits are global (so something like (-10, 170) and (-170, 10).
This not only means that I can't use the limits directly from the ASF file but
also just isn't intuitive as I want to define how far I can bend a joint from
whereever it is in the ref pose.
So are these design decisions or known issues? What is the reasoning for not
using relative joint axes?
Thanks,
Joel
--- In dancedev@yahoogroups.com, Ari Shapiro <shapiroari@...> wrote:
>
> Hi Joel,
>
> As you pointed out, the asf/amc file formats include bone axes get removed
when you create a simulated character. However, the data should convert
smoothly. Is your asf/amc file format much different from the 02.asf and
02_01.amc in the $DANCE_DIR/data/motions directory?
>
> If you send me your data files (shapiroari@...), I can take a look to see
what's going wrong.
>
> Regards,
>
> Ari Shapiro
>
>
>
>
>
> ________________________________
> From: Joel Horne <joel@...>
> To: dancedev@yahoogroups.com
> Sent: Tuesday, June 9, 2009 3:42:16 AM
> Subject: [dancedev] Re: Automatic geometry problem
>
>
>
>
>
> Hi Ari,
>
> I appreciate that it is difficult for you to provide full support.
>
> I'm continuing to try to automatically create a properly setup character based
on an ASF file, and the further I go the further it seems like big changes will
be needed. When an ASF/ACM is read in as a motion, then that char converted to a
simulated character, most of the joint information is lost. Even once I got the
limits to read from the ASF, it seems all of the axes information was lost from
the joints (ASF files specifies the axis for each joint, which I think is often
redundant when you have the direction and length, but when it comes to, say,
which way the elbow bends then this is important). Also if the character isn't
zeroed with the legs pointing straight down, none of the 3 knee joint rotations
rotate a knee as it should (i.e. it is rotating on global axis, not the axes of
the joint).
>
> I just want to check that I am not doing something massively against your
method. Have you never used ASF files to create a simulated character that
responds exactly as the motion characters would?
>
> Thanks
> Joel
>
> --- In dancedev@yahoogroup s.com, "shapiroari" <shapiroari@ ...> wrote:
> >
> > Hi Joel,
> >
> > Thanks for the code fixes.
> >
> > These days I work full time for a visual effects company (Rhythm & Hues) and
can only work on DANCE outside of work when I have time (plus, I just had a new
baby girl born last month, which is also taking up a lot of my time),
> >
> > I am finding some time to incorporate all the code fixes that my users are
reporting into the code base, and am trying to release a new version on a fairly
regular basis. However, this is a far cry from being 'actively' supported and
developed.
> >
> > If there is a commercial or noncommerical entity that would like to partner
to improve the product (or to license the code), I would be happy to discuss
that (You can email me directly if you are interested: shapiroari@ ..). Right
now, the license on the software is for non-commerical use.
> >
> > Regards,
> >
> > Ari Shapiro
> >
> >
> >
> > --- In dancedev@yahoogroup s.com, "Joel Horne" <joel@> wrote:
> > >
> > > Hi Ari,
> > >
> > > I am currently evaluating DANCE to see if I can use it for my research
project, so I'm looking for more permanent solutions. It certainly has a lot of
features, but seems to have quite a few holes and bugs. Are you still intending
to support it or are you doing something else?
> > >
> > > For example, the cube orientation problem was something to do with the
strange way the cubes were being created. You had them being scaled in varying
directions using a 'whichdim' method. A simple change that just created the
right length cube scaled to bone length in the z dir then rotating it to the
joint orientation seems to work OK.
> > > The capsules were also at the wrong rotation, as a result of this around
line 400:
> > > q.rotateAxis( capsuleAxis, boneAxis);
> > > which I think should be
> > > q.rotateAxis( boneAxis, capsuleAxis) ;
> > > as this actually works.
> > >
> > > In the same class, I don't know if this is intentional but you have:
> > > double curVolume = lengthX * lengthY + lengthZ;
> > > which should surely be
> > > double curVolume = lengthX * lengthY * lengthZ;
> > > ??
> > >
> > > So what is the status of support on this program? fixing it up as I go
along takes time, but it's probably faster than trying to write my own, and
despite my complaints there is a lot of good code in there too :)
> > >
> > > Joel
> > >
> > > --- In dancedev@yahoogroup s.com, "shapiroari" <shapiroari@ > wrote:
> > > >
> > > > For the problem with cube orientation, you can try selecting the
particular piece of geometry (which is named the same as the bone) and then use
'Rotate X/Y/Z' in order to orient the cubes to better align with the bones.
> > > >
> > > > Regarding the large hands/writst, I'll have to look at the code to see
why. The code is in:
> > > > $DANCE_DIR/systems/ ArticulatedObjec t/AutomaticSetti ngsWindow. cpp
> > > >
> > > > Again, the temporary solution is to find the offending geometry object
and scale it down.
> > > >
> > > > Ari
> > > >
> > > >
> > > > --- In dancedev@yahoogroup s.com, "Joel Horne" <joel@> wrote:
> > > > >
> > > > > Hello,
> > > > >
> > > > > I am interested in using dance to create controllers that track MoCap
data. To do this, I want to generate geometry for the character based on the
MoCap data. However, when I tried to do this with several different sets of
asf/amc MoCap data, the geometry for the legs is attached at completely the
wrong angle is cubes or spheres are used. The links look right and capsules come
out OK but cubes and spheres fail on several different examples of motion data.
Also when capsules are used, the hands are huge and I'm not sure why.
> > > > >
> > > > > Any ideas?
> > > > >
> > > > > Thanks,
> > > > > Joel
> > > > >
> > > >
> > >
> >
>
As you pointed out, the asf/amc file formats include bone axes get removed when you create a simulated character. However, the data should convert smoothly. Is your asf/amc file format much different from the 02.asf and 02_01.amc in the $DANCE_DIR/data/motions directory?
If you send me your data files (shapiroari@...), I can take a look to see what's going wrong.
Regards,
Ari Shapiro
From: Joel Horne
<joel@...> To: dancedev@yahoogroups.com Sent: Tuesday, June 9, 2009 3:42:16 AM Subject: [dancedev] Re: Automatic geometry problem
Hi Ari,
I appreciate that it is difficult for you to provide full support.
I'm continuing to try to automatically create a properly setup character based on an ASF file, and the further I go the further it seems like big changes will be needed. When an ASF/ACM is read in as a motion, then that char converted to a simulated character, most of the joint information is lost. Even once I got the limits to read from the ASF, it seems all of the axes information was lost from the joints (ASF files specifies the axis for each joint, which I think is often redundant when you have the direction and length, but when it comes to, say, which way the elbow bends then this is important). Also if the character isn't zeroed with the legs pointing straight down, none of the 3 knee joint rotations rotate a knee as it should (i.e. it is rotating on global axis, not the axes of the joint).
I just want to check that I am not doing something massively against your method. Have you never used ASF files to create a simulated character that responds exactly as the motion characters would?
Thanks
Joel
--- In dancedev@yahoogroup s.com, "shapiroari" <shapiroari@ ...> wrote:
>
> Hi Joel,
>
> Thanks for the code fixes.
>
> These days I work full time for a visual effects company (Rhythm & Hues) and can only work on DANCE outside of work when I have time (plus, I just had a new baby girl born last month, which is also taking up a lot of my time),
>
> I am finding some time to incorporate all the code fixes that my users are reporting into the code base, and am trying to release a new version on a fairly regular basis. However, this is a far cry from being 'actively' supported and developed.
>
> If there is a commercial or noncommerical entity that would like to partner to improve the product (or to license the code), I would be happy to discuss that (You can email me directly if you are interested: shapiroari@. ..). Right now, the license on the software is for non-commerical use.
>
> Regards,
>
> Ari Shapiro
>
>
>
> --- In dancedev@yahoogroup s.com, "Joel Horne" <joel@> wrote:
> >
> > Hi Ari,
> >
> > I am currently evaluating DANCE to see if I can use it for my research project, so I'm looking for more permanent solutions. It certainly has a lot of features, but seems to have quite a few holes and bugs. Are you still intending to support it or are you doing something else?
> >
> > For example, the cube orientation problem was something to do with the strange way the cubes were being created. You had them being scaled in varying directions using a 'whichdim' method. A simple change that just created the right length cube scaled to bone length in the z dir then rotating it to the joint orientation seems to work OK.
> > The capsules were also at the wrong rotation, as a result of this around line 400:
> > q.rotateAxis( capsuleAxis, boneAxis);
> > which I think should be
> > q.rotateAxis( boneAxis, capsuleAxis) ;
> > as this actually works.
> >
> > In the same class, I don't know if this is intentional but you have:
> > double curVolume = lengthX * lengthY + lengthZ;
> > which should surely be
> > double curVolume = lengthX * lengthY * lengthZ;
> > ??
> >
> > So what is the status of support on this program? fixing it up as I go along takes time, but it's probably faster than trying to write my own, and despite my complaints there is a lot of good code in there too :)
> >
> > Joel
> >
> > --- In dancedev@yahoogroup s.com, "shapiroari" <shapiroari@ > wrote:
> > >
> > > For the problem with cube orientation, you can try selecting the particular piece of geometry (which is named the same as the bone) and then use 'Rotate X/Y/Z' in order to orient the cubes to better align with the bones.
> > >
> > > Regarding the large hands/writst, I'll have to look at the code to see why. The code is in:
> > > $DANCE_DIR/systems/ ArticulatedObjec t/AutomaticSetti ngsWindow. cpp
> > >
> > > Again, the temporary solution is to find the offending geometry object and scale it down.
> > >
> > > Ari
> > >
> > >
> > > --- In dancedev@yahoogroup s.com, "Joel Horne" <joel@> wrote:
> > > >
> > > > Hello,
> > > >
> > > > I am interested in using dance to create controllers that track MoCap data. To do this, I want to generate geometry for the character based on the MoCap data. However, when I tried to do this with several different sets of asf/amc MoCap data, the geometry for the legs is attached at completely the wrong angle is cubes or spheres are used. The links look right and capsules come out OK but cubes and spheres fail on several different examples of motion data. Also when capsules are used, the hands are huge and I'm not sure why.
> > > >
> > > > Any ideas?
> > > >
> > > > Thanks,
> > > > Joel
> > > >
> > >
> >
>