#VRML V2.0 utf8 # # cutplane.wrl # A sliding cutting plane # by David R. Nadeau # # This world illustrates the use of the 'SlidingPlane' node type defined in # the external file 'cut.wrl'. That node creates a plane that slides back # and forth, changing the texture on it based upon the plane's X position. # # # Externally defined node types # EXTERNPROTO TexturePlane [ field MFNode textures eventIn SFFloat set_fraction ] "cut.wrl#TexturePlane" EXTERNPROTO SlidingPlane [ field MFNode textures field SFVec2f minMaxX field SFFloat initialX ] "cut.wrl#SlidingPlane" # # Header # WorldInfo { title "Cutting Plane" info [ "Copyright (c) 1997, David R. Nadeau" ] } Viewpoint { position 4.0 0.4 2.5 orientation 0.0 1.0 0.0 0.785 description "Entry view" } NavigationInfo { type [ "EXAMINE", "ANY" ] headlight TRUE } Background { skyColor [ 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.3 ] skyAngle [ 1.57, 1.87, ] } # # Build a box with a grid texture on the sides. Only include the # side, bottom, and end. The cutting planes will slide back and # forth within the box. # Shape { appearance Appearance { # no material - emissive texture ImageTexture { url "grill.png" } textureTransform TextureTransform { translation 0.5 0.5 } } geometry IndexedFaceSet { coord Coordinate { point [ # Left side -1.0 -1.0 0.0, -1.0 -1.0 -4.0, -1.0 1.0 -4.0, -1.0 1.0 0.0, # Bottom -1.0 -1.0 0.0, 1.0 -1.0 0.0, 1.0 -1.0 -4.0, -1.0 -1.0 -4.0, # Back -1.0 -1.0 -4.0, 1.0 -1.0 -4.0, 1.0 1.0 -4.0, -1.0 1.0 -4.0, ] } coordIndex [ 0, 1, 2, 3, -1, 4, 5, 6, 7, -1, 8, 9, 10, 11, -1, ] texCoord TextureCoordinate { point [ 0.0 0.0, 0.0 8.0, 4.0 8.0, 4.0 0.0, 0.0 0.0, 4.0 0.0, 4.0 4.0, 0.0 4.0, ] } texCoordIndex [ 0, 1, 2, 3, -1, 1, 2, 3, 0, -1, 4, 5, 6, 7, -1, ] solid FALSE } } # # Add a label above one side of the box # Transform { translation -1.0 1.3 -2.0 rotation 0.0 1.0 0.0 1.571 children Shape { appearance Appearance { # no material - emissive } geometry Text { string "Time (sec)" fontStyle FontStyle { size 0.4 style "BOLD" justify "MIDDLE" } } } } # # Create two moving cutting planes, one initially at the front and # the other initially at the back. # SlidingPlane { initialX 0.0 minMaxX 0.0 4.0 textures [ ImageTexture { url "cp1.png" repeatS FALSE repeatT FALSE } ImageTexture { url "cp2.png" repeatS FALSE repeatT FALSE } ImageTexture { url "cp3.png" repeatS FALSE repeatT FALSE } ImageTexture { url "cp4.png" repeatS FALSE repeatT FALSE } ImageTexture { url "cp5.png" repeatS FALSE repeatT FALSE } ImageTexture { url "cp6.png" repeatS FALSE repeatT FALSE } ImageTexture { url "cp7.png" repeatS FALSE repeatT FALSE } ImageTexture { url "cp8.png" repeatS FALSE repeatT FALSE } ImageTexture { url "cp9.png" repeatS FALSE repeatT FALSE } ImageTexture { url "cp10.png" repeatS FALSE repeatT FALSE } ] } SlidingPlane { initialX 4.0 minMaxX 0.0 4.0 textures [ ImageTexture { url "cp1.png" repeatS FALSE repeatT FALSE } ImageTexture { url "cp2.png" repeatS FALSE repeatT FALSE } ImageTexture { url "cp3.png" repeatS FALSE repeatT FALSE } ImageTexture { url "cp4.png" repeatS FALSE repeatT FALSE } ImageTexture { url "cp5.png" repeatS FALSE repeatT FALSE } ImageTexture { url "cp6.png" repeatS FALSE repeatT FALSE } ImageTexture { url "cp7.png" repeatS FALSE repeatT FALSE } ImageTexture { url "cp8.png" repeatS FALSE repeatT FALSE } ImageTexture { url "cp9.png" repeatS FALSE repeatT FALSE } ImageTexture { url "cp10.png" repeatS FALSE repeatT FALSE } ] }