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: | |
| 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). |
|
|
|
| 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 : | |
|
|
| 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. | |
![]() |
|