WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Modélisation 3d pour les personnes vivant avec handicap.


par Sylvestre Frey
Université de Kinshasa - Licence 2018
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

II.4. Etude comparatif des bibliothèques

Cette étude a pour but de comparer les trois outils de développement que nous avons choisi tout d'abord en présentant leurs avantages et inconvénients (possibilités/limites, facilité d'utilisation, portabilité, ...).

Avantages/Inconvénients

1. Possibilités Techniques

La première différence entre ses outils est : Java3D se situe à un niveau supérieur à OpenGL et Direct3D, utilisant d'ailleurs ces deux API pour son implémentation.

ü OpenGL / Direct3

Partant de l'historique OpenGL et DirectX se sont développées en parallèle, les innovations des uns étant rapidement suivi d'une réponse du concurrent. Aujourd'hui, les différences de possibilités sont minimes entre les deux API; les dernières versions (DirectX12, et OpenGL 1.5) prennent en compte toutes les fonctionnalités classiques des moteurs 3D.

Au niveau des lumières et ombres avec calcul automatique des normales, différents effets de brouillard, possibilité d'utiliser des buffers spécialisés pour gérer les effets de réflexion et de motion blur, et aussi possibilités d'éclairage dynamique des textures par vertex ou pixel shader.

Au niveau des textures, possibilités de textures 2D et 3D, mipmapping, transparence de textures et multi-texturing. Les deux API permettent également l'utilisation de structures de données facilitant l'accès aux modèles3D (vertexarray); OpenGL fournit également des DisplayList hiérarchiques pouvant contenir la plupart des commandes de changement d'état et de primitives graphiques tandis que Direct3D fonctionne avec des buffers de sommets (vertex buffers) non-hiérarchiques pour avoir un cache mémoire de géométrie et des blocs d'états (state blocks) pour avoir un cache de changements d'état.

Les deux normes facilitent également les optimisations, avec l'implémentation du Zbuffer (qui cependant en DirectX n'est pas indépendante du matériel) et l'utilisation possible de cullface. Enfin Direct3D, contrairement à OpenGL, ne fournit pas de mécanisme de gestion des courbes et surfaces paramétriques (NUR

BS).

ü Java3D

La programmation avec Java3D est bien différente de celle avec OpenGL et DirectX. En effet, ces derniers proposent une implémentation de plus bas niveau qui permettent aux développeurs de gérer le moindre pixel de leurs moteurs alors que Java3D possède des fonctions de plus haut niveau, certes plus faciles d'utilisation mais aussi plus limitées. Il est ainsi très difficile par exemple d'implémenter des optimisations ou des effets comme le pixel shader en Java3D.

L'avantage de ces fonctions de haut niveau est que le développement d'applications est beaucoup plus facile. Par exemple il existe dans les package de Java3D des fonctions permettant de détecter si deux objets sont en collision, ce qui n'est pas le cas avec OpenGL ou DirectX ou l'on doit tout faire « à la main », ce qui dans ce cas est loin d'être évident.

De plus, Java3D existe dans deux versions, une OpenGL et une DirectX, l'utilisateur peut donc choisir d'utiliser son programme avec l'un ou l'autre des moteurs de rendu. Quand vous utilisez une version OpenGL de Java 3D, certaines fonctionnalités de l'API font appel à des méthodes natives de la DLL Java 3D/OpenGL. Ces méthodes elles, utilisent des fonctions de la DLL OpenGL du système qui utilise l'accélérateur graphique disponible sur la carte graphique. Pour terminer sur les caractéristiques techniques de Java3D, il est important de préciser que cette librairie peut tout à fait utiliser toutes les fonctionnalités du langage Java, ainsi il peut être très utile d'utiliser les packages AWT ou SWING pour l'interface graphique ou encore le package IO pour les entrées/sorties. A noter également que Java3D utilise un package VECMATH pour le calcul vectoriel et matriciel très utilisé dans les moteurs 3D.

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Et il n'est rien de plus beau que l'instant qui précède le voyage, l'instant ou l'horizon de demain vient nous rendre visite et nous dire ses promesses"   Milan Kundera