Philippe COVAL
Mars 1999 / Septembre 2000

REALITE VIRTUELLE &
UTILISATIONS DE LA 3D SUR INTERNET


http://rzr.online.fr/net3d.htm

(Réalité Virtuelle et Utilisations de la 3D sur Internet)

REALITE VIRTUELLE &
UTILISATIONS DE LA 3D SUR INTERNET

THÈME :

Conception et réalisation d'un système infographique d'animation en temps réel qui utilise le réseau internet pour simuler des scènes de la vie sous la forme de monde virtuel.

Ce stage fait appel aux compétences du stagiaire dans le domaine de l'ingénierie des images numériques et doit nous permettre de valider et de mettre en place un site internet utilisant les algorithmes de mendel ou un métalangage VRML dynamique.

NOTES :

L'auteur de ce document est Philippe COVAL, il peut être joint par Internet : http://rzr.online.fr/contact.htm & http://rzr.online.fr .

Ce rapport de stage de DESS est disponible sur Internet à : http://rzr.online.fr/net3d.htm en 2 versions :

Il est important de situer cette étude dans le temps à l'été 2000 car les technologies et techniques étudiées sont presque toutes condamnées à devenir (plus ou moins vite) obsolètes.

Cependant je vous invite à consulter ce document online, car j'ai l'intention de le mettre à jour selon mes possibilités.

CONTEXTE : STAGE DE FIN D'ETUDE (DESS I2N)

Entreprise : TRANSICIEL Sud-Ouest
http://www.transiciel.com
TRANSICIEL Sud-Ouest (ex-DIAF) Av NORMANDIE NIEMENS BP117 31701 BLAGNAC
Secteur d'activité : Sociéte de Service Informatique
Responsable : Pascal DIOGO - pdiogo@transiciel.com -
( Ligne directe : 05.61.30.60.27 - Portable: 06.10.60.85.85 )
Responsable ressources humaines : Pierre JAUZE - pjauze@transiciel.com
Standard : 05.61.30.60.00

Formation : DESS Ingénierie Imagerie Numerique / U.P.S. / IRIT , Toulouse
http://www.irit.fr/ACTIVITES/DESS_IIN/bienvenue.html / http://www.ups-tlse.fr / http://www.irit.fr
UPS, 118 Route de Narbonne 31062 TOULOUSE cedex 4
Tel: 05.61.55.67.65
Responsable : Jean Pierre JESSEL - jessel@irit.fr

(Réalité Virtuelle et Utilisations de la 3D sur Internet)

SOMMAIRE

Etude - Techniques - Démonstrations

PREAMBULE :

PRESENTATION DE L'ENTREPRISE : TRANSICIEL

ETUDE :

CONCEPTION & REALISATIONS :

DEMONSTRATIONS :

CONCLUSIONS :

ANNEXES :

VIRTUAL REALITY ON THE WEB

RESUME

Ce stage traite de l'utilisation de la 3D sur le web, dans un premier temps, l'état de l'art est effectué. Vient ensuite la partie développement qui a consisté à résoudre trois problèmatiques :

Le rapport est composé de 3 parties qui reflètent chronologiquement les 4 mois de stage :

Ces differentes parties peuvent être lues de façon indépendante, mais avec des niveaux différents d'accessibilité.

A l'issue du stage il réside quelques applications illustrant les possibilités de la 3d online :

(Réalité Virtuelle et Utilisations de la 3D sur Internet)

PRESENTATION DE L'ENTREPRISE

Le groupe TRANSICIEL

TRANSICIEL est un groupe fondé en 1990 par Georges COHEN.
Son activité se divise en six branches : A l'échelon national, TRANSICIEL est divisé en trois grandes divisions organisées par métier : Ces divisions sont complétées par une importante implantation locale avec 13 filiales dans les plus grandes villes de province qui sont regroupées dans la structure TRANSICIEL régions.

TRANSICIEL Sud Ouest (ex-DIAF)

Présentation

DIAF groupe TRANSICIEL est un acteur important de la région toulousaine, fournisseur des PME, comme des grands comptes. Elle sait adapter ses prestations au besoin de chacun de ses clients. Créée en 1984, cette société de service a depuis été rattachée au groupe TRANSICIEL courant 1998.

Ce rapprochement lui permet aujourd'hui de proposer à tous ses clients les capacités d'un grand groupe national :

DIAF groupe TRANSICIEL est composée de 230 collaborateurs et offre aujourd'hui une gamme complète de services aussi bien au forfait qu'en assistance technique.

Chiffre d'affaire en MF

Nos trois métiers

Une présence régionale dans tous les secteurs de l'économie

L'agence industrie et service, votre partenaire multimédia

