1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| public BranchGroup createSceneGraph(SimpleUniverse u) {
BranchGroup objRoot = new BranchGroup();
BoundingSphere largeBounds = new BoundingSphere(new Point3d(0.0,0.0,0.0),4000.0); // Aire de la scène 4000m, centrée en 0/0/0
// Permet de redéfinir la distance de la vue d'un objet (par défaut à 10m)ici on a mis à 4000m
View view = u.getViewer().getView();
view.setBackClipDistance(4000);
Vector3f ldir = new Vector3f(1.0F,1.0F,-1.0F);
Color3f lcouldl = new Color3f(1.0F,1.0F,1.0F);
DirectionalLight dl = new DirectionalLight(lcouldl,ldir);
dl.setInfluencingBounds(largeBounds);
objRoot.addChild(dl);
Color3f lcoulal = new Color3f(0.2F,0.2F,0.1F);
AmbientLight al = new AmbientLight(lcoulal);
al.setInfluencingBounds(largeBounds);
objRoot.addChild(al);
TransformGroup objTrans = new TransformGroup();
objRoot.addChild(objTrans);
Transform3D t = new Transform3D();
t.setTranslation(new Vector3d(0.0F,0.0F,-8.0F)) ;
objTrans.setTransform(t);
TransformGroup objTr2 = new TransformGroup();
objTrans.addChild(objTr2);
Transform3D tt = new Transform3D();
objTr2.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
objTr2.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
objTr2.setCapability(TransformGroup.ENABLE_PICK_REPORTING);
objTr2.setTransform(tt);
Appearance a = new Appearance();
Material m = new Material();
m.setDiffuseColor(1.0f,1.0f,1.0f);
m.setSpecularColor(1.0f,1.0f,1.0f);
m.setAmbientColor(1.0f,1.0f,1.0f);
m.setShininess(25.0f);
a.setMaterial(m);
for(int i=0;i<pts_ligne.pp.size();i++) {
Point n=pts_ligne.pp.get(i);
TransformGroup objTran = new TransformGroup();
objTr2.addChild(objTran);
Transform3D t1 = new Transform3D();
t1.setTranslation(new Vector3d( n.x, n.y , n.z)) ;
objTran.setTransform(t1);
objTran.addChild(new Box(1,1,1,a));
//pts2[i] = new Vector3d( n.x, n.y , n.z);
}
BoundingSphere bounds;
bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0),100.0);
MouseRotate behavior = new MouseRotate(objTr2);
behavior.setFactor(0.01); // sensibilité de la rotation
objTr2.addChild(behavior);
behavior.setSchedulingBounds(bounds);
MouseZoom behavior2 = new MouseZoom(objTr2);
behavior2.setFactor(0.25); // sensibilité du zoom
objTr2.addChild(behavior2);
behavior2.setSchedulingBounds(bounds);
MouseTranslate behavior3 = new MouseTranslate(objTr2);
behavior3.setFactor(0.25); // sensibilité de la translation
objTr2.addChild(behavior3);
behavior3.setSchedulingBounds(bounds);
objRoot.compile();
return objRoot;
} |
Partager