#VRML V2.0 utf8 # on supprime la lumière issue de l'avatar pour # ne pas perturber l'éclairage NavigationInfo { headlight FALSE avatarSize [ 0.25, 1.6, 0.75 ] } #on place l'utilisateur au dessus de la ligne d'horizon Viewpoint { position 0 1.6 20 } # le ciel, qui s'applique en fait à tout le fond d'écran Background { skyColor 0.1 0.3 0.7 } # les deux objets qui devront se réfléchir Group { children [ Transform { translation 5 2 -2 # une utilise un DEF, ainsi l'objet pourra être recréé pour le reflet children DEF cCone Shape { geometry Cone { } appearance Appearance { material Material { diffuseColor 1 1 0 } } } } Transform { translation -2 1.5 1 children DEF Sphere Shape { geometry Sphere { radius 2 } appearance Appearance { material Material { diffuseColor 1 0 1 } } } } # la DirectionalLight est la seule lumière que nous pourrons utiliser DirectionalLight { direction -1 -1 0 } ] } # le relfet Group { children [ Transform { # les translations sont les même, sauf les y qui sont l'invers des y originaux translation 5 -2 -2 children Transform { # pour créer une illusion de symétrie # rotation sur Z de 180 degres , pour mettre le cone vers le bas rotation 0 0 1 3.14 children USE cCone } } Transform { # pour la sphère, pas la peine de faire une rotation # idem y'=-y translation -2 -1.5 1 children USE Sphere } # la directionalLight, avec Y'=-y DirectionalLight { direction -1 1 0 } ] } # L'eau, représentée par une face avec une texture, transparente Transform { children Shape { appearance Appearance { material Material { emissiveColor 0.2 0.2 0.2 transparency 0.6 } texture ImageTexture { url "water.jpg" } textureTransform TextureTransform { rotation 1.57 } } geometry DEF _0 IndexedFaceSet { coord Coordinate { point [ -50 0 -50 50 0 -50, 50 0 50, -50 0 50 ] } coordIndex [ 3, 2, 1, 0, -1 ] normalIndex [ ] texCoordIndex [ ] } } }