/***************************************************************************** ** World Created by Emmanuel Frécon - emmanuel@sics.se ** ** Set HAVE_STATIC_OBJS if you want to speed it up a little bit. ******************************************************************************/ #include "dive.vh" #include "walls.vh" #include "column.vh" #include "plant2.vh" #ifndef M_PI #define M_PI (3.14159257) #endif #ifndef HAVE_STATIC_OBJS #undef HAVE_STATIC_OBJS #endif /* Inner size is the size of the yard, outer size the whole size of the room */ #define INNER_SIZE (20) #define OUTER_SIZE (30) /* Height of the walls */ #define W_HEIGHT (2.5) /* Width of the walls */ #define W_WIDTH (0.25) /* Height of the inner wall. */ #define IW_HEIGHT (0.3*W_HEIGHT) /* Size of the passages between the corridor and the yard */ #define P_LENGTH (0.1*INNER_SIZE) /* Distance between columns */ #define C_DIST (((0.5*INNER_SIZE)-(0.5*P_LENGTH))/3) /* Size of the doors */ #define D_LENGTH (0.04*OUTER_SIZE) /* Distance between Doors */ #define D_DIST (OUTER_SIZE/6) /* Height of the doors */ #define D_HEIGHT (0.8*W_HEIGHT) /* Wall material */ #define W_MAT "wheat" /* Roof material */ #define R_MAT "peru" /* Ceiling material */ #define C_MAT "wheat" /* Corridor ground material */ #define CG_MAT "BROWN_M" /* Yard ground material */ #define YG_MAT "sienna" /* Column material and column base material */ #define COL_MAT "BOTTLE_GREEN_M" #define COLB_MAT "seagreen" world "patio.sics.se" { start v 0 0 (-0.5*INNER_SIZE) info "Central DIVE world at SICS intended to be a switchboard to other DIVE worlds. Design by Emmanuel Frécon." background 0.2 0.4 0.8 % fog 0.0005 % multicast "233.17.65.121" } /* Outer walls, going to be containing the gateways */ object { nograsp on #ifdef HAVE_STATIC_OBJS static_rec on #endif translation v 0 0 (0.5*OUTER_SIZE) subs object { translation v ((2.5*D_DIST)+(0.25*D_LENGTH)+(0.5*W_WIDTH)) 0 0 wall((D_DIST-(0.5*D_LENGTH)+W_WIDTH), W_HEIGHT, W_WIDTH, W_MAT) } subs object { translation v (2*D_DIST) 0 0 wall_with_gateway(D_LENGTH, W_HEIGHT, W_WIDTH, W_MAT, D_HEIGHT, "http://www.sics.se/dive/data/blocks.vr", "Blocks", "RED_NEON_M", -25, 0, -50) } subs object { translation v (1.5*D_DIST) 0 0 wall((D_DIST-D_LENGTH), W_HEIGHT, W_WIDTH, W_MAT) } subs object { translation v (1*D_DIST) 0 0 wall_with_gateway(D_LENGTH, W_HEIGHT, W_WIDTH, W_MAT, D_HEIGHT, "http://www.sics.se/dive/data/dive_town.vr", "DIVE Town", "RED_NEON_M", -2.5, 0, -120) } subs object { translation v (0.5*D_DIST) 0 0 wall((D_DIST-D_LENGTH), W_HEIGHT, W_WIDTH, W_MAT) } subs object { translation v (0*D_DIST) 0 0 wall_with_gateway(D_LENGTH, W_HEIGHT, W_WIDTH, W_MAT, D_HEIGHT, "http://www-lips.ece.utexas.edu/~cchuter/dive/lipsworld.vr", "Univ Texas: Chris Chuter", "RED_NEON_M", 0, 0, 0) } subs object { translation v (-0.5*D_DIST) 0 0 wall((D_DIST-D_LENGTH), W_HEIGHT, W_WIDTH, W_MAT) } subs object { translation v (-1*D_DIST) 0 0 wall_with_gateway(D_LENGTH, W_HEIGHT, W_WIDTH, W_MAT, D_HEIGHT, "http://www.sics.se/dive/data/world.vr", "World Globe", "RED_NEON_M", 0, 0, -80) } subs object { translation v (-1.5*D_DIST) 0 0 wall((D_DIST-D_LENGTH), W_HEIGHT, W_WIDTH, W_MAT) } subs object { translation v (-2*D_DIST) 0 0 wall_with_gateway(D_LENGTH, W_HEIGHT, W_WIDTH, W_MAT, D_HEIGHT, "http://www.sics.se/dive/data/body_gallery.vr", "Bodies", "RED_NEON_M", 4, 0, -8) } subs object { translation v -((2.5*D_DIST)+(0.25*D_LENGTH)) 0 0 wall((D_DIST-(0.5*D_LENGTH)), W_HEIGHT, W_WIDTH, W_MAT) } } object { nograsp on #ifdef HAVE_STATIC_OBJS static_rec on #endif translation v (-0.5*OUTER_SIZE) 0 0 fixedxyz v 0 (-0.5*M_PI) 0 subs object { translation v ((2.5*D_DIST)+(0.25*D_LENGTH)+(0.5*W_WIDTH)) 0 0 wall((D_DIST-(0.5*D_LENGTH)+W_WIDTH), W_HEIGHT, W_WIDTH, W_MAT) } subs object { translation v (2*D_DIST) 0 0 wall_with_gateway(D_LENGTH, W_HEIGHT, W_WIDTH, W_MAT, D_HEIGHT, "http://www.sics.se/dive/data/mmedia.vr", "Multi media", "RED_NEON_M", 0, 0, -80) } subs object { translation v (1.5*D_DIST) 0 0 wall((D_DIST-D_LENGTH), W_HEIGHT, W_WIDTH, W_MAT) } subs object { translation v (1*D_DIST) 0 0 wall_with_gateway(D_LENGTH, W_HEIGHT, W_WIDTH, W_MAT, D_HEIGHT, "http://www.sics.se/dive/data/village.vr", "Village", "RED_NEON_M", 0, 10, 295) } subs object { translation v (0.5*D_DIST) 0 0 wall((D_DIST-D_LENGTH), W_HEIGHT, W_WIDTH, W_MAT) } subs object { translation v (0*D_DIST) 0 0 wall_with_door(D_LENGTH, W_HEIGHT, W_WIDTH, W_MAT, D_HEIGHT) } subs object { translation v (-0.5*D_DIST) 0 0 wall((D_DIST-D_LENGTH), W_HEIGHT, W_WIDTH, W_MAT) } subs object { translation v (-1*D_DIST) 0 0 wall_with_door(D_LENGTH, W_HEIGHT, W_WIDTH, W_MAT, D_HEIGHT) } subs object { translation v (-1.5*D_DIST) 0 0 wall((D_DIST-D_LENGTH), W_HEIGHT, W_WIDTH, W_MAT) } subs object { translation v (-2*D_DIST) 0 0 wall_with_door(D_LENGTH, W_HEIGHT, W_WIDTH, W_MAT, D_HEIGHT) } subs object { translation v -((2.5*D_DIST)+(0.25*D_LENGTH)) 0 0 wall((D_DIST-(0.5*D_LENGTH)), W_HEIGHT, W_WIDTH, W_MAT) } } object { nograsp on #ifdef HAVE_STATIC_OBJS static_rec on #endif translation v 0 0 (-0.5*OUTER_SIZE) fixedxyz v 0 M_PI 0 subs object { translation v ((2.5*D_DIST)+(0.25*D_LENGTH)+(0.5*W_WIDTH)) 0 0 wall((D_DIST-(0.5*D_LENGTH)+W_WIDTH), W_HEIGHT, W_WIDTH, W_MAT) } subs object { translation v (2*D_DIST) 0 0 wall_with_door(D_LENGTH, W_HEIGHT, W_WIDTH, W_MAT, D_HEIGHT) } subs object { translation v (1.5*D_DIST) 0 0 wall((D_DIST-D_LENGTH), W_HEIGHT, W_WIDTH, W_MAT) } subs object { translation v (1*D_DIST) 0 0 wall_with_door(D_LENGTH, W_HEIGHT, W_WIDTH, W_MAT, D_HEIGHT) } subs object { translation v (0.5*D_DIST) 0 0 wall((D_DIST-D_LENGTH), W_HEIGHT, W_WIDTH, W_MAT) } subs object { translation v (0*D_DIST) 0 0 wall_with_door(D_LENGTH, W_HEIGHT, W_WIDTH, W_MAT, D_HEIGHT) } subs object { translation v (-0.5*D_DIST) 0 0 wall((D_DIST-D_LENGTH), W_HEIGHT, W_WIDTH, W_MAT) } subs object { translation v (-1*D_DIST) 0 0 wall_with_door(D_LENGTH, W_HEIGHT, W_WIDTH, W_MAT, D_HEIGHT) } subs object { translation v (-1.5*D_DIST) 0 0 wall((D_DIST-D_LENGTH), W_HEIGHT, W_WIDTH, W_MAT) } subs object { translation v (-2*D_DIST) 0 0 wall_with_door(D_LENGTH, W_HEIGHT, W_WIDTH, W_MAT, D_HEIGHT) } subs object { translation v -((2.5*D_DIST)+(0.25*D_LENGTH)) 0 0 wall((D_DIST-(0.5*D_LENGTH)), W_HEIGHT, W_WIDTH, W_MAT) } } object { nograsp on #ifdef HAVE_STATIC_OBJS static_rec on #endif translation v (0.5*OUTER_SIZE) 0 0 fixedxyz v 0 (0.5*M_PI) 0 subs object { translation v ((2.5*D_DIST)+(0.25*D_LENGTH)+(0.5*W_WIDTH)) 0 0 wall((D_DIST-(0.5*D_LENGTH)+W_WIDTH), W_HEIGHT, W_WIDTH, W_MAT) } subs object { translation v (2*D_DIST) 0 0 wall_with_door(D_LENGTH, W_HEIGHT, W_WIDTH, W_MAT, D_HEIGHT) } subs object { translation v (1.5*D_DIST) 0 0 wall((D_DIST-D_LENGTH), W_HEIGHT, W_WIDTH, W_MAT) } subs object { translation v (1*D_DIST) 0 0 wall_with_door(D_LENGTH, W_HEIGHT, W_WIDTH, W_MAT, D_HEIGHT) } subs object { translation v (0.5*D_DIST) 0 0 wall((D_DIST-D_LENGTH), W_HEIGHT, W_WIDTH, W_MAT) } subs object { translation v (0*D_DIST) 0 0 wall_with_door(D_LENGTH, W_HEIGHT, W_WIDTH, W_MAT, D_HEIGHT) } subs object { translation v (-0.5*D_DIST) 0 0 wall((D_DIST-D_LENGTH), W_HEIGHT, W_WIDTH, W_MAT) } subs object { translation v (-1*D_DIST) 0 0 wall_with_door(D_LENGTH, W_HEIGHT, W_WIDTH, W_MAT, D_HEIGHT) } subs object { translation v (-1.5*D_DIST) 0 0 wall((D_DIST-D_LENGTH), W_HEIGHT, W_WIDTH, W_MAT) } subs object { translation v (-2*D_DIST) 0 0 wall_with_door(D_LENGTH, W_HEIGHT, W_WIDTH, W_MAT, D_HEIGHT) } subs object { translation v -((2.5*D_DIST)+(0.25*D_LENGTH)) 0 0 wall((D_DIST-(0.5*D_LENGTH)), W_HEIGHT, W_WIDTH, W_MAT) } } /* Inner walls */ #define inner_wall() \ subs object { \ translation \ v ((0.5*W_WIDTH)+(0.25*INNER_SIZE)+(0.25*P_LENGTH)) 0 0 \ wall(((0.5*INNER_SIZE)+W_WIDTH-(0.5*P_LENGTH)), IW_HEIGHT, W_WIDTH, W_MAT) \ } \ subs object { \ translation \ v -((0.25*INNER_SIZE)+(0.25*P_LENGTH)) 0 0 \ wall(((0.5*INNER_SIZE)-(0.5*P_LENGTH)), IW_HEIGHT, W_WIDTH, W_MAT) \ } \ subs object { \ translation \ v ((0.5*W_WIDTH)+(0.5*INNER_SIZE)) IW_HEIGHT (0.5*W_WIDTH) \ angular_column(COL_MAT, COLB_MAT, (W_WIDTH/3), (W_HEIGHT-IW_HEIGHT)) \ } \ subs object { \ translation \ v ((0.5*W_WIDTH)+(0.5*P_LENGTH)) IW_HEIGHT (0.5*W_WIDTH) \ angular_column(COL_MAT, COLB_MAT, (W_WIDTH/3), (W_HEIGHT-IW_HEIGHT)) \ } \ subs object { \ translation \ v ((0.5*W_WIDTH)+(0.5*P_LENGTH)+C_DIST) IW_HEIGHT (0.5*W_WIDTH) \ angular_column(COL_MAT, COLB_MAT, (W_WIDTH/3), (W_HEIGHT-IW_HEIGHT)) \ } \ subs object { \ translation \ v ((0.5*W_WIDTH)+(0.5*P_LENGTH)+(2*C_DIST)) IW_HEIGHT (0.5*W_WIDTH) \ angular_column(COL_MAT, COLB_MAT, (W_WIDTH/3), (W_HEIGHT-IW_HEIGHT)) \ } \ subs object { \ translation \ v -((0.5*W_WIDTH)+(0.5*P_LENGTH)) IW_HEIGHT (0.5*W_WIDTH) \ angular_column(COL_MAT, COLB_MAT, (W_WIDTH/3), (W_HEIGHT-IW_HEIGHT)) \ } \ subs object { \ translation \ v -((0.5*W_WIDTH)+(0.5*P_LENGTH)+C_DIST) IW_HEIGHT (0.5*W_WIDTH) \ angular_column(COL_MAT, COLB_MAT, (W_WIDTH/3), (W_HEIGHT-IW_HEIGHT)) \ } \ subs object { \ translation \ v -((0.5*W_WIDTH)+(0.5*P_LENGTH)+(2*C_DIST)) IW_HEIGHT (0.5*W_WIDTH) \ angular_column(COL_MAT, COLB_MAT, (W_WIDTH/3), (W_HEIGHT-IW_HEIGHT)) \ } object { nograsp on #ifdef HAVE_STATIC_OBJS static_rec on #endif translation v 0 0 (0.5*INNER_SIZE) inner_wall() } object { nograsp on #ifdef HAVE_STATIC_OBJS static_rec on #endif translation v (-0.5*INNER_SIZE) 0 0 fixedxyz v 0 (-0.5*M_PI) 0 inner_wall() } object { nograsp on #ifdef HAVE_STATIC_OBJS static_rec on #endif translation v 0 0 (-0.5*INNER_SIZE) fixedxyz v 0 M_PI 0 inner_wall() } object { name "inner wall3" nograsp on #ifdef HAVE_STATIC_OBJS static_rec on #endif translation v (0.5*INNER_SIZE) 0 0 fixedxyz v 0 (0.5*M_PI) 0 inner_wall() } /* Ceiling */ object { name "ceiling" nograsp on #ifdef HAVE_STATIC_OBJS static_rec on #endif material C_MAT texture "http://www.sics.se/dive/data/textures/stucco3.rgb" view 0 { N_M_POLY 4 16 (0+T_PER_VERTEX) N_POLY 4 v (0.48*INNER_SIZE) W_HEIGHT (0.48*INNER_SIZE) t (0.48*INNER_SIZE) (0.48*INNER_SIZE) v (0.52*OUTER_SIZE) W_HEIGHT (0.52*OUTER_SIZE) t (0.52*OUTER_SIZE) (0.52*OUTER_SIZE) v (-0.52*OUTER_SIZE) W_HEIGHT (0.52*OUTER_SIZE) t (-0.52*OUTER_SIZE) (0.52*OUTER_SIZE) v (-0.48*INNER_SIZE) W_HEIGHT (0.48*INNER_SIZE) t (-0.48*INNER_SIZE) (0.48*INNER_SIZE) N_POLY 4 v (-0.48*INNER_SIZE) W_HEIGHT (0.48*INNER_SIZE) t (-0.48*INNER_SIZE) (0.48*INNER_SIZE) v (-0.52*OUTER_SIZE) W_HEIGHT (0.52*OUTER_SIZE) t (-0.52*OUTER_SIZE) (0.52*OUTER_SIZE) v (-0.52*OUTER_SIZE) W_HEIGHT (-0.52*OUTER_SIZE) t (-0.52*OUTER_SIZE) (-0.52*OUTER_SIZE) v (-0.48*INNER_SIZE) W_HEIGHT (-0.48*INNER_SIZE) t (-0.48*INNER_SIZE) (-0.48*INNER_SIZE) N_POLY 4 v (-0.48*INNER_SIZE) W_HEIGHT (-0.48*INNER_SIZE) t (-0.48*INNER_SIZE) (-0.48*INNER_SIZE) v (-0.52*OUTER_SIZE) W_HEIGHT (-0.52*OUTER_SIZE) t (-0.52*OUTER_SIZE) (-0.52*OUTER_SIZE) v (0.52*OUTER_SIZE) W_HEIGHT (-0.52*OUTER_SIZE) t (0.52*OUTER_SIZE) (-0.52*OUTER_SIZE) v (0.48*INNER_SIZE) W_HEIGHT (-0.48*INNER_SIZE) t (0.48*INNER_SIZE) (-0.48*INNER_SIZE) N_POLY 4 v (0.48*INNER_SIZE) W_HEIGHT (0.48*INNER_SIZE) t (0.48*INNER_SIZE) (0.48*INNER_SIZE) v (0.48*INNER_SIZE) W_HEIGHT (-0.48*INNER_SIZE) t (0.48*INNER_SIZE) (-0.48*INNER_SIZE) v (0.52*OUTER_SIZE) W_HEIGHT (-0.52*OUTER_SIZE) t (0.52*OUTER_SIZE) (-0.52*OUTER_SIZE) v (0.52*OUTER_SIZE) W_HEIGHT (0.52*OUTER_SIZE) t (0.52*OUTER_SIZE) (0.52*OUTER_SIZE) } } /* Roof */ object { nograsp on #ifdef HAVE_STATIC_OBJS static_rec on #endif material R_MAT texture "http://www.sics.se/dive/data/textures/tiler-3a.tga.rgb" view 0 { N_M_POLY 8 32 (0+T_PER_VERTEX) N_POLY 4 v (0.48*INNER_SIZE) W_HEIGHT (0.48*INNER_SIZE) t (0.48*INNER_SIZE) (0.48*INNER_SIZE) v (-0.48*INNER_SIZE) W_HEIGHT (0.48*INNER_SIZE) t (-0.48*INNER_SIZE) (0.48*INNER_SIZE) v (-0.52*OUTER_SIZE) (1.2*W_HEIGHT) (0.52*OUTER_SIZE) t (-0.52*OUTER_SIZE) (0.52*OUTER_SIZE) v (0.52*OUTER_SIZE) (1.2*W_HEIGHT) (0.52*OUTER_SIZE) t (0.52*OUTER_SIZE) (0.52*OUTER_SIZE) N_POLY 4 v (-0.48*INNER_SIZE) W_HEIGHT (0.48*INNER_SIZE) t (0.48*INNER_SIZE) (0.48*INNER_SIZE) v (-0.48*INNER_SIZE) W_HEIGHT (-0.48*INNER_SIZE) t (-0.48*INNER_SIZE) (0.48*INNER_SIZE) v (-0.52*OUTER_SIZE) (1.2*W_HEIGHT) (-0.52*OUTER_SIZE) t (-0.52*OUTER_SIZE) (0.52*OUTER_SIZE) v (-0.52*OUTER_SIZE) (1.2*W_HEIGHT) (0.52*OUTER_SIZE) t (0.52*OUTER_SIZE) (0.52*OUTER_SIZE) N_POLY 4 v (-0.48*INNER_SIZE) W_HEIGHT (-0.48*INNER_SIZE) t (-0.48*INNER_SIZE) (-0.48*INNER_SIZE) v (0.48*INNER_SIZE) W_HEIGHT (-0.48*INNER_SIZE) t (0.48*INNER_SIZE) (-0.48*INNER_SIZE) v (0.52*OUTER_SIZE) (1.2*W_HEIGHT) (-0.52*OUTER_SIZE) t (0.52*OUTER_SIZE) (-0.52*OUTER_SIZE) v (-0.52*OUTER_SIZE) (1.2*W_HEIGHT) (-0.52*OUTER_SIZE) t (-0.52*OUTER_SIZE) (-0.52*OUTER_SIZE) N_POLY 4 v (0.48*INNER_SIZE) W_HEIGHT (-0.48*INNER_SIZE) t (0.48*INNER_SIZE) (0.48*INNER_SIZE) v (0.48*INNER_SIZE) W_HEIGHT (0.48*INNER_SIZE) t (-0.48*INNER_SIZE) (0.48*INNER_SIZE) v (0.52*OUTER_SIZE) (1.2*W_HEIGHT) (0.52*OUTER_SIZE) t (-0.52*OUTER_SIZE) (0.52*OUTER_SIZE) v (0.52*OUTER_SIZE) (1.2*W_HEIGHT) (-0.52*OUTER_SIZE) t (0.52*OUTER_SIZE) (0.52*OUTER_SIZE) N_POLY 4 v (0.52*OUTER_SIZE) W_HEIGHT (0.52*OUTER_SIZE) t (0.52*OUTER_SIZE) W_HEIGHT v (0.52*OUTER_SIZE) (1.2*W_HEIGHT) (0.52*OUTER_SIZE) t (0.52*OUTER_SIZE) (1.2*W_HEIGHT) v (-0.52*OUTER_SIZE) (1.2*W_HEIGHT) (0.52*OUTER_SIZE) t (-0.52*OUTER_SIZE) (1.2*W_HEIGHT) v (-0.52*OUTER_SIZE) W_HEIGHT (0.52*OUTER_SIZE) t (-0.52*OUTER_SIZE) W_HEIGHT N_POLY 4 v (-0.52*OUTER_SIZE) W_HEIGHT (0.52*OUTER_SIZE) t (0.52*OUTER_SIZE) W_HEIGHT v (-0.52*OUTER_SIZE) (1.2*W_HEIGHT) (0.52*OUTER_SIZE) t (0.52*OUTER_SIZE) (1.2*W_HEIGHT) v (-0.52*OUTER_SIZE) (1.2*W_HEIGHT) (-0.52*OUTER_SIZE) t (-0.52*OUTER_SIZE) (1.2*W_HEIGHT) v (-0.52*OUTER_SIZE) W_HEIGHT (-0.52*OUTER_SIZE) t (-0.52*OUTER_SIZE) W_HEIGHT N_POLY 4 v (-0.52*OUTER_SIZE) W_HEIGHT (-0.52*OUTER_SIZE) t (-0.52*OUTER_SIZE) W_HEIGHT v (-0.52*OUTER_SIZE) (1.2*W_HEIGHT) (-0.52*OUTER_SIZE) t (-0.52*OUTER_SIZE) (1.2*W_HEIGHT) v (0.52*OUTER_SIZE) (1.2*W_HEIGHT) (-0.52*OUTER_SIZE) t (0.52*OUTER_SIZE) (1.2*W_HEIGHT) v (0.52*OUTER_SIZE) W_HEIGHT (-0.52*OUTER_SIZE) t (0.52*OUTER_SIZE) W_HEIGHT N_POLY 4 v (0.52*OUTER_SIZE) W_HEIGHT (0.52*OUTER_SIZE) t (0.52*OUTER_SIZE) W_HEIGHT v (0.52*OUTER_SIZE) W_HEIGHT (-0.52*OUTER_SIZE) t (-0.52*OUTER_SIZE) W_HEIGHT v (0.52*OUTER_SIZE) (1.2*W_HEIGHT) (-0.52*OUTER_SIZE) t (-0.52*OUTER_SIZE) (1.2*W_HEIGHT) v (0.52*OUTER_SIZE) (1.2*W_HEIGHT) (0.52*OUTER_SIZE) t (0.52*OUTER_SIZE) (1.2*W_HEIGHT) } } /* Corridor ground */ object { nograsp on #ifdef HAVE_STATIC_OBJS static_rec on #endif material CG_MAT texture "http://www.sics.se/dive/data/textures/stone-2c.tga.rgb" view 0 { N_M_POLY 4 16 (0+T_PER_VERTEX) N_POLY 4 v (0.5*INNER_SIZE) 0 (0.5*INNER_SIZE) t (0.5*INNER_SIZE) (0.5*INNER_SIZE) v (-0.5*INNER_SIZE) 0 (0.5*INNER_SIZE) t (-0.5*INNER_SIZE) (0.5*INNER_SIZE) v (-0.5*OUTER_SIZE) 0 (0.5*OUTER_SIZE) t (-0.5*OUTER_SIZE) (0.5*OUTER_SIZE) v (0.5*OUTER_SIZE) 0 (0.5*OUTER_SIZE) t (0.5*OUTER_SIZE) (0.5*OUTER_SIZE) N_POLY 4 v (-0.5*INNER_SIZE) 0 (0.5*INNER_SIZE) t (-0.5*INNER_SIZE) (0.5*INNER_SIZE) v (-0.5*INNER_SIZE) 0 (-0.5*INNER_SIZE) t (-0.5*INNER_SIZE) (-0.5*INNER_SIZE) v (-0.5*OUTER_SIZE) 0 (-0.5*OUTER_SIZE) t (-0.5*OUTER_SIZE) (-0.5*OUTER_SIZE) v (-0.5*OUTER_SIZE) 0 (0.5*OUTER_SIZE) t (-0.5*OUTER_SIZE) (0.5*OUTER_SIZE) N_POLY 4 v (-0.5*INNER_SIZE) 0 (-0.5*INNER_SIZE) t (-0.5*INNER_SIZE) (-0.5*INNER_SIZE) v (0.5*INNER_SIZE) 0 (-0.5*INNER_SIZE) t (0.5*INNER_SIZE) (-0.5*INNER_SIZE) v (0.5*OUTER_SIZE) 0 (-0.5*OUTER_SIZE) t (0.5*OUTER_SIZE) (-0.5*OUTER_SIZE) v (-0.5*OUTER_SIZE) 0 (-0.5*OUTER_SIZE) t (-0.5*OUTER_SIZE) (-0.5*OUTER_SIZE) N_POLY 4 v (0.5*INNER_SIZE) 0 (0.5*INNER_SIZE) t (0.5*INNER_SIZE) (0.5*INNER_SIZE) v (0.5*OUTER_SIZE) 0 (0.5*OUTER_SIZE) t (0.5*OUTER_SIZE) (0.5*OUTER_SIZE) v (0.5*OUTER_SIZE) 0 (-0.5*OUTER_SIZE) t (0.5*OUTER_SIZE) (-0.5*OUTER_SIZE) v (0.5*INNER_SIZE) 0 (-0.5*INNER_SIZE) t (0.5*INNER_SIZE) (-0.5*INNER_SIZE) } } /* Yard ground */ object { nograsp on #ifdef HAVE_STATIC_OBJS static_rec on #endif material YG_MAT texture "http://www.sics.se/dive/data/textures/stone-3b.tga.rgb" view 0 { N_M_POLY 1 4 (0+T_PER_VERTEX) N_POLY 4 v (0.5*INNER_SIZE) 0 (0.5*INNER_SIZE) t 0 0 v (0.5*INNER_SIZE) 0 (-0.5*INNER_SIZE) t 0 INNER_SIZE v (-0.5*INNER_SIZE) 0 (-0.5*INNER_SIZE) t INNER_SIZE INNER_SIZE v (-0.5*INNER_SIZE) 0 (0.5*INNER_SIZE) t INNER_SIZE 0 } } /* Plants */ object { nograsp on #ifdef HAVE_STATIC_OBJS static_rec on #endif translation v (0.3*INNER_SIZE) 0 (0.3*INNER_SIZE) PLANT1((0.05*INNER_SIZE), (0.5*IW_HEIGHT), D_HEIGHT) } object { nograsp on #ifdef HAVE_STATIC_OBJS static_rec on #endif translation v (-0.3*INNER_SIZE) 0 (0.3*INNER_SIZE) PLANT1((0.05*INNER_SIZE), (0.5*IW_HEIGHT), D_HEIGHT) } object { nograsp on #ifdef HAVE_STATIC_OBJS static_rec on #endif translation v (-0.3*INNER_SIZE) 0 (-0.3*INNER_SIZE) PLANT1((0.05*INNER_SIZE), (0.5*IW_HEIGHT), D_HEIGHT) } object { nograsp on #ifdef HAVE_STATIC_OBJS static_rec on #endif translation v (0.3*INNER_SIZE) 0 (-0.3*INNER_SIZE) PLANT1((0.05*INNER_SIZE), (0.5*IW_HEIGHT), D_HEIGHT) } object { nograsp on #ifdef HAVE_STATIC_OBJS static_rec on #endif translation v 0 0 0 PLANT2((0.05*INNER_SIZE), (0.75*IW_HEIGHT), W_HEIGHT) } /* Landscape */ object { material "BOTTLE_GREEN_M" texture "http://www.sics.se/dive/data/textures/grass2.rgb" translation v 0 -0.1 0 view 0 { N_M_POLY 1 4 (0+T_PER_VERTEX) N_POLY 4 v 500 0 -500 t 0 0 v -500 0 -500 t 0 200 v -500 0 500 t 200 200 v 500 0 500 t 200 0 } } object { material { diffuse 0 0 0 ambient 0.2 0.4 0.8 } texture "http://www.sics.se/dive/data/textures/clouds.rgb" translation v 0 100 0 view 0 { N_M_POLY 1 4 (0+T_PER_VERTEX) N_POLY 4 v 1000 0 -1000 t 0 0 v 1000 0 1000 t 5 0 v -1000 0 1000 t 5 5 v -1000 0 -1000 t 0 5 } } object { material { diffuse 0 0 0 ambient 0.2 0.4 0.8 } texture "http://www.sics.se/dive/data/textures/renault_mtn.rgb" translation v 0 50 0 view 0 { N_M_POLY 4 16 (0+T_PER_VERTEX) N_POLY 4 v 550 0 -550 t 0 0 v 550 0 550 t 5 0 v 550 50 550 t 5 1 v 550 50 -550 t 0 1 N_POLY 4 v 550 0 550 t 0 0 v -550 0 550 t 5 0 v -550 50 550 t 5 1 v 550 50 550 t 0 1 N_POLY 4 v -550 0 550 t 0 0 v -550 0 -550 t 5 0 v -550 50 -550 t 5 1 v -550 50 550 t 0 1 N_POLY 4 v -550 0 -550 t 0 0 v 550 0 -550 t 5 0 v 550 50 -550 t 5 1 v -550 50 -550 t 0 1 } } object { material { diffuse 0 0 0 ambient 0.2 0.4 0.8 } texture "http://www.sics.se/dive/data/textures/treewall.rgb" translation v 0 -0.1 0 view 0 { N_M_POLY 4 16 (0+T_PER_VERTEX) N_POLY 4 v 500 0 -500 t 0 0 v 500 0 500 t 1 0 v 550 50.1 550 t 1 1 v 550 50.1 -550 t 0 1 N_POLY 4 v 500 0 500 t 0 0 v -500 0 500 t 1 0 v -550 50.1 550 t 1 1 v 550 50.1 550 t 0 1 N_POLY 4 v -500 0 500 t 0 0 v -500 0 -500 t 1 0 v -550 50.1 -550 t 1 1 v -550 50.1 550 t 0 1 N_POLY 4 v -500 0 -500 t 0 0 v 500 0 -500 t 1 0 v 550 50.1 -550 t 1 1 v -550 50.1 -550 t 0 1 } }