[IGSTK-Developers] CylinderSpatialObjectRepresentation
Patrick Cheng
cheng at isis.georgetown.edu
Tue Dec 20 18:27:12 EST 2005
I guess David meant the Pointer is pointing towards the -Z direction.
But anyway, only when I remove the '-' sign, that the cylinderObject
will be on the right side.
The PrincipalAxisCalibration is taking the known principal axis of the
Spatial Object(cylinder) and Tracker Tool(pointer) in their own
coordinate system. eg. By default, the cylinder is along it's Y axis,
and pointer is along its Z axis. The PrincipalAxisCalibration then take
the two principal axis, and figure out what rotation we need to take to
align the cylinder with the pointer (in another word, transform the
cylinder's coordinate system to the pointer's coordinate system).
Julien, I have questions about your approach (add an transform to actor)
1. The final CylinderSpatialObject is actually not carrying the correct
transform. Only when we visualize it, we add another transform to make
the actor look right. I believe we should have the CylinderSpatialObject
transform right instead of altering the actor's transform. suppose we
need to do path planing or collision detection, we are working with the
SpatialObject's transform, not the actor's transform.
2. This will conflict with the PrincipalAxisCalibration, as people get
confused what is the real principal axis is. Here the principal axis for
the cylinder is still Y, and Pointer is Z. But since we are going to
have a rotation when we visualize it, we don't need the
PrincipalAxisCalibration here.
3. maybe we can move the rotation and shift of origin in the
CylinderSpatialObject class.
Patrick
Julien Jomier wrote:
> Hi Patrick,
>
> David told me that the cylinder should be located in the [-Z,0],
> therefore the cylinder should be translated by
> -m_CylinderSpatialObject->GetHeight()/2.0
>
> > One quick question: If we can just change the transform when we create
> > the actor, what do we need the PrincipalAxisCalibration for?
>
> I don't know what the PrincipalAxisCalibration class is actually doing,
> but the user cannot change the actor, so we need a way to calibrate the
> tool anyway.
>
> Julien
>
> Patrick Cheng wrote:
>> Hi Julien,
>>
>> I checked out your recent change in the
>> CylinderSpatialObjectRepresentation class. Now without setting the
>> rotation part of the CalibrationTransform, the orientation of the
>> CylinderObject will be correct, but with one little bug, in line 152
>> (igstkCylinderObjectRepresentation.cxx)
>> cylinderActor->SetPosition(0,0,-m_CylinderSpatialObject->GetHeight()/2.0);
>>
>> There should be no '-' sign. I tested it in the application.
>>
>> One quick question: If we can just change the transform when we create
>> the actor, what do we need the PrincipalAxisCalibration for?
>>
>> Patrick
>>
>
>
More information about the IGSTK-Developers
mailing list