These are lego pieces I put together to expand the Anton Raves Lego Library.
#macro arrow(color_tex) #if (setting = 0) merge { cylinder { -8*z, 11*z, 0.6 } sphere { 11*z, 0.6 } texture { color_tex } } #else merge { cylinder { -8*z, 11*z, 0.6 } // shaft sphere { -8*z, 0.6 } sphere { 11*z, 0.6 } prism { quadratic_spline 0, 0.6, 5, <2,-7>, <-2,-7>, <0,-11>, <2,-7>, <-2,-7> translate <0,-0.3,0> } // head cylinder { <0,0,5.4>, <2,0,7.4>, 0.4 } // fletching sphere { <2,0,7.4>, 0.4 } cylinder { <0,0,5.4>, <-2,0,7.4>, 0.4 } sphere { <-2,0,7.4>, 0.4 } cylinder { <0,0,6.4>, <2,0,8.4>, 0.4 } sphere { <2,0,8.4>, 0.4 } cylinder { <0,0,6.4>, <-2,0,8.4>, 0.4 } sphere { <-2,0,8.4>, 0.4 } cylinder { <0,0,7.4>, <2,0,9.4>, 0.4 } sphere { <2,0,9.4>, 0.4 } cylinder { <0,0,7.4>, <-2,0,9.4>, 0.4 } sphere { <-2,0,9.4>, 0.4 } cylinder { <0,0,8.4>, <1.6,0,10>, 0.4 } sphere { <1.6,0,10>, 0.4 } cylinder { <0,0,8.4>, <-1.6,0,10>, 0.4 } sphere { <-1.6,0,10>, 0.4 } texture { color_tex } } #end #end
#macro bow(color_tex) #local hand_placement = <0, -0.8, -3>; #if (setting = 0) merge { cylinder { -8.5*y, 8.5*y, 1.4 } sphere_sweep { cubic_spline, 7, <0,-8.5,0>, 1.25, <0,8.5,0>, 1.25, <0,17,2>, 1, <0,20.8,4>, .9, <0,23.3,6>, .8, <0,26,9>, .6, <0,26.5,10>, .6 } sphere_sweep { cubic_spline, 7, <0,8.5,0>, 1.25, <0,-8.5,0>, 1.25, <0,-17,2>, 1, <0,-20.8,4>, .9, <0,-23.3,6>, .8, <0,-26,9>, .6, <0,-26.5,10>, .6 } cylinder { <0,0,11>, <0,25,8>, .5 } cylinder { <0,0,11>, <0,-25,8>, .5 } cylinder { 11*z, 15*z, 0.6 } sphere { 15*z, 0.6 } object { arrow(color_tex) rotate 90*z translate <0,0,0> } texture { color_tex } } #else merge { cylinder { -8.5*y, 8.5*y, 1.4 } // Handgrip sphere_sweep { cubic_spline, 7, <0,-8.5,0>, 1.25, <0,8.5,0>, 1.25, <0,17,2>, 1, <0,20.8,4>, .9, <0,23.3,6>, .8, <0,26,9>, .6, <0,26.5,10>, .6 } sphere_sweep { cubic_spline, 7, <0,8.5,0>, 1.25, <0,-8.5,0>, 1.25, <0,-17,2>, 1, <0,-20.8,4>, .9, <0,-23.3,6>, .8, <0,-26,9>, .6, <0,-26.5,10>, .6 } cylinder { <0,0,11>, <0,25,8>, .5 } // bowstring cylinder { <0,0,11>, <0,-25,8>, .5 } cylinder { 11*z, 15*z, 0.6 } // arrow tail sphere { 15*z, 0.6 } object { arrow(color_tex) rotate 90*z translate <0,0,0> } #if (setting > 1) union { // hand grip torus { 1.4, 0.1 scale <1,3,1> translate <0,7.5,0> } torus { 1.4, 0.1 scale <1,3,1> translate <0,6,0> } torus { 1.4, 0.1 scale <1,3,1> translate <0,4.5,0> } torus { 1.4, 0.1 scale <1,3,1> translate <0,3,0> } torus { 1.4, 0.1 scale <1,3,1> translate <0,1.5,0> } torus { 1.4, 0.1 scale <1,3,1> translate <0,0,0> } torus { 1.4, 0.1 scale <1,3,1> translate <0,-1.5,0> } torus { 1.4, 0.1 scale <1,3,1> translate <0,-3,0> } torus { 1.4, 0.1 scale <1,3,1> translate <0,-4.5,0> } torus { 1.4, 0.1 scale <1,3,1> translate <0,-6,0> } torus { 1.4, 0.1 scale <1,3,1> translate <0,-7.5,0> } } #end texture { color_tex } } #end #end
#macro harness(color_tex) #if (setting = 0) merge { object{ f_block2_2(color_tex) translate <0,0,0> } object{ f_block1_2(color_tex,1) translate <0,6.4,40> } cylinder{ <-5.5,1.6,4>, <-5.5,1.6,12>, 1.5 } cylinder{ <13.5,1.6,4>, <13.5,1.6,12>, 1.5 } cylinder{ <-5.5,1.6,12>, <-5.5,8,36>, 1.5 } cylinder{ <13.5,1.6,12>, <13.5,8,36>, 1.5 } cylinder{ <-5.5,8,36>, <-5.5,8,52>, 1.5 } cylinder{ <13.5,8,36>, <13.5,8,52>, 1.5 } } #else merge { object{ f_block2_2(color_tex) translate <0,0,0> } object{ f_block1_2(color_tex,1) translate <0,6.4,40> } cylinder{ <-5.5,1.6,4>, <-5.5,1.6,12>, 1.5 } cylinder{ <13.5,1.6,4>, <13.5,1.6,12>, 1.5 } cylinder{ <-5.5,1.6,12>, <-5.5,8,36>, 1.5 } cylinder{ <13.5,1.6,12>, <13.5,8,36>, 1.5 } cylinder{ <-5.5,8,36>, <-5.5,8,52>, 1.5 } cylinder{ <13.5,8,36>, <13.5,8,52>, 1.5 } #if (setting > 1) box{ <-4.5,1.1,4.2>,<12.5,2.1,11.8> } box{ <-4.5,7.5,36.2>,<12.5,8.5,43.8> } #end texture { color_tex } } #end #end
#macro quiver(color_tex) #if (setting = 0) merge { box { <-2.5,-9.5,0>, <2.5,9.5,2.5> rotate 45*z translate <0, -9.5, 10> } texture { color_tex } } #else merge { difference { // neck straps merge { cylinder { 0.000001*y, 0.999999*y, 4 } box { <-4,0.000001,0>, <4,0.999999,4.999999> } } cylinder { 0*y, 1*y, 2 } } difference { // back straps box { <-3.4,-3.5,0.000001>, <3.8,4.5,1> rotate -30*z translate <-1, -1, 4> } box { <-4.5,0.99999,3>, <4.5,6,6> } box { <4,1,3>, <5,-1,6> } } box { <-2.5,-9.5,0>, <2.5,9.5,2.5> rotate 45*z translate <-2, -6.5, 4> } // quiver case difference { merge { // arrows object { arrow(color_tex) rotate <-90,0,45> translate <-4.5, -3, 5.5> } object { arrow(color_tex) rotate <-90,0,45> translate <-5.5, -4, 5.5> } } // trim off everything we don't need; arrowheads stick out otherwise box { <-10, -2.75, 6.5>, <5.75, -10.75, 4> } } #if (setting > 1) // the casing straps cylinder { <-5.75, 0.75, 4>, <-5.75, 0.75, 6.5>, 0.1 } cylinder { <-5, 0, 4>, <-5, 0, 6.5>, 0.10 } cylinder { <-0.75, -4.25, 4>, <-0.75, -4.25, 6.5>, 0.1 } cylinder { <0, -5, 4>, <0, -5, 6.5>, 0.10 } cylinder { <0.75, -5.75, 4>, <0.75, -5.75, 6.5>, 0.1 } cylinder { <5, -10, 4>, <5, -10, 6.5>, 0.1 } cylinder { <5.75, -10.75, 4>, <5.75, -10.75, 6.5>, 0.1 } cylinder { <-9.25, -2.75, 4>, <-9.25, -2.75, 6.5>, 0.1 } cylinder { <-8.5, -3.5, 4>, <-8.5, -3.5, 6.5>, 0.1 } cylinder { <-4.25, -7.75, 4>, <-4.25, -7.75, 6.5>, 0.1 } cylinder { <-3.5, -8.5, 4>, <-3.5, -8.5, 6.5>, 0.1 } cylinder { <-2.75, -9.25, 4>, <-2.75, -9.25, 6.5>, 0.1 } cylinder { <1.5, -13.5, 4>, <1.5, -13.5, 6.5>, 0.1 } cylinder { <2.25, -14.25, 4>, <2.25, -14.25, 6.5>, 0.1 } cylinder { <-5.75, 0.75, 6.5>, <-9.25, -2.75, 6.5>, 0.1 } cylinder { <-0.75, -4.25, 6.5>, <-8.5, -3.5, 6.5>, 0.1 } cylinder { <-5, 0, 6.5>, <-4.25, -7.75, 6.5>, 0.1 } cylinder { <0, -5, 6.5>, <-3.5, -8.5, 6.5>, 0.1 } cylinder { <5, -10, 6.5>, <-2.75, -9.25, 6.5>, 0.1 } cylinder { <0.75, -5.75, 6.5>, <1.5, -13.5, 6.5>, 0.1 } cylinder { <5.75, -10.75, 6.5>, <2.25, -14.25, 6.5>, 0.1 } sphere { <-5.75, 0.75, 6.5>, 0.1 } sphere { <-5, 0, 6.5>, 0.1 } sphere { <-0.75, -4.25, 6.5>, 0.1 } sphere { <0, -5, 6.5>, 0.1 } sphere { <0.75, -5.75, 6.5>, 0.1 } sphere { <5, -10, 6.5>, 0.1 } sphere { <5.75, -10.75, 6.5>, 0.1 } sphere { <-9.25, -2.75, 6.5>, 0.1 } sphere { <-8.5, -3.5, 6.5>, 0.1 } sphere { <-4.25, -7.75, 6.5>, 0.1 } sphere { <-3.5, -8.5, 6.5>, 0.1 } sphere { <-2.75, -9.25, 6.5>, 0.1 } sphere { <1.5, -13.5, 6.5>, 0.1 } sphere { <2.25, -14.25, 6.5>, 0.1 } #end texture { color_tex } } #end #end