Hi, you should have a look at www.j3d.org, and make sure you check
"J3D & Swing" topic.
Saludos
Víctor
Kapil Joshi ha escrito:
> hi, i am a graduate student and have taken up a project in java
> and java3d. but being new to J3D i am not able to solve some
> problems. [1] I have added a Canvas3D to a panel and i want to draw a
> simple line on the Canvas. i am using my own class for line (myLine2D)
> and converting it to Shape3D using a method 'getshape()' and adds it
> to scenegraph using method 'addShapeObject()'. Though the object is
> added to the TG node in the content branch, the Canvas is not
> displaying it. i am herewith sending the source file contents. [2]
> Also when the Canvas3D object is added to the panel, the menus in the
> menubars are not displayed as the opaque canvas overlaps them. please
> can anyone help me as early as possible?
> thanks!
>-------------------------------------------------------------------------------------[myLine2D.java]package
> jpuf.geometry; import javax.vecmath.*;
> import javax.media.j3d.*;
> public class myLine2D {
> private float x1,y1,x2,y2; public myLine2D(int x1,int y1,int
> x2,int y2)
> {
> this.x1=(float)x1;
> this.y1=(float)y1;
> this.x2=(float)x2;
> this.y2=(float)y2;
> } public Shape3D getShape()
> {
> Shape3D shape;
> float[] verts=
> {
> x1,y1,0.0f,
> x2,y2,0.0f
> };
> /* int[] stripVertexCount={1,1};
> // System.out.println("def:stripvc");
> LineStripArray lsa = new
> LineStripArray(2,LineStripArray.COORDINATES,stripVertexCount);
> // System.out.println("setcoords");
> lsa.setCoordinate(0,verts);
> System.out.println("No. of Strips : "+lsa.getNumStrips());
> System.out.println("No. of Vertices : "+lsa.getVertexCount());
> System.out.println("("+verts[0]+","+verts[1]+","+verts[2]+")");
> System.out.println("("+verts[3]+","+verts[4]+","+verts[5]+")");
> shape=new Shape3D(lsa,new Appearance());*/
> // System.out.println("def:shape3d");
> LineArray la=new LineArray(2,GeometryArray.COORDINATES);
> la.setCoordinate(0,verts);
> shape=new Shape3D(la,new Appearance());
> return shape;
> }
>
>
>-------------------------------------------------------------------------------------[Model.java]
> package
> jpuf; import java.awt.*;
> import javax.swing.*;
> import jpuf.geometry.*; // OUR PACKAGE
> import javax.vecmath.*;
> import javax.media.j3d.*; public class Model { private
> VirtualUniverse VU;
> private View v;
> private TransformGroup TG;
> private BranchGroup BG;
> private Locale LC;
> private Canvas3D c3d;
> public Model(JPanel c)
> {
> VirtualUniverse universe=new VirtualUniverse();
> this.VU=universe;
> Locale locale=new Locale(universe);
> this.LC=locale;
> locale.addBranchGraph(GenerateRightSubtree(c));
> locale.addBranchGraph(GenerateLeftSubtree());
> } private BranchGroup GenerateRightSubtree(JPanel c)
> {
> BranchGroup root=new BranchGroup(); Transform3D t=new
> Transform3D();
> t.set(new Vector3f(0.0f,0.0f,10.0f));
> TransformGroup TG=new TransformGroup(t); ViewPlatform
> vplat=new ViewPlatform(); PhysicalBody pbody = new PhysicalBody();
> PhysicalEnvironment penv=new PhysicalEnvironment();
> TG.addChild(vplat);
> root.addChild(TG); View view=new View();
> this.v=view;
> this.c3d=new Canvas3D(null);
> // System.out.println(this.c3d.hashCode());
> this.c3d.setBackground(Color.white);
> this.c3d.setForeground(Color.black);
> c.add(c3d);
> view.addCanvas3D(this.c3d);// System.out.println(this.c3d);
> // System.out.println(this.c3d.isValid());
> // System.out.println(this.c3d.isVisible());
> view.attachViewPlatform(vplat); view.setPhysicalBody(new
> PhysicalBody());
> view.setPhysicalEnvironment(new PhysicalEnvironment());
> root.setCapability(BG.ALLOW_CHILDREN_READ); return(root);
> } private BranchGroup GenerateLeftSubtree()
> {
> BranchGroup root=new BranchGroup();
> Transform3D t=new Transform3D();
> TransformGroup TG=new TransformGroup();
> this.TG=TG;
> /* BoundingSphere bounds = new BoundingSphere(new
> Point3d(0.0,0.0,0.0), 100.0); (is it required?)
> TG.setBounds(bounds); */
> root.addChild(TG);
> this.BG=root;
> root.setCapability(BG.ALLOW_CHILDREN_READ);
> root.setCapability(root.ALLOW_CHILDREN_WRITE);
> root.setCapability(root.ALLOW_DETACH);
> return(root);
> } // [THIS METHOD ADDS A SHAPE3D OBJECT FROM OUTSIDE TO THE
> // TRANSFORMGROUP NODE OF LEFT SUBTREE OF THE PREVIOUSLY
> // CREATED SCENEGRAPH] public void addShapeObject(Shape3D shape)
> {
> this.c3d.stopRenderer();
> // System.out.println("addshapeobj:gotshape"+shape);
> shape.setPickable(true);
> shape.setCapability(shape.ALLOW_GEOMETRY_WRITE);
> // System.out.println("Live : "+this.TG.isLive());
> this.LC.removeBranchGraph(this.BG);
> // System.out.println("Live : "+this.TG.isLive());
> this.TG.addChild(shape);
> // System.out.println("attached:shape3d");
> this.LC.addBranchGraph(this.BG);
> this.c3d.startRenderer();
> /////////////////////////////////////////////////////
> System.out.println(this.c3d.hashCode());
> /////////////////////////////////////////////////////
> // System.out.println("Renderer :
> "+this.c3d.isRendererRunning()+"\tCanvas : "+this.c3d.isValid());
> // System.out.println("Canvas3D size : "+this.c3d.getSize());
> return;
> } // [for multiple windows]
> public void newCanvas(Component c)
> {
> this.c3d=new Canvas3D(null);
> v.addCanvas3D(this.c3d);
> System.out.println(this.c3d);
> } // [for multiple windows]
> public Canvas3D getCanvas() // returns canvas to main file
> for adding in a Jpanel
> {
> this.c3d.setBackground(Color.blue);
> this.c3d.setForeground(Color.white);
> return this.c3d;
> } public void setCanvas(Canvas3D c) // This canvas is passed
> from main file .. and it overrides the original canvas created above
> {
> this.c3d=c;
> }
> }
--
----
_____________________ooO_(_)_Ooo_____________________
"Cuando leí los problemas que causa beber, dejé de leer."
===========================================================================
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".