Mercurial > hg > jslab
view src/samer/j3d/J3DViewer.java.not @ 8:5e3cbbf173aa tip
Reorganise some more
author | samer |
---|---|
date | Fri, 05 Apr 2019 22:41:58 +0100 |
parents | bf79fb79ee13 |
children |
line wrap: on
line source
/* */ package samer.j3d; import samer.core.*; import samer.maths.*; import samer.tools.*; import java.io.*; import java.awt.event.*; import javax.media.j3d.*; import javax.vecmath.*; public class J3DViewer extends Util { Shape3D shape; public J3DViewer(Root root, Matrix P, VVector A) throws Exception { if (P==null) { Shell.print("creating PointsMatrix"); P=new Matrix("PointsMatrix",A.size(),4); new MatrixAgent(P).execute("load",Shell.env()); } // create scene { int viewerType=Shell.getInt("viewerType",0); Shape3D shape; switch (viewerType) { case 1: shape=new Shape3D(new MatrixPointArrayAlpha(P,A), transparent(0,points())); break; case 2: shape=new Shape3D(new MatrixPoints4D(P,A), transparent(0,points())); break; case 3: Geometry geom=new PatchArrayAlpha(P,A); shape=new Shape3D(geom, rndr(flat(transparent(0,patch())),false)); break; default: shape=new Shape3D(new MatrixPointArray(P,A), points()); addBackground(root,new Background(new Color3f(0.26f,0.23f,0.35f))); break; } } } public javax.media.j3d.Node getShape() { return rotaterise(shape); } private Appearance rndr(Appearance a, boolean ignore) { RenderingAttributes ra=new RenderingAttributes(); ra.setDepthBufferEnable(false); ra.setIgnoreVertexColors(ignore); a.setRenderingAttributes(ra); return a; } private static Group rotaterise(javax.media.j3d.Node n) { TransformGroup tg = new TransformGroup(); TransformGroup tg2=new TransformGroup(); mouseRotate(tg); mouseTranslate(tg); mouseZoom(tg); addRotator(tg2,Shell.getInt("rotation.period",10000)); tg.addChild(n); tg2.addChild(tg); return tg2; } }