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