/* Utah Teapot plugin by Kubajzz */ #plugin("object", "mesh", "Teapot"); #parameter("size", float, 1, 0.1, 20, scale); #return($teapot); #button(24, 18, 2, 0x000000, 0x000000, 0x000000, 0x001000, 0x00ee00, 0x03398a, 0x3fc656, 0x457864, 0x46806c, 0x2c00f8, 0x380570, 0x082ae0, 0x0955e0, 0x06afc0, 0x03ff80, 0x00fe00, 0x000000, 0x000000); shape $teapot; point3 $p, $ring[20]; point2 $t, $pos[20]; float $size, $y_UV[20]; int $i, $j, $vtx1[33], $vtx2[33], $tex1[33], $tex2[33]; $size = parameter("size"); $teapot.Open(); $teapot.AddPoint((0, -16.525*$size, 0)); for $i = 1 to 32 do { $p.y = -16.525*$size; $p.x = cos(($i-1)*3.14159/16)*16.513*$size; $p.z = sin(($i-1)*3.14159/16)*16.513*$size; $t.y = 0; $t.x = ($i-1)*0.03125; $vtx1[$i-1] = $teapot.AddPoint($p); $tex1[$i-1] = $teapot.AddTexCoord($t); } $vtx1[32] = $vtx1[0]; $tex1[32] = $teapot.AddTexCoord((1,$t.y)); for $i = 1 to 32 do { $teapot.OpenFace(0,0); $teapot.VertexN($vtx1[$i]); $teapot.VertexN($vtx1[$i-1]); $teapot.VertexN(0); $teapot.CloseFace(); } $pos[0] = (16.65, -16.025); $pos[1] = (16.9, -15.721); $pos[2] = (17.943, -14.788); $pos[3] = (19.54, -13.39); $pos[4] = (21.137, -11.485); $pos[5] = (21.767, -10.33); $pos[6] = (22.194, -9.034); $pos[7] = (22.351, -7.591); $pos[8] = (22.27, -6.0483); $pos[9] = (21.668, -2.8314); $pos[10] = (20.594, 0.528); $pos[11] = (18.393, 5.742); $pos[12] = (16.728, 9.2778); $pos[13] = (16.274, 9.9863); $pos[14] = (15.827, 10.341); $pos[15] = (15.494, 10.341); $pos[16] = (15.3, 10.15); $pos[17] = (15.283, 9.6); $y_UV[0] = 0.0208333; $y_UV[1] = 0.03125; $y_UV[2] = 0.0625; $y_UV[3] = 0.125; $y_UV[4] = 0.188; $y_UV[5] = 0.23438; $y_UV[6] = 0.2815; $y_UV[7] = 0.328125; $y_UV[8] = 0.375; $y_UV[9] = 0.5; $y_UV[10] = 0.62; $y_UV[11] = 0.8125; $y_UV[12] = 0.9375; $y_UV[13] = 0.964; $y_UV[14] = 0.973; $y_UV[15] = 0.982; $y_UV[16] = 0.991; $y_UV[17] = 1; for $j = 0 to 8 do { for $i = 1 to 32 do { $p.y = $pos[2*$j].y*$size; $p.x = cos(($i-1)*3.14159/16)*$pos[2*$j].x*$size; $p.z = sin(($i-1)*3.14159/16)*$pos[2*$j].x*$size; $t.y = $y_UV[2*$j]; $t.x = ($i-1)*0.03125; $vtx2[$i-1] = $teapot.AddPoint($p); $tex2[$i-1] = $teapot.AddTexCoord($t); } $vtx2[32] = $vtx2[0]; $tex2[32] = $teapot.AddTexCoord((1,$t.y)); for $i = 1 to 32 do { $teapot.OpenFace(0,4); $teapot.TexCoordN($tex1[$i-1]); $teapot.VertexN($vtx1[$i-1]); $teapot.TexCoordN($tex1[$i]); $teapot.VertexN($vtx1[$i]); $teapot.TexCoordN($tex2[$i]); $teapot.VertexN($vtx2[$i]); $teapot.TexCoordN($tex2[$i-1]); $teapot.VertexN($vtx2[$i-1]); $teapot.CloseFace(); } for $i = 1 to 32 do { $p.y = $pos[2*$j+1].y*$size; $p.x = cos(($i-1)*3.14159/16)*$pos[2*$j+1].x*$size; $p.z = sin(($i-1)*3.14159/16)*$pos[2*$j+1].x*$size; $t.y = $y_UV[2*$j+1]; $t.x = ($i-1)*0.03125; $vtx1[$i-1] = $teapot.AddPoint($p); $tex1[$i-1] = $teapot.AddTexCoord($t); } $vtx1[32] = $vtx1[0]; $tex1[32] = $teapot.AddTexCoord((1,$t.y)); for $i = 1 to 32 do { $teapot.OpenFace(0,4); $teapot.TexCoordN($tex2[$i-1]); $teapot.VertexN($vtx2[$i-1]); $teapot.TexCoordN($tex2[$i]); $teapot.VertexN($vtx2[$i]); $teapot.TexCoordN($tex1[$i]); $teapot.VertexN($vtx1[$i]); $teapot.TexCoordN($tex1[$i-1]); $teapot.VertexN($vtx1[$i-1]); $teapot.CloseFace(); } } /*----------*/ for $i = 1 to 32 do { $p.y = 9.95*$size; $p.x = cos(($i-1)*3.14159/16)*15.068*$size; $p.z = sin(($i-1)*3.14159/16)*15.068*$size; $t.y = 0; $t.x = ($i-1)*0.03125; $vtx1[$i-1] = $teapot.AddPoint($p); $tex1[$i-1] = $teapot.AddTexCoord($t); } $vtx1[32] = $vtx1[0]; $tex1[32] = $teapot.AddTexCoord((1,$t.y)); $pos[0] = (14.773, 10.405); $pos[1] = (13.964, 10.807); $pos[2] = (11.248, 11.418); $pos[3] = (6.0958, 12.032); $pos[4] = (3.2404, 12.748); $pos[5] = (2.3203, 13.221); $pos[6] = (1.9426, 13.689); $pos[7] = (2.0793, 14.231); $pos[8] = (2.5498, 14.914); $pos[9] = (3.7689, 16.28); $pos[10] = (4.1559, 16.901); $pos[11] = (4.1536, 17.438); $pos[12] = (3.5812, 17.86); $pos[13] = (2.2578, 18.137); $y_UV[0] = 0.03333; $y_UV[1] = 0.085; $y_UV[2] = 0.188; $y_UV[3] = 0.38; $y_UV[4] = 0.5; $y_UV[5] = 0.54; $y_UV[6] = 0.58; $y_UV[7] = 0.62; $y_UV[8] = 0.66; $y_UV[9] = 0.75; $y_UV[10] = 0.79; $y_UV[11] = 0.825; $y_UV[12] = 0.865; $y_UV[13] = 0.92; for $j = 0 to 6 do { for $i = 1 to 32 do { $p.y = $pos[2*$j].y*$size; $p.x = cos(($i-1)*3.14159/16)*$pos[2*$j].x*$size; $p.z = sin(($i-1)*3.14159/16)*$pos[2*$j].x*$size; $t.y = $y_UV[2*$j]; $t.x = ($i-1)*0.03125; $vtx2[$i-1] = $teapot.AddPoint($p); $tex2[$i-1] = $teapot.AddTexCoord($t); } $vtx2[32] = $vtx2[0]; $tex2[32] = $teapot.AddTexCoord((1,$t.y)); for $i = 1 to 32 do { $teapot.OpenFace(0,4); $teapot.TexCoordN($tex1[$i-1]); $teapot.VertexN($vtx1[$i-1]); $teapot.TexCoordN($tex1[$i]); $teapot.VertexN($vtx1[$i]); $teapot.TexCoordN($tex2[$i]); $teapot.VertexN($vtx2[$i]); $teapot.TexCoordN($tex2[$i-1]); $teapot.VertexN($vtx2[$i-1]); $teapot.CloseFace(); } for $i = 1 to 32 do { $p.y = $pos[2*$j+1].y*$size; $p.x = cos(($i-1)*3.14159/16)*$pos[2*$j+1].x*$size; $p.z = sin(($i-1)*3.14159/16)*$pos[2*$j+1].x*$size; $t.y = $y_UV[2*$j+1]; $t.x = ($i-1)*0.03125; $vtx1[$i-1] = $teapot.AddPoint($p); $tex1[$i-1] = $teapot.AddTexCoord($t); } $vtx1[32] = $vtx1[0]; $tex1[32] = $teapot.AddTexCoord((1,$t.y)); for $i = 1 to 32 do { $teapot.OpenFace(0,4); $teapot.TexCoordN($tex2[$i-1]); $teapot.VertexN($vtx2[$i-1]); $teapot.TexCoordN($tex2[$i]); $teapot.VertexN($vtx2[$i]); $teapot.TexCoordN($tex1[$i]); $teapot.VertexN($vtx1[$i]); $teapot.TexCoordN($tex1[$i-1]); $teapot.VertexN($vtx1[$i-1]); $teapot.CloseFace(); } } for $i = 1 to 32 do { $t.y = 1; $t.x = ($i-1)*0.03125; $tex2[$i-1] = $teapot.AddTexCoord($t); } $p.y = 18.236*$size; $p.x = 0; $p.z = 0; $vtx2[0] = $teapot.AddPoint($p); for $i = 1 to 32 do { $teapot.OpenFace(0,4); $teapot.TexCoordN($tex1[$i-1]); $teapot.VertexN($vtx1[$i-1]); $teapot.TexCoordN($tex1[$i]); $teapot.VertexN($vtx1[$i]); $teapot.TexCoordN($tex2[$i-1]); $teapot.VertexN($vtx2[0]); $teapot.CloseFace(); } /*------------*/ for $i = 1 to 16 do { $p.y = 6.5184*$size-cos(-0.5)*cos(($i-1)*3.14159/8)*2.8534774*0.5*$size; $p.x = -17.55*$size+sin(-0.5)*cos(($i-1)*3.14159/8)*2.8534774*0.5*$size; $p.z = -sin(($i-1)*3.14159/8)*2.6074*$size; $t.y = 0; $t.x = ($i-1)*0.0625; $vtx1[$i-1] = $teapot.AddPoint($p); $tex1[$i-1] = $teapot.AddTexCoord($t); } $vtx1[16] = $vtx1[0]; $tex1[16] = $teapot.AddTexCoord((1,$t.y)); $pos[0] = (-20.772, 6.5143); $pos[1] = (-23.306, 6.4872); $pos[2] = (-25.554, 6.4128); $pos[3] = (-27.515, 6.268); $pos[4] = (-29.183, 6.0297); $pos[5] = (-30.555, 5.6737); $pos[6] = (-31.629, 5.177); $pos[7] = (-32.4, 4.516); $pos[8] = (-32.865, 3.6673); $pos[9] = (-33.021, 2.6074); $pos[10] = (-32.925, 1.4043); $pos[11] = (-32.632, 0.153); $pos[12] = (-32.137, -1.1297); $pos[13] = (-31.436, -2.4266); $pos[14] = (-30.522, -3.7209); $pos[15] = (-29.392, -4.9958); $pos[16] = (-28.039, -6.2339); $pos[17] = (-26.458, -7.419); $pos[18] = (-24.644, -8.5); $pos[19] = (-22.142, -9.5606); $ring[0] = (2.61139*0.5, -0.1, 0); $ring[1] = (2.6687*0.5, 0.2618, 0); $ring[2] = (2.885741*0.5, 0.51, 0); $ring[3] = (3.139377*0.5, 0.6545, 0); $ring[4] = (3.3566*0.5, 0.7854, 0); $ring[5] = (3.504*0.5, 0.9163, 0); $ring[6] = (3.57*0.5, 1.04, 0); $ring[7] = (3.563*0.5, 1.1781, 0); $ring[8] = (3.5128*0.5, 1.3464, 0); $ring[9] = (3.5069*0.5, 1.5708, 0); $ring[10] = (3.495*0.5, 1.7952, 0); $ring[11] = (3.5*0.5, 1.85, 0); $ring[12] = (3.446*0.5, 2.0944, 0); $ring[13] = (3.3281*0.5, 2.22525, 0); $ring[14] = (3.162278*0.5, 2.3562, 0); $ring[15] = (2.9881*0.5, 2.49, 0); $ring[16] = (2.871*0.5, 2.7489, 0); $ring[17] = (2.89759*0.5, 3.0107, 0); $ring[18] = (3.15*0.5, 3.26, 0); $ring[19] = (3.664164*0.5, 3.5, 0); $y_UV[0] = 0.075; $y_UV[1] = 0.133; $y_UV[2] = 0.2; $y_UV[3] = 0.27; $y_UV[4] = 0.32; $y_UV[5] = 0.375; $y_UV[6] = 0.40625; $y_UV[7] = 0.4375; $y_UV[8] = 0.46875; $y_UV[9] = 0.5; $y_UV[10] = 0.541; $y_UV[11] = 0.583; $y_UV[12] = 0.625; $y_UV[13] = 0.6675; $y_UV[14] = 0.725; $y_UV[15] = 0.75; $y_UV[16] = 0.81; $y_UV[17] = 0.86; $y_UV[18] = 0.93; $y_UV[19] = 1; for $j = 0 to 9 do { for $i = 1 to 16 do { $p.y = $pos[2*$j].y*$size-cos($ring[2*$j].y)*cos(($i-1)*3.14159/8)*$ring[2*$j].x*$size; $p.x = ($pos[2*$j].x+0.4)*$size+sin($ring[2*$j].y)*cos(($i-1)*3.14159/8)*$ring[2*$j].x*$size; $p.z = -sin(($i-1)*3.14159/8)*2.6074*$size; $t.y = $y_UV[2*$j]; $t.x = ($i-1)*0.0625; $vtx2[$i-1] = $teapot.AddPoint($p); $tex2[$i-1] = $teapot.AddTexCoord($t); } $vtx2[16] = $vtx2[0]; $tex2[16] = $teapot.AddTexCoord((1,$t.y)); for $i = 1 to 16 do { $teapot.OpenFace(0,4); $teapot.TexCoordN($tex1[$i-1]); $teapot.VertexN($vtx1[$i-1]); $teapot.TexCoordN($tex1[$i]); $teapot.VertexN($vtx1[$i]); $teapot.TexCoordN($tex2[$i]); $teapot.VertexN($vtx2[$i]); $teapot.TexCoordN($tex2[$i-1]); $teapot.VertexN($vtx2[$i-1]); $teapot.CloseFace(); } for $i = 1 to 16 do { $p.y = $pos[2*$j+1].y*$size-cos($ring[2*$j+1].y)*cos(($i-1)*3.14159/8)*$ring[2*$j+1].x*$size; $p.x = ($pos[2*$j+1].x+0.4)*$size+sin($ring[2*$j+1].y)*cos(($i-1)*3.14159/8)*$ring[2*$j+1].x*$size; $p.z = -sin(($i-1)*3.14159/8)*2.6074*$size; $t.y = $y_UV[2*$j+1]; $t.x = ($i-1)*0.0625; $vtx1[$i-1] = $teapot.AddPoint($p); $tex1[$i-1] = $teapot.AddTexCoord($t); } $vtx1[16] = $vtx1[0]; $tex1[16] = $teapot.AddTexCoord((1,$t.y)); for $i = 1 to 16 do { $teapot.OpenFace(0,4); $teapot.TexCoordN($tex2[$i-1]); $teapot.VertexN($vtx2[$i-1]); $teapot.TexCoordN($tex2[$i]); $teapot.VertexN($vtx2[$i]); $teapot.TexCoordN($tex1[$i]); $teapot.VertexN($vtx1[$i]); $teapot.TexCoordN($tex1[$i-1]); $teapot.VertexN($vtx1[$i-1]); $teapot.CloseFace(); } } /*------------*/ for $i = 1 to 16 do { $p.y = -6.4535*$size-cos(0)*cos(($i-1)*3.14159/8)*9.46468*0.5*$size; $p.x = 19.51*$size+sin(0)*cos(($i-1)*3.14159/8)*9.46468*0.5*$size; $p.z = sin(($i-1)*3.14159/8)*5.6791*$size; $t.y = 0; $t.x = ($i-1)*0.0625; $vtx1[$i-1] = $teapot.AddPoint($p); $tex1[$i-1] = $teapot.AddTexCoord($t); } $vtx1[16] = $vtx1[0]; $tex1[16] = $teapot.AddTexCoord((1,$t.y)); $pos[0] = (22.732, -5.7989); $pos[1] = (25.212, -4.6741); $pos[2] = (26.84, -3.1778); $pos[3] = (28.011, -1.4078); $pos[4] = (28.718, 0.538); $pos[5] = (29.453, 2.5608); $pos[6] = (30.007, 4.5631); $pos[7] = (30.877, 6.4467); $pos[8] = (32.051, 8.1135); $pos[9] = (33.924, 9.4655); $pos[10] = (34.833, 9.9401); $pos[11] = (35.126, 10.096); $pos[12] = (35.308, 10.194); $pos[13] = (35.376, 10.231); $pos[14] = (35.329, 10.208); $pos[15] = (35.163, 10.122); $pos[16] = (34.874, 9.9708); $pos[17] = (33.924, 9.4655); $ring[0] = (8.7144*0.5, 0.19635, 5.5804); $ring[1] = (7.93386*0.5, 0.27, 5.3122); $ring[2] = (7.08091*0.5, 0.42, 4.9172); $ring[3] = (6.1879*0.5, 0.56, 4.4373); $ring[4] = (5.3432*0.5, 0.69, 3.9152); $ring[5] = (4.687354*0.5, 0.85, 3.393); $ring[6] = (4.4*0.5, 1.1, 2.9132); $ring[7] = (4.64*0.5, 1.315, 2.5181); $ring[8] = (5.4662*0.5, 1.44, 2.25); $ring[9] = (6.884*0.5, 1.5708, 2.1512); $ring[10] = (7.363051*0.5, 1.5708, 2.0617); $ring[11] = (7.3473*0.5, 1.58, 1.9654); $ring[12] = (7.195*0.5, 1.59, 1.8483); $ring[13] = (6.9247*0.5, 1.6, 1.7209); $ring[14] = (6.5588*0.5, 1.59, 1.5936); $ring[15] = (6.12*0.5, 1.59, 1.4766); $ring[16] = (5.6295*0.5, 1.59, 1.3802); $ring[17] = (4.58889*0.5, 1.5708, 1.2907); $y_UV[0] = 0.135; $y_UV[1] = 0.22; $y_UV[2] = 0.32; $y_UV[3] = 0.395; $y_UV[4] = 0.47; $y_UV[5] = 0.56; $y_UV[6] = 0.64; $y_UV[7] = 0.71; $y_UV[8] = 0.77; $y_UV[9] = 0.85; $y_UV[10] = 0.88; $y_UV[11] = 0.90; $y_UV[12] = 0.92; $y_UV[13] = 0.93; $y_UV[14] = 0.94; $y_UV[15] = 0.95; $y_UV[16] = 0.98; $y_UV[17] = 1; for $j = 0 to 8 do { for $i = 1 to 16 do { $p.y = $pos[2*$j].y*$size-cos($ring[2*$j].y)*cos(($i-1)*3.14159/8)*$ring[2*$j].x*$size; $p.x = ($pos[2*$j].x+0.4)*$size+sin($ring[2*$j].y)*cos(($i-1)*3.14159/8)*$ring[2*$j].x*$size; $p.z = sin(($i-1)*3.14159/8)*$ring[2*$j].z*$size; $t.y = $y_UV[2*$j]; $t.x = ($i-1)*0.0625; $vtx2[$i-1] = $teapot.AddPoint($p); $tex2[$i-1] = $teapot.AddTexCoord($t); } $vtx2[16] = $vtx2[0]; $tex2[16] = $teapot.AddTexCoord((1,$t.y)); for $i = 1 to 16 do { $teapot.OpenFace(0,4); $teapot.TexCoordN($tex1[$i-1]); $teapot.VertexN($vtx1[$i-1]); $teapot.TexCoordN($tex1[$i]); $teapot.VertexN($vtx1[$i]); $teapot.TexCoordN($tex2[$i]); $teapot.VertexN($vtx2[$i]); $teapot.TexCoordN($tex2[$i-1]); $teapot.VertexN($vtx2[$i-1]); $teapot.CloseFace(); } for $i = 1 to 16 do { $p.y = $pos[2*$j+1].y*$size-cos($ring[2*$j+1].y)*cos(($i-1)*3.14159/8)*$ring[2*$j+1].x*$size; $p.x = ($pos[2*$j+1].x+0.4)*$size+sin($ring[2*$j+1].y)*cos(($i-1)*3.14159/8)*$ring[2*$j+1].x*$size; $p.z = sin(($i-1)*3.14159/8)*$ring[2*$j+1].z*$size; $t.y = $y_UV[2*$j+1]; $t.x = ($i-1)*0.0625; $vtx1[$i-1] = $teapot.AddPoint($p); $tex1[$i-1] = $teapot.AddTexCoord($t); } $vtx1[16] = $vtx1[0]; $tex1[16] = $teapot.AddTexCoord((1,$t.y)); for $i = 1 to 16 do { $teapot.OpenFace(0,4); $teapot.TexCoordN($tex2[$i-1]); $teapot.VertexN($vtx2[$i-1]); $teapot.TexCoordN($tex2[$i]); $teapot.VertexN($vtx2[$i]); $teapot.TexCoordN($tex1[$i]); $teapot.VertexN($vtx1[$i]); $teapot.TexCoordN($tex1[$i-1]); $teapot.VertexN($vtx1[$i-1]); $teapot.CloseFace(); } } $teapot.smoothangle = 60; $teapot.Close();