hi all, i have a problem, i just created a program to give create and render pot like objects (basically surface of revolution). program works fine but the object is not rendered as real world object. say if there is curvature then i can see that curvature from one side only from other side that curvature does not seen at all. all inside of pot is black. i am attaching the jpg file which shows problems in rendering. Also i am giving source code i used.
thnksin advance
sandeep munde
Source Code
/** SurfaceOfRevolution.java
* Created on December 23, 2003, 8:55 PM
*/
/**
* @author sandeep
*/
public class SurfaceOfRevolution extends JFrame{
Revolution pot;// object of class used to give vertices of facets of
the Pot
double [] potVerts;
double []xproftemp=new double[20];
double []yproftemp=new double[20];
double []xprof1=new double[20];
double []yprof1=new double[20];
double []xprof2=new double[20];
double []yprof2=new double[20];
sketcher surfaceofrevolution_sketcher;
BSpline bspline_surfaceofrev;
double basisfntemp;
double[] xprof=new double[20];
double[] yprof=new double[20];
double xtemp;
int AngleOfRev;// angel of revoution
GeometryInfo potGeom;
NormalGenerator potNorms;
Shape3D potShape;
private Color3f black = new Color3f(0.0f, 0.0f, 0.0f); // define black
color
public SurfaceOfRevolution(sketcher skt) {
surfaceofrevolution_sketcher=skt
GraphicsConfiguration config =
SimpleUniverse.getPreferredConfiguration();
Canvas3D c = new Canvas3D(config); // add canvas3d on which j3d draws
// Create a simple scene and attach it to the virtual universe
BranchGroup scene = createSceneGraph(); // create scene graph
SimpleUniverse u = new SimpleUniverse(c); // create simple universe
// This will move the ViewingPlatform back so that objects in the
scene can be viewed.
u.getViewingPlatform().setNominalViewingTransform();
u.addBranchGraph(scene); // add BranchGroup scene to universe
getContentPane().setLayout(new BorderLayout());
getContentPane().add("Center", c);
}
private BranchGroup createSceneGraph() {
BranchGroup objRoot = new BranchGroup();
BoundingSphere bounds = new BoundingSphere(new
Point3d(0.0,0.0,0.0),10000.0);
DirectionalLight light = new DirectionalLight(new Color3f(1.0f,
1.0f, 1.0f), new Vector3f( 0f,0f,-1f));
DirectionalLight light1 = new DirectionalLight(new Color3f(1.0f,
1.0f, 1.0f), new Vector3f( 0f,-1f,0f));
DirectionalLight light2 = new DirectionalLight(new Color3f(1.0f,
1.0f, 1.0f), new Vector3f( -1f,0f,0f));
light.setInfluencingBounds(bounds); // area of light spread
objRoot.addChild(light); // add light to BG
objRoot.addChild(light1); // add light to BG
objRoot.addChild(light2); // add light to BG
TransformGroup modelTrans = new TransformGroup();
Transform3D trans = new Transform3D();
trans.setTranslation(new Vector3d(0d, 0d, -10.0d)); // initially
move it away from camera
trans.setScale(new Vector3d(0.01d, 0.01d, 0.01d)); // scales whole
model
modelTrans.setTransform(trans);
modelTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
modelTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
MouseRotate modelRot = new MouseRotate();
modelRot.setTransformGroup(modelTrans);
modelTrans.addChild(modelRot);
modelRot.setSchedulingBounds(bounds);
MouseZoom modelZoom = new MouseZoom();
modelZoom.setTransformGroup(modelTrans);
modelTrans.addChild(modelZoom);
modelZoom.setSchedulingBounds(bounds);
MouseTranslate modelTranslate = new MouseTranslate();
modelTranslate.setTransformGroup(modelTrans);
modelTrans.addChild(modelTranslate);
modelTranslate.setSchedulingBounds(bounds);
modelTrans.addChild(createpot());
objRoot.addChild(modelTrans);
return objRoot;
}
private TransformGroup createpot() {
TransformGroup potTrans = new TransformGroup();
Transform3D trans = new Transform3D();
// construct profile
AngleOfRev=surfaceofrevolution_sketcher.GetAngleofRevolution();
xproftemp=surfaceofrevolution_sketcher.SymmetricProfileX();
yproftemp=surfaceofrevolution_sketcher.SymmetricProfileY();
for(int i=0;i<xproftemp.length;i++){
xprof[i]=xproftemp[i]/75.0;
yprof[i]=yproftemp[i]/75.0;
}
pot = new Revolution(xproftemp, yproftemp, 10.0,AngleOfRev);
//call the class set the object pot
potVerts = pot.getVertices(); // get the pot verteices
}
potGeom = new GeometryInfo(GeometryInfo.QUAD_ARRAY);
potGeom.setCoordinates(potVerts);
potNorms = new NormalGenerator(); //normal are most important
potNorms.generateNormals(potGeom);
Appearance potApp = new Appearance();
potApp.setMaterial(new Material(black, black, new
Color3f(1.0f,1.0f,0.0f), black, 0f));
potShape = new Shape3D(potGeom.getGeometryArray(), potApp);
potShape.setCapability(Shape3D.ALLOW_GEOMETRY_WRITE);
potTrans.addChild(potShape);
return potTrans;
}
===========================================================================
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".
<<attachment: Rendering.jpg>>
