1139 lines
58 KiB
PHP
1139 lines
58 KiB
PHP
/***************************************************************
|
|
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 <BM_Neck_Rot.x,0,BM_Neck_Rot.z>}
|
|
|
|
#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=<BM_RL_H2K.y/-50,0,BM_RL_H2K.y/-50>;
|
|
#local L_HipReplace=<BM_LL_H2K.y/-50,0,BM_LL_H2K.y/50>;
|
|
#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 <BM_Torso_Rot.x,0,BM_Torso_Rot.z> translate <0,-20,3>
|
|
translate <0,20,0> rotate <0,BM_Torso_Rot.y,0> translate <0,-20,0>
|
|
}
|
|
#declare NeckTrans=transform {rotate <BM_Neck_Rot.x,0,BM_Neck_Rot.z>}
|
|
|
|
#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>, <UpperarmLength, 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>, <UpperarmLength, 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 >, <ForearmLength, 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 >, <ForearmLength, 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><Shoulder.x,-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><Shoulder.x,-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>,<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>,<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{<Hips.x,0,0>,<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 <Hips.x,31-Hips.y,Hips.z-1>-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 <Hips.x,31-Hips.y,Hips.z-1>-R_Knee}
|
|
#declare BMOKL=transform {translate <-Hips.x,31-Hips.y,Hips.z-1>-L_Knee}
|
|
#declare BMOHR=transform {translate <Hips.x+3,31-Hips.y,Hips.z>}
|
|
#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 <Hips.x,27-Hips.y,Hips.z-1>-R_Knee}
|
|
#declare BMOKL=transform {translate <-Hips.x,27-Hips.y,Hips.z-1>-L_Knee}
|
|
#declare BMOHR=transform {translate <Hips.x+3,27-Hips.y,Hips.z>}
|
|
#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
|