3d/blbman40/bmfeet.inc

321 lines
10 KiB
PHP

/****************************************************************
Feet Macro for use with "bmpeople.inc" v4.0
refer to "bmmanual.txt" for usage information
*******************************************************************/
#ifndef (BM_Defaults)
#include "bmdefs.inc"
#end
#macro FootModel (LR,ToeAng)
union {
blob{
threshold BM_Build
cylinder { <0,0,0>,<0,.00001,0> 0.36, .75 // joint
scale <1, 0.8, .5>
translate <0.0, 0.08, -0.03>
}
/*
sphere { <0,0,0>, 0.36, -.75 // joint
scale <1, 1, 1.5>
translate <0.0, 0.1, 0.1>
} */
/*
sphere {0,.3,-.75
scale <2,1,1>
translate <0,-.1,0> pigment {rgb x}
}
*/
cylinder { <-.1,.05,-.1>,<.1,.05,-.15>,.1,1 }
cylinder { <0, 0, -0.1>, <0, .1, -0.25>, 0.4, 1 //
scale <0.6,0.6, 1>
translate <-0.01, 0, 0>
}
cylinder { <0, 0, -0.05>, <0, 0, -0.45>, 0.3, 1
scale <0.9,0.7, 1>
translate <0.05, -0.08, 0>
}
cylinder { <0, 0, -0.5>, <0, 0, -0.75>, 0.3, 1 // side
scale <0.9, 0.5, 1>
translate <0.15, -0.15, 0>
}
cylinder { <0, 0, -0.15>, <0, 0, -0.65>, 0.4, 1 // bottom & heel
scale <0.9,0.55, 1>
translate <0, -0.17,0>
}
sphere { 0,.1, 1
scale <1,1,1.5>
translate <-0.12, -.21, -0.8>
}
sphere { 0,.1, 1
scale <1,1,1.5>
translate <0.01, -.22, -0.8>
}
sphere { 0,.1, 1
scale <1,1,1.5>
translate <0.12, -.22, -0.8>
}
sphere { <0,0,0>,.1, 1
scale <1,1,1.5>
translate <0.22, -.2, -0.8>
}
sphere { 0,.1, 1
scale <1,1,1.5>
translate <0.28, -.18, -0.8>
}
// Heel
cylinder {<0,0,0>,<0,.4,0>,.3,.5
scale <1,.5,1>
rotate x*-15
translate <0.00, -0.17,0>
}
sphere {0,.3,1
scale <.75,.5,.8>
translate <0.05, -0.15,-.7>
}
sphere {0,.3,-.85
scale <.75,2,.9>
rotate z*55
translate <-.3,-.27,-.45>
}
}
// Toes
union {
// 1st Toe (Big)
blob {
threshold BM_Build
cylinder { <0, 0, .1>, <0, 0, -0.2>, 0.16, 1
}
sphere { <0,0,.2>,.25,-.7 }
rotate <ToeAng, 0, 0>
translate <-0.12, 0, -0.8>
//sturm
}
// 2nd Toe
blob {
threshold BM_Build
cylinder { <0, 0, 0>, <0, 0, -0.19>, 0.14, 1
rotate ToeAng*x
translate <0.01, 0.01, -0.8>}
//sturm
}
// 3rd Toe
blob {
threshold BM_Build
cylinder { <0, 0, 0>, <0, 0, -0.17>, 0.13, 1
rotate ToeAng*x
translate <0.12, 0.005, -0.8>}
//sturm
}
// 4th Toe
blob {
threshold BM_Build
cylinder { <0, 0, 0>, <0, 0, -0.15>, 0.12, 1
rotate <ToeAng, 5, 0>
translate <0.22, 0, -0.8>}
sturm
}
// 5th Toe (Little)
blob {
threshold BM_Build
cylinder { <0, 0, 0>, <0, 0, -0.13>, 0.11, 1
rotate <ToeAng, 10, 0>
translate <0.3, 0,-0.8>}
//sturm
}
translate <0, -0.175, 0>
}
translate <0,.05,0>
#if (BM_Gender=0)
scale <8.5,8,8>
#end
#if (BM_Gender=1)
scale 7
#end
rotate -3*z
scale <LR,1,1>
}
#end
#macro bmfeet()
#if (BM_Gender=0)
#local Hips =<1.5,1.5,1.5>;
#local ThighLength =14;
#local CalfLength =17;
#local Ankle =<.15,-1.5,1.35>;
#local R_Foot =< 0,-1,-1.4>;
#local L_Foot =< 0,-1,-1.4>;
#end
#if (BM_Gender=1)
#local Hips =<.75,-2.5,1.5>;
#local ThighLength =14.7;
#local CalfLength =18.9;
#local Ankle =<0,-1,.25>;
#local R_Foot =<-.55,2,-1>;
#local L_Foot =< .55,2,-1>;
#end
#local RL_Knee =vrotate(<0,-ThighLength,0>,BM_RL_H2K);
#local RL_Ankle=vrotate(<0,-CalfLength,0> ,BM_RL_K2A);
#local LL_Knee =vrotate(<0,-ThighLength,0>,BM_LL_H2K);
#local LL_Ankle=vrotate(<0,-CalfLength,0> ,BM_LL_K2A);
#local R_HipReplace=<BM_RL_H2K.y/-50,0,BM_RL_H2K.y/-50>-<BM_RL_K2A.y/-50,0,BM_RL_K2A.y/-50>;
#local L_HipReplace=<BM_LL_H2K.y/-50,0,BM_LL_H2K.y/ 50>-<BM_LL_K2A.y/-50,0,BM_LL_K2A.y/ 50>;
#local R_Foot_Trans=transform {rotate BM_RF_Rot rotate BM_RL_K2A translate RL_Knee+RL_Ankle+<-Hips.x+R_HipReplace.x,-29+Hips.y+BM_Gender,R_HipReplace.z+Hips.z> translate R_Foot}
#local L_Foot_Trans=transform {rotate BM_LF_Rot rotate BM_LL_K2A translate LL_Knee+LL_Ankle+< Hips.x+L_HipReplace.x,-29+Hips.y+BM_Gender,L_HipReplace.z+Hips.z> translate L_Foot}
#declare BMOFL=transform {translate -(LL_Knee+LL_Ankle+<0,-ThighLength-CalfLength,0>)
#if (BM_Gender=0)
translate -L_Foot-<0,.5,0>
#end
#if (BM_Gender=1)
translate -L_Foot-<0,1,0>
#end
rotate -BM_LF_Rot
rotate -BM_LL_K2A
translate z*4
}
#declare BMOFR=transform {translate -(RL_Knee+RL_Ankle+<0,-ThighLength-CalfLength,0>)
#if (BM_Gender=0)
translate -R_Foot-<0,.5,0>
#end
#if (BM_Gender=1)
translate -R_Foot-<0,1,0>
#end
rotate -BM_RF_Rot
rotate -BM_RL_K2A
translate z*4
}
//#declare BM_RF_Location=<0,0,4>+R_Foot+<-Hips.x+R_HipReplace.x,-29+Hips.y+BM_Gender,R_HipReplace.z+Hips.z>+RL_Ankle+RL_Knee;
#declare BM_RF_Location=vrotate (<0,0,4>,BM_RF_Rot);
#declare BM_LF_Location=vrotate (<0,0,-4>,BM_LF_Rot);
#if (BM_Gender=1)
#declare BM_RF_Location=BM_RF_Location+<0,6,0>+< Hips.x,Hips.y,Hips.z>+RL_Ankle+RL_Knee;
#declare BM_LF_Location=BM_LF_Location+<0,6,0>+<-Hips.x,Hips.y,Hips.z>+LL_Ankle+LL_Knee;
#end
#if (BM_Gender=0)
#declare BM_RF_Location=BM_RF_Location+<0,.25,0>+< Hips.x,Hips.y,Hips.z>+RL_Ankle+RL_Knee;
#declare BM_LF_Location=BM_LF_Location+<0,.25,0>+<-Hips.x,Hips.y,Hips.z>+LL_Ankle+LL_Knee;
#end
union {
// Right Foot
union {
object {
#if (BM_R_Foot>0)
FootModel (-1,BM_Toe_Angle.z)
#else
BM_nul
#end
translate Ankle
}
object {BM_Foot_R_Object}
material {
texture {BM_Skin_Tex}
#ifdef (Foot_R_IMap)
texture {
pigment {
image_map {
png Foot_R_IMap
map_type 0
interpolate 4
once
}
scale 8
translate <-4,-4,-4>
}
#ifdef (BM_Map_Finish)
finish {BM_Map_Finish}
#end
#ifdef (BM_Map_Normal)
normal {BM_Map_Normal}
#end
#ifdef (Foot_R_BMap)
normal {
bump_map {
png Foot_R_BMap
map_type 2
interpolate 4
once
bump_size BM_Bump_Map_Size
}
scale 8
translate <-4,-4,-4>
}
#end
}
#end
}
transform R_Foot_Trans
}
// Left Foot
union {
object {
#if (BM_L_Foot>0)
FootModel (1,BM_Toe_Angle.x)
#else
BM_nul
#end
translate Ankle
}
object {BM_Foot_L_Object}
material {
texture {BM_Skin_Tex}
#ifdef (Foot_L_IMap)
texture {
pigment {
image_map {
png Foot_L_IMap
map_type 0
interpolate 4
once
}
scale 8
translate <-4,-4,-4>
}
#ifdef (BM_Map_Finish)
finish {BM_Map_Finish}
#end
#ifdef (BM_Map_Normal)
normal {BM_Map_Normal}
#end
#ifdef (Foot_L_BMap)
normal {
bump_map {
png Foot_L_BMap
map_type 2
interpolate 4
once
bump_size BM_Bump_Map_Size
}
scale 8
translate <-4,-4,-4>
}
#end
}
#end
}
transform L_Foot_Trans
}
}
#end
// End of Feet Macro