Hello Lee & John ,
Actually what I did first was translate, scale, inverse translate
on the same Transform3D, but now u have told me that I should
have 3 seperate ones. But I am not sure why we have to do like
that please do tell me.
But still it doesnt work !!
This is my scenegraph:
--------------------------------------------------------------
<SimpleUniverse> - <VPTrans/Avatar start point (0.0, 0.5, 3.0)>
|
<worldBG>
|
<worldTG> this is the world start point (0.0, 0.0, 0.0)
|
<pickBG>
|
<objBG> detachable, under which I have my loaded VRML obj
|
<objTG> inserted 1 unit in front of the Avatar
|
<BG> Bg from loading e.g. scene.getSceneGroup()
|
<VRML loaded obj>
This is how I inserted the object 1 unit in front of the user:
-----------------------------------------------------------
Transform3D vpTransTransform = new Transform3D();
vpTrans.getTransform(vpTransTransform);
Point3d finalPoint = new Point3d();
vpTransTransform.transform(new Point3d(0,0,-1), finalPoint);
// 1 unit(mt) in front of user
Vector3d finalVector = new Vector3d();
finalVector.set(finalPoint);
Transform3D objFinalTrans = new Transform3D();
objFinalTrans.setTranslation(finalVector);
objTG.setTransform(objFinalTrans);
Then when the user inputs scale value say (2.0, 3.0, 1.0)
I am applying the scale like this:
----------------------------------------------------------
// original transform
Transform3D originalTrans = new Transform3D();
objTG.getTransform(originalTrans);
// first translate the object to the origin (0,0,0)
Vector3d translateVec = new Vector3d(0.0, 0.0, 0.0);
Transform3D translateTrans = new Transform3D();
translateTrans.setTranslation(translateVec);
// then scale the object
Vector3d scaleVec = new Vector3d(xScale, yScale, zScale);
Transform3D scaleTrans = new Transform3D();
scaleTrans.setScale(scaleVec);
// then translate back to the original point
Vector3d translateVec2 = new Vector3d();
originalTrans.get(translateVec2);
Transform3D translateTrans2 = new Transform3D();
translateTrans2.setTranslation(translateVec2);
// final transform = [original]*[translate]*[scale]*[translate2]
Transform3D finalTrans = new Transform3D();
finalTrans.mul(originalTrans);
finalTrans.mul(translateTrans);
finalTrans.mul(scaleTrans);
finalTrans.mul(translateTrans2);
objTG.setTransform(finalTrans);
But there is something funny when I increase the size say
change the scale from (0.1,0.1,0.1) to say (0.8,0.8,0.8) then
the object becomes smaller and also moves somewhere else !!
Thanks for your help
===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA3D-INTEREST". For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".