Ce tutorial est basé sur celui écrit par Hideya Kawahara.

Finalité: Démontrer les premières étapes de la création d'une application 3D avec les librairies de lg3d
Pré-requis: Pour accomplir ce tutorial, vous avez besoin d'avoir installé avec succès lg3d (si possible une version stable). Vous pouvez suivre celui-ci : " Comment installer Looking Glass" . Vous n'aurez pas besoin de pouvoir exécuter lg3d-session, lg3d-dev suffit (lg3d dans une fenêtre) !
De plus, il faut le kit de développement Java 1.5, téléchargeable sur le java destinés aux programmeurs.
Etapes:
  1. Créer un conteneur racine
  2. Créer un object Box
  3. Mettre l'objet Box dans le conteneur
  4. Initialiser le conteneur
  5. Compiler
  6. Définir l'environnement de test
  7. Exécuter l'application
Etape 1: Créer un conteneur racine
Premièrement, nous avons besoin d'un conteneur racine pour cette application 3D. La classe Frame3D est utilisé à cette fin. Nous pouvons hériter de Frame3D, ou simplement en créer un et lui adjoindre des composants avec la méthode addChild(Node child), que nous utiliserons plus tard.
    Frame3D frame3d = new Frame3D();
Etape 2: Créer un object Box
Maintenant, exerçons nous sur un object Box de 5cm x 4cm x 3cm au centre de l'écran. Des formes prédéfinies sont disponibles sous org.jdekstop.lg3d.utils.shape.
Continuons, ... de quel couleur allons nous la peindre ? Essayons un vert pale pour cet exemple. Pour cela, nous devons créer un objet qui preine en compte la couleur de l'objet Box. Les librairies fournissent également une classe pour spécifier la couleur, qui s'appelle SimpleAppearance. Additionally you can specify the object's color in a more detailed manner, including shininess and what color it shines, translucency and textures applied to it. You can find out more by looking at the API documentation for Appearance, Material and Texture.
    SimpleAppearance app = new SimpleAppearance(0.6f, 0.8f, 0.6f);
Maintenant que nous avons une aparence par défaut, nous pouvons créer l'object box de 5cm x 4cm x 3cm.
    Box box = new Box(0.05f, 0.04f, 0.03f, Primitive.GENERATE_NORMALS | Primitive.GEOMETRY_NOT_SHARED, app);
Les librairies 3D du projet LookingGlass sont basées sur Java 3D. In Java 3D, by default, the metric system is used, where one (1) unit equals one meter. And if configured correctly, by drawing an object of size 0.02 units turns into an object approximately 2cm in size on the screen.
Retenez que la configuration par défaut de lg3d est pour une vue en perspective, ainsi la surface d'affichage dépend du zoom appliqué, si il est proche, ou éloigné de l'utilisateur ! Par défaut, le moteur 3d de lg3d positionnera l'objet à une position résonable, où la taille est proche de celle spécifiée.
Par défaut, les objets avec les mêmes paramètres partagent leur géométrie (par exemple : vous pouvez avoir 50 cubes dans votre instance lg3d, mais la géométrie est enregistrée seulement une fois). Un changement sur un de ces objets affectera également les autres. On dit ainsi que les informations de positionnement sont partagées, et dès qu'un objet est créé, les propriétés ne peuvent plus être définies. Ainsi, pour permettre plusieurs instances d'une application, nous devons utiliser la constante Primitive.GEOMETRY_NOT_SHARED. Si le constructeur surcharge les paramètres par défaut, nous devons inclure la constante Primitive.GENERATE_NORMALS, ainsi la couleur est correctement affichée.
Etape 3: Mettre l'objet Box dans le conteneur
Pour affiche l'objet box sur l'écran, nous devons l'ajouter au conteneur. L'objet box ne peut pas être ajouté directement au conteneur Frame3D, seulement un Component3D peut être ajouté au Frame3D (cette fonctionnalité est héritée de Container3D). Component3D est le composant de base pour les composants lg3d. Un composant peut avoir de multiples objets Shape3D pour définir la forme (remarquez que la classe Box hérite de Shape3D), et un Frame3D peut contenir plusieurs Component3D (incluant des Container3D imbriqués).
Ainsi, nous devons créer un objet de type Component3D.
    Component3D comp = new Component3D();
