Java 3D animation couleur

Fermé
mimi - 9 août 2008 à 10:41
 nicolasdex - 2 déc. 2008 à 23:06
Bonjour,
salut tout le monde ..svp j 'ai besoin d'aide urgente
j'ai copié ce code que j'ai trouvé sur un tutoriel dans eclipse :
// Etape 1 :
// Importation des packages Java 2
import java.applet.Applet;
import java.awt.*;

// Etape 2 :
// Importation des packages Java 3D
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import javax.media.j3d.CapabilityNotSetException ;
public class ColorInterpolatorTest extends Applet {

public ColorInterpolatorTest() {
this.setLayout(new BorderLayout());

// Etape 3 :
// Creation du Canvas 3D
Canvas3D canvas3D = new Canvas3D(SimpleUniverse.getPreferredConfiguration());

this.add(canvas3D, BorderLayout.CENTER);

// Etape 4 :
// Creation d'un objet SimpleUniverse
SimpleUniverse simpleU = new SimpleUniverse(canvas3D);

// Etape 5 :
// Positionnement du point d'observation pour avoir une vue correcte de la
// scene 3D
simpleU.getViewingPlatform().setNominalViewingTransform();

// Etape 6 :
// Creation de la scene 3D qui contient tous les objets 3D que l'on veut visualiser
BranchGroup scene = createSceneGraph();

// Etape 7 :
// Compilation de la scene 3D
scene.compile();

// Etape 8:
// Attachement de la scene 3D a l'objet SimpleUniverse
simpleU.addBranchGraph(scene);
}

/**
* Creation de la scene 3D qui contient tous les objets 3D
* @return scene 3D
*/
public BranchGroup createSceneGraph() {

// Creation de l'objet parent qui contiendra tous les autres objets 3D
BranchGroup parent = new BranchGroup();

// Creation du materiau pour la couleur de la sphere
// Par defaut c'est la couleur diffuse du materiau qui est modifiee
// Bug Java 3D : la couleur emissive ne change pas avec Java 3D OpenGL
Material material = new Material();
//material.setColorTarget(Material.EMISSIVE);
Appearance appearance = new Appearance();
appearance.setMaterial(material);

// Creation de lumieres directionnelle et ambiante
DirectionalLight dirlight =
new DirectionalLight( new Color3f(1.0f, 1.0f, 1.0f),
new Vector3f(1.0f, -1.0f, -1.0f) );
dirlight.setInfluencingBounds(new BoundingSphere());
parent.addChild(dirlight);

AmbientLight ambLight = new AmbientLight(new Color3f(1.0f, 1.0f, 1.0f));
ambLight.setInfluencingBounds(new BoundingSphere());
parent.addChild(ambLight);

// Creation de l'animation temporelle
Alpha alpha = new Alpha(-1, 4000);
alpha.setMode(Alpha.INCREASING_ENABLE | Alpha.DECREASING_ENABLE);
alpha.setDecreasingAlphaDuration(2000);
alpha.setStartTime(System.currentTimeMillis());

// Creation de l'animation de la couleur que l'on ajoute a la racine
// de l'arbre de la scene
ColorInterpolator colorInt =
new ColorInterpolator(alpha,
material,
new Color3f(0f, 0f, 1f), // bleu
new Color3f(1f, 1f, 0f)); // jaune
colorInt.setSchedulingBounds(new BoundingSphere());
parent.addChild(colorInt);

// Construction et ajout de la sphere dans le graphe de la scene
Sphere sphere = new Sphere(0.4f, Sphere.GENERATE_NORMALS, 64);
sphere.setAppearance(appearance);
parent.addChild(sphere);

return parent;
}

/**
* Etape 9 :
* Methode main() nous permettant d'utiliser cette classe comme une applet
* ou une application.
* @param args arguments de la ligne de commande
*/
public static void main(String[] args) {
Frame frame = new MainFrame(new ColorInterpolatorTest(), 256, 256);
}
}
et je n'ai pas eu le meme resultat que dans la demonstration html que proposait le tutoriel et j'ai eu ce message d'erreur

Exception occurred during Behavior execution:
javax.media.j3d.CapabilityNotSetException: Material: no capability to set component
at javax.media.j3d.Material.setDiffuseColor(Material.java:356)
at javax.media.j3d.ColorInterpolator.processStimulus(ColorInterpolator.java:204)
at javax.media.j3d.BehaviorScheduler.doWork(BehaviorScheduler.java:192)
at javax.media.j3d.J3dThread.run(J3dThread.java:275)
je suis une debutante et je n'ai pas compris ou se trouve le probleme..svp aidez moi..j'en ai vrément besoin aujourd'hui
A voir également:

3 réponses

el_linwin Messages postés 519 Date d'inscription vendredi 25 juillet 2008 Statut Membre Dernière intervention 16 août 2008 90
9 août 2008 à 10:47
Bonjour mimi,

D'après le message d'erreur, le problème est interne au package javax.media.j3d.
Vérifiez que vous avez bien la dernière version du SDK Java (kit de développement) ainsi que de ja JRE (Java Runtime Environment). Cela peut résoudre votre problème.


Cordialement,
el_linwin
2
merci el_linwin
et bien j'ai J2SE Runtime Environment 5.0 Update 6 ...pour le sdk c'est le sdk 3.4 win 32
est-ce bien ce qu'il me faut ou je dois telecharger de nouvelles versions?
cordialement
1
IL faut juste donner les bonnes autorisations au Material : Voici une partie du code modifié


//Construction et ajout de la sphere dans le graphe de la scene
Sphere sphere = new Sphere(0.08f, Sphere.GENERATE_NORMALS, 64);

material.setCapability(Material.ALLOW_COMPONENT_WRITE); // LIGNE A RAJOUTER !!!!!!!!!!
sphere.setAppearance(appearance);
-1