Hello

1. Get the java3d-Doc and a working java3d-installtion. The important stuff is 
in 
com.sun.j3d.utils.universe 
javax.media.j3d 
com.sun.j3d.utils.geometry

forget about the rest for now.

> I need to learn
>    1-how to combine / attach / create a joınt/ between two 3dshaped
> objects.. "ex: lıke 2 cylinders attached each other and moves
> relatively. Movement of one cylinder effects the status of the other
> cylinder.. "

j3d works with an branchgroup-system. You have 1 or more trees-struktures 
starting at a "Locale"-object (see SimpleUniverse.getLocale()). The Locales 
have absolute coordinates in space (like (0,0,0) for the 
SimpleUniverse.getLocale())

To the Locales you add BranchGroups. These are connectors you can't see, but 
you need them to add "useful" stuff.

Locale L = SU.getLocale();
BranchGroup BA = new BranchGroup();
BA.setCapability(BranchGroup.ALLOW_CHILDREN_EXTEND);
BA.setCapability(BranchGroup.ALLOW_CHILDREN_READ);
BA.setCapability(BranchGroup.ALLOW_CHILDREN_WRITE);
L.addBranchGraph (BA);

In com.sun.j3d.utils.geometry you find stuff like cylinders and boxes. You can 
use these to make up an arm. If you add them directly to the BA they will 
turn up at the position of the BA (in this case: 0,0,0). If want to move them 
you have to use a "TransformGroup". The transformtion for the TransformGroup 
can be set in an Transform3D :

TransformGroup T = new TransformGroup();
T.setCapability(T.ALLOW_TRANSFORM_READ);
T.setCapability(T.ALLOW_TRANSFORM_WRITE);

Transform3D T3D = new Transform3D (new Matrix4f (....your positional 
data....);

T.setTransform(T3D);
BA.addChild(T);

Let's say the postional data is the vector (1,2,3). The BA was at (0,0,0) so 
the end of T is at (0+1,0+2,0+3) = (1,2,3). (If you have done the math for 
the robot already you should know how to generate these Matrix-things)

Let's say you want a cylinder to be at (1,2,3):

Cylinder C1 = new Cylinder(.... your data ..... );
T.addChild(C1);

Let's say you want a second cylinder at (2,3,1) relative to the first one:


TransformGroup T2 = new TransformGroup();
T2.setCapability(T2.ALLOW_TRANSFORM_READ);
T2.setCapability(T2.ALLOW_TRANSFORM_WRITE);

Transform3D T3D2 = new Transform3D (new Matrix4f (....your positional data for 
a realtive transform to (2,3,1) ....);

T2.setTransform(T3D2);
T.addChild(T2);   //<< you add T2 to T NOT to BA

Cylinder C2 = new Cylinder(.... your data ..... );
T.addChild(C2);

The java3d-tree now lokks like this:

Locale L
  |
BranchGroup BA
  |
TransformGroup T1 ---- Cylinder C1
 |
TransformGourp T2 ---- Cylinder C2

If you change the T1-Transform-Matrix C1 AND T2 AND C2 will move, because they 
all depend on T1. The position for C2 is:

(0,0,0) * MatrixT1 * MatrixT2. (? wrong way round ?)

you will have to use more TransformationGroups to get to a robot-like notation 
(1 for the length of the arm-seq, one for the rotation/translation done by 
the joint)

>    2- how to ınput new destination coordınates durıng runtime?..
To change the position anytime you like:

Transform3D T3D3 = new Transform3D (new Matrix4f (....your new positional 
data ....);

T1.setTransform(T3D3);

Have a look at Transform3D standart-matrixes like transformation, scaling, 
rotation ...

>     ıf someone has any writtencode for me , I am pleased to get ıt..

you have to do some inital-calls to get a 3DCanvas going, take them from the 
examples in the demo-folder.

> sorry for my englısh grammer.. I wısh ıts understandable..

If you don't mind mine....

I have done something like that before, and let me tell you one last thing : 
ASK FOR MORE TIME NOW. 

You need at least 1 week to get a robot on the screen and another week for the 
movments, even if you have all the maths ready and done.

cu

===========================================================================
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".

Reply via email to