![]() |
||
|
| |||
Traduction par Ap0 du document original sur http://www.java3d.orgCopyright © 2001 Greg Hopkins Tout est dans l’apparence
Materials / les matériaux Les Materials ont 5 propriétes: Ambient, Emissive, Diffuse, and Specular. La cinquième propriété est la shininess (la brillance), à spécifier avec un nombre. Ces propriétés définissent des types de luminosité qu’il est bon de tester afin de se faire une idée plus précise quant au rendu à l’écran. // Boule de billard // ambient emissive diffuse specular shininess // Material mat = new Material(red, black, red, white, 70f);
Textures Les Materials changent l’apparence d’une forme dans son intégralité, mais, parfois, les objets les plus brillants peuvent apparaître sombres. En ajoutant une texture, vous pouvez produire des effets bien plus intéressants comme simuler un métal, du marbre, ou bien envelopper un objet avec une image en 2D (plaquer une texture représentant des briques sur un pavé droit pour représenter un bâtiment). La classe TextureLoader permet de charger un fichier image pour l’utiliser en tant que texture. Vos images doivent respecter la règle du "simple par double", par exemple une image de 128 pixels par 256. En chargeant l’image, vous pouvez aussi spécifier la manière de l’afficher. Par exemple, RGB (Red, Green, Blue) utilisera la couleur originale de l’image, LUMINANCE l’affichera en noir et blanc. Une fois la texture chargée, il est possible de changer ses attributs (TextureAttributes) pour remplacer l’objet recouvert par l’image, mélanger l’image à la couleur de votre choix, etc. Si vous utilisez un objet simple comme une sphère par exemple, vous aurez à configurer les "primitive flags". A configurer dans : Primitive.GENERATE_NORMALS + Primitive.GENERATE_TEXTURE_COORDS en créant l’objet. Au cas où vous commenceriez à vous emmêler les pinceaux, voici un exemple pour vous familiariser avec les réglages concernant les textures. Voyez ce que cela donne, modifiez les paramètres, etc. C’est très instructif ! L’image peut être téléchargée à l’adresse : http://www.java3d.org/Arizona.jpg. Vous pouvez également choisir une image vous appartenant, bien évidemment. import com.sun.j3d.utils.geometry.*; import com.sun.j3d.utils.universe.*; import com.sun.j3d.utils.image.*; import javax.media.j3d.*; import javax.vecmath.*; import java.awt.Container; public class PictureBall { public PictureBall() { // Créer l’univers SimpleUniverse universe = new SimpleUniverse(); // Créer une structure contenant les objets BranchGroup group = new BranchGroup(); // Configurer les couleurs Color3f black = new Color3f(0.0f, 0.0f, 0.0f); Color3f white = new Color3f(1.0f, 1.0f, 1.0f); Color3f red = new Color3f(0.7f, .15f, .15f); // Configurer la texture TextureLoader loader = new TextureLoader("K:\\3d\\Arizona.jpg", "LUMINANCE", new Container()); Texture texture = loader.getTexture(); texture.setBoundaryModeS(Texture.WRAP); texture.setBoundaryModeT(Texture.WRAP); texture.setBoundaryColor( new Color4f( 0.0f, 1.0f, 0.0f, 0.0f ) );
// Configurer les attributs de la texture // Paramètres possibles : REPLACE, BLEND ou DECAL (ici, MODULATE) TextureAttributes texAttr = new TextureAttributes(); texAttr.setTextureMode(TextureAttributes.MODULATE); Appearance ap = new Appearance(); ap.setTexture(texture); ap.setTextureAttributes(texAttr);
//Configurer le matériau ap.setMaterial(new Material(red, black, red, black, 1.0f));
// Créer une sphère pour y appliquer les textures int primflags = Primitive.GENERATE_NORMALS + Primitive.GENERATE_TEXTURE_COORDS; Sphere sphere = new Sphere(0.5f, primflags, ap); group.addChild(sphere); // Créer les éclairages Color3f light1Color = new Color3f(1f, 1f, 1f); BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0); Vector3f light1Direction = new Vector3f(4.0f, -7.0f, -12.0f); DirectionalLight light1 = new DirectionalLight(light1Color, light1Direction); light1.setInfluencingBounds(bounds); group.addChild(light1); AmbientLight ambientLight = new AmbientLight(new Color3f(.5f,.5f,.5f)); ambientLight.setInfluencingBounds(bounds); group.addChild(ambientLight); // Regarder vers l&a sphère pour lui faire face universe.getViewingPlatform().setNominalViewingTransform(); // Ajouter les groupe d’objets à l’univers universe.addBranchGraph(group); } public static void main(String[] args) { new PictureBall(); } } Effets spéciaux Jetez un œil au AppearanceTest fourni avec Java 3D, vous y verrez les différents effets réalisables. Vous pouvez par exemple n’afficher des objets que par leur sommets ou bien les rendre transparents, comme suit : TransparencyAttributes t_attr = new TransparencyAttributes(TransparencyAttributes.BLENDED,0.5, TransparencyAttributes.BLEND_SRC_ALPHA, TransparencyAttributes.BLEND_ONE); ap.setTransparencyAttributes( t_attr ); |
|
7 internaute(s) sur Web3d-fr
|
Copyright Web3d-fr 2001-2004
|
| Création de mondes VRML/X3D | |
| Autres technos Web3d | |
| Outils et logiciels | |
| 3D multi-utilisateurs | |
| Articles et informations | |
| Ressources gratuites | |
| Autres sites et portails 3D | |
| Trouver un emploi | |
|
| |