PDA

View Full Version : [java3D]Come aggiungere un nodo in uno scene graph a runtime?


salim
06-07-2006, 08:45
:help:
Sto realizzando il gioco della roulette in java 3D in cui faccio uso di un timer che di tick in tick mi fa ruotare il cilindro con la pallina fino a che la pallina si ferma e mi restituisce il numero estratto. A questo punto per visualizzare il numero estratto faccio uso di un tabellone, uguale a quello usato nel gioco, in cui implemento il metodo segnaEstratto(int estratto) che mi aggiunge una sferetta alla classe Tabella che estende TransformGroup. Da un'altra classe appena ho il numero estratto invoco tale metodo.

Il problema :muro: è che la sferetta non viene renderizzata e io credo che ciò non avviene perchè sto aggiungendo un nodo allo scene graph a runtime. Come dovrei fare per renderizzare la sfera?

Di seguito vi riporto il metodo segnaEstratto(int estratto):
public void segnaEstratto(int estratto)
{
//Crea l'aspetto della sfera
Appearance app2=new Appearance();

//Assegna un Materiale all'aspetto
Color3f color=new Color3f(1f,1f,1.0f);
Color3f black=new Color3f(Color.RED);
app2.setMaterial(new Material(color,black,color,black,80.0f));

Sphere gettone=newSphere (0.05f,Primitive.GENERATE_NORMALS,app2);

TransformGroup tg=new TransformGroup();
if(estratto == 0) //per esempio esce lo 0
{
System.out.println("**********estratto: "+estratto);


tg.setCapability (TransformGroup.ALLOW_TRANSFORM_WRITE);
tg.setCapability(TransformGroup.ALLOW_CHILDREN_EXTEND);
tg.setCapability(TransformGroup.ALLOW_CHILDREN_WRITE);

Transform3D disegna=new Transform3D();
disegna.setTranslation(new Vector3f(0.0f,0.0f,0.0f));
tg.setTransform(disegna);
tg.addChild(gettone);

this.addChild(tg);
}
}

Grazie a tutti quelli che risponderanno!!!!! :)

x_Master_x
06-07-2006, 14:10
chiedi a un mod di spostarti il 3d in programmazione, li ti sapranno aiutare, ti aiuterei volentieri io ma non conosco nessun linguaggio di programmazione in maniera approfondita :p

salim
06-07-2006, 19:12
L'ho inviato anche nell'area programmazione, ma neanche mi hanno risposto. Grazie lo stesso!!! :)

Zimmemme
06-07-2006, 20:21
Credo che Cerbert possa aiutarti.