// ソーセー人のパーツ定義ファイル // 2015.04.24 yanagawa@kushiro-ct.ac.jp #include "shapes.inc" #include "colors.inc" #include "textures.inc" #declare Joint = intersection { object { Sphere scale <0.1, 0.2, 0.1> } object { Plane_XZ } } // ソーセージ全体(生)の原型 #declare SausageProto = union { object { Joint translate 3.1*y } object { Sphere translate 2*y } object { Disk_Y scale <1, 2, 1> } object { Sphere translate -2*y } object { Joint scale -1*y translate -3.1*y } } // 頭部(生)の原型 #declare HeadProto = union { object { Joint translate 3.1*y } object { Sphere translate 2*y } object { Disk_Y translate 1*y } } // 胴体(生)の原型 #declare BodyProto = object { HeadProto scale -1*y } // 外側(生)の色 #declare Raw = texture { // pigment { color NewTan } // pigment { color LightWood } pigment { color Feldspar } finish { specular 0.1 roughness 0.03 } // finish { Dull } // finish { Glossy } } // 外側(焼)の色 #declare Roast = texture { // pigment { color OrangeRed } pigment { color DarkTan } // pigment { color MediumWood } // pigment { color DarkWood } finish { specular 0.3 roughness 0.01 } // finish { Shiny } // finish { Glossy } } // 内側の色 #declare Inner = texture { // pigment { color Pink } pigment { color Tan } finish { specular 0.0 } // finish { Glossy } } // 切り込み(閉) #declare Cut0 = union { object { Disk_X scale <100, 0.01, 0.01> } object { Cube translate -1*z scale <100, 0.02, 100> } texture { Inner } } // 切り込み(狭) #declare Cut1 = difference { object { Plane_XZ rotate 10*x } object { Plane_XZ rotate -10*x } texture { Inner } } // 切り込み(中) #declare Cut2 = difference { object { Plane_XZ rotate 15*x } object { Plane_XZ rotate -15*x } texture { Inner } } // 切り込み(開) #declare Cut3 = difference { object { Plane_XZ rotate 20*x } object { Plane_XZ rotate -20*x } texture { Inner } } // 頭(無表情) #declare Head0 = difference { object { HeadProto } object { Cut3 rotate 0*x translate <0, 1.75, -0.9> rotate -30*y } // 左目 object { Cut3 rotate 0*x translate <0, 1.75, -0.9> rotate +30*y } // 右目 object { Cut2 rotate 0*x translate <0, 1.0, -0.5> } // 口 } // 頭(笑顔) #declare Head1 = difference { object { HeadProto } object { Cut2 rotate 45*x translate <0, 1.75, -0.9> rotate -30*y } // 左目 object { Cut2 rotate 45*x translate <0, 1.75, -0.9> rotate +30*y } // 右目 object { Cut2 rotate -30*x translate <0, 1.2, -0.5> } // 口 } // 頭(怒り顔) #declare Head2 = difference { object { HeadProto } object { Cut3 rotate 30*z rotate 0*x translate <0, 1.75, -0.9> rotate -30*y } // 左目 object { Cut3 rotate -30*z rotate 0*x translate <0, 1.75, -0.9> rotate +30*y } // 右目 object { Cut1 rotate 30*x translate <0, 0.8, -0.5> } // 口 } // 頭(困り顔) #declare Head3 = difference { object { HeadProto } object { Cut3 rotate -30*z rotate 0*x translate <0, 1.75, -0.9> rotate -30*y } // 左目 object { Cut3 rotate +30*z rotate 0*x translate <0, 1.75, -0.9> rotate +30*y } // 右目 object { Cut2 rotate 0*x translate <0, 1.0, -0.5> } // 口 } // 頭(睡眠中) #declare HeadS = difference { object { HeadProto } object { Cut0 rotate -30*x translate <0, 1.75, -0.9> rotate -30*y } // 左目 object { Cut0 rotate -30*x translate <0, 1.75, -0.9> rotate +30*y } // 右目 object { Cut0 rotate 15*x translate <0, 1.0, -0.5> } // 口 } // 左腕(焼) #declare Arm_L = intersection { object { torus { 2, 1 } translate 2*x rotate -90*x } object { Disk_Z translate <1.75, 0, 0> } // 脇を削ぎ切り object { Plane_XZ } // 下半分に } // 右腕(焼) #declare Arm_R = object { Arm_L scale -1*x } // 左腕を左右反転 // 左脚(焼) #declare Leg_L = intersection { union { intersection { object { torus { 4, 1 } rotate -90*x } object { Plane_XZ } object { Plane_XZ scale -1*y rotate 15*z } } object { Sphere translate -4*x rotate 15*z } } object { Disk_Z scale 4 texture { Inner } } translate 4*x } // 右脚(焼) #declare Leg_R = object { Leg_L scale -1*x } // 左脚を左右反転 // 胴体(焼)の原型1(脚の取り付け) #declare BodyProto1 = union { object { Disk_Y translate -1*y scale <1, 0.5, 1> } object { Leg_L translate -1*y } object { Leg_R translate -1*y } } // 胴体(焼)の原型2(腕の取り付け準備) #declare BodyProto2 = difference { object { BodyProto1 } object { Disk_Z scale 4 translate +4.75*x texture { Inner } } // 左脇 object { Disk_Z scale 4 translate -4.75*x texture { Inner } } // 右脇 } // 胴体(焼) #declare Body = union { object { BodyProto2 } object { Arm_L } object { Arm_R } } // 胴体(生) #declare BodyS = difference { object { BodyProto } object { Cut0 rotate -80*x translate -0.75*z rotate -90*y } // 左脇 object { Cut0 rotate -80*x translate -0.75*z rotate +90*y } // 右脇 object { Cut0 rotate -90*x translate -1*y rotate -90*y } // 股 } // ソーセー人 #declare SouseijinS = union { object { HeadS } object { BodyS } texture { Raw } translate 3*y } #declare Souseijin0 = union { object { Head0 } object { Body } texture { Roast } translate 3*y } #declare Souseijin1 = union { object { Head1 } object { Body } texture { Roast } translate 3*y } #declare Souseijin2 = union { object { Head2 } object { Body } texture { Roast } translate 3*y } #declare Souseijin3 = union { object { Head3 } object { Body } texture { Roast } translate 3*y } // フライパン本体原型 #declare PanBodyProto = union { object { Disk_Y scale <12, 3, 12> } object { torus { 10, 2 } translate -3*y } object { Disk_Y scale <10, 2, 10> translate -3*y } } // フライパン本体 #declare PanBody = intersection { difference { object { PanBodyProto pigment { color Red } finish { Dull } } object { PanBodyProto scale (11.5/12.0) pigment { color Gray20 } } } object { Plane_XZ pigment { color Silver } finish { Shiny } } } // フライパン取手 #declare PanHandle = union { union { // 取手 object { Disk_Z scale <1.5, 2, 7> pigment { color Black } finish { Glossy } } difference { object { Disk_Z scale <1, 1.5, 9> } object { Disk_Y scale <0.5, 2, 0.5> translate -8*z } pigment { color Silver } } translate -(9+12)*z } intersection { // 取付金具 object { Cylinder_Z scale <3, 1.3, 0.3> } difference { object { Cylinder_Y scale 12.3 } object { Cylinder_Y scale 12 } } object { Plane_XY } pigment { color Silver } } } #declare Pan = union { object { PanBody } object { PanHandle translate -1.5*y } translate 5*y }