################################################################################### ## Cube_R5_1_3_8.scd ## Regular Map on Genus-5 Cube Frame, with 120 quads for Catmull-Clark subdivision ## (= {8,3} hyperbolic tessellation) : 24V, 64T, 96E ## 2009-05-03: for cs184 SUBDIVISION MODELING ## -- this one used THREE different textures! ################################################################################### ## This file shows how adjustable geometry can be generated proceduarally; # good variable values for a smoothly subdivided rounded cube-frame # set ti -0.1 # set to -0.25 # set sr 0.0 # set sh -0.15 # set pr 0.4 # set ph -0.15 # set ai 0.1 # set ao 0.15 # set aw 0.1 # set as 0.15 ####################################################################### ## Generate parameterized starting surface with above parameter values ## In the strings {expr ... $variable ...} substitute the above values # outer and inner tips point XYT ( {expr $to +2} {expr $to +2} {expr -$to -2}) texture (0.5 1) endpoint point XYT_ ( {expr $to +2} {expr $to +2} {expr $to +2}) texture (0.5 0) endpoint point XY1T0 ( {expr $ti +1} {expr $ti +1} {expr -$ti -1}) texture (0 0.75) endpoint point XY1T1 ( {expr $ti +1} {expr $ti +1} {expr -$ti -1}) texture (1 0.75) endpoint point XY1T0_ ( {expr $ti +1} {expr $ti +1} {expr $ti +1}) texture (0 0.25) endpoint point XY1T1_ ( {expr $ti +1} {expr $ti +1} {expr $ti +1}) texture (1 0.25) endpoint # shoulder/ridge points point XYTs ( {expr $sr +2} {expr $sr +2} {expr -$sh -1}) texture (0.5 0.75) endpoint point XYTs_ ( {expr $sr +2} {expr $sr +2} {expr $sh +1}) texture (0.5 0.25) endpoint point ZTs ( {expr $sr +2} {expr $sh +1} {expr -$sr -2}) texture (0.25 1) endpoint point ZTs_ ( {expr $sh +1} {expr $sr +2} {expr $sr +2}) texture (0.75 0) endpoint #arm pits point XYyT ( {expr $pr +2} {expr $ph +1} {expr -$ph -1}) texture (0.25 0.75) endpoint point XYyT_ ( {expr $pr +2} {expr $ph +1} {expr $ph +1}) texture (0.25 0.25) endpoint point XYzT ( {expr $ph +1} {expr $pr +2} {expr -$ph -1}) texture (0.75 0.75) endpoint point XYzT_ ( {expr $ph +1} {expr $pr +2} {expr $ph +1}) texture (0.75 0.25) endpoint #mid-arm cross section point XT1 ( {expr $ao +2} {expr $ao +2} 0 ) texture (0.5 0.5) endpoint point XT30 ( {expr $ai +1} {expr $ai +1} 0 ) texture (0 0.5) endpoint point XT31 ( {expr $ai +1} {expr $ai +1} 0 ) texture (1 0.5) endpoint point XT2 ( {expr -$aw +$as +1} {expr $aw +$as +2} 0 ) texture (0.75 0.5) endpoint point XT4 ( {expr $aw +$as +2} {expr -$aw +$as +1} 0 ) texture (0.25 0.5) endpoint face qa1 (XYyT XYTs XT1 XT4) endface face qa3 (XYTs XYzT XT2 XT1) endface face qa5 (XYzT XY1T1 XT31 XT2) endface face qa7 (XYyT XT4 XT30 XY1T0 ) endface face qats (XYTs XYyT ZTs XYT ) endface #lower corner flap face qa1_ (XYTs_ XYyT_ XT4 XT1 ) endface face qa3_ (XYzT_ XYTs_ XT1 XT2 ) endface face qa5_ (XY1T1_ XYzT_ XT2 XT31 ) endface face qa7_ (XYyT_ XY1T0_ XT30 XT4 ) endface face qats_ (XYTs_ XYzT_ ZTs_ XYT_ ) endface #upper corner flap ## Because different arms use different textures, here the material is not specified directly with the faces, ## but insted is specified when an instance of a whole cube-frame arm is called: ## 4 ARMS USE THE TEXTUREMAP "CubeFrame_3_8a.GIF" ==> (material TEXa) ## 4 ARMS USE THE TEXTUREMAP "CubeFrame_3_8b.GIF" ==> (material TEXb) ## 4 ARMS USE THE TEXTUREMAP "CubeFrame_3_8c.GIF" ==> (material TEXc) ############################################################################################ (Include arm "generated_arm" ) ## this uses the above generated piece of geometry (G WholeCube ## just uses 12 instances of identical arms (I a1 arm (material TEXa) ) (I a2 arm (R 180 1 0 0 ) (material TEXa) ) (I a3 arm (R 180 0 1 0 ) (material TEXa) ) (I a4 arm (R 180 0 0 1 ) (material TEXa) ) (I a5 arm (R -120 1 1 -1 ) (material TEXb) ) (I a6 arm (R -120 1 1 -1 ) (R 180 1 0 0 ) (material TEXb) ) (I a7 arm (R -120 1 1 -1 ) (R 180 0 1 0 ) (material TEXb) ) (I a8 arm (R -120 1 1 -1 ) (R 180 0 0 1 ) (material TEXb) ) (I a9 arm (R 120 1 1 -1 ) (material TEXc) ) (I a10 arm (R 120 1 1 -1 ) (R 180 1 0 0 ) (material TEXc) ) (I a11 arm (R 120 1 1 -1 ) (R 180 0 1 0 ) (material TEXc) ) (I a12 arm (R 120 1 1 -1 ) (R 180 0 0 1 ) (material TEXc) ) ) (Render WholeCube ) ############################################################################################