As I mentioned previously, I am new to using the c3d2any converter to
drive models directly with motion data - what I used to do was
process and physically manipulate data on my own and drive the models
that way. Obviously this new way of creating and running a model is
superior, but I am a little behind the learning curve and I apologize
for that.
What I am writing to ask is: I have a wheelchair in space, and I have
wheelchair hub marker data (in addition to other body marker data).
I am looking to use AnyFloat to essentially drive the hub markers in
the environment. Is there a better way to do this? i.e. should I
ground one wheel, and then drive the other’s movements relative to
the grounded wheel (I did something similar using my old technique)?
Below is an excerpt from my Environment file where I have defined the
wheels and the push rim, and upon loading the model, the wheels (and
push rims) are centered at the origin. At that point (further below),
I have posted an excerpt from my JointsAndDrivers file in which I try
to drive the hubs in space. Once I get them “grounded” (using
AnyFloat to drive the marker position), I will then proceed to put
the chair in place, and then the body adjust the body in space. Am I
going about this the right way? I’m uploading the file I have so far…
(Axle-Adjustment_Study_c3d2any_Trial_20).
Thanks in advance for your help,
Sarah
/* **********************************************************
This folder contains the definition of the Environment
- GlobalRefFrame
********************************************************** */
AnyFixedRefFrame GlobalRef = {
Origin = {0, 0, 0};
AnyDrawRefFrame dw =
{
RGB = {1, 0, 0};
ScaleXYZ = .1*{1, 1, 1};
Transparency = 1;
};
};
AnyFolder Wheelchair = {
AnyFloat RHUB = Main.C3DFileData.Markers.AAAR_RHUB.Pos;
AnyFloat LHUB = Main.C3DFileData.Markers.AAAR_LHUB.Pos;
AnySeg WheelRight =
{
Mass = 2.5;
Jii = {1, 2, 1}*0.01;
AnyDrawSurf Wheel = {
RGB = {0.65, 0.65, 0.65};
ScaleXYZ = {1,1,1}*Main.ChairParameters.WheelRad;
Transparency = 1;
FileName = "CAD/wheel";
AnyFunTransform3DLin Wheel = {
ScaleMat = {{-1,0,0},{0,0,1},{0,1,0}};
Offset = {0,0,0};
};
};
AnyRefNode HubRight = {};
AnyDrawSurf PushRimWheel = {
RGB = {0, 0, 1};
ScaleXYZ = {1,1,1}*Main.ChairParameters.PushRimRad;
Transparency = 1;
FileName = "CAD/wheel";
AnyFunTransform3DLin Wheel = {
ScaleMat = {{-1,0,0},{0,0,1},{0,1,0}};
Offset = {0,0,0};
};
};
};
AnySeg WheelLeft =
{
Mass = 2.5;
Jii = {1, 2, 1}*0.01;
AnyDrawSurf Wheel = {
RGB = {0.65, 0.65, 0.65};
ScaleXYZ = {1,1,1}*Main.ChairParameters.WheelRad;
Transparency = 1;
FileName = "CAD/wheel";
AnyFunTransform3DLin Wheel = {
ScaleMat = {{-1,0,0},{0,0,1},{0,1,0}};
Offset = {0,0,0};
};
};
AnyRefNode HubLeft = {};
AnyDrawSurf PushRimWheel = {
RGB = {0, 0, 1};
ScaleXYZ = {1,1,1}*Main.ChairParameters.PushRimRad;
Transparency = 1;
FileName = "CAD/wheel";
AnyFunTransform3DLin Wheel = {
ScaleMat = {{-1,0,0},{0,0,1},{0,1,0}};
Offset = {0,0,0};
};
};
};
/* **********************************************************
This folder contains the definition of the Joints and Drivers
-
JointsAndDrivers
********************************************************** */
AnyKinEqSimpleDriver RHubDrv = {
AnyKinLinear RHub ={
Ref=0;
AnyRefFrame &ref1=Main.Model.EnvironmentModel.GlobalRef;
AnyRefFrame &ref2=Main.Model.Markers.AAAR_RHUB.Seg;
};
MeasureOrganizer={0,1,2};
DriverPos={0,0,0};
DriverVel={0,0,0};
Reaction.Type={Off,Off,Off};
};AnyKinEqSimpleDriver LHubDrv = {
AnyKinLinear LHub ={
Ref=0;
AnySeg &ref1=Main.Model.EnvironmentModel.GlobalRef;
AnyRefFrame &ref2=Main.Model.Markers.AAAR_LHUB.Seg;
};
MeasureOrganizer={0,1,2};
DriverPos={0,0,0};
DriverVel={0,0,0};
Reaction.Type={Off,Off,Off};
};
AnyFolder EnvironmentModel = {