L'organisation en cinq agences dédiées à des comptes ou leaders sur leurs technologies constitue le garant de la qualité de notre service. C'est un de ces pôles (l'agence industrie et services) qui a en charge l'ensemble des développements multimédia que nous réalisons pour nos clients : Composée de 60 personnes dont 10 sont des spécialistes du multimédia, notre organisation technique est tout particulièrement étudiée pour répondre aux exigences des projets que nous réalisons.

Les projets sont gérés par des responsables techniques qui ont en charge :

Un directeur artistique, apporte son savoir-faire et sa créativité dans les missions qui nous sont confiées. Il constitue l'interlocuteur privilégié des clients dans la phase ergonomique et graphique. Il supporte les équipes projet dans leur créativité et assure l'animation de notre cellule multimédia composée de :

CONTEXTE DU STAGE :

TRANSICIEL est une société dynamique. Elle se doit d'être au courant des évolutions dans le domaine de l'informatique.

Ainsi l'étude de "la 3D sur internet" se fait dans un contexte de R&D et veille technologique.

J'ai rapidement intégré l'agence IS, n'ayant pas d'activité majeure dans l'informatique graphique, j'ai pu m'organiser de façon assez souple.

Au cours de mon stage j'ai été amené a utiliser les ressources matérielle suivantes, (dans la mesure du possible des outils libres et gratuits).

Hardware :
PC Pentium II 200Mhz + 64M Ram , sans accéleration 3D matérielle
PC Pentium I 133 Mhz + 48M Ram
OS :
Windows (95, 2K, NT4ws, 98) & Linux (Mdk7.02, debian 2.1)
Softwares & Langages :
  • GNU Xemacs (port win32)
  • JDK 1.2 , jde (mode emacs)
  • API Java : java.awt, vrml.eai, java.rmi, java3D
  • GCC, Cygwin , MS Visual C++ 6.0
  • API C : WTK, openGL, vml, verse
  • Formats: Vrml, XML, 3ds, metastream ...
  • Browser Web : Netscape Navigator 4.6 & 4.73 , Internet Explorer 4 & 5
  • Plugins Web : vrml ...

Historique d'Internet ,du Web et de la 3D online

HISTORIQUE

L'interconnexion des réseaux (Internet) a permis de nombreux types de communication au travers d'applications logicielles client/serveur.

Déjà en 1983 le département de la défense des USA a expérimenté des simulations militaires virtuelles sur réseaux WAN, ainsi est née la Réalité Virtuelle distribuée (environnement virtuel partagé par plusieurs utilisateurs simultanément).

Mais Internet a mis au monde un média que tout le monde connaît : le World Wide Web et cette étude se limitera à ce support, les clients spécifiques seront volontairement mis de coté.

Le Web était à la base assez statique (html + images fixes), un pas a été franchi avec la sophistication des serveurs (cgi, php, htmld,...)

Les browsers web ayant leurs limites, Netscape a mis en place un mécanisme de plugin permettant d'ajouter des applications (clients) au travers du navigateur.

Après une étude sur un langage multiplateforme Sun microsystems a porté Java sur le web (applets et servlets). Les possibilités de java sont infinies dans de très vastes domaines. Mais ses performances sont critiquables.

Macromedia a adapté un plugin pour l'animation 2D interactive : Shockwave/Flash qui est devenu le standard des animations vectorielles.

En 1994, SGI a proposé un standard adapté au web pour la 3D : VRML . De nombreuses extensions et révisions de VRML ont eu lieu depuis et auront encore lieu. dans le même esprit que HTML , VRML est avant tout un langage de description et donc un format qui limite l'intéractivité

De nombreux standards dérivés de VRML sont apparus, pour diverses utilisations : visualisation scientifique, communautés virtuelles, jeux...

(Réalité Virtuelle et Utilisations de la 3D sur Internet)

UTILISATIONS & EXEMPLES

Communication électronique
Conférences multi-sites, Télétravail, Prototypage/maquetage virtuel, communautés virtuelles, forums, chats
Commerce Electronique
Vitrine virtuelle, showcase, personnalisation des produits
Simulations / Jeux Vidéo
Applications militaires de simulation de combat multiagents multi-sites
Systèmes de caches / gestion de la cohérence, dead recknoking
Retransmission d'évènements en direct
Diffusion d'évènements sportifs en animation 3D (mendel3d)
Démonstrations / Animations :
Galleries, Musées, Reconstructions historiques, Démo explicative d'un (dé) montage.
Moins lourd à gérer que des films
Téléprésence / Téléopération:
Visualisation scientifique, médecine, enseignement , Présentations de résultat (grilles economiques, scientifique...)
Visible humain project : http://www.visualman.com , http://www.nextd.com/V/VRMLChambers2.html

3D ET E-BIZNESS : RENDU SEMI-REALISTE

L'utilisation de la représentation 3D des objets peut être un atout fondamental pour l'e-bizness (boutiques en ligne sur Internet), ceci pour plusieurs raisons la 1ere est que les plus grandes industries l'utilisent.

Pour éviter de faire de la publicité non contractuelle il faut donc privilégier le réalisme, et prendre en compte l'interactivité du client potentiel.

D'un point de vue technique il est plus facile de véhiculer un objet tridimentionnel et de le visualiser que de diffuser une vidéo présentant le produit.
De plus l'impact est plus important car l'utilisateur devient actif et non plus passif.

Grâce à des techniques de simulation d'effets physiques on augmente le degré de réalisme de la scène ; par exemple la prise en compte des refflets, transparence, ombres ... (cf: Techniques 3D)

Pour ce type de besoin on a besoin avant tout de maitenir le temps réel et d'avoir une qualité optimale de réalisme. On parle alors de rendu semi réaliste.

DIFFUSION INTERACTIVE

Retransmission interactive en direct de régate (Mendel3D)
http://www.virtualskipper.com
Showcase Mercedez
http://www.mercedes-benz.com/e/innovation/fmobil/virtual_car.htm
Mercedez a voulu faire une démo de leur prochain modèle, qui n'était pas encore réalisé.
Les intéressés ont pu visiter la voiture de leur rêve dans un monde virtuel.
Cette démo a ensuite été adaptée sur Internet ainsi les clients peuvent ajuster les options de leur futur achat selon leurs goûts (couleur peinture ...).
Du coup les autres constructeurs ont fait de même (Citroén Picasso - CS-SI, ...)
Prototypage Virtuel : Airbus (Divise)
L'Aérospatiale réalise une maquette qui sera affinée au cours du temps, ceci sur plusieurs sites nationaux interconnectés par Internet.
Cette maquette permet de détecter les erreurs de conception, de démarrer une campagne de marketing

(Réalité Virtuelle et Utilisations de la 3D sur Internet)

SOLUTIONS EXISTANTES

Plusieurs produits permettent de faire passer de la 3D par le Web. L'enjeu économique a fait que ces produits sont plus ou moins ouverts

A ce jour, j'ai mis en place une classification des solutions permettant de faire de la 3D sur Internet :

  1. Les clients spécifiques
    Ceux ci ne seront que brièvement traités car ils ne constituent pas l'objet de l'étude

  2. L'incrustation dans browsers Web :
    1. Les plug'ins pour les Navigateurs Web
      1. Les navigateurs VRML et leurs extensions Java
      2. Les navigateurs propriétaires offrant des atouts à vrml
    2. Les applets Java
      1. Java 1.1 : L'utilisation de la JVM du browser
      2. Java 1.2 : Java plugin
    3. Les Solutions hybrides
      1. L'utilisation de plugin 2D et d'une extension 3D (un plugin dans un plug in dans un browser)

Le langage vrml et son extension EAI

LE STANDARD VRML + EXTENSIONS

Ce format a été à l'initiative de plusieurs industriels dont SGI.
Puis il est devenu standardisé et ouvert. Il y a eu jusqu'à ce jour 2 versions du standard, mais aussi différents projets d'extensions à VRML (dont l'EAI ).

Historique de VRML

VRML est réellement né à Genève au printemps 1994, à l'occasion de la première conférence mondiale sur le World Wide Web. Il est le produit d'un groupe de réflexion dirigé par Berners-Lee. Le projet a vraiment été lancé quelques mois auparavant par Mark Pesce et Toni Parisi. Ceux-ci avaient en effet déjà développé un "prototype" (Labyrinth) , puis décidèrent de prendre contact avec Berners-Lee afin de valoriser leurs travaux.
Le but est de développer les spécifications de VRML, qui sera un langage indépendant des plates-formes en liaison avec le World Wide Web, destiné à décrire les scènes 3D, et utilisable dans les browsers (visualiseurs), les logiciels de création et autres outils, autorisant ainsi la réalité virtuelle sur le Web.
Devant le potentiel succès de VRML, Mark Pesce se chargea d'organiser ce développement collectif, afin de concrétiser le projet dans les plus courts délais.
Enfin en 1995, la norme VRML 1.0 voit le jour, ainsi les développeurs ont put commencer à créer des mondes 3D statiques.
Trés vite le besoin de dynamisme s'est fait sentir, certains plugin ont géré des noeuds d'animation. Mais deux ans aprés en 1997, la deuxieme version majeure (la compatibilité déscendante n'est plus assurée) de VRML apparait sous le nom de VRML97 ou VRML2. Parmis les nombreuses amélioration on citera :

Esprit de VRML

VRML est avant tout un langage de description et non un programme, (VRML est à la scène 3D ce que HTML est au document texte)

Qui dit format dit interpréteur, en effet le script VRML doit être parsé pour afficher une scène 3D (une vue 2D de la scène) il faut donc un Navigateur VRML.

Dans un soucis d'uniformisation les navigateurs VRML sont intégrés dans les navigateurs Web sous forme de Plug'ins : Programmes externes ayant l'interface dans un programme hôte.

La description géométrique de la scène est stockée sous forme de structure arborescente (graphe acyclique direct).
Propagation des propriétés (i.e. : Une translation d'un groupe Table entraîne la propagation des 4 pieds)

VRML97 a quelques primitives intéressantes permettant de gérer les animations et gestion d'événements utilisateur / comportement des objets a l'aide de scripts.

Mais ce format et les plug'ins ont des limitations :
Par exemple , on ne peut avoir une session de communication entre un client et un serveur.

Exemple de source VRML

#VRML V2.0 utf8

DEF Camera Viewpoint {   
   orientation 0 1 0 1
   position   5 0 2
}

DEF _TR Transform {
   translation 0 10 0
   rotation 1 0 1 .6
   children  Shape {
       geometry Box { }
       appearance Appearance {
	  texture ImageTexture {  
            url  "http://www.jwz.org/webcollage/collage.jpg" 
          }
       }
    }
}

Extensions de VRML

DIS-Java-VRML Working Group
IEEE DIS : Distributed Interactive Simulation
Infrastructure pour Réalité virtuelle distribuée
But du projet : Implantation du protocole DIS en Java & VRML
Web3D Consorsium / Distribution GPL
X3D
Unification de VRML & XML : http://www.web3d.org/TaskGroups/x3d/index.html
EAI : External Authoring Interface
Dialogue entre le browser vrml et un programe externe

EAI : External Authoring Interface

L'interface permet le controle du plugin VRML, à l'aide d'un langage externe à VRML, soit en java (applet) ou un simple script (javascript).

Ce contrôle permet entre autre :

Dans un premier temps, il faut accéder à l'objet Browser. Ensuite on crée un évement. Et par cet évenement on modifie les primitives et propriétés.

Source Java : Exemple EAI

import vrml.external.*;
import vrml.external.field.*;

/**
 * Exemple d'acces a un noeud VRML par l'EAI
 **/
// Reference le navigateur VRML
Browser _browser = (Browser) Browser.getBrowser(this);
// Reference le noeud Vrml nomé par la directive  vrml DEF/USE
Node n = (Node) _browser.getNode("_anynodename");

// Evenement 
EventInSFVec3f _v3f_trans = null;
_v3f_trans=(EventInSFVec3f) n.getEventIn("set_translation");

float[] v3f_values = {0f , 0f , 0f } ;

// affecte la composante "translation" du noeud vrml "Transform"
for (i=0;i<9;i++) {
  v3f_values[0]=i; 
  _v3f_trans.setValue(v3f_values);
}

RESSOURCES VRML

Specs
Repository : http://www.web3d.org/vrml/vrml.htm
Faq (comp.lang.vrml) : http://home.hiwaay.net/~crispen/vrmlworks/faq/index.html
EAI : External Authoring Interface
Specs : http://www.vrml.org/WorkingGroups/vrml-eai/ExternalInterface.html
Faq : http://www.frontiernet.net/~imaging/eaifaq.html
Exemples : http://tecfa.unige.ch/guides/vrml/examples/eai/navigate/navigate-dyn.html
http://www.cai.com/cosmo/html/faq.htm#java
http://eureka.lucia.it/vrml/tutorial/eai/sgi/index.html
Browsers VRML :
Blaxxun Contact (Win32) : http://www.blaxxun.com
Cosmoplayer (obsolete, Win32, Irix) : http://www.cosmosoftware.com , http://www.sgi.com/software/cosmo/player.html
VRWare (Unix : SGI, Sun Solaris, DecAlpha, HPUX, Linux/ELF ) http://www.iicm.edu/vrwave
WorldView - Intervista (obsolete, ie, win32) : http://www.platinium.com
Cortona - ParallelGraphics : (Win32) http://www.parallelgraphics.com/products/cortona
Live3D - Netscape (obsolete) : http://home.netscape.com/eng/live3d/live3d_overview.html
FreeWRL (Linux) : http://www.crc.ca/FreeWRL/
libVRML97 (Linux, EAI non fiable)
Dimension X - Liquid Réality (obsolete, ie)
Editeurs VRML
Cosmoworld - SGI
3DS Max - Kinetix : http://www.ktx.com/
Internet 3D Space Builder - Paragraph http://www.paragraph.com/
VRealm Builder - IDS http://www.ids-net.com/
Webgraphics Suite - Corel http://www.corel.com/
3D Website builder - Virtus http://www.virtus.com/

Plugin 3d pour browser Web

PLUGINS 3D POUR LE WEB

Tout comme le plugin vrml, les plugins sont des applications qui s'insérent dans le browser web pour étandre les fonctionalités de ce dernier.
Le plus souvant ils sont programés en code natif ce qui les rends performants mais non portables.

Les besoins etant plus que croissants de nombreuses firmes n'on pas attendu l'évolution de VRML et on développer leur propres solutions.

METASTREAM
http://www.metastream.com
Rendu "photoréalistique" destiné au commerce électronique.


MENDEL3D / Duran Dubois :
http://www.mendel3d.com
1999, la firme française Duran/Dubois réputée pour ses effets spéciaux au cinéma (Alien4 ...) entre dans le monde online et propose la technologie Mendel3D et son plugin Mendelbox.

Les atouts de mendel3D :

CULT3D / Cycore Computers :

PULSE 3D

HYPERCOSM3D PLAYER / Hypercosm, Inc.

RENDU 3D DANS APPLETS JAVA

Les browsers web proposent une interface au langage java ainsi l'affichage d'une zone de la page html est à la charge de l'applet (mini application) et non du browser.

L'utilisation d'applet permet d'incruster de véritables applications dans une page web, les applets ont beaucoup été utilisés pour faire des petites présentations multimédia qui donnent de l'effet aux homepages.
Mais java étant un puissant langage de programmation, de nombreuses bibliothèques ont été réalisées ainsi (jdbc, java.wallet) ainsi les utilisations d'applets sont devenues plus poussées.

APPLETS Java 1.0 / 1.1

Gràce au package (java.awt.*), un applet est une zone graphique, on peut donc y tracer des polygones et donc effectuer un rendu 3d.
View3D
Library free permettant de visualiser des objets 3D avec une configuration classique (jvm de IE) http://visualbeans.com/View3D/
GL4Java & Joglh
Passe par JNI ou Direct3D http://www.jausoft.com/gl4javaw , Package java implementant les spécifications OpenGL http://www.pajato.com/jogl
Anfy3d
Moteur de rendu 3d, differents formats supportés (vrml, 3dsmax) , livré avec éditeur.
100 % Sofware (java 1.1) sans plugins, ne requiet pas de configuration préalable. Pas d'accélération matérielle. http://anfyteam.com/panfy3d.html
Shout3d
Package commercial proposant un ensemble de classes java pour le rendu 3D avec de nombreux effets Textures, Morphing, Navigation Interactive, Gestion du son, Transparance, Modeles hierachiques ... http://www.shout3d.com

JAVA 3D (sous Java 1.2,+)

Parmi les API java disponibles Sun a proposé une bibliothèque 3D de haut niveau.
Cet ensemble de classes est destiné au tracé d'objets tridimentionnel dans des applications ou applets.
Des méthodes de compression de géométrie sont également fournies .
Java.3d s'interface entre la machine virtuelle java et la machine OpenGL (soit hardware, soit software). Ainsi le tracé 3D n'est pas ralenti.

Le probleme majeur et que son intégration dans les browsers web est loin d'etre simple. En effet la seule solution est que l'utilisateur soit extrement comprehensif et patient pour effectuer la demarche suivante :

  1. Télécharger et Installer le JDK (20M)
  2. Télécharger et Installer la bibliotheque Java3D (1.8M)
  3. Télécharger et Installer Java Plugin (12.2M)
  4. Copier manuellement les fichiers de c:\jdk1.2.2\jre\lib\ext
    vers c:\jdk1.2.2\jre\lib & c:\programfiles\javasoft\jre\1.2\lib
  5. Réinstaller Java3D
  6. Modifier l'Environement :
    REM AUTOEXEC.BAT file 
    set PATH c:\jdk1.2.2\bin
    set CLASSPATH=.;c:\jdk1.2.2\lib\classes.zip
    
http://java.sun.com/products/java-media/3D/

Applet Java 1.2 avec JAVA Plug'in

Ce mécanisme aurait tendance à (enfin) instaurer une certaine stabilité et à abolir les restrictions actuelles des applets Java.
Car jusqu'alors JAVA avait la réputation d'être instable, de plus chaque browser web a son propre interpréteur java (JVM) ce qui n'arrangait pas les problèmes de compatibilité, version ...
Dorénavant la Machine Virtuelle Java n'est plus propre au browser web mais directement au système d'exploitation. De plus de nouveaux packages peuvent être mis à jour par le réseau (Intranet par exemple). http://192.9.48.9/products/plugin/1.1.3/demos/applets.html , http://www.javasoft.com/products/plugin

CODE NATIF

Java propose plusieurs solutions pour collaborer avec du code natif (compilé pour l'OS hôte).
Les solutions sont :

Par exemple pour le tutorial JPot, les programmes sont écrits en C, ils utilisent la lib OpenGL, et communiquent avec l'interface par communication messages/signaux.

Cette technique est extremement interessante mais beaucoup plus pour les applications que les applets. Donc si la solution est techniquement possible, les problèmes de sécurité et de compatibilité sont à traiter et ce n'est pas une mince affaire.

Performances liées a Java

Java a la réputation d'être trop lent, mais de nombreux exemples prouvent le contraire.
Il ne faut pas oublier que "La solidité d'une chaine est celle de son plus faible maillon", c'est a dire que si l'application utilise de la bande passante, le debit du réseau fixera la rapidité perçue par l'utilisateur.
En effet les performances actuelles des ordinateurs alliées à l'efficacité des algorithmes, me permettent de croire que les applets java peuvent etre adaptées à nos besoins.

On peut toujours utiliser les optimisations suivantes :

Conclusion

On peux donc discerner 2 possiblilités : Malheuresement, il n'existe pas (encore) de solution viable pour utiliser Java3D en applet... en Intranet cela serait possible.
La meilleure solution actuelle est donc l'applet java 1.1 où le tracé graphique se fait par le package java.awt de dessin 2D.

Si on cherche à optimiser les calculs le résultat est plus que satisfaisant pour beaucoup d'utilisations.

Ressources Java

Java :
Faqs : http://www-net.com/java/faq/ , http://www.faqs.org/faqs/computer-lang/java/programmers/faq/
Java3D :
Sun : http://java.sun.com/products/java-media/3D/
Faq : http://www.javasoft.com/products/java-media/3D/forDevelopers/java3dfaq.html
Utilisations de Java3D : http://www.ncsa.uiuc.edu/~srp/Java3D/
Tutorial : http://www.j3d.org
Loaders : http://www.billday.com/Java3DArchive/index.html
Démos : http://www.stud.uni-hamburg.de/users/peter/java/battle/index.html
Misc: http://www.gamasutra.com/features/programming/19990115/java3d_01.htm
Applets 3D : http://www.jars.com/classes/jresout.cgi?category=Multimedia+-+3D+Graphics&language=Java&rating=All
Misc: Java + OpenInventor :
http://www.igd.fhg.de/CP/kahlua/

3D avec flash et autre solutions hybrides

SOLUTIONS HYBRIDES

Animation VECTORIELLE : Flash + extensions 3D

Suite au besoin d'animations sur le web, une solution s'est imposée : Macromédia Flash (similaire a Director mais optimisé pour le web). Ce plug'in permet l'utilisation d'animation vectorielle.
Une image vectorielle est avant tout des points qui seront connectés en polygones et finalement affichés dans une zone de l'écran à l'inverse d'une image bitmap qui n'est ni plus ni moins que la matrice affichée.
Ainsi l'animation vectorielle se résume à des opérations élémentaires telles que la translation, la rotation, le changement d'échelle et le morphing et non une succession d'images.
Mais l'atout majeur est l'interactivité : suivant les actions que l'on va provoquées, par exemple un déplacement d'une image sur l'écran ou l'émission d'un son lorsque le pointeur de la souris arrive sur une image.
Ceci permet de créer des animations de bonne qualité et de faible taille. A titre de comparaison un énorme GIF de 600Ko en 100 couleurs devient un film Shockwave Flash de 7Ko !

La popularité de Macromedia Flash n'a cessé de croître et devient un standard du multimédia sur le web.
Ce logiciel supporte le streaming et de nombreuses autres fonctionnalités dont les extensions 3D.

Parmi celles-ci on pourra citer Shells Interactive / 3D dreams ( http://www.doitin3d.com ) qui clame "Enfin, une solution stable et un outil de production pour créer et diffuser des données 3D sur Internet".

Clients Spécifiques

DIVE
Développé au SICS, depuis le début des années 1990. Dive est une plateforme expérimenatalle pour les environnements intéractifs multi-utilisateurs. http://www.sics.se/dive/dive.html

ACTIVEWORLD
Plus dédié aux communautés virtuelles multi-agents http://www.activeworld.com
ID SOFTWARE : La Saga de Doom à Quake Aréna
Les pionners des jeux en 3D (1994 Wolfenstein 3D) sont devenus un incontournable pilier des jeux vidéo en 3D sur Internet.

(Réalité Virtuelle et Utilisations de la 3D sur Internet)

CONCEPT & REALISATION

En vue d'un travail "en équipe", l'intérêt sera placé sur : Plusieurs axes de développement se présentent :
  1. Plugin pour browser WEB (Langage natif c/c++) Par exemple : port de la VML

  2. Choisir un format existant et développer autour de ce format et éventuellement une extension.
    Par exemple : béta test de Mendel 3D / virtual studio courant Mars 2000, finalement reporté

  3. Coder une application client/serveur reposant sur l' interface EAI des browsers VRML.
    On utilise le plugin VRML seulement pour le rendu, l'intéractivité est gérée dans l'applet java,
    Par exemple application client serveur en Java (applet/servlet).

  4. Programmer un Applet Java (partir de rien et réinventer la roue)
    On peut utiliser Java3d comme bibliothèque de rendu3D, et voir les mécanismes à gérer pour la compatibilité entre les différentes configurations ou développer un applet 100% Java 1.1 sans la bibliothèque de sun.
    Coder , un moteur de rendu 3D basique, et l'optimiser pour le faire évoluer en ajoutant des fonctionnalités d'interactivité et d'animation
Pour des raisons de politiques industrielles, utiliser des solutions commerciales ou gratuites ne sont pas envisageables.
Donc partir de rien pour créer une solution fiable dans le temps imparti est techniquement IMPOSSIBLE.
De plus si l'objectif est atteint à 10% ceci n'apporte rien aux solutions existantes standards et libres (vrml...)
J'ai donc décidé d'étudier et d'expérimenter les 4 solutions et de me focaliser sur la dernière.

Moteur 3d : Algo de ZSorting, Zbuffers ...

MOTEUR DE RENDU 3D

Concevoir un Moteur de Rendu 3D, implique certains choix.

FORMATS DE DONNEES

Les structures de données normalisées permettent de ne pas réinventer la roue et de profiter de leur notoriété.
Dans un premier temps on se contentera d'une simple description geométrique d'un seul objet.

Description géométrique :
Il existe plusieurs formats de données 3D : .dxf , .3ds , .obj , .lwo ...
Leurs grammaires sont toujours différentes mais ils contiennent tous la même chose : Vertex, Arêtes, Facettes, Textures
Pour des raisons de simplicité j'ai opté pour le format 3D Studio (ascii). Mon parser 3DS (.asc) prend en compte les coordonnées des vertex, les facettes et également une modeste gestion des materiaux (couleur des faces).
Les fichiers ascii ont l'avantage d'etre facile à traiter, pour rendre l'utilisation possible on les compressera par des algo standards de compression sans pertes (haufman, lzw ...).
Graphe de scène :
Ensuite on pourra faire une gestion de scene par un arbre de type VRML.
VRML est un Langage de description de scènes 3D sous forme de structure arborescente (graphe acyclique direct)
Propagation des propriétés (i.e. : Une translation d’un groupe Table entraîne la propagation des 4 pieds)


Textures :
Les images sont généralement compréssées selon différentes méthodes plus ou moins efficaces (TCD, ondelettes, Lurawave de Luratech , ...).
Elle peuvent contenir un channel Alpha (transparence) .
On utilise aussi des textures 3D.

VISUALISATION

2 solutions sont possibles :
Pour des raisons de politiques industrielles, utiliser des solutions commerciales ou gratuites ne sont pas envisageables.
Si l'on désire faire un rendu 3D sans utiliser des bibliothèques on doit réimplenter tout le systeme de perspective.

Pour une visualisation rapide on utilisera les algorithmes les plus rapides

Ce qui fait l'objet du chapitre suivant

Moteur de rendu 3D : Projection, Remplissage de polygones, Zbuffer ..

TECHNIQUES 3D

Le problème de représentation d'un espace dans un plan ne date pas de l'arrivée des écrans, au fil de l'histoire, des egyptiens à certains peintres de la renaissance plusieurs techniques ont été mises au point.

Il existe plusieurs types de projections (parallele, isométrique, dimétroique, trimétrique, perspective).

La projection parallèle conserve la forme et les proportions. La perspective ne conserve plus la forme mais la déforme tel que l'humain projette l'espace en un point (l'oeuil). Les objets ont donc un effet de racourci et aussi un (ou plusieurs) point de fuite.

Généralement dans un rendu 3D temps-réel on utilise la projection perspective.

Evidemment, la technique la plus rapide (et aussi la plus simple) est la projection parallele que j'ai choisie d'implementer.

PROJECTION

On effectue les calculs de projection par matrices de transformation.
Les rotations sont réalisées en partie grace aux opérations trigonométriques (sin & cos) , ce qui en terme de rapidité a un coût (plus de 20 cycles). Donc on peut y remédier en précalculant une table de sinus et cosinus pour un angle de 0 à 360 degrés avec une résolution appropriée.

ELIMINATION DES PARTIES CACHEES

L'élimination des parties cachées est un problème à plusieurs solutions :
Algo Z-Sorting (algo du peintre) :
- pour chaque facette de la geometrie
   - calculer le centre de gravité
- trier les facettes par rapport à la composante z du centre
- pour chaque facette de la plus lointaine à la plus proche
   - tracer la facette
L'opération consiste à trier les facettes de la plus lointaine à la plus proche de la caméra et ensuite de les dessiner une à une, ainsi les facettes lointaines sont recouvertes par les proches.
On travaille donc dans l'espace Objet puis dans l'espace Image.
Cette technique naïve provoque des incohérences dans le cas d'intersections de facettes. De plus l'opération de tri (même algos rapides) est fastidieuse et le temps de calcul croît avec le carré du nombre de facettes.

Cf: [Robert-1963] , [Appel-1967] , [Loutrel-1967] , [Galimberti/Montanari-1969]

Algo Zbuffer :
- pour chaque facette de la géométrie
   - calculer le triangle projeté
      - pour chaque pixel du triangle : screen[x][y]
          - calculer le point correspondant dans l'espace 3D
             - si le point.Z > zbuffer[x][y] {
                  zbuffer[x][y] = point.Z
                  dessinne le pixel de la couleur de la facette
                    
Une autre approche est de faire le chemin inverse du pixel au point 3D. On travaille donc dans l'espace Image puis dans l'espace Objet.
Ainsi on discrétise le traitement, et on obtient rapidement des surfaces colorées et nuancées à l'écran.

Cf: [Rommey-1967] , [Warnock-1968] , [Bouknight-1969] , [Watkins-1970] , [Atherton-1983]

Mon implantation actuelle du Zbuffer fournit des résultats relativement satisfaisants, mais il faut faire attention aux problèmes d'approximation lorsque les facettes deviennent minuscules.

Algos Hybrides :
Ceux-ci consistent à travailler séquentiellement dans les deux espaces, ainsi on optimise la 2eme passe qui parcourt les facettes dans l'ordre optimal
Cf: [Schumacker-1969] , [Newell-1972] (Algorithme du peintre)
Algo S-buffer :
Approximation du Zbuffer, le traitement se fait ligne par ligne et non plus pixel par pixel, l'accélération est considérable.
Algo BSP Tree :
Le BSPtree (Binary space Partitioning tree) est une bonne technique mais son implémentation est beaucoup plus rude. L'idée est de décomposer les facettes et leur intersection dans un arbre binaire.

SURFACE

Différentes techniques de rendu 3D permettent d'augmenter le réalisme, ceci en donnant un aspect aux facettes.

Remplissage de Triangles
L'algorithme optimal et de décomposer un triangle en deux triangles : suppérieur et inférieur et de balayer ligne par ligne (calculer les coefficients directeurs des droites limites)
Notes java : cependant cet algorithme est moins performant que l'utilisation de la classe Polygon de java.awt : En effet, les classes java.awt.* sont natives c'est à dire qu'elles sont executées par l'OS et non la JVM.
Lissage de Gouraud :
Calcul de la couleur aux arrêtes puis interpolation.
Lissage de Phong :
interpolation des normales
Textures Procédurales :
Les surfaces des matériaux sont définies en 3D, soit par Le résultat est plus réaliste car la projection d'un plan sur une facette engendre des défauts (déformations).
Bumpmapping :
Technique avancée permettant de créer un effet de relief aux surfaces parfaitement planes (rugosité d'un crépis ...). Ceci en perturbant la normale au point (pour le modèle d'illumination).
Environement Mapping
Reflexion map

RESSOURCES

Cours :
Cours & Exemples : http://www.hornet.org/code/3d
Tutorial : http://3dica.foxfiber.net , http://www.geocities.com/SiliconValley/Park/9784/tut.html
Demo-makers :
http://www.demoscene.org , http://www.ojuice.net , http://www.cfxweb.net/pages/Articles/Java/
Misc :
NVidia : http://www.nvidia.com/Marketing/Developer/DevRel.nsf/WhitepapersFrame?OpenPage

ENVIRONNEMENTS DISTRIBUES & COMMUNICATIONS DANS LES RESEAUX

ENVIRONNEMENTS DISTRIBUES
& COMMUNICATIONS DANS LES RESEAUX

La situation étant la suivante : Ainsi nous avons désormais en main tous les outils pour créer des mondes virtuels sur le web.

PROTOCOLES & CONSORT

API bas niveaux :
API-Sockets (TCP/UDP)
Transfert de données normalisé :
HTTP (flux encapsulé par cgi, java servlets), Irc, Muds ...
Protocole haut niveau :
RMI (Java) , IIOP (CORBA) , COM/DCOM (Microsoft) ...
On choisira un protocole haut niveau supporté par les clients web. Pour des raisons de simplicité de mise en oeuvre, j'ai opté pour Java RMI.

RMI : Remote Method Invocation

Usage
RMI est un protocole client/serveur propre au langage java.
Ce package permet de faire dialoguer des objets java par Internet.
RMI est un peu occulté par le boom Corba, il n'empêche qu'il a quelques différences :

RMI repose sur l'API Sockets (IP), le port par défaut est 1099, ceci peut poser problème lorsque le client se connecte derrière un firewall ne laissant passer que le port http (80). Une alternative permet de contourner le problème : l' encapsulation sur http par l'interface CGI (méthode POST), pour cela il faut installer le programme java-rmi.cgi qui fait le pont entre le serveur httpd et le serveur RMI .

Source Java RMI

/**
 * Serveur RMI
 **/
// [...]
// Gestionnaire de securité du serveur
System.setSecurityManager( new RMISecurityManager() );

//Service de nommage
Registry r=null;
// port par défaut du "socket rmi" : 1099
r = LocateRegistry.createRegistry(1099); 

MonObjetDis oserv = new MonObjetDis();
r.rebind("objetd_0",oserv);
//l'objet est donc accessible par les clients
// [...]


/**
 * Client RMI
 **/
// [...]
MonObjetDisI o ;
// Connecte l'instance de l'objet distribué
o = (MonObjetDisI) Naming.lookup("rmi://localhost/objetd_0";
// o.modify(); 
// [...] 

CONCLUSION

Il faut traiter les problèmes classiques de RVD :

RESSOURCES : Systèmes Distribués

RMI
Tutorial : http://java.sun.com/docs/books/tutorial/rmi/index.html
Faq : http://www.javasoft.com/products/javaspaces/faqs/rmifaq.html , http://java.sun.com/products/jdk/1.2/docs/guide/rmi/faq.html
DIS-Java-VRML Working Group
IEEE DIS : Distributed Interactive Simulation
Infrastructure pour Réalité Virtuelle distribuée du Web3D Consorsium
But du projet : Implantation du protocole DIS en Java & VRML / Distribution GPL

Marionnettes Virtuelles sur le web

DIFFUSION 3D LIVE POUR LE WEB

Marionnettes Virtuelles

En association avec l'Irit, un groupe de marionnettistes : ANIMAçào a mis au point toute une animation autour de marionnettes virtuelles.
Ce spectacle est basé sur deux techniques qui à priori n'avaient rien pour se rencontrer : La manipulation de marionnettes virtuelles constitue une attraction amusante et intrigante pour un jeune public.

Jusqu'à présent l'installation est la suivante :

Evolution du dispositif

L'addition d'un support Web à cette attraction est intéressante pour plusieurs raisons : Un exemple d'application serait de faire une diffusion en direct sur Internet de marionnettes virtuelles manipulées par de _vrais_ marionnettistes
 Marionnette
      |
      |
      V
 Acquisition
      |
       \__ Serveur ---// Internet //
                             |
                             +------------- BrowserWeb
                             |              +- Applet Java
                             |              | (mise à jour des pos)
                             |              +- Plugin rendu3d (vrml)
                             |
                             +------------- BrowserWeb
                             .               +- Applet Java
                             .                 (mise à jour des pos + visu)
                             .

Architecture Logicielle

Appli_Aquisition  {---------} Serveur_Transform {--------} Client Web
Serveur
Le serveur propose par le protocole RMI un (ou plusieurs) objet distribué dans ce cas il s'agit de matrices de transformation (cf. techniques 3D).
Ces objets peuvent être lus et ecrits par différents processus locaux ou distants ainsi la cohérence est assurée .

Acquisition
Le protocole des capteurs 3D est géré grâce à la bibliothèque WTK. Ainsi la partie acquisition est codée en C++ dans une library dynamique (.dll ou .so).
Le programme hôte codé en java utilise l'interface JNI qui permet d'utiliser la fonction de mise à jour décrite dans la bibliothèque C++
Le programme hôte est en java car il manipule un objet distribué (la matrice de transformation) ainsi on utilise le protocole RMI.
Visualisation
La visualisation peut se faire de deux façons :
  1. Un plugin VRML
  2. Un applet de rendu 3D 100 % java
Dans les deux cas l'objet distribué est géré par RMI donc un applet java. la communication entre l'applet et le plugin VRML est assurée par l'interface EAI (cf. VRML)

Liens

Marionnettes Virtuelles : http://myweb.worldnet.net/~jaspart/Animacao
Capteurs 3D : http://www.polhemus.com/
WTK : http://www.sense8.com/products/index.html

(Réalité Virtuelle et Utilisations de la 3D sur Internet)

CONCLUSION TECHNIQUE

De mon étude et ma culture, je pense que développer une application de RV passant par dessus les navigateurs web est un pari difficile.

Non pas d'un point de vue de faisabilité pure mais le web est un support qui a des contraintes énormes - ceci est dû en partie à l'hétérogènéité des clients -

Les choix préliminaires de la conception sont donc capitaux.

Je n'ai pas la prétention de faire un classement "hit-parade" de chaque solutions, mais de présenter des points essentiels qui ne sont pas toujours apparents et qui permettent, ainsi de faire un choix adapté à un besoin précis.

En effet, à mes yeux, il n'existe malheureusement pas (encore) un standard performant adopté par tous, ce qui peut être aussi une bonne nouvelle dans la mesure où chacun cultive et affirme sa différence et ses atouts.

A mon sens il faut prendre en compte les points suivants

Plusieurs directions sont possibles pour créer une application pour le web :

Cependant à mon avis , il reste un important facteur à prendre en compte : "Conserver l'esprit ouvert d'Internet". En effet développer une solution fermée peut cibler et fidéliser ses clients, mais cette attitude peut "se retourner" contre la compagnie.

Un produit dédié à une certaine population et excluant sans alternatives les autres peut simplifier le travail du développeur à court terme.
Mais à long terme, si la solution n'est pas en permanence actualisée et portée pour la plateforme en vogue, le produit est voué à disparaitre.

Dans ce stage, j'ai fait le choix de réaliser une application démonstrative et ouverte au maximum de clients, ainsi le développement s'est fait en java 1, en utilisant des API middleware (interfaçage, réseaux ...)

Plusieurs points me permettent de préférer cette solution aux autres :

Dans le cas d'une application efficace et inscrite dans un développement industriel où la performance et le temps de développement sont capitaux, il faut donc se restreindre à la plateforme grand public (pc, windows, internet explorer).

La solution est de développer un composant logiciel (plugin) avec l'outil de développement correspondant, C++, API Windows, ActiveX ... soit MSVC++

(Réalité Virtuelle et Utilisations de la 3D sur Internet)

CONCLUSION PERSONNELLE

Ce stage a été ma première expérience professionnelle dans une société de services. Mon séjour m'a permis de juger les motivations qui animent une telle société. J'ai pu apprécier le dynamisme de l'agence au cours de ses réunions mensuelles.

Pendant le bon déroulement du stage, j'ai pu profiter des richesses et de l'expérience du personnel de TRANSICIEL tant au niveau des compétences techniques qu'au niveau des relations humaines.

Les compétences acquises au cours du stage vont me permettre d'évoluer avec plus d'aisance dans le milieu professionnel.

Enfin, le travail s'est déroulé dans une ambiance chaleureuse, ce qui a facilité mon insertion dans la société et rendu ce stage des plus agréables.

Par ailleurs j'ai été ravi de pouvoir finaliser mon travail et d'explorer de nouveaux horizons grâce à l'équipe SYNTHESE d'IMAGES de l'I.R.I.T. et des artistes (marionnettistes ANIMAçào). Ces derniers, dotés d'une dexterité de manipulation de capteurs, utilisent l'animation 3D pour leurs spectacles.

Tout ceci m'a finalement permis de cotoyer plusieurs univers ayant des objectifs, des états d'esprit et des compétences différents voire complémentaires.

Je pense donc qu'il est intéréssant et motivant de ne pas dissocier ces différents contextes qui sont : la production industrielle, la recherche, les applications ludiques.

Enfin j'estime avoir eu la chance d'avoir pu m'impliquer dans ces trois milieux pendant la courte durée de six mois.

J'espère pouvoir continuer à travailler avec une aussi large ouverture sur le petit monde de l'infographie.

Annexes (Réalité Virtuelle et Utilisations de la 3D sur Internet)

ANNEXES

LIENS / RESSOURCES

Infos générales :
http://web3d.org
http://www.construct.net/tools/vrml/
Pointeurs :
3D sous Linux : http://linux.box.sk/box.php3?gfx=linux&prj=linux&key=3D&txt=3D
http://www.vrml.org/fs_weblinks.htm
http://web3d.about.com/compute/web3d
http://www.3dsite.com
http://www.yahoo.com/Computers_and_Internet/Graphics/3D/
http://fr.dir.yahoo.com/Sports_et_loisirs/Jeux/Jeux_sur_Internet/Mondes_virtuels/Mondes_en_3D/
Maths :
http://www.algorithm.com/graphics/graphhot.html
http://skal.planet-d.net/demo/matrixfaq.htm
http://skal.planet-d.net/demo/demaths.html.en
InfoGraphie :
http://www.faqs.org/faqs/graphics/
Plug'ins 3D pour Netscape :
http://www.netscape.com/plugins/3d_and_animation.html
Projets similaires :
Dive : http://www.sics.se/dive
http://ariadne.iz.net/~jeffs/vrmLab/
VRML + Sound : http://perso.libertysurf.fr/hplank/vrml/world5/mat4.html
VNET : http://www.csclub.uwaterloo.ca/~sfwhite/vnet/
Articles sur la 3D online:
http://perso.infonie.fr/hello_nico/multimed/sommaire.html
http://www.lemonde.fr/article/0,2320,seq-2081-58382-MIA,00.html
http://biz.yahoo.com/prnews/000323/ca_jim_hen_1.html
http://www.javaworld.com/javaworld/jw-05-1997/jw-05-howto.html
Algos 3D :
http://www.multimania.com/heulin/3D/Sommaire.html
Misc :
Marionnettes Virtuelles : http://myweb.worldnet.net/~jaspart/Animacao
Java Tutorial : http://java.sun.com/docs/books/tutorial/index.html
Tutorial OpenGL en java : http://www.cs.uwm.edu/~grafix2
http://www.aereal.com/faq/
http://www.levillage.org/
Mise en page :
Feuilles de Styles : http://www.w3.org/TR/REC-CSS2/page.html

BIBLIOGRAPHIE

Java : Au coeur de java 2
V1 / sun microsystem press java series / cay s. horstman gary cornell / ED. campus press
L'indispensable pour la Synthèse d'Images, du réel au virtuel
Au. Jean Pierre COUWENBERGH ( jpco(a)skynet.be )
=~ La Synthèse d'IMAGES - 1998 - ISBN 2-501.03039-7
Web3D made easy
ZD Internet magazine / march 1997

(Réalité Virtuelle et Utilisations de la 3D sur Internet)

PLUG'INS 3D POUR LE WEB

Contact / Blaxxun
http://www.blaxxun.com
blaxxun Contact is an advanced multimedia communication client offering a wide range of capabilities, including 3D support for VRML and Viscape, chat, avatars, message boards, object trading, interaction with agents, and more.
(Windows 32)
Cosmo Player / Cosmosoftware (exSGI)
http://www.cosmosoftware.com
Available for Win95, Win98, WinNT, Irix, MacOS
Cortona VRML / ParallelGraphics
http://www.parallelgraphics.com/htm/en/prod
Available for Win95, Win98, WinNT,
Cult3D / Cycore Computers
http://www.cult3d.com
Cult3D is a real-time, software only, multi-platform 3D rendering engine. This technological breakthrough allows computer users to view high-quality-interactive real-time 3D on the Web. Using compression and streaming the Cult3D file format is small and efficient.
This results in faster downloads and progressive viewing. This is not VRML.
Available for PPC, Win95, Win98, WinNT, SunOS, HP-UX, AIX, Linux
Flatland Rover / Flatland Online Inc.
http://www.flatland.com
The Flatland Rover will allow you to view 3D environments created with 3DML (Three Dimensional Markup Language). 3DML requires no previous experience with 3D modeling or programming, and is as easy to learn as HTML! 3DML uses a basic building block metaphor that enables users to create 3D spaces (called "spots") by arranging ready made blocks into complete environments. These environments are fully navigable and fully customizable, incorporating images, 3D sound, text, animation, and hyperlinks. Rover has many features including an easy user interface, hi-color display, and support for common Web graphics and audio formats such as GIF, GIF animation and WAV.
DeepV / Heads Off
http://www.headsoff.com
DeepV2 serves as a simple x-file viewer. Embed x-files in your Web page or create links to full-screen 3D scenes. The plug-in is only around 60Kb uncompressed, but requires DirectX 2 or greater to be installed on your machine. Fly around using the keyboard or mouse. Scenes can include path-based animation, rotations, and more. The x-file (extension .x) is the format used by Direct3D, the free add-on to Windows 95,Win98 and NT 4.0.
Entrance / Cybercore Systems
http://www.cycosys.com
The Entrance system is the first 3D multi-user environment based on a technology newly developed by CyberCore Systems. Its high speed rendering of three-dimensional scenes presents a 3D experience comparable to world-famous game megasellers. Entrance features a chat system with strong encryption technology. It integrates completely into Navigator, providing the user with three-dimensional browsing capabilities. Entrance handles Dynamic URLs and server pushes, making it the ideal front end for e-shopping sites and virtual callcenters.
Hypercosm3D Player / Hypercosm, Inc.
http://www.hypercosm.com
Hypercosm has developed unique and powerful technologies enabling the compact transmission of 3D computer graphics and simulations over the Internet. Use the Studio development software to improve Online Learning curricula, create games, and increase the effectiveness of your 3D graphics. Sample our interactive graphics to get just a small taste of how this technology can be used.
OS : win32, Mac, Linux
MetaStream Viewer Plugin / MetaCreations Corporation
http://www.metastream.com
The MetaStream Viewer Plugin is the first application based on the MetaStream 3D file format -- a new open PC file format announced jointly by Intel Corporation and MetaCreations Corporation -- that enables the creation, delivery and viewing of scalable 3D graphics.
Mirage / Clearsand Corporation
http://www.clearsand.com
Mirage is the player for MediaForge. MediaForge is an innovative multimedia authoring tool for business, science, education and entertainment, providing the full functionality to build multi-threaded titles, presentations, tutorials, games and internet content.
Octree FastView / Octree Corporation
http://www.octree.com
Octree FastView provides interactive real-time rendering of complex3D objects. The plugin allows these objects to be embedded directlyinside of your web page. Rotation and positioning are controlled bythe user with simple mouse motions.
OnLive! Traveler / OnLive! Technologies
http://www.onlive.com OnLive! Traveler allows end users to visit OnLive! -enabled 3D virtual environments over the Internet and talk or send text messages to groups of people throughout the world. OnLive! Traveler provides compelling real-time group communication by allowing groups of people to meet in a virtual environment and talk in their own voices through expressive, animated avatars.
Protoplay / Altia
http://www.altia.com/protoplay.html
Altia's ProtoPlay runs electronic prototypes on Web pages that help manufacturers sell products over the Web by enabling consumers to try them before buying. Unlike pictures, multimedia presentations, or video, electronic prototypes take advantage of interactivity to help educate consumers about product benefits. And because they use structured graphics, download times are very fast!
Pulse Player / Pulse Entertainment
http://www.pulse3d.com
Experience realistic character animations and high-quality renderings in an interactive environment using the Pulse Player. The Pulse Player is a seamless browser plug-in that allows a viewer to interact with rich media assets developed in Pulse Creator, an integrated web authoring system. Unlimited entertainment is realized through streaming updates of behaviors and audio.
Quick3D / Plastic Thought
http://www.plasticthought.com
Plastic Thought's Quick3D plug-in puts 3D in the browser. The 3D model can be rotated, turned to a specific view, scaled and zoomed online. The 3DMF file format provides a compact and efficient means of storing 3D models with textures and camera information.
RealiView / Datapath Limited
With support for nearly all PC hardware 3D-graphics accelerators built in, RealiView is a freely distributable plug-in for Netscape Navigator that allows users to browse 3D moving worlds with embedded actions and hot links to other worlds. An editor tool works with other modellers or drawing packages to create these worlds. You can even use Microsoft Word to create your models! As the author of the 3D experience, you have full control of where and how the user moves around in your worlds.
SPX Plugin / Dimension 3D-Systems GmbH
The SPX plugin provides an interface to textured 3D models over theinternet. With the plugin installed, the user is able to visualizerealistic 3D models inside any web page. Features of the SPX format include level of detail (LOD), 3D data compression and streaming. The SPX format as well as the sourcecode for our SPX library will be published for free usage soon. Converters from other file formats (e.g. VRML) to SPX are available. 4.x browser version only.
Superscape Viscape Universal 5.60 / Superscape, Inc.
http://www.superscape.com
3D Web browser for exploring both VRML and Superscape's own SVR enabled 3D Webpages. The product is now available for free download from.
Virtuoso Player / Virtue Ltd
http://www.virtue3d.com
VRWare / Hyperware
http://www.iicm.edu/vrwave
To our knowledge, VRwave is the only VRML 97 browser available in complete source code, and requiring no commercial packages to run.
WIRL Virtual Reality Browser / VREAM
WIRL brings true virtual reality to the Web. With the WIRL plug-in you can play virtual slot machines, fly helicopters, see cybergymnasts flip, throw virtual TVs, watch business logos spin, visit exotic islands in cyberspace, and more. WIRL fully supports VRML and adds support for object behaviors, logical cause-and-effect relationships, multimedia capabilities, world authoring, and links to Windows applications.
Virtuoso Player displays animated, interactive three-dimensional (3D) models in Virtue Ltd.'s proprietary VTU format. VTU is much more compact than other 3D formats, thanks to the use of such advanced technologies as geometry compression, simplification and motion streaming. The result is a shorter download time for the end user; this is particularly suitable for such applications as E-commerce. 3D models are converted from other formats to VTU using Virtue's Virtuoso Optimizer.
WebGlide Player / WebGlide
WebGlide Player offers a unique new form of multimedia compression and streaming on the Web. It is the only product available today that allows the transmission of interactive, high quality, photo-realistic 3D experiences over the Internet. Fascinating virtual environments, enhanced by sound, can be visited even when using low-rate Internet connections.

iRapid 4.0 / Emultek
Make your prototypes come to life with Rapid. specially effective for on-line trainings, testing design and mass distribution. Interact with Rapid simulations over the Internet and Intranet using Emultek's Internet plug-in (pre-release version). Link your specially-packaged Rapid applications in an HTML file and make them available to anyone using Netscape Navigator 3.0 or higher.

(Réalité Virtuelle et Utilisations de la 3D sur Internet)

BIBLIOTHEQUES DE RENDU 3D

Les besoins de la simulation en 3D ont engendré des bibliothèques pour tracer des objets en perspective.
Parmi les plus communes on citera OpenGL & Direct3D

APIs Bas Niveau :

OpenGL :
API Standard supporté par la majorité des périphériques hardware : bas niveau (tracé de primitives)
La librairie est installée de base dans Windows et est disponible gratuitement sur les autres OS (avec MESA)
DirectX, Glide, QuickDraw3D :
Similaire au standard OpenGL, la popularité en moins
Fahrenheit :
Collaboration SGI + MS pour l'API 3D qui remplacerait DirectX

APIs Haut Niveau :

IRIS Performer :
Ensemble de classes C++ pour rendu 3D (muliprocesseurs)
Développé par SGI pour SGI
OS : IRIX (SGI), Linux http://www.sgi.com/software/performer/
Open Inventor :
Une autre technologie Silicon Graphics, Invertor est un systeme de developement 3D portable. Il comporte une structure hierachique de la scene, des objects, lumieres et une gestion d'interaction et animation.
A l'instar de Iris Performer, Open Inventor est disponible sur d'autres OS (Win32, MacOS)
Open Inventor comporte un format de données 3D tres similaire a VRML en fait VRML est inspirer de Inventor http://www.sgi.com/Technology/Inventor/
WTK : World Tool kit (Sense 8) :
Multiplateforme, par dessus OpenGL, gère également différents périfériques hardware (souris 3D ...)
http://www.sense8.com/products/index.html

Autres API et Bibliothèques

VML : Virtual-réality Modeling Library
Gère le tracé de scènes et animations VRML.
Elle est extensible par des nouveaux nœuds géométriques et non géométriques
En cours de développement à l’U.P.S. (Toulouse) & Gratuite (GPL)
OS : Win32, Unix (Linux, IRIX)
JAVA 3D & GL4Java & Jogl
http://www.jausoft.com/gl4java/ & http://www.pajato.com/jogl
Package java implémentant les spécifications OpenGL
Verse
Framework client/serveur dédié 3D, il définit son propre format mais propose un filtre d'import de scene VRML.
Distribution : free http://www.obsession.se/verse
Crystal Space
moteur 3D C++ free multiplateforme http://crystal.linuxgames.com
Nemo
Kit de développement pour faire des Cdroms, Web, jeux http://www.nemo.com

Lexique 3D / Infographie

LEXIQUE

Aliasing :
Effet Visuel indésirable obtenu lors de l'affichage d'images courbes ou de diagonales ainsi que lors du passage d'une couleur (ou d'une texture) à une autre
BREP :
Abreviation de Boundary Représentation Technique de modélisation volumique permettant de représenter un objet par un ensemble de surfaces délimitant celui-ci.
B-spline :
Méthode de représentation de surfaces gauche par approximation et constituant une généralisation et une extension de la méthode Bézier. Elle se différencie de cette dernière par le fait que lors d'une modification, la surface n'est pas perturbée qu'au voisinage du point modifié.
Bézier (Surface de) :
Méthode de représentation de surface gauche par approximation à l'aide de "carreaux" (ou portions élementaires de surfaces) définis par des équations des quatres courbes frontières.
Bump Mapping :
Technique permettant d'ajouter un relief à un plan. En perturbant la normale au point (pour le modèle d'illumination).
Clipping :
Technique qui consiste à éliminer le tracé d'éléments que l'on ne souhaite pas voir à l'écran, c'est a dire ceux qui sont exterieurs à une surface bien délimitée. Le système de sélection par fenêtre est un exemple de clipping.
Comportementale , Animation Comportementale ; Gestion Physique de l'Animation :
L'animation est régie par des lois physiques et non une trajectoire prédéfinie ou précalculée ... ce qui permet une animation interactive
CSG :
Abréviation de Constructive Solid Géométry, Technique de modélisation solide permettant de construire un objet par assemblage de solides élémentaires à l'aide d'opérateurs booléens.
DXF :
Accronyme de Drawing eXchange Format. Format d'échange de données entre systèmes crée par Autodesk pour son Logiciel Autocad. La plupart des logiciels du marché dispose de cette interface qui est devenue un standard de fait.
Eclairement :
Etape du processus de construction d'une image de sythèse qui consiste à soumettre la scène représentée aux différents effets de la lumière.
Elimination des faces cachées :
Opération permettant l'identification et l'effacement des facéttes des objets et donc non visibles par l'observateur, dans le but d'obtenir une image plus réaliste. Le résultat de ce traitement est un dessin composé de surfaces colorées ou non.
Espace Image :
Espace de description mathématique (ou repère) associé à la projection des objets sur le plan image. Cet espace ne correspond qu'a une représentation partielle de l'objet et est fonction de la définition de l'écran.
Espace Objet :
Espace de description mathématique (ou repère) associé au modèle géométrique de l'objet dans lequel chaque point est représenté par un triplet de coordonnées. Cet espace correspond au monde réel dans lequel se situe l'objet. Les objets y sont décrits avec une précision maximum.
Facette :
En modélisation tridimensionnelle, petite surface planaire délimitées par des contours géométriques. Généralement sa forme la plus simple est le triangle.
FEM :
Acronyme de Finite Element Method. Méthode de calcul mise au point dans le courant des années 60 qui consiste à subdiviser les structures, les surfaces ou les objets complexes en petites unités calculables.
Fil de fer / Wireframe :
Type de modèle dans lequel seuls les sommets et les arêtes de l'objet sont représentés. La face en tant que telle n'est pas connue. Les objets ainsi modélisés sont transparents.
Flat Shading :
Technique d'éclairement ne donnant qu'un aspect mat sans ombres ni refflets.
Flicker :
Effet de scintillement visible sur certain dispositifs d'affichage animé.
Gouraud :
Méthode de lissage par interpolation des intensités (couleurs) en chaque point.
Graftals :
Formes issues de fonctions mathématiques récursives et principalement utilisées pour représenter des plantes et arbres.
HMD :
Head mounted Display. Système de visualisation monté sur la tête, qui isole l'utilisateur du monde exterieur.
Illuminnation, Ombrage :
Technique de calcul permettant d'appliquer une ou plusieurs sources de lumière sur une scène et d'obtenir l'intensité lumineuse en chaque point.
Immersion :
Sensation d'être entièrement plongé dans un environnement et de pouvoir intéragir avec les objets qui s'y trouvent.
Interactivité :
Caractérise tout ce qui se rapporte au dialogue Homme/Machine. Elle est constitué par l'ensemble des moyens (logiciel & matériel) permettant des actions réciproques en mode dialogué et temps réel.
Interface :
Liaison entre 2 systèmes logiciels et/ou materiel leur permettant d'échanger des informations.
Lissage :
Procédé consistant à adoucir l'aspect heurté de certains contours en synthèse. Le lissage est basé sur différentes techniques d'interpolation et permet, par exemple, de rendre inperceptible les facettes d'un objet globalement courbé.
Modélisation :
Technique qui consiste à restituer sous une forme compréhensible par l'ordinateur un objet ou un phénomène quelconque.
Morphing :
Technique de déformation d'image ou d'objet par interpolation.
Multimédia :
Intégration harmonieuse au sein d'une configuration informatique d'une série de technologies électroniques capables de produire d'une manière interactive, des informations combinant plusieurs types d'information : texte, images, sons ...
Navigation :
Déplacement contrôlé dans un monde virtuel.
Nurbs :
Acronyme de Non Uniform Rational B-Spline.
On peut définir des formes gauches (lisses) par des équations paramétriques, par exemple une aile d'avion peut être définie par quelques équations simples plutôt que des dizaines (ou plus) de facettes.
La facétisation est faite à l'étape rendu.
Pixel :
Acronyme de Picture Element. Il constitue le plus petit élément de l'image, et donc en quelque sorte l'équivalent d'un point 2D (x,y) .
Réaliste :
Type d'image de synthèse dont l'apparence visuelle se rapproche trés fortement des objets réels jusqu'a ce confondre entre eux.
Realité Virtuelle :
Monde tridimensionel, entièrement généré par ordinateur, dans lequel on peut s'immerger et agir en temps réel à l'aide d'une série d'interfaces spécifiques (casque de visualisation, gants tactiles)
Rendering :
procédé de transformation d'un objet à partir d'une description mathématique pour en faire une image réaliste. Il existe plusieurs techniques de rendu telles que le zbuffer, le lancé de rayon, la radiosité... qui peuvent être utilisés en combinaison.
Scène :
Ensemble d'objets élémentaires transformés par des déplacements, rotation, échelle...
Téléprésence :
Système permettant à un opérateur, situé à une certaine distance de son champ d'action, d'être immergé virtuellement dans ce champ et son environement.
Télévirtualité :
Ensemble des moyens permettant à deux ou plusieurs personnes distantes de communiquer de manière interactive dans un même environnement virtuel. Les informations nécéssaires sont transmises par réseaux et reconstituées virtuellement sur chaque poste de travail connecté.
Temps Réel :
Mode de traitement suffisament rapide, dont le delai n'est pas sensible pour l'utilisateur.
Texture :
Motif, mémorisé une seule fois, que l'on applique répétitivement sur une structure régulière. Par exemple, des briques sur un mur (plan);
Visualisation :
Opération qui consiste à obtenir la représentation d'un objet sur un écran graphique sur la base d'une structure de donnée informatique.
ZBuffer :
Technique algorithmique permettant le calcul de l'élimination des parties cachées et des ombres portées.

(Réalité Virtuelle et Utilisations de la 3D sur Internet)

SHOTS

Java

ACTIVE WORLDS

CULT-3D

MENDELBOX

PULSE 3D

METASTREAM

VRML

(Réalité Virtuelle et Utilisations de la 3D sur Internet)

ORGANISATION DE TRAVAIL

PLANNING / TRAVAIL EFFECTUE

Semaine #1 2000.03.06
Semaine #2 2000.03.13
Semaine #3 2000.03.20
A FAIRE:
EFFECTUE #2000.03.24 : Installation Win2000
Les semaines suivantes ont été consacrées à un projet Internet de transiciel :
Création d'un système d'édition en ligne d'un journal Multimédia.

Ce système permettra aux journalistes de déposer leurs articles, l'éditorialiste composera un journal à sa guise selon sa propre mise en page et finalement les lecteurs pouront lire le journal à sa parution.

Technologies Utilisées : Servlets Java sous serveur Httpd (Apache), Base de données relationelles (Oracle).

Environnement de programmation : JDK 1.2 + GNU Xemacs + jde

Semaine #3 2000.03.27
Semaine #4 2000.04.03
Semaine #5 2000.04.10
Semaine #6 2000.04.17
Semaine #7 2000.04.25

Reprise de mon sujet de stage le 5
Semaine #8 2000.05.01
AFAIRE:
Semaine #9 2000.05.08
Semaine #10 2000.05.15
AFAIRE:
REALISE:
Semaine #11 2000.05.22
A FAIRE :
EFFECTUE
Semaine #12 2000.05.29
A FAIRE:
EFFECTUE:
Semaine #13 2000.06.05
AFAIRE :
EFFECUTE
Semaine #14 2000.06.13
A FAIRE :
EFFECTUE
Semaine #15 2000.06.19
EFFECTUE
A FAIRE :
Semaine #16 2000.06.26
Les semaines suivantes ont été dévéloppé hors Transiciel, pour des projets plus ou moins personnels.

Semaine (17) 2000.07.17
Semaine (18) 2000.07.24

VOIES DE TRAVAIL / PROJETS TRANSICIEL

(Réalité Virtuelle et Utilisations de la 3D sur Internet)

REMERCIEMENTS

Je tiens à remercier les personnes suivantes sans qui ce stage n'aurait été possible.
Pascal.DIOGO :
Pour avoir cru en la RV et m'avoir accordé le temps nécessaire à cette étude
Jean-Pierre.JESSEL :
Pour être passionné et innovant dans ce monde de l'animation 3D
Jacky.DESACHY :
Pour tous ses efforts pour avoir mis en place et transformer ce DESS en succés
Celine & Jacko d'ANIMAçao
Pour avoir eu le courage de consacrer leur activité à l'innovation artistique sur support informatique
Mathias.PAULIN :
Pour m'avoir impliqué dans le projet collectif de l'informatique libre.
Thomas.MULLER :
Pour échanger des propos "à double sens unique".
Jean-Philippe.MISTROT, Jeremie.CARRIE, Daniel.MUNOZ, Frédéric.MORALES, Fabrice.GOUAZE, Laure.VERGEZ, Magalie.SOUERY :
Pour ne pas avoir rendu les choses plus dures lorsqu'elles se sont présentées.
Tous les professeurs de l'ups qui ont une bonne impression de moi :
"votre impression est la bonne ..."
Eric.MENOU & toute l'équipe SYNTHESE d'IMAGES de L'IRIT
"Le monde a besoin de vous"
Katia.VINCELLER :
Pour son support et sa patience
Gerald.JACOBSON , Wieldfried.LEFFLON , Laurent.VERCHERE , Fréderic.SINDOU , Benjamin.ALBERT et les autres employés de Transiciel :
Pour la bonne humeur qui a du influencer mon travail à Transiciel
La famille COVAL & Co :
Pour avoir eu confiance en mes choix
Les Nerds et Amiga-maniacs que j'ai peu fréquentés :
Tout a une origine et elle a du commencer à ce moment là
Les auteurs de toutes les homepages et documentations on line que j'ai pu visiter ainsi que les "GNU-Authors" :
Je ne rembourserai jamais assez ma dette, ce rapport est une avance.
Tous les autres que j'ai oubliés :
je pense quand même à vous (la preuve)