// ソーセー人のパーツ定義ファイル // 2015.05.11 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 SausageBase = 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 HeadBase = union { object { Joint translate 3.1*y } object { Sphere translate 2*y } object { Disk_Y translate 1*y } } // 眼球 #declare EyeBall = object { Disk_Y scale <0.97, 0.25, 0.97> translate 1.75*y pigment { color Red } finish { Glossy } } // 胴体(生)の原型 #declare BodyBase = object { HeadBase 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 ambient 0.7 diffuse 0.3 } // finish { Glossy } } // 切り込み(閉) #declare Cut0 = union { object { Disk_X scale <100, 0.025, 0.01> } object { Cube translate -1*z scale <100, 0.025, 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 30*x } object { Plane_XZ rotate -30*x } texture { Inner } } // 切り込み(開) #declare Cut4 = difference { object { Plane_XZ rotate 45*x } object { Plane_XZ rotate -45*x } texture { Inner } } // 頭(無表情) #declare Head0 = difference { object { HeadBase } object { Cut4 rotate 0*x translate <0, 1.75, -0.9> rotate -30*y } // 左目 object { Cut4 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 { HeadBase } 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 { HeadBase } object { Cut4 rotate 30*z rotate 0*x translate <0, 1.75, -0.9> rotate -30*y } // 左目 object { Cut4 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 { HeadBase } 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 { HeadBase } 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 BodyBase1 = 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 BodyBase2 = difference { object { BodyBase1 } 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 { BodyBase2 } object { Arm_L } object { Arm_R } } // 胴体(生) #declare BodyS = difference { object { BodyBase } 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 { EyeBall } object { Body } texture { Roast } translate 3*y } #declare Souseijin1 = union { object { Head1 } object { EyeBall } object { Body } texture { Roast } translate 3*y } #declare Souseijin2 = union { object { Head2 } object { EyeBall } object { Body } texture { Roast } translate 3*y } #declare Souseijin3 = union { object { Head3 } object { EyeBall } object { Body } texture { Roast } translate 3*y } /////////////////////////////////////////////////////////////////////////// // フライパン // 本体原型 #declare PanBodyBase = union { object { Disk_Y scale <13, 3, 13> } object { torus { 11, 2 } translate -3*y } object { Disk_Y scale <11, 2, 11> translate -3*y } } // 本体 #declare PanBody = intersection { difference { object { PanBodyBase pigment { color Red } finish { Dull } } object { PanBodyBase scale <12.5/13, 4.5/5, 12.5/13> pigment { color Gray20 } } } object { Plane_XZ pigment { color Silver } finish { Shiny } } } // 取手 #declare PanHandle = union { object { Disk_Z scale <1.5, 1.5, 7> pigment { color Black } finish { Glossy } } difference { object { Disk_Z scale <1.25, 1.25, 9> } object { Disk_Y scale <0.5, 2, 0.5> translate -8*z } pigment { color Silver } } translate -(9+13)*z } // 取付金具 #declare PanJoint = union { intersection { object { Cylinder_Z scale <3, 1.5, 0.3> } difference { object { Cylinder_Y scale 13.3 } object { Cylinder_Y scale 13 } } object { Plane_XY } } object { Disk_Z scale <0.3, 0.3, 0.3> translate -13.2*z rotate 10*y } object { Disk_Z scale <0.3, 0.3, 0.3> translate -13.2*z rotate -10*y } pigment { color Silver } } // フライパン全体 #declare Pan = union { object { PanBody } object { PanHandle translate -1.5*y } object { PanJoint translate -1.5*y } translate 5*y } /////////////////////////////////////////////////////////////////////////// // キッチン // 面取工具 #declare FilletX = difference { object { Cube } object { Cylinder_X translate <0, 1, 1> } object { Cylinder_X translate <0, 1, -1> } object { Cylinder_X translate <0, -1, 1> } object { Cylinder_X translate <0, -1, -1> } } // 調理台 #declare CounterTop = union { object { Cube scale <200, 2, 37.5> translate -2*y } difference { object { Cube scale <200, 0.5, 1.5> } object { FilletX scale <200, 0.5, 0.5> translate <0, 0.5, -1.5> } translate <0, 0, -37.5+1.5> } object { FilletX scale <200, 0.5, 0.5> translate <0, 0, -37.5+3> } difference { object { Cube scale <200, 5, 1.5> } object { FilletX scale <200, 0.5, 0.5> translate <0, 5, -1.5> } translate <0, 2, 37.5-1.5> } object { FilletX scale <200, 0.5, 0.5> translate <0, 0, 37.5-3> } } #declare CounterBase = object { Cube scale <200, 40, 37> translate -42*y } #declare Counter = union { object { CounterTop pigment { color Wheat } } object { CounterBase pigment { color DarkBrown } } //finish { Glossy } } } // 奥壁 #declare BackWall = object { Plane_XY translate 37.5*z pigment { color White } finish { Glossy } } // 横壁 #declare SideWall = object { Plane_YZ translate -45*x pigment { color White } finish { Glossy } } // 床 #declare Floor = object { Plane_XZ translate -80*y pigment { color Wheat } } // バーナーのセンサスイッチ #declare BurnerSensor = union { object { Disk_Y scale <1, 1, 1> } object { Disk_Y scale <0.8, 0.3, 0.8> translate 1*y } translate 3*y pigment { color Silver } finish { Shiny } } // バーナー(大,小) #declare BurnerL = union { object { Disk_Y scale <3.1, 0.75, 3.1> translate 0.75*y pigment { color Silver } finish { Shiny } } object { Disk_Y scale <3, 0.5, 3> translate 2*y } difference { object { Disk_Y scale <3, 0.1, 3> } object { Disk_Y scale <1.5, 1, 1.5> } translate 2.9*y } object { BurnerSensor } pigment { color Black } finish { Glossy } } #declare BurnerS = union { object { Disk_Y scale <2.6, 0.75, 2.6> translate 0.75*y pigment { color Silver } finish { Shiny } } object { Disk_Y scale <2.5, 0.5, 2.5> translate 2*y } difference { object { Disk_Y scale <2.5, 0.1, 2.5> } object { Disk_Y scale <1.5, 1, 1.5> } translate 2.9*y } object { BurnerSensor } pigment { color Black } finish { Glossy } } // 五徳の土台(大,小) #declare TrivetBaseL = object { torus {5.5, 0.5} translate 0.5*y } #declare TrivetBaseS = object { torus {4.5, 0.5} translate 0.5*y } // 五徳の腕(大,小) #declare TrivetArmL = difference { union { object { Cube scale <10, 1.5, 0.1> } object { Disk_Z scale <2, 1.5, 0.1> translate 10*x } object { Disk_Z scale <2, 1.5, 0.1> translate -10*x } object { Disk_Z scale <0.5, 2, 0.1> translate < 10, -0.5, 0> } object { Disk_Z scale <0.5, 2, 0.1> translate <-10, -0.5, 0> } } union { object { Cube scale <9, 1, 1> } object { Disk_Z scale <1, 1, 1> translate 9*x } object { Disk_Z scale <1, 1, 1> translate -9*x } } object { Cube scale <4, 5, 1> translate 5*y} object { Cube scale <5, 5, 1> translate -5*y} translate 2.5*y } #declare TrivetArmS = difference { union { object { Cube scale <6, 1.5, 0.1> } object { Disk_Z scale <2, 1.5, 0.1> translate 6*x } object { Disk_Z scale <2, 1.5, 0.1> translate -6*x } object { Disk_Z scale <0.5, 2, 0.1> translate < 6, -0.5, 0> } object { Disk_Z scale <0.5, 2, 0.1> translate <-6, -0.5, 0> } } union { object { Cube scale <5, 1, 1> } object { Disk_Z scale <1, 1, 1> translate 5*x } object { Disk_Z scale <1, 1, 1> translate -5*x } } object { Cube scale <3.5, 5, 1> translate 5*y} object { Cube scale <4, 5, 1> translate -5*y} translate 2.5*y } // 五徳(大,小) #declare TrivetL = union { object { TrivetBaseL } object { TrivetArmL rotate 90*y } object { TrivetArmL rotate 30*y } object { TrivetArmL rotate -30*y } pigment { color Black } finish { Glossy } } #declare TrivetS = union { object { TrivetBaseS } object { TrivetArmS rotate 90*y } object { TrivetArmS rotate 30*y } object { TrivetArmS rotate -30*y } pigment { color Black } finish { Glossy } } // 五徳置場(大,小) #declare TrivetMountL = difference { object { Disk_Y scale <5, 0.75, 5> } object { Disk_Y scale <3.3, 1, 3.3> } } #declare TrivetMountS = difference { object { Disk_Y scale <4, 0.75, 4> } object { Disk_Y scale <2.8, 1, 2.8> } } // コンロ天板 #declare RangeTop = union { intersection { object { Round_Box_Merge(<40, 2, 30>, <-40, -2, -30>, 2) scale 1/2*y } // object { Round_Box_Merge(<40, 2, 30>, <-40, -2, -30>, 3) } object { Plane_XZ translate 1*y } // object { Plane_XZ scale -1*y } } object { TrivetMountL translate <-20, 1, -10> } // 前左 object { TrivetMountL translate < 20, 1, -10> } // 前右 object { TrivetMountS translate < 0, 1, 10> } // 奥中 pigment { color MediumGoldenrod } finish { Glossy } } // コンロ #declare Range = union { object { RangeTop } object { BurnerL translate <-20, 1, -10> } object { BurnerL translate < 20, 1, -10> } object { BurnerS translate < 0, 1, 10> } object { TrivetL translate <-20, 1, -10> } object { TrivetL translate < 20, 1, -10> } object { TrivetS translate < 0, 1, 10> } } // キッチン全体 #declare Kitchen = union { object { Counter } object { Range } object { BackWall } object { SideWall } object { Floor } } /////////////////////////////////////////////////////////////////////////// // 調味料 #declare BottleOuter = object { Round_Cone_Merge(<0, 0, 0>, 2, <0, 8, 0>, 1.5, 0.5) } #declare BottleInner = object { Round_Cone_Union(<0, 0.5, 0>, 1.8, <0, 7.8, 0>, 1.3, 0.3) } #declare Bottle = difference { object { BottleOuter } object { BottleInner } material { M_Glass3 } } #declare BottleCap = object { Disk_Y scale <1.5, 0.75, 1.5> translate 8.5*y } #declare SaltBottle = merge { object { Bottle } object { BottleCap pigment { color Red } } intersection { object { BottleInner } object { Plane_XZ translate 4*y } pigment { color White } finish { ambient 0.7 diffuse 0.3 } } } #declare PepperBottle = merge { object { Bottle } object { BottleCap pigment { color Khaki } } intersection { object { BottleInner } object { Plane_XZ translate 5*y } pigment { color Khaki } finish { ambient 0.7 diffuse 0.3 } } }