Thank you, Carlos,
I tried what you said here. But the situation hasn't changed.
I guess, normals for Cylinder and Cone are generated by default.
Frustrated with this.

Mingtian Ni

On Mon, 28 Oct 2002, Carlos D Correa wrote:

> Hi,
>
> I think this problem can be solved by setting the appropriate normals
> for your geometry,
>
> When creating cylinders and other figures, send a GENERATE_NORMALS flag
> in the constructor...
> it looks something like: new Cylinder(radius, height,
> Cylinder.GENERATE_NORMALS, appearance);
> Additionally, if you don't need them to be transparent you won't need
> the lines:
>
>            TransparencyAttributes ta = new TransparencyAttributes();
>            app.setTransparencyAttributes(ta);
>
>
> Carlos
>
> Mingtian Ni wrote:
>
> >Hi there,
> >I am developing an application with java3d.
> >It worked very good so far. However, I found that
> >whatever I created in the scene graph looked transparent.
> >An example is given in the attached image where the cone
> >is supposed to block the cylinder. But we can still see
> >the cylinder through the top cone.
> >What happens there? I didn't turn on the transparency attribute.
> >I has been struggling with this for quite a few days.
> >Some body can tell me?
> >Any response is appreciated! To make the question clearer, I attach
> >the code I am using here. Sorry for the long email.
> >
> >Mingtian Ni
> >
> >This function for creating the 3d axises is as follows:
> >   private TransformGroup createAxises(float width, float height, float
> >depth)
> >   {
> >           TransformGroup root = new TransformGroup();
> >
> >           // Create appearence.
> >           Appearance app = new Appearance();
> >           Material mm = new Material();
> >           mm.setLightingEnable(true);
> >           mm.setAmbientColor(0.0f, 1.0f, 0.0f);
> >           mm.setDiffuseColor(0.0f, 1.0f, 0.0f);
> >           mm.setSpecularColor(0.0f, 1.0f, 0.0f);
> >           mm.setShininess(100.0f);
> >           app.setMaterial(mm);
> >           TransparencyAttributes ta = new TransparencyAttributes();
> >           app.setTransparencyAttributes(ta);
> >           RenderingAttributes ra = new RenderingAttributes();
> >           ra.setAlphaTestFunction(RenderingAttributes.GREATER);
> >           app.setRenderingAttributes(ra);
> >
> >           Cylinder cy;
> >           Cone arrow;
> >           TransformGroup axisGroup, cyGroup, arrowGroup, labelGroup;
> >           Transform3D t;
> >           Shape3D sh;
> >
> >           // Create y axis.
> >           axisGroup = new TransformGroup();
> >
> >           cyGroup = new TransformGroup();
> >           t = new Transform3D();
> >           t.setTranslation(new Vector3f(0.0f, height/2.0f, 0.0f));
> >           cyGroup.setTransform(t);
> >
> >           cy = new Cylinder(m_AXISRADIUS, height, app);
> >           cyGroup.addChild(cy);
> >           axisGroup.addChild(cyGroup);
> >
> >           arrowGroup = new TransformGroup();
> >           arrowGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
> >           t = new Transform3D();
> >           t.setTranslation(new Vector3f(0.0f, height + m_ARROWLEN/2.0f,
> >0.0f));
> >           arrowGroup.setTransform(t);
> >
> >           arrow = new Cone(m_ARROWRADIUS, m_ARROWLEN, app);
> >           arrowGroup.addChild(arrow);
> >           axisGroup.addChild(arrowGroup);
> >
> >           labelGroup = new TransformGroup();
> >           labelGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
> >           t = new Transform3D();
> >           t.setTranslation(new Vector3f(0.0f, height + m_ARROWLEN,
> >0.0f));
> >           labelGroup.setTransform(t);
> >
> >           sh = new Shape3D(getRaster("2nd Col"));
> >           labelGroup.addChild(sh);
> >
> >           axisGroup.addChild(labelGroup);
> >
> >           root.addChild(axisGroup);
> >
> >           // Create x axis.
> >           axisGroup = new TransformGroup();
> >           axisGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
> >           t = new Transform3D();
> >           t.setRotation(new AxisAngle4d(0.0, 0.0, 1.0, -Math.PI/2.0));
> >           axisGroup.setTransform(t);
> >
> >           cyGroup = new TransformGroup();
> >           t = new Transform3D();
> >           t.setTranslation(new Vector3f(0.0f, width/2.0f, 0.0f));
> >           cyGroup.setTransform(t);
> >
> >           cy = new Cylinder(m_AXISRADIUS, width, app);
> >           cyGroup.addChild(cy);
> >           axisGroup.addChild(cyGroup);
> >
> >           arrowGroup = new TransformGroup();
> >           arrowGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
> >           t = new Transform3D();
> >           t.setTranslation(new Vector3f(0.0f, width + m_ARROWLEN/2.0f,
> >0.0f));
> >           arrowGroup.setTransform(t);
> >
> >           arrow = new Cone(m_ARROWRADIUS, m_ARROWLEN, app);
> >           arrowGroup.addChild(arrow);
> >
> >           axisGroup.addChild(arrowGroup);
> >
> >           labelGroup = new TransformGroup();
> >           labelGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
> >           t = new Transform3D();
> >           t.setTranslation(new Vector3f(0.0f, width + m_ARROWLEN, 0.0f));
> >           labelGroup.setTransform(t);
> >
> >           sh = new Shape3D(getRaster("1st Col"));
> >           labelGroup.addChild(sh);
> >
> >           axisGroup.addChild(labelGroup);
> >
> >           root.addChild(axisGroup);
> >
> >           // Create z axis.
> >           axisGroup = new TransformGroup();
> >           axisGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
> >           t = new Transform3D();
> >           t.setRotation(new AxisAngle4d(1.0, 0.0, 0.0, Math.PI/2.0));
> >           axisGroup.setTransform(t);
> >
> >           cyGroup = new TransformGroup();
> >           t = new Transform3D();
> >           t.setTranslation(new Vector3f(0.0f, depth/2.0f, 0.0f));
> >           cyGroup.setTransform(t);
> >
> >           cy = new Cylinder(m_AXISRADIUS, depth, app);
> >           cyGroup.addChild(cy);
> >           axisGroup.addChild(cyGroup);
> >
> >           arrowGroup = new TransformGroup();
> >           arrowGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
> >           t = new Transform3D();
> >           t.setTranslation(new Vector3f(0.0f, depth + m_ARROWLEN/2.0f,
> >0.0f));
> >           arrowGroup.setTransform(t);
> >
> >           arrow = new Cone(m_ARROWRADIUS, m_ARROWLEN, app);
> >           arrowGroup.addChild(arrow);
> >
> >           axisGroup.addChild(arrowGroup);
> >
> >           labelGroup = new TransformGroup();
> >           labelGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
> >           t = new Transform3D();
> >           t.setTranslation(new Vector3f(0.0f, depth + m_ARROWLEN, 0.0f));
> >           labelGroup.setTransform(t);
> >
> >           sh = new Shape3D(getRaster("DN"));
> >           labelGroup.addChild(sh);
> >
> >           axisGroup.addChild(labelGroup);
> >
> >           root.addChild(axisGroup);
> >
> >           // Create the view box.
> >           app = new Appearance();
> >           ColoringAttributes ca = new ColoringAttributes(1.0f, 1.0f,
> >1.0f, ColoringAttributes.SHADE_FLAT);
> >           app.setColoringAttributes(ca);
> >           ra = new RenderingAttributes();
> >           ra.setAlphaTestFunction(RenderingAttributes.GREATER);
> >           app.setRenderingAttributes(ra);
> >
> >           float[] vts =
> >                        { 0.0f, 0.0f, 0.0f,
> >                          width, 0.0f, 0.0f,
> >                          width, height, 0.0f,
> >                          0.0f, height, 0.0f,
> >                          0.0f, 0.0f, depth,
> >                          width, 0.0f, depth,
> >                          width, height, depth,
> >                          0.0f, height, depth
> >                        };
> >                int[] indices =
> >                        { 0, 1, 2, 3, 0,
> >                          4, 5, 6, 7, 4,
> >                          0, 4,
> >                          1, 5,
> >                          2, 6,
> >                          3, 7
> >                        };
> >                int[] strips = {5, 5, 2, 2, 2, 2};
> >
> >                IndexedLineStripArray box = new IndexedLineStripArray(8,
> >
> >IndexedLineStripArray.COORDINATES|IndexedTriangleStripArray.BY_REFERENCE,
> >                           indices.length,
> >                           strips);
> >                box.setCoordRefFloat(vts);
> >                box.setCoordinateIndices(0, indices);
> >
> >                sh = new Shape3D(box, app);
> >                root.addChild(sh);
> >
> >                return root;
> >        }
> >
> >The function for creating universe is as follows:
> >   private SimpleUniverse createUniverse()
> >   {
> >           // Create a Canvas3D.
> >           GraphicsConfigTemplate3D gct3D = new
> >GraphicsConfigTemplate3D();
> >           gct3D.setSceneAntialiasing(GraphicsConfigTemplate.PREFERRED);
> >           GraphicsConfiguration gc =
> 
>>GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getBestConfiguration(gct3D);
> >           Canvas3D canvas3D = new Canvas3D(gc);
> >           add(canvas3D, BorderLayout.CENTER);
> >
> >           // Create a Universe.
> >           SimpleUniverse universe = new SimpleUniverse(canvas3D);
> >
> >           // Set initial transform to the ViewingPlatform.
> >           ViewingPlatform viewingPlatform =
> >universe.getViewingPlatform();
> >           viewingPlatform.setNominalViewingTransform();
> >
> >viewingPlatform.getViewPlatform().setViewAttachPolicy(View.NOMINAL_HEAD);
> >           Transform3D transform = new Transform3D();
> >
> 
>>viewingPlatform.getMultiTransformGroup().getTransformGroup(0).getTransform(transform);
> >           Transform3D t = new Transform3D();
> >           t.setTranslation(new Vector3f(0.0f, 0.0f, m_viewWidth/2.0f));
> >           transform.mul(t);
> >           t.setRotation(new AxisAngle4d(1.0, 0.0, 0.0, Math.PI/4.0));
> >           transform.mul(t);
> >
> 
>>viewingPlatform.getMultiTransformGroup().getTransformGroup(0).setTransform(transform);
> >
> >           // add orbit behavior to ViewingPlatform
> >           m_orbitBehavior = new OrbitBehavior(canvas3D,
> >OrbitBehavior.REVERSE_ALL|OrbitBehavior.STOP_ZOOM);
> >           BoundingSphere bounds =  new BoundingSphere(new Point3d(0.0,
> >0.0, 0.0), Double.MAX_VALUE);
> >           m_orbitBehavior.setSchedulingBounds(bounds);
> >           m_orbitBehavior.setRotationCenter(new Point3d(m_viewWidth/2.0,
> >m_viewHeight/2.0, m_viewDepth/2.0));
> >           viewingPlatform.setViewPlatformBehavior(m_orbitBehavior);
> >
> >           View view = universe.getViewer().getView();
> >           view.setFrontClipPolicy(View.VIRTUAL_EYE);
> >           view.setBackClipPolicy(View.VIRTUAL_EYE);
> >           view.setBackClipDistance(2 * (m_viewWidth + m_viewHeight +
> >m_viewDepth));
> >           view.setFrontClipDistance(1.0e-5);
> >
> >           view.setWindowEyepointPolicy(View.RELATIVE_TO_WINDOW);
> >           view.setWindowResizePolicy(View.VIRTUAL_WORLD);
> >           view.setWindowMovementPolicy(View.PHYSICAL_WORLD);
> >//         view.setSceneAntialiasingEnable(true);
> >//         view.setLocalEyeLightingEnable(true);
> >//System.out.println("window resize policy = " +
> >universe.getViewer().getView().getWindowResizePolicy());
> >           return universe;
> >   }
> >
> >
> > ------------------------------------------------------------------------
> >
> > <cid:part1.00020505.05020108@;netscape.com>
> >
>
>

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