/*************************************************************** Torso Macro for use with "bmpeople.inc" v4.0 refer to "bmmanual.txt" for usage information ****************************************************************/ #ifndef (BM_Defaults) #include "bmdefs.inc" #end #macro bmtorso() #if (BM_Flex>0) #declare BM_Flex=1; #else #declare BM_Flex=0; #end #if (BM_Gender=0) #local Shoulder =<8.25,1,0>; #local Hips =<1.5,2,1.5>; #local UpperarmLength =11; #local ForearmLength =10.5; #local ThighLength =14; #local CalfLength =17; #local R_Leg =transform {translate <-0,-2,-.75>} #local L_Leg =transform {translate < 0,-2,-.75>} #end #if (BM_Gender=1) #local Shoulder =<6.25,1,.25>; #local Hips =<.75,-3,1>; #local UpperarmLength =10.85; #local ForearmLength =10.5; #local ThighLength =14.7; #local CalfLength =18.9; #local R_Leg =transform {translate <-.55,2,-1>} #local L_Leg =transform {translate < .55,2,-1>} #end #local NeckTrans=transform {rotate } #local R_Elbow=vrotate(<0,-UpperarmLength,0>,BM_RA_S2E); #local R_Wrist=vrotate(<0,-ForearmLength,0> ,BM_RA_E2W); #local L_Elbow=vrotate(<0,-UpperarmLength,0>,BM_LA_S2E); #local L_Wrist=vrotate(<0,-ForearmLength,0> ,BM_LA_E2W); #local R_Knee =vrotate(<0,-ThighLength,0>,BM_RL_H2K); #local R_Ankle=vrotate(<0,-CalfLength,0> ,BM_RL_K2A); #local L_Knee =vrotate(<0,-ThighLength,0>,BM_LL_H2K); #local L_Ankle=vrotate(<0,-CalfLength,0> ,BM_LL_K2A); #local R_Upperarm=transform {rotate BM_RA_S2E translate <-Shoulder.x,-UpperarmLength+Shoulder.y,1+Shoulder.z>} #local L_Upperarm=transform {rotate BM_LA_S2E translate < Shoulder.x,-UpperarmLength+Shoulder.y,1+Shoulder.z>} #local R_Forearm =transform {rotate BM_RA_E2W translate R_Elbow translate < -Shoulder.x,1.25-UpperarmLength,1+Shoulder.z>} #local L_Forearm =transform {rotate BM_LA_E2W translate L_Elbow translate < Shoulder.x,1.25-UpperarmLength,1+Shoulder.z>} #local R_HipReplace=; #local L_HipReplace=; #local R_Thigh=transform {rotate BM_RL_H2K translate <-Hips.x+R_HipReplace.x,-29+Hips.y,R_HipReplace.z+Hips.z>} #local L_Thigh=transform {rotate BM_LL_H2K translate < Hips.x+L_HipReplace.x,-29+Hips.y,L_HipReplace.z+Hips.z>} #local R_Calf =transform {rotate BM_RL_K2A translate R_Knee translate <-Hips.x+R_HipReplace.x,-29+Hips.y+BM_Gender,R_HipReplace.z+Hips.z>} #local L_Calf =transform {rotate BM_LL_K2A translate L_Knee translate < Hips.x+L_HipReplace.x,-29+Hips.y+BM_Gender,L_HipReplace.z+Hips.z>} #local TorsoTrans=transform {translate <0,20,-3> rotate translate <0,-20,3> translate <0,20,0> rotate <0,BM_Torso_Rot.y,0> translate <0,-20,0> } #declare NeckTrans=transform {rotate } #local UpperArmModel=#if (BM_Gender=0) blob { threshold BM_Build sphere { 0, 5, 1 scale <1.0, 0.8, 0.9> rotate 45*z }// Shoulder Joint cylinder { <0, 0, 0>, , 3, 1 } sphere { 0, 3.5, 1 scale <2, 1, 1> translate x*(UpperarmLength*.387)} rotate z*-90 } #end #if (BM_Gender=1) blob { threshold BM_Build sphere { 0, 4.2, 1 scale <1.0, 0.8, 0.9> rotate 45*z }// Shoulder Joint cylinder { <0, 0, 0>, , 2.45, 1 } sphere { 0, 2.8, 1 scale <2, 1, 1> translate 4.2*x } rotate z*-90 } #end #local ForearmModel=#if (BM_Gender=0) blob { threshold BM_Build cylinder { <0, 0, 0 >, , 2.0, 1 scale <1, 1, 0.7>} sphere { <0, 0, 0>, 3.5, 1 scale <2.0, 1, 1> translate x*(ForearmLength*.4) } cylinder { <0,0,0>, <(ForearmLength*.4), 0, 0>, 2.0, 1 } rotate z*-90 } #end #if (BM_Gender=1) blob { threshold BM_Build cylinder { <0, 0, 0 >, , 1.96, 1 scale <1, 1, 0.7>} sphere { <0, 0, 0>, 2.8, 1 scale <2.0, 1, 1> translate 4.2*x } cylinder { <0,0,0>, <4.2, 0, 0>, 1.68, 1 } rotate z*-90 } #end #local ThighModel=blob{ threshold BM_Build // Thigh Left #if (BM_Gender=0) // Main Thigh cylinder {<0, -1.4, 0>+<1, -2.8, -0>, <0, -ThighLength, 1>, 4.3, 1} // Muscle sphere { <0, 0, 0>, 4, .5 scale <1.2, 2.0, 1.1> scale <1.25,1,1.25> rotate z*-20 translate <-1.5, -ThighLength*.452, 0.35>+<3.5, -2.8, -1.5> } // Knee sphere { <0, 0, 0>, 2.1, .5 scale <1,1,1> translate <0, -ThighLength, 0> } sphere { <0, 0, 0>, 4, -.35 scale <2,1.5,1> translate <0, -ThighLength, 1.65>} #end #if (BM_Gender=1) // Main Thigh cylinder {<0, -1.4, 0>+<2, -2.8, -1>, <0, -ThighLength, .5>, 3.43, 1} // Muscle sphere { <0, 0, 0>, 4, .5 scale <1.2, 2.0, 1.0> scale <1.25,1,1.25> rotate z*-20 translate <-1.5, -ThighLength*.452, 0.35>+<3.5, -2.8, -1.5> } // Knee sphere { <0, 0, 0>, 1.8, 1 translate <0, -ThighLength, .1> } sphere { <0, 0, 0>, 4, -.45 scale <2,1.5,1> translate <0, -ThighLength, 3>} #end // Hip sphere { <0,0,0>, 7, 1 scale <0.9, 1.4, 1.1> translate <-1.05, 1.75, 1.05>+<3.5, -2.8, -1.4>} sphere { <0,0,0>, 7, 1 scale <0.7, 0.8, 0.7> translate <-3.5, 2.8, 1.4>+<3.5, -2.8, -1.4>} } #local CalfModel=#if (BM_Gender=0) blob { threshold BM_Build // Main cylinder {<0,0,0>, <0, -CalfLength, 0>, 2.75, 1} // Muscles sphere { <0, 0, 0>, 5.5, 1 scale <1, 2, 1> translate <-.14, -6.65, .84> } sphere { <0, 0, 0>, 4, -.1 scale <2, 4, .75> translate <0, -CalfLength-2, -1> } } #end #if (BM_Gender=1) blob{ threshold BM_Build // Main cylinder {<0,-1.5,0>, <0, -CalfLength, 0>, 2.52, 1} // Muscles sphere { <0, 0, 0>, 4.13, 1 scale <1, 2.4, 1> translate <-.14, -6.65, .84> } sphere { <0, 0, 0>, 2, -.1 scale <2, 4, .75> translate <0, -CalfLength-2, -1> } } #end #local HalfFemaleTorso=union {difference { #if (BM_Torso_Mass>0) blob{ threshold BM_Build // Upper Chest cylinder { <0,0,0>, <0,1.0,0>, 1, 1 scale <1.3,.98,0.8> rotate <10,-10, 0 > } // Ribs cylinder { <0,0,0>, <0,0.7,0>, 1, 1 scale <1,0.6,0.5> rotate <10,0,-15> translate <0, 0.2, -0.20> } // Lower chest cylinder { <0,0,0>, <0,1.0,0>, 1, 1 scale <0.75,0.5,0.6> translate <0.0,-0.6, -0.10> } // Breasts sphere { <0,0,0>, 1, 1 scale <0.45,0.6,0.4> rotate <20,-5,0> translate <0.4, 0.4, -0.50> } sphere { <0,0,0>, 0.42, 1 scale <1,1,0.5> rotate <0,-15,0> translate <0.4, 0.25, -0.52> } #if (BM_TShirt>0) sphere { <0,0,0>, 1, 1 scale <.8,0.55,0.4> translate <0, 0.35, -0.5> } sphere { <0,0,0>, 1, 1 scale <.8,0.55,0.4> translate <0, 0.28, -0.5> } #end // Shoulder cylinder {<0,0,0><.1,0,0>,1,1 scale <0.6, 0.5, 0.4> translate < 0.7, 0.9, 0.2 > } // Clavicle cylinder { <0, 0, 0>, <0.35, 0, 0 >, 0.3, -.8 scale <1.75, 1, 2> rotate <-25,-4, 5> translate <0.0, 1.2, -0.25 >} sphere {<1.4,.8,.2>,.5,-1 } } #end #if (BM_Torso_Mass<=0) object {BM_nul} #end plane { x, -0.000001 } translate y*-2.25 scale 7.5 } #if (BM_Torso_Mass<0) // Object Guides blob { threshold BM_Build-.3 #local Loop=-3; #while (Loop>-20) sphere{0,BM_Guide_Rad,2 translate<0,Loop-3,sin((Loop+2)*pi/(4+abs(Loop)/4))*(.25+abs(Loop/15))+1+Shoulder.z>} #local Loop=Loop-1; #end cylinder{<0,-10,Shoulder.z+1>,BM_Guide_Rad,2} } #end } #local HalfMaleTorso=difference {#if (BM_Torso_Mass>0) blob { threshold BM_Build-.3 // Spine #local Loop=-3; #while (Loop>-15) sphere{0,2*.75,2 translate<0,Loop-3,sin((Loop+2)*pi/(4+abs(Loop)/4))*(.25+abs(Loop/15))+.8>} #if (mod(Loop+2,3)=0) sphere{0,.5*.75,1 translate<0,Loop-3,sin((Loop+2)*pi/(4+abs(Loop)/4))*(.25+abs(Loop/15))+1>} #end #local Loop=Loop-1; #end //Shoulders cylinder{< 8,-9,.5><1,-6.75,1>,1.2,2} cylinder{< 0,0,1><8,0,1>,3,2 scale <1,1.25,1>translate y*-10.25} // Upper Chest cylinder{<8,-9,.5><1,-9.5,-1.25>,1,2} cylinder{<0,-10.5,-.5><6,-10.5,-.5>,2,2 } sphere {0,2,2 scale <1.5,2,1.5> translate <7,-12,.85> } // Chest and Shoulder Blades sphere{0,4,2.5 scale <1.4,2,1.3> rotate x*22 translate < 2.8,-14,0>} // Left sphere{0,4,3 scale <1.4,1,1.3> rotate x*20 rotate z*-20 translate< 3,-13,-.25>} sphere{0,4,-.8 scale <1.4,2,1.3> rotate x*20 translate < 2.8,-14,-3.5> } sphere{0,4,-.8 scale <1.4,1,.5> rotate x*20 translate < 2.8,-12,-3.7> } sphere{0,2,-2 scale <2,2.75,2> rotate z*-10 translate < 9.25,-15.25,1> rotate y*15 } sphere{0,2,-.8 scale <2.5,1.8,.75> rotate y*-45 rotate x*-15 translate < 5,-18,-3.3>} } #end #if (BM_Torso_Mass=0) object {BM_nul} #end #if (BM_Torso_Mass<0) // Object Guides blob { threshold BM_Build-.3 #local Loop=0; #while (Loop>-20) sphere{0,BM_Guide_Rad,2 translate<0,Loop-3,sin((Loop+2)*pi/(4+abs(Loop)/4))*(.25+abs(Loop/15))+1>} #local Loop=Loop-1; #end cylinder{<0,-10,1>,BM_Guide_Rad,2} } #end plane {x,-0.00000001} } #local FemaleAbdomen=#if (BM_Abdomen_Mass>0) blob{ threshold BM_Build // main cylinder { <0,0.5,0>, <0,0.95,0>, 1, 1 scale <1.05, 0.95, 0.85> } // sphere { 0, 1, 1 scale < 1.15, 0.75, 0.55> translate <0, 0.3, 0.0> } sphere { 0, 1, 1 scale <0.5, 0.8, 0.5 > translate <0, 0, 0 > } sphere { 0, 1,-.5 scale <.75,.75,.8> translate <.65,-.3,.75> } sphere { 0, 1,-.5 scale <.75,.75,.8> translate <-.65,-.3,.75>} scale <1.15, 1.2, 1.2> scale <7,7,7> translate y*-30 } #end #if (BM_Abdomen_Mass=0) object {BM_nul} #end #if (BM_Abdomen_Mass<0) // Object Guides blob { threshold BM_Build-.3 #local Loop=-21; #while (Loop>-27) sphere{0,BM_Guide_Rad,2 translate<0,Loop-3,sin((Loop+2)*pi/(4+abs(Loop)/4))*(.25+abs(Loop/15))+1+Hips.z> } #local Loop=Loop-1; #end cylinder{<-Hips.x-BM_Guide_Rad,Hips.y-27,Hips.z-1>,,BM_Guide_Rad,2 } } #end #local MaleAbdomen=object {#if (BM_Abdomen_Mass>0) blob { threshold BM_Build-.3 // Spine #local Loop=-17; #while (Loop>-29) sphere{0,2*.75,2 translate<0,Loop-3,sin((Loop+2)*pi/(4+abs(Loop)/4))*(.25+abs(Loop/15))+.75>} #if (mod(Loop+2,3)=0) sphere{0,.5*.75,1 translate<0,Loop-3,sin((Loop+2)*pi/(4+abs(Loop)/4))*(.25+abs(Loop/15))+1>} #end #local Loop=Loop-1; #end sphere{0,3,1 scale <1.5,2,1.2> rotate <(BM_Torso_Rot.x)*BM_Flex,0,0> translate < 2.8,-19,(BM_Torso_Rot.x/100)*BM_Flex> rotate <0,(BM_Torso_Rot.y/1.5)*BM_Flex,0>} sphere{0,3,1 scale <1.5,2,1.2> rotate <(BM_Torso_Rot.x)*BM_Flex,0,0> translate <-2.8,-19,(BM_Torso_Rot.x/100)*BM_Flex> rotate <0,(BM_Torso_Rot.y/1.5)*BM_Flex,0>} // Abdomen //Left sphere{0,3,1 scale <1.5,1.5,.6> rotate x*-20 rotate z*-45 translate < 3,-25.5,1.9>} sphere{0,3,1 scale <.8,1.5,.5> rotate x*-10 rotate y*90 translate < 5.4,-25,0>} sphere{0,3,1 scale <1.5,1.5,1 > translate < 2.5,-24,0>} sphere{0,3,2 scale <1,1,1> translate < 1.5,-17.5,-1.5+BM_Torso_Rot.x/60> rotate <0,(BM_Torso_Rot.y/1.3)*BM_Flex,0>} sphere{0,3,2 scale <1,1,1.2> translate < 1.5,-20,-1.25> rotate <0,(BM_Torso_Rot.y/1.2)*BM_Flex,0>} sphere{0,3,2 scale <1,1.2,1.2> translate < 1.5,-22.5,-1.25> rotate <0,(BM_Torso_Rot.y/1.1)*BM_Flex,0>} sphere{0,3,2 scale <1,1,1.2> translate < 1.5,-25,-1> rotate <0,(BM_Torso_Rot.y/1.05)*BM_Flex,0>} //Right sphere{0,3,1 scale <1.5,1.5,.6> rotate x*-20 rotate z*45 translate <-3,-25.5,1.9>} sphere{0,3,1 scale <.8,1.7,.5> rotate x*-10 rotate y*-90 translate < -5.4,-25,0>} sphere{0,3,1 scale <1.5,1.5,1 > translate <-2.5,-24,0>} sphere{0,3,2 scale <1,1,1> translate <-1.5,-17.5,-1.5+BM_Torso_Rot.x/60> rotate <0,(BM_Torso_Rot.y/1.3)*BM_Flex,0>} sphere{0,3,2 scale <1,1,1.2> translate <-1.5,-20,-1.25> rotate <0,(BM_Torso_Rot.y/1.2)*BM_Flex,0>} sphere{0,3,2 scale <1,1.2,1.2> translate <-1.5,-22.5,-1.25> rotate <0,(BM_Torso_Rot.y/1.1)*BM_Flex,0>} sphere{0,3,2 scale <1,1,1.2> translate <-1.5,-25,-1> rotate <0,(BM_Torso_Rot.y/1.05)*BM_Flex,0>} // Pelvis sphere{0,5,2 scale <1.2,1.4,1> translate<0,-27,-.5> } //Front & Back // Left sphere{0,3,1 scale <1.4,.8,1.5> rotate z* 75 translate< 4,-28,-.5>} // Right sphere{0,3,1 scale <1.4,.8,1.5> rotate z*-75 translate<-4,-28,-.5>} } #end #if (BM_Abdomen_Mass=0) object {BM_nul} #end #if (BM_Abdomen_Mass<0) // Object Guides blob { threshold BM_Build-.3 #local Loop=-21; #while (Loop>-27) sphere{0,BM_Guide_Rad,2 translate<0,Loop-3,sin((Loop+2)*pi/(4+abs(Loop)/4))*(.25+abs(Loop/15))+1+Hips.z>} #local Loop=Loop-1; #end cylinder{<-Hips.x-BM_Guide_Rad,Hips.y-31,Hips.z-1>,,BM_Guide_Rad,2 } } #end } // Build the Torso union { union { union { #if (BM_Gender=0) object {HalfMaleTorso scale <1,1,1.15> } object {HalfMaleTorso scale<-1,1,1.15> } // Neck union { #if (BM_Neck_Mass>=1) blob { threshold BM_Build cylinder { <0,0,0>, <0,0.6,0>, 0.6, 1 scale <.9, 1.5, 0.7> rotate -5*x translate 0.15*z} cylinder { <0,0,0>, <0,0.6,0>, 0.4, 1 scale <.85, 1.5, 0.7> translate -0.085*z } sphere {<0,1,0>,1,-2} scale 7 scale <1,1,.85> } #end #if (BM_Neck_Mass=0) object {BM_nul} #end #if (BM_Neck_Mass<0) blob { threshold BM_Build cylinder { <0,0,0>, <0,0.6,0>, BM_Guide_Rad, 1 rotate -5*x translate 0.15*z} } #end object {BM_Neck_Object} material { texture {BM_Skin_Tex} #ifdef (Neck_IMap) texture { pigment { image_map { png Neck_IMap map_type 2 interpolate 4 once } rotate y*-90 scale 40 translate <0,-40,0> } #ifdef (BM_Map_Finish) finish {BM_Map_Finish} #end #ifdef (BM_Map_Normal) normal {BM_Map_Normal} #end #ifdef (Neck_BMap) normal { bump_map { png Neck_BMap map_type 2 interpolate 4 once bump_size Bump_Map_Size } rotate y*-90 scale 40 translate <0,-40,0> } #end } #end } transform NeckTrans translate y*-6 translate z*.75 } #end #if (BM_Gender=1) object {HalfFemaleTorso } object {HalfFemaleTorso scale<-1,1,1> } // Neck union { #if (BM_Neck_Mass>=1) blob { threshold BM_Build cylinder { <0,0,0>, <0,0.6,0>, 0.6, 1 scale <.9, 1.5, 0.7> rotate -5*x translate 0.15*z} cylinder { <0,0,0>, <0,0.6,0>, 0.4, 1 scale <.85, 1.5, 0.7> translate -0.085*z } sphere {<0,1,0>,1,-2} scale 7 scale <1,1,.85>*.9 } #end #if (BM_Neck_Mass=0) object {BM_nul} #end #if (BM_Neck_Mass<0) blob { threshold BM_Build cylinder { <0,0,0>, <0,0.6,0>, BM_Guide_Rad, 1 rotate -5*x translate 0.15*z} } #end object {BM_Neck_Object} material { texture {BM_Skin_Tex} #ifdef (Neck_IMap) texture { pigment { image_map { png Neck_IMap map_type 2 interpolate 4 once } rotate y*-90 scale 40 translate <0,-40,0> } #ifdef (BM_Map_Finish) finish {BM_Map_Finish} #end #ifdef (BM_Map_Normal) normal {BM_Map_Normal} #end #ifdef (Neck_BMap) normal { bump_map { png Neck_BMap map_type 2 interpolate 4 once bump_size Bump_Map_Size } rotate y*-90 scale 40 translate <0,-40,0> } #end } #end } transform NeckTrans translate y*-6 translate z*.75 } #end object {BM_Torso_Object} //Material material { texture {BM_Skin_Tex} #ifdef (Torso_IMap) texture { pigment { image_map { png Torso_IMap map_type 2 interpolate 4 once } rotate y*-90 scale 40 translate <0,-40,0> } #ifdef (BM_Map_Finish) finish {BM_Map_Finish} #end #ifdef (BM_Map_Normal) normal {BM_Map_Normal} #end #ifdef (Torso_BMap) normal { bump_map { png Torso_BMap map_type 2 interpolate 4 once bump_size Bump_Map_Size } rotate y*-90 scale 40 translate <0,-40,0> } #end } #end } } //Arms // Upperarm - Right union { #if (BM_R_Upperarm_Mass> 0) object {UpperArmModel} #end #if (BM_R_Upperarm_Mass= 0) object {BM_nul} #end #if (BM_R_Upperarm_Mass< 0) // Object Guides blob { threshold BM_Build-.3 cylinder{<0,0,0>,<0,-UpperarmLength,0>,BM_Guide_Rad,2} } #end object {BM_Upperarm_R_Object} material { texture {BM_Skin_Tex} #ifdef (Upperarm_R_IMap) texture { pigment { image_map { png Upperarm_R_IMap map_type 2 interpolate 4 once } scale 20 translate <0,-15,0> } #ifdef (BM_Map_Finish) finish {BM_Map_Finish} #end #ifdef (BM_Map_Normal) normal {BM_Map_Normal} #end #ifdef (Upperarm_R_BMap) normal { bump_map { png Upperarm_R_BMap map_type 2 interpolate 4 once bump_size Bump_Map_Size } scale 20 translate <0,-15,0> } #end } #end } transform R_Upperarm } // Upperarm - Left union { #if (BM_L_Upperarm_Mass> 0) object {UpperArmModel scale <-1,1,1>} #end #if (BM_L_Upperarm_Mass= 0) object {BM_nul} #end #if (BM_L_Upperarm_Mass<0) // Object Guides blob { threshold BM_Build-.3 cylinder{<0,0,0>,<0,-UpperarmLength,0>,BM_Guide_Rad,2} } #end object {BM_Upperarm_L_Object} material { texture {BM_Skin_Tex} #ifdef (Upperarm_L_IMap) texture { pigment { image_map { png Upperarm_L_IMap map_type 2 interpolate 4 once } rotate y*180 scale 20 translate <0,-15,0> } #ifdef (BM_Map_Finish) finish {BM_Map_Finish} #end #ifdef (BM_Map_Normal) normal {BM_Map_Normal} #end #ifdef (Upperarm_L_BMap) normal { bump_map { png Upperarm_L_BMap map_type 2 interpolate 4 once bump_size Bump_Map_Size } rotate y*180 scale 20 translate <0,-15,0> } #end } #end } transform L_Upperarm } // Forearm - Right union { #if (BM_R_Forearm_Mass>0) object {ForearmModel} #end #if (BM_R_Forearm_Mass=0) object {BM_nul} #end #if (BM_R_Forearm_Mass<0) // Object Guides blob { threshold BM_Build-.3 cylinder{0,<0,-ForearmLength,0>,BM_Guide_Rad,2} } #end object {BM_Forearm_R_Object} material { texture {BM_Skin_Tex} #ifdef (Forearm_R_IMap) texture { pigment { image_map { png Forearm_R_IMap map_type 2 interpolate 4 once } scale 15 translate <0,-12,0> } #ifdef (BM_Map_Finish) finish {BM_Map_Finish} #end #ifdef (BM_Map_Normal) normal {BM_Map_Normal} #end #ifdef (Forearm_R_BMap) normal { bump_map { png Forearm_R_BMap map_type 2 interpolate 4 once bump_size Bump_Map_Size } scale 15 translate <0,-15,0> } #end } #end } transform R_Forearm } // Forearm - Left union { #if (BM_L_Forearm_Mass> 0) object {ForearmModel scale <-1,1,1>} #end #if (BM_L_Forearm_Mass=0) object {BM_nul} #end #if (BM_L_Forearm_Mass<0) // Object Guides blob { threshold BM_Build-.3 cylinder{0,<0,-ForearmLength,0>,BM_Guide_Rad,2} } #end object {BM_Forearm_L_Object} material { texture {BM_Skin_Tex} #ifdef (Forearm_L_IMap) texture { pigment { image_map { png Forearm_L_IMap map_type 2 interpolate 4 once } rotate y*180 scale 15 translate <0,-12,0> } #ifdef (BM_Map_Finish) finish {BM_Map_Finish} #end #ifdef (BM_Map_Normal) normal {BM_Map_Normal} #end #ifdef (Forearm_L_BMap) normal { bump_map { png Forearm_L_BMap map_type 2 interpolate 4 once bump_size Bump_Map_Size } rotate y*180 scale 15 translate <0,-15,0> } #end } #end } transform L_Forearm } transform TorsoTrans } // Abdomen union { #if (BM_Gender=0) object {MaleAbdomen} #end #if (BM_Gender=1) object {FemaleAbdomen scale <1,1,.95> translate <0,0,-.5>} #end object {BM_Abdomen_Object} //Material material { texture {BM_Skin_Tex} #ifdef (Abdomen_IMap) texture { pigment { image_map { png Abdomen_IMap map_type 2 interpolate 4 once } rotate y*-90 scale 40 translate <0,-40,0> } #ifdef (BM_Map_Finish) finish {BM_Map_Finish} #end #ifdef (BM_Map_Normal) normal {BM_Map_Normal} #end #ifdef (Abdomen_BMap) normal { bump_map { png Abdomen_BMap map_type 2 interpolate 4 once bump_size BM_Bump_Map_Size } rotate y*-90 scale 40 translate <0,-40,0> } #end } #end } } // Right Leg union { // Thigh - Right union { #if (BM_R_Thigh_Mass> 0) object {ThighModel scale <-1,1,1>} #end #if (BM_R_Thigh_Mass= 0) object {BM_nul} #end #if (BM_R_Thigh_Mass< 0) // Object Guides blob{ threshold BM_Build-.3 cylinder{<-Hips.x,0,0>,<0,-ThighLength,0>,BM_Guide_Rad,2} } #end object {BM_Thigh_R_Object} material { texture {BM_Skin_Tex} #ifdef (Thigh_R_IMap) texture { pigment { image_map { png Thigh_R_IMap map_type 2 interpolate 4 once } rotate y*-90 scale 25 translate <0,-17.5,0> } #ifdef (BM_Map_Finish) finish {BM_Map_Finish} #end #ifdef (BM_Map_Normal) normal {BM_Map_Normal} #end #ifdef (Thigh_R_BMap) normal { bump_map { png Thigh_R_BMap map_type 2 interpolate 4 once bump_size Bump_Map_Size } rotate y*-90 scale 25 translate <0,-17.5,0> } #end } #end } transform R_Thigh } // Calf - Right union { #if (BM_R_Calf_Mass>0) object {CalfModel} #end #if (BM_R_Calf_Mass=0) object {BM_nul} #end #if (BM_R_Calf_Mass<0) // Object Guides blob{ threshold BM_Build-.3 cylinder{<0,0,0>,<0,-CalfLength,0>,BM_Guide_Rad,2} } #end object {BM_Calf_R_Object} material { texture {BM_Skin_Tex} #ifdef (Calf_R_IMap) texture { pigment { image_map { png Calf_R_IMap map_type 2 interpolate 4 once } rotate y*-90 scale 25 translate <0,-20,0> } #ifdef (BM_Map_Finish) finish {BM_Map_Finish} #end #ifdef (BM_Map_Normal) normal {BM_Map_Normal} #end #ifdef (Calf_R_BMap) normal { bump_map { png Calf_R_BMap map_type 2 interpolate 4 once bump_size Bump_Map_Size } rotate y*-90 scale 25 translate <0,-20,0> } #end } #end } transform R_Calf } transform R_Leg } // Thigh - Left union { union { #if (BM_L_Thigh_Mass>0) object {ThighModel} #end #if (BM_L_Thigh_Mass=0) object {BM_nul} #end #if (BM_L_Thigh_Mass<0) // Object Guides blob{ threshold BM_Build-.3 cylinder{,<0,-ThighLength,0>,BM_Guide_Rad,2} } #end object {BM_Thigh_L_Object} material { texture {BM_Skin_Tex} #ifdef (Thigh_L_IMap) texture { pigment { image_map { png Thigh_L_IMap map_type 2 interpolate 4 once } rotate y*-90 scale 25 translate <0,-17.5,0> } #ifdef (BM_Map_Finish) finish {BM_Map_Finish} #end #ifdef (BM_Map_Normal) normal {BM_Map_Normal} #end #ifdef (Thigh_L_BMap) normal { bump_map { png Thigh_L_BMap map_type 2 interpolate 4 once bump_size Bump_Map_Size } rotate y*-90 scale 25 translate <0,-17.5,0> } #end } #end } transform L_Thigh } // Calf - Left union { #if (BM_L_Calf_Mass>0) object {CalfModel scale <-1,1,1>} #end #if (BM_L_Calf_Mass=0) object {BM_nul} #end #if (BM_L_Calf_Mass<0) // Object Guides blob{ threshold BM_Build-.3 cylinder{<0,0,0>,<0,-CalfLength,0>,BM_Guide_Rad,2} } #end object {BM_Calf_L_Object} material { texture {BM_Skin_Tex} #ifdef (Calf_L_IMap) texture { pigment { image_map { png Calf_L_IMap map_type 2 interpolate 4 once } rotate y*-90 scale 25 translate <0,-20,0> } #ifdef (BM_Map_Finish) finish {BM_Map_Finish} #end #ifdef (BM_Map_Normal) normal {BM_Map_Normal} #end #ifdef (Calf_L_BMap) normal { bump_map { png Calf_L_BMap map_type 2 interpolate 4 once bump_size Bump_Map_Size } rotate y*-90 scale 25 translate <0,-20,0> } #end } #end } transform L_Calf } transform L_Leg } } //Origin Variables before Scale Applied #local ReverseTorso=transform {translate <0,20,0> rotate <0,-BM_Torso_Rot.y,0> translate <0,-20,0> translate <0,20,-3> rotate <-BM_Torso_Rot.x,0,-BM_Torso_Rot.z> translate <0,-20,3> } #declare BMOKR=transform {translate -R_Knee} #declare BMOKL=transform {translate <-Hips.x,31-Hips.y,Hips.z-1>-L_Knee} #declare BMOAF=transform {translate <0,29,4.5-(BM_Gender/4)>} #declare BMOAB=transform {translate <0,29,-4.5+(BM_Gender/1.5)>} #declare BMOAR=transform {translate <5+(BM_Gender/2)+Hips.x,27,0>} #declare BMOAL=transform {translate <-(5+(BM_Gender/2)+Hips.x),27,0>} #if (BM_Gender=0) #declare BMOKR=transform {translate -R_Knee} #declare BMOKL=transform {translate <-Hips.x,31-Hips.y,Hips.z-1>-L_Knee} #declare BMOHR=transform {translate } #declare BMOHL=transform {translate <-Hips.x-3,31-Hips.y,Hips.z>} #declare BMOAU=transform {translate <0,34.75-Hips.y,0>} #declare BMOTF=transform {transform ReverseTorso translate <0,13.5,4.25>} #declare BMOTR=transform {transform ReverseTorso translate <8,13.5,0> rotate z*-15 translate <-.35,0,0> } #declare BMOTL=transform {transform ReverseTorso translate <-8,13.5,0> rotate z*15 translate <.35,0,0> } #declare BMOTB=transform {transform ReverseTorso translate <0,13.5,-5.5> rotate x*-20 } #declare BMOTT=transform {transform ReverseTorso translate <0,8,-3.5> } #end #if (BM_Gender=1) #declare BMOKR=transform {translate -R_Knee} #declare BMOKL=transform {translate <-Hips.x,27-Hips.y,Hips.z-1>-L_Knee} #declare BMOHR=transform {translate } #declare BMOHL=transform {translate <-Hips.x-3,27-Hips.y,Hips.z>} #declare BMOAU=transform {translate <0,30.5-Hips.y,0>} #declare BMOTF=transform {transform ReverseTorso translate <0,14.5,5.5>} #declare BMOTR=transform {transform ReverseTorso translate <7,13.5,0> rotate z*-15 translate <-.35,0,0> } #declare BMOTL=transform {transform ReverseTorso translate <-7,13.5,0> rotate z*15 translate <.35,0,0> } #declare BMOTB=transform {transform ReverseTorso translate <0,10,-4.5> rotate x*-9 } #declare BMOTT=transform {transform ReverseTorso translate <0,6.5,-3.5> } #end #declare BMOSR=transform {transform ReverseTorso translate < Shoulder.x,UpperarmLength-Shoulder.y,-1-Shoulder.z>} #declare BMOSL=transform {transform ReverseTorso translate <-Shoulder.x,UpperarmLength-Shoulder.y,-1-Shoulder.z>} #declare BMOER=transform {transform ReverseTorso translate < Shoulder.x,UpperarmLength-Shoulder.y,-1-Shoulder.z>-R_Elbow} #declare BMOEL=transform {transform ReverseTorso translate <-Shoulder.x,UpperarmLength-Shoulder.y,-1-Shoulder.z>-L_Elbow} #end // End of Torso Macro