Nous indiquons ci-dessous la procédure pour installer Netscape, Cosmo Player et JDK sur PC. La procédure d'installation pour Mac est similaire (voire plus simple) et nous ne la détaillerons pas.
Pour le navigateur, il vous faut décharger le fichier n32301p.exe puis double-cliquer le fichier obtenu. Une fois la procédure d'installation complétée, vous devez alors décharger le fichier cpsetup_beta3a.exe puis double-cliquer le fichier obtenu.
Une fois la procédure d'installation du navigateur VRML complétée, vous devez alors installer le JDK. Créez d'abord un répertoire, par exemple c:\Program Files\jdk\. Ensuite charger le fichier jdk-1_0_2-win32-x86.exe et mettez le dans ce nouveau répertoire. Ensuite double-cliquez sur le fichier obtenu. Une boite MS-DOS s'ouvre alors et montre l'avancement de la décompression des fichiers sur votre disque dur. Lorsque l'ordinateur a fini, vous pouvez refermer la boite MS-DOS. A l'endroit ou se trouve votre fichier jdk-1_0_2-win32-x86.exe, il existe maintenant un répertoire Java à l'endroit voulu. Sinon vous pouvez déplacer ce répertoire pour le mettre à un endroit qui vous convient mieux, si vous le souhaitez.
Pour faciliter l'éxécution du compilateur java, on vous conseille d'éditer le fichier autoexec.bat et d'y insérer le chemin où se trouve "javac". par exemple en ajoutant à la fin de l'"autoexec.bat" la ligne :
SET PATH=c:\Program Files\jdk\bin;"%PATH%"Vous pouvez effacer de votre disque dur les fichiers n32e301p.exe, cpsetup_beta3a.exe et jdk-1_0_2-win32-x86.exe si vous souhaitez récupérer de l'espace disque.
Notez que des redemarrages de la machine peuvent vous être demandés au cours des différentes opérations. Vous y conformer.
Nous allons traiter les exemples pour le cas d'un PC. Le principe est exactement le même dans le cas du Mac.
Ouvrez un bloc-notes (ou tout autre éditeur de texte) et tapez ce qui suit :
#VRML V2.0 utf8 Transform { children [ DEF TS TouchSensor {} # TouchSensor Shape { appearance Appearance { material DEF SphereColor Material { diffuseColor 1 0 0 } # red } geometry Sphere {} } ] } DEF ColorScript Script { url "ChangeColor.class" eventIn SFBool clicked eventOut SFColor newColor field SFBool on FALSE } # Routing ROUTE TS.isActive TO ColorScript.clicked ROUTE ColorScript.newColor TO SphereColor.set_diffuseColorUne copie de ce fichier est disponible ici (source).
Enregistrez ce fichier sous le nom "ChangeColor.wrl" (le troisième programme que vous avez du installer sur votre machine).
Ouvrez un bloc-notes (ou tout autre éditeur de texte) et tapez ce qui suit :
import vrml.*; import vrml.field.*; import vrml.node.*; public class ChangeColor extends Script { private SFBool on; // status of on-off float red[] = { 1, 0, 0 }; // RGB(Red) float blue[] = { 0, 0, 1 }; // RGB(Blue) private SFColor newColor ; public void initialize() { newColor = (SFColor) getEventOut("newColor"); on = (SFBool) getField("on"); } public void processEvent(Event e) { ConstSFBool v = (ConstSFBool)e.getValue(); if(v.getValue()){ if (on.getValue()) { newColor.setValue(red); // set red to 'newColor' } else { newColor.setValue(blue); // set blue to 'newColor' } on.setValue(!on.getValue()); // = !on.getValue(); } } }Une copie de ce fichier est disponible ici.
Enregistrez ce fichier sous le nom "ChangeColor.java" dans le répertoire "bin" du JDK.
Ouvrez une boite MS-DOS (menu démarrer, programmes, Commandes MS-DOS) et déplacez vous (par la commande "cd
Vous venez de compiler votre premier programme Java, ce qui a créé le fichier "ChangeColor.class" dans le même répertoire.
Une copie du fichier *.java est disponible ici.
La présence dans le même repertoire du fichier ChangeColor.wrl n'était pas requise pour cette opération, mais la classe Java obtenue (fichier "ChangeColor.class") et le fichier VRML doivent se trouver dans le même répertoire pour la visualisation. De même, le fichier à compiler ("ChangeColor.java") peut se trouver dans un répertoire différent de celui du compilateur, mais il faut alors parametrer la commande pour la compilation. De l'aide est disponible d'une manière générale pour le JDK sous la forme de fichiers html. Pour cela, ouvrir le fichier index.html qui se trouve dans le répertoire "java" (repertoire de plus haut niveau) dans le JDK.
Pour visualiser le résultat, il ne vous reste plus qu'à double cliquer le fichier "ChangeColor.wrl". Après quelques secondes, une sphère rouge doit apparaitre. Un clic sur la sphère modifie sa couleur.
Vous pouvez visualiser le résultat en cliquant ici
(La source est disponible ici).
Ouvrez un bloc-notes (ou tout autre éditeur de texte) et tapez ce qui suit :
Enregistrez ce fichier sous le nom "RGBTest.html" dans le répertoire "bin" du JDK (le troisième programme que vous avez du installer sur votre machine).
Ouvrez un bloc-notes (ou tout autre éditeur de texte) et tapez ce qui suit :
Enregistrez ce fichier sous le nom "sphere.wrl".
Ouvrez un bloc-notes (ou tout autre éditeur de texte) et tapez ce qui suit :
Enregistrez ce fichier sous le nom "RGBTest.java"
Nous devons maintenant configurer le compilateur Java pour qu'il
dispose des classes Java offertes par Netscape. Pour une raison que je
ne m'explique toujours pas, il faut dezziper les classes. Pour cela,
allez avec l'explorateur de Windows dans le repertoire où sont vos
classes Java de Netscape (sans doute dans le répertoire C:\Program
Files\Netscape\Navigator\Program\Java\classes\"). Double-cliquez le
fichier de classes qui s'y trouve (sans doute "java_30") ou si c'est
impossible, ouvrez Winzip et ouvrez l'archive par le menu
"File/Open". Dezzipez le fichier (commande "Extract") dans un nouveau
répertoire (par exemple c:\Classes Netscape) en vérifiant bien que
vous avez coché la case "Use Folder Names" (ce qui signifie qu'il ne
va pas tout extraire au même endroit). Vous devez maintenant dire
au compilateur où trouver les nouvelles classes. Deux méthodes
existent :
Si vous avez choisi la première méthode, ouvrez une boite MS-DOS (menu démarrer, programmes, Commandes MS-DOS). Si vous avez choisi la seconde méthode, utilisez la boite MS-DOS déja ouverte pour la suite des instructions.
Déplacez vous (par la commande "cd
Vous venez de compiler votre premier programme Java, ce qui a créé le fichier "RGBTest.class" dans le même répertoire.
Une copie de ce fichier est disponible ici
(source).
La présence dans le même repertoire du fichier sphere.wrl n'était pas requise pour cette opération, mais la classe Java obtenue (fichier "RGBTest.class") et le fichier VRML doivent se trouver dans le même répertoire pour la visualisation. De même, le fichier à compiler ("RGBTest.java") peut se trouver dans un répertoire différent de celui du compilateur, mais il faut alors parametrer la commande pour la compilation. De l'aide est disponible d'une manière générale pour le JDK sous la forme de fichiers html. Pour cela, ouvrir le fichier index.html qui se trouve dans le répertoire "java" (repertoire de plus haut niveau) dans le JDK.
Pour visualiser le résultat, il ne vous reste plus qu'à double cliquer le fichier "RGBTest.html". Après quelques secondes, une sphère rouge doit apparaitre ainsi qu'une série de boutons. Un clic sur les boutons modifie la couleur de la sphère et écrit un message.
Une copie du résultat est disponible ici.
javac ChangeColor.java
Après une seconde d'attente, l'ordinateur devrait vous rendre la main sans rien avoir affiché. Dans le cas contraire, il y a probablement eu une erreur. Verifiez alors :Cas de l'interface externe (applet)
Nous présentons un exemple très simple, copié chez SGI (ici).
<html>
<head>
<title> RGB Applet Test </title>
</head>
<center>
<embed src="sphere.wrl" border=0 height="250" width="375">
</center>
This is a test of the RGB Applet System. <br>
This is only a test. <br>
<applet code="RGBTest.class" mayscript>
</applet>
</html>
Une copie de ce fichier est disponible ici.
#VRML V2.0 utf8
Group {
children [
Shape {
appearance Appearance {
material DEF MAT Material {
diffuseColor 0.8 0.2 0.2
}
}
geometry Sphere {}
},
DEF TOUCH TouchSensor {
}
]
}
Vous pouvez visualiser ce fichier ici (VRML)
(la source est ici).
// Example applet illustrating sending/receiving of events and registering
// of callbacks on EventOuts.
import java.awt.*;
import java.applet.*;
import vrml.external.field.EventOut;
import vrml.external.field.EventInSFColor;
import vrml.external.field.EventOutSFColor;
import vrml.external.field.EventOutSFTime;
import vrml.external.field.EventOutObserver;
import vrml.external.Node;
import vrml.external.Browser;
import vrml.external.exception.*;
import netscape.javascript.JSObject;
public class RGBTest extends Applet implements EventOutObserver {
TextArea output = null;
Browser browser = null;
Node material = null;
EventInSFColor diffuseColor = null;
EventOutSFColor outputColor = null;
EventOutSFTime touchTime = null;
boolean error = false;
public void init() {
add(new Button("Red"));
add(new Button("Green"));
add(new Button("Blue"));
output = new TextArea(5, 40);
add(output);
JSObject win = JSObject.getWindow(this);
JSObject doc = (JSObject) win.getMember("document");
JSObject embeds = (JSObject) doc.getMember("embeds");
browser = (Browser) embeds.getSlot(0);
// Now we've got the handle to the VRML Browser.
try {
// Get the material node...
material = browser.getNode("MAT");
// Get the diffuseColor EventIn
diffuseColor = (EventInSFColor) material.getEventIn("set_diffuseColor");
// Get the Touch Sensor
Node sensor = browser.getNode("TOUCH");
// Get its touchTime EventOut
touchTime = (EventOutSFTime) sensor.getEventOut("touchTime");
// Set up the callback
touchTime.advise(this, new Integer(1));
// Get its diffuseColor EventOut
outputColor = (EventOutSFColor) material.getEventOut("diffuseColor");
// Set up its callback
outputColor.advise(this, new Integer(2));
}
catch (InvalidNodeException ne) {
add(new TextField("Failed to get node:" + ne));
error = true;
}
catch (InvalidEventInException ee) {
add(new TextField("Failed to get EventIn:" + ee));
error = true;
}
catch (InvalidEventOutException ee) {
add(new TextField("Failed to get EventOut:" + ee));
error = true;
}
}
public void callback(EventOut who, double when, Object which) {
Integer whichNum = (Integer) which;
if (whichNum.intValue() == 1) {
// Make the timestamp and new time show up in the textarea.
double val = touchTime.getValue();
output.appendText("Got time " + val + " at time " + when + "\n");
}
if (whichNum.intValue() == 2) {
// Make the new color of the sphere and timestamp
// show up in the textarea.
float[] val = outputColor.getValue();
output.appendText("Got color " + val[0] + ", " + val[1] + ", " +
val[2] + " at time " + when + "\n");
}
}
public boolean action(Event event, Object what) {
if (error)
{
showStatus("Problems! Had an error during initialization");
return true; // Uh oh...
}
if (event.target instanceof Button)
{
Button b = (Button) event.target;
if (b.getLabel() == "Red")
{
showStatus ("Red!");
float[] val = new float[3];
val[0] = 0.8f;
val[1] = 0.2f;
val[2] = 0.2f;
diffuseColor.setValue(val);
}
else if (b.getLabel() == "Green")
{
showStatus("Green!");
float[] val = new float[3];
val[0] = 0.2f;
val[1] = 0.8f;
val[2] = 0.2f;
diffuseColor.setValue(val);
}
else if (b.getLabel() == "Blue")
{
showStatus("Blue!");
float[] val = new float[3];
val[0] = 0.2f;
val[1] = 0.2f;
val[2] = 0.8f;
diffuseColor.setValue(val);
}
}
return true;
}
}
Une copie de ce fichier est disponible ici sous forme *.java et
ici sous forme compilée.
SET CLASSPATH=C:\Program Files\Java\classes\vrml;%CLASSPATH%
SET CLASSPATH=.;%CLASSPATH%
SET CLASSPATH==c:\Classes Netscape;%classpath%
SET CLASSPATH==c:\Classes Netscape;%classpath%
Faites cependant attention car la première méthode nécéssite de redémarrer la machine et la seconde méthode ne reste valable que pour la boite MS-DOS ouverte (vous pouvez vous en rendre compte en ouvrant une autre boite MS-DOS et en tapant la commande "set", qui affiche la valeur de votre variable "Classpath").
javac RGBTest.java
Après une seconde d'attente, l'ordinateur devrait vous rendre la main sans rien avoir affiché. Dans le cas contraire, il y a probablement eu une erreur. Verifiez alors :
(retour à Tutoriel JAVA-VRML)
S.M.M.