Ensuite, ajoutons l'objet box à notre Component3D.
    comp.addChild(box);
Maintenant, l'objet comp, de type Component3D, peut être ajouté à la racine du conteneur racine.
    frame3d.addChild(comp);
Etape 4: Initialiser le conteneur
Maintenant que l'objet box a été ajouté à la fenêtre, le conteneur a besoin d'être initialisé, pour les définir des propriétés, et finalement, rendre l'objet box visible.
Premièrement, un appel a besoin d'être écrit, pour initialiser les propriétés de notre objet frame3d, de type Frame3D. Cette fonction rend les objets de frame3d sélectionnables. Si le curseur ne passe pas au dessus de votre objet, vérifiez si vous avez appelé cette fonction (après ajouter du Component3D à frame3d).
    frame3d.setCapabilities();
Pour aider le SceneManager (moteur 3D) (ou pour au moins le moteur 3D par défaut - GlassySceneManager) il est utile de définir la taille conseillée pour l'objet Frame3D. C'est utilisé par le moteur 3D pour placer l'application correctement dans une zone d'affichage.
    frame3d.setSize(0.05f, 0.04f, 0.03f);
Pour rentre notre objet frame3d visible, il faut appeler la méthode setActive(). Cela permet de l'ajouter au moteur 3D, dans une sous-partie que l'on appel "scenegraph". Pour information, cet appel initialise l'intéraction avec le moteur 3D, ainsi il supportera la représentation de l'application (position, taille, ...).
    frame3d.setActive(true);
Ensuite, même si frame3d est actif, il doit également être visible. On remarquera que setVisible() est une opération très légère, comparé à setActive() que nous avons appelé précédemment.
    frame3d.setVisible(true);
Etape 5: Compiler
Nous avons fini d'écrire notre code. La version complète inclue les imports, les constructeurs, etc ... Téléchargez la source : Tutorial1.java.
Nous devons maintenant la compiler. Elle a besoin de la librairie lg3d-core et de Java 1.5 pour se compiler. La librairie lg3d-core peut être trouvée sous le répertoire lib de la distribution de lg3d (remplacez $LG3DHOME avec le chemin de lg3d).
    javac -cp "$LG3DHOME/lib/ext/lg3d-core.jar" Tutorial1.java
Etape 6: Définir l'environnement de test
Pour exécuter l'application, l'environnement lg3d doit être défini correctement pour s'assurer que tout se passe bien. Pour faciliter ce processus, un script shell est disponible. Une fois cela fini, vous pourrez exécuter votre application. Téléchargez runtutorial et suivez les étapes suivantes :
  1. Mettez le fichier runtutorial dans le même répertoire que vos classes java.
  2. Rendez le fichier exécutable
      chmod u+x runtutorial
  3. Modifiez runtutorial avec votre éditeur de texte favoris et changez le de cette façon :
    1. Définissez le chemin d'exécution sur la première ligne, si ce n'est pas correct, avec les caractères #! (cela définits quel logiciel exécutera le script). Pour trouvez le bon chemin, tapez:
        which bash
    2. Définissez le paramètre LG3DHOME vers le répertoire de racine de lg3d
Etape 7: Exécuter l'application
Pour lancez le tutorial, exécutez le script runtutorial avec le nom de la classe (sans l'extension .class)
    ./runtutorial Tutorial1
Le bureau de lg3d devrai être affiché avec une boite vert clair, au centre (comme vous le voyez en dessous). Actuellement, seul un carré vert peut être vu - dans le prochain tutorial la boite va tourner sur elle même, pour avoir l'aparence d'une boite.
Le boite vert clair du Tutorial1