// 釧路高専情報工学科 体験教室 2012.10.13 // オリジナル立体視画像を作ってみよう // // パーツ定義ファイル // // (c) 2012, yanagawa@kushiro-ct.ac.jp // #include "colors.inc" #include "shapes.inc" #include "textures.inc" #include "stones.inc" #include "glass.inc" #declare Polished = finish { ambient 0.3 diffuse 0.7 reflection 0.2 } #declare Smooth = finish { ambient 0.3 diffuse 0.7 reflection 0.0 } #declare Inner = texture { pigment { color Gray30 } finish { Smooth } } #declare Dark = texture { pigment { color Gray20 } finish { Smooth } } #declare DarkMetal = texture { pigment { color Gray40 } finish { Smooth } } #default { finish { Polished } pigment { color White } } #declare HSphere = intersection { object { Sphere } object { Cube translate 1*z } } #declare QSphere = intersection { object { Sphere } object { Cube translate <0, 1, 1> } } #declare SEED = seed(2012); // // 足回り // #declare Wheel = merge { // ホイール原型(半径 1m,半幅 1m, 左) difference { // リム object { Disk_X } object { Disk_X scale <2.0, 0.8, 0.8> } } difference { // スポーク object { Disk_X } #local I = 0; #while (I < 6) object { Disk_X scale <2.0, 0.5, 0.3> translate 1.0*y rotate 60*I*x } #local I = I + 1; #end scale <0.1, 0.8, 0.8> translate 0.8*x } scale <1.0, 0.6, 0.6> texture { Aluminum } } #declare Tire = merge { // タイヤ原型(半径 1m,半幅 1m) merge { difference{ object { Disk_X scale <1.0, 1.0, 1.0> } object { Disk_X scale <2.0, 0.6, 0.6> } } torus { 0.8, 0.2 rotate 90*z translate -1*x } torus { 0.8, 0.2 rotate 90*z translate 1*x } texture { Dark } } object { Wheel } } #declare Shaft = object { Disk_X texture {Aluminum} } // 車軸原型 #declare ShockL = merge { // ショック太 object { Disk_X scale <0.13, 0.05, 0.05> } object { Sphere scale 0.03 translate 0.13*x } object { Sphere scale 0.03 translate -0.13*x } rotate z*-45 texture { Aluminum } } #declare ShockS = merge { // ショック細 object { Disk_X scale <0.14, 0.025, 0.03> } object { Sphere scale 0.02 translate 0.14*x } object { Sphere scale 0.02 translate -0.14*x } rotate z*-45 texture { Aluminum } } #declare SusArm1 = merge { object { Disk_X translate -1*x // 後 scale <0.3, 0.025, 0.025> rotate 15*y } object { Disk_X translate -1*x // 前 scale <0.3, 0.025, 0.025> rotate -15*y } texture { DarkMetal } } #declare FrontSus1 = merge { // 左側 object { SusArm1 translate 0.1*y } // 上アーム object { SusArm1 translate -0.1*y } // 下アーム object { ShockL translate -0.25*x } translate 0.85*x } #declare RearSus1 = merge { // 左側 object { SusArm1 translate 0.1*y } // 上アーム object { SusArm1 translate -0.1*y } // 下アーム object { ShockS translate <-0.15, 0.0, -0.125> } object { ShockS translate <-0.15, 0.0, 0.125> } translate 0.7*x } #declare FrontTire1 = merge { object { Tire scale <0.1, 0.3, 0.3> } object { Shaft scale <0.1, 0.05, 0.05> } } #declare RearTire1 = //merge { object { Tire scale <0.2, 0.325, 0.325> } //} #macro FrontLeg1(ANGLE) merge { object { FrontSus1 scale <-1, 1, 1> } object { FrontSus1 } object { FrontTire1 scale <-1, 1, 1> translate -0.1*x rotate ANGLE*y translate -0.8*x } object { FrontTire1 translate 0.1*x rotate ANGLE*y translate 0.8*x } translate <0.0, 0.0, -1.2> } #end #declare RearLeg1 = merge { object { RearSus1 scale <-1, 1, 1> } object { RearSus1 } object { Shaft scale <1.1, 0.05, 0.05> } object { RearTire1 scale <-1, 1, 1> translate -0.9*x } object { RearTire1 translate 0.9*x } translate <0.0, 0.025, 1.2> } #declare FrontLeg = object { FrontLeg1(0) } #declare RearLeg = object { RearLeg1 } #declare SusArm2 = merge { object { Disk_X scale <0.80, 0.015, 0.05> translate -0.05*z } object { Disk_X translate -1*x scale <0.3, 0.0125, 0.025> rotate 30*y translate 0.8*x } object { Disk_X translate 1*x scale <0.3, 0.0125, 0.025> rotate -30*y translate -0.8*x } } #declare SusArms2 = merge { object { SusArm2 translate 0.1*y } object { SusArm2 translate -0.1*y } texture { DarkMetal } } #declare FrontTire2 = merge { object { Tire scale <0.15, 0.3, 0.3> } object { Shaft scale <0.15, 0.05, 0.05> } } #declare RearTire2 = object { Tire scale <0.2, 0.3, 0.3> } #macro FrontLeg2(ANGLE) merge { object { FrontTire2 scale <-1, 1, 1> translate -0.1*x rotate ANGLE*y translate -0.75*x } object { FrontTire2 translate 0.1*x rotate ANGLE*y translate 0.75*x } object { SusArms2 } translate <0.0, 0.0, -1.2> } #end #declare RearLeg2 = merge { object { RearTire2 scale <-1, 1, 1> translate -0.8*x } object { RearTire2 translate 0.8*x } object { Shaft scale <1.0, 0.05, 0.05> } object { SusArms2 scale <1, 1, -1> } translate <0.0, 0.0, 1.2> } // // エンジン回り // #declare Pipe = difference { // 排気管 object { Disk_Z scale <0.05, 0.05, 0.15> texture { Aluminum } } object { Disk_Z scale <0.04, 0.04, 1.0> texture { Dark } } } // // 車体回り(丸形) // #declare RoundBody = merge { // 丸形ボディ difference { object { // 本体 Disk_Z scale <0.5, 0.25, 1.5> translate -0.25*z } object { // 運転席 Cube scale <0.3, 0.25, 0.5> translate <0.0, 0.25, 0.0> texture { Inner } } } difference { // テール object { HSphere scale <0.5, 0.25, 1.0> } object { Cube translate 1.5*z } object { Disk_Z scale <0.35, 0.15, 0.25> translate 0.5*z texture { Dark } } translate 1.25*z } difference { // フロントフード object { Cone_Z scale <0.3, 0.2, -0.5> translate <0, 0.2, -1.0> } object { Disk_Z scale <0.5, 0.25, 1.5> translate -0.25*z } } difference { // リアフード object { QSphere scale <0.3, 0.4, 1.0> translate <0, 0.2, 0.5> } object { Disk_Z scale <0.5, 0.25, 1.5> translate -0.25*z } } object { Pipe translate <-0.25, 0.025, 1.65> } // 排気管 object { Pipe translate <-0.15, -0.025, 1.65> } object { Pipe translate < 0.15, -0.025, 1.65> } object { Pipe translate < 0.25, 0.025, 1.65> } } #declare RoundNose1 = object { // ノーズキャップ HSphere scale <0.5, 0.25, -1.0> translate <0.0, 0.0, -1.75> } #declare RoundNose2 = difference { // ノーズラジエータ intersection { object { Sphere scale <0.5, 0.25, 1.5> } object { Cube scale <0.5, 0.25, 0.5> translate -0.5*z } } object { Disk_Z scale <0.3, 0.15, 0.25> translate -1*z texture { Inner } } translate <0.0, 0.0, -1.75> } #declare SideGap = object { // 運転席えぐり Cube scale <0.300001, 2.0, 2.0> texture { Inner } } #declare RS1inner = object { // ラジエータ開口部 Disk_Z scale <0.15, 0.15, 0.4> texture { Inner } } #declare RS1sub = difference { object { Disk_Z scale <0.2, 0.2, 0.5> } object { RS1inner translate -0.5*z } object { RS1inner translate 0.5*z } } #declare RoundSide1 = difference { // 丸形コンパクト merge { object { RS1sub translate <-0.45, -0.05, 0.0> } object { RS1sub translate < 0.45, -0.05, 0.0> } } object { SideGap } } #declare RS2inner = object { // ラジエータ開口部 Disk_Z scale <0.95, 0.15, 0.4> texture { Inner } } #declare RoundSide2 = difference { // 丸形ワイド object { Disk_Z scale <1.0, 0.2, 0.8> translate < 0.0, -0.05, 0.0> } object { RS2inner translate <0.0, -0.05, -0.8> } object { RS2inner translate <0.0, -0.05, 0.8> } object { SideGap } } // // 車体回り(角形) // #declare BoxyBody = merge { // 角形ボディ difference { object { Cube scale <0.4, 0.25, 1.75> } // 本体 object { // 運転席 Cube scale <0.3, 0.25, 0.5> translate <0.0, 0.25, 0.0> texture { Inner } } object { // テール Disk_X scale <1, 0.45, 0.15> translate <0, -0.25, 1.75> } object { Cube scale <0.35, 0.2, 0.25> translate 1.75*z texture { Dark } } } intersection { // フロントフード object { Disk_X scale <0.3, 0.45, 2.0> translate <0.0, 0.0, 1.0> } object { Disk_Z scale <0.3, 0.25, 1.0> translate <0.0, 0.25, 0.0> } object { Cube scale <0.4, 0.25, 1.0> translate <0.0, 0.5, -1.0> } translate <0.0, 0.0, -0.5> } difference { // リアフード intersection { object { Disk_X scale <0.3, 0.7, 1.0> } object { Disk_Z scale <0.3, 0.5, 1.0> translate <0.0, 0.25, 0.0> } object { Cube scale <0.4, 0.45, 1.0> translate <0.0, 0.7, 1.0> } } object { // エアダクトえぐり Cube scale <0.1, 0.05, 0.2> translate <0.0, 0.6, 0.0> texture { Inner } } translate <0.0, 0.0, 0.5> } object { Pipe translate <-0.30, 0.1, 1.65> } // 排気管 object { Pipe translate <-0.10, 0.1, 1.65> } object { Pipe translate < 0.10, 0.1, 1.65> } object { Pipe translate < 0.30, 0.1, 1.65> } } #declare BoxyNose1 = intersection { // ミドル object { Disk_X scale <0.4, 0.25, 1.0> } object { Disk_Y scale <0.4, 1.0, 1.5> } object { Cube translate -1*z scale <0.5, 0.5, 1.0> } translate <0.0, 0.0, -1.75> } #declare BoxyNose2 = intersection { // キックダウン object { Disk_X scale <0.4, 0.5, 1.0> } object { Disk_Y scale <0.4, 1.0, 1.5> } object { Cube translate <0.0, 1.0, -1.0> } translate <0.0, -0.25, -1.75> } #declare BoxyNoseN1 = intersection { // 巾狭ミドル object { Disk_X scale <0.4, 0.25, 1.0> } object { Disk_Y scale <0.4, 1.0, 1.0> } object { Cube translate -1*z scale <0.5, 0.5, 1.0> } translate <0.0, 0.0, -1.75> } #declare BoxyNoseN2 = intersection { // 巾狭キックダウン object { Disk_X scale <0.4, 0.5, 1.0> } object { Disk_Y scale <0.4, 1.0, 1.0> } object { Cube translate <0.0, 1.0, -1.0> } translate <0.0, -0.25, -1.75> } #declare BoxyNoseR1 = intersection { // 丸形アップ object { Sphere scale <1.5, 0.75, 10.0> translate 9*z } object { Cube translate -1*z scale <0.4, 0.25, 0.5> } translate <0.0, 0.0, -1.75> } #declare BoxyNoseR2 = intersection { // 丸形キックダウン object { Sphere scale <1.5, 1.5, 10.0> translate 9.0*z } object { Cube translate <0, 1, -1> scale <0.4, 0.25, 0.5> } translate <0.0, -0.25, -1.75> } #declare BS1inner = object { Cube scale <0.75, 0.15, 0.4> texture { Inner } } #declare BoxySide1 = difference { // 角形コンパクト object { Cube scale <0.8, 0.2, 0.5> translate <0.0, -0.05, 0.0> } object { BS1inner translate <0.0, -0.05, -0.5> } object { BS1inner translate <0.0, -0.05, 0.5> } object { SideGap } } #declare BS2inner = object { Cube scale <0.95, 0.15, 0.4> texture { Inner } } #declare BoxySide2 = difference { // 角形ワイド object { Cube scale <1.0, 0.2, 0.8> translate <0.0, -0.05, 0.0> } object { BS2inner translate <0.0, -0.05, -0.8> } object { BS2inner translate <0.0, -0.05, 0.8> } object { SideGap } } // // 車体回り(エアロ) // #declare AeroNose1 = intersection { // アップ object { Disk_X scale <1.00, 0.3, 1.0> } object { Disk_Y scale <0.25, 1.0, 1.25> } object { Cube scale <0.25, 0.3, 1.0> translate <0.0, -0.3, -1.0> } translate <0.0, 0.25, -1.75> } #declare AeroNose2 = intersection { // ミドル object { Disk_X scale <1.00, 0.15, 1.0> } object { Disk_Y scale <0.25, 1.0, 1.25> } object { Cube scale <0.25, 0.3, 1.0> translate -1.0*z } translate <0.0, 0.10, -1.75> } #declare AeroNose3 = intersection { // キックダウン object { Disk_X scale <1.00, 0.3, 1.0> } object { Disk_Y scale <0.25, 1.0, 1.25> } object { Cube scale <0.25, 0.3, 1.0> translate <0.0, 0.3, -1.0> } translate <0.0, -0.05, -1.75> } #declare AeroNoseN1 = intersection { // 巾狭アップ object { Disk_X scale <1.00, 0.3, 1.0> } object { Disk_Y scale <0.25, 0.3, 1.0> } object { Cube scale <1.0, 0.3, 1.0> translate <0.0, -0.3, -1.0> } translate <0.0, 0.25, -1.75> } #declare AeroNoseN2 = intersection { // 巾狭ミドル object { Disk_X scale <1.00, 0.15, 1.0> } object { Disk_Y scale <0.25, 0.3, 1.0> } object { Cube scale <0.25, 0.3, 1.0> translate -1.0*z } translate <0.0, 0.10, -1.75> } #declare AeroNoseN3 = intersection { // 巾狭キックダウン object { Disk_X scale <1.00, 0.3, 1.0> } object { Disk_Y scale <0.25, 0.3, 1.0> } object { Cube scale <1.0, 0.3, 1.0> translate <0.0, 0.3, -1.0> } translate <0.0, -0.05, -1.75> } #declare AHood = difference { // リアフード intersection { object { Sphere scale <0.25, 0.75, 1.25> } object { Cube translate <0, 1.25, 1> } } object { // エアダクトえぐり Disk_Z scale <0.075, 0.05, 0.2> translate <0.0, 0.65, 0.0> texture { Dark } } object { Cube scale <0.4, 0.25, 1.0> } translate <0.0, -0.1, 0.5> } #declare ABody = difference { // 本体 object { Cube scale <0.4, 0.25, 1.75> } object { // 前部側面えぐり Disk_Y scale <0.5, 1.0, 1.75> translate <-0.75, 0.0, -1.75> } object { Disk_Y scale <0.5, 1.0, 1.75> translate < 0.75, 0.0, -1.75> } object { // 後部側面えぐり Disk_Y scale <0.5, 1.0, 1.0> translate <-0.75, 0.0, 1.75> } object { Disk_Y scale <0.5, 1.0, 1.0> translate < 0.75, 0.0, 1.75> } object { // 後部上面えぐり Disk_X scale <1, 0.1, 0.85> translate <0, 0.25, 1.75> } object { // テール Disk_X scale <1, 0.375, 0.15> translate <0, -0.25, 1.75> } object { Cube scale <0.225, 0.175, 0.25> translate <0, -0.05, 1.75> texture { Dark } } object { // 運転席開口部 Disk_Y scale <0.3, 0.25, 0.5> translate <0.0, 0.25, 0.0> } object { // 運転席内部 Cube scale <0.35, 0.11, 0.5> translate <0.0, 0.11, 0.0> texture { Inner } } object { // 前方下部ラジエータ Cube scale <0.21, 0.09, 0.25> translate <0.0, -0.14, -1.75> texture { Inner } } } #declare AeroBody = merge { // 空力ボディ difference { merge { object { ABody } object { AHood } } merge { // 排気孔 object { Sphere scale <0.075, 0.075, 0.25> translate < 0.25, 0.175, 0.9> } object { Sphere scale <0.075, 0.075, 0.25> translate <-0.25, 0.175, 0.9> } texture { Inner } } } merge { // 排気管 object { Pipe translate 0.25*x } object { Pipe translate -0.25*x } rotate -10*x translate <0, 0.175, 0.9> } } #declare AS1inner = object { // ラジエータ開口 Cube scale <0.65, 0.2, 0.5> texture { Inner } } #declare AS1sub = object { Disk_Y scale <0.55, 0.249999, 0.6> } #declare AeroSide1 = difference { // コンパクト merge { object { AS1sub translate -0.25*x } object { AS1sub translate 0.25*x } } object { AS1inner translate -0.6*z } object { AS1inner translate 0.6*z } object { SideGap } } #declare AS2inner = object { // ラジエータ開口部 Cube scale <0.85, 0.2, 0.5> texture { Inner } } #declare AS2sub = object { Disk_Y scale <0.75, 0.249999, 1.0> } #declare AeroSide2 = difference { // ワイド merge { object { AS2sub translate -0.25*x } object { AS2sub translate 0.25*x } } object { AS2inner translate -1.0*z } object { AS2inner translate 1.0*z } object { SideGap } } // // 空力関係 // #declare FrontWing1 = merge { // コンパクト object { Disk_X scale <0.8, 0.05, 0.15> } object { Disk_X scale <0.01, 0.1, 0.15> translate <-0.8, 0.0, 0.0> } object { Disk_X scale <0.01, 0.1, 0.15> translate < 0.8, 0.0, 0.0> } translate <0.0, 0.0, -2.0> } #declare FrontWing2 = merge { // ワイド object { Disk_X scale <1.0, 0.05, 0.15> } object { Disk_X scale <0.01, 0.1, 0.15> translate <-1.0, 0.0, 0.0> } object { Disk_X scale <0.01, 0.1, 0.15> translate < 1.0, 0.0, 0.0> } translate <0.0, 0.0, -2.0> } #declare FrontWing3 = merge { // エアロボディー用 object { Disk_X scale <0.9, 0.05, 0.15> } intersection { merge { object { // 右フィン Disk_X scale <0.01, 0.2, 0.30> translate <-0.9, 0.0, 0.15> } object { // 左フィン Disk_X scale <0.01, 0.2, 0.30> translate < 0.9, 0.0, 0.15> } } object { Cube scale <1.0, 0.3, 0.15> translate <0.0, 0.25, 0.0> } } intersection { // ステー object { torus { 0.15 0.025 } rotate 90*x scale <1, 2, 4> } object { Cube translate 1*y } } translate <0.0, -0.2, -2.0> } #declare RearWing1 = merge { // コンパクト object { Disk_X scale <0.6, 0.05, 0.2> } object { Disk_X scale <0.01, 0.1, 0.2> translate <-0.6, 0.0, 0.0> } object { Disk_X scale <0.01, 0.1, 0.2> translate < 0.6, 0.0, 0.0> } object { Disk_Y scale <0.05, 0.2, 0.1> translate <0.0, -0.2, 0.0> } translate <0.0, 0.5, 1.8> } #declare RearWing2 = merge { // ワイド object { Disk_X scale <1.0, 0.05, 0.2> } object { Disk_X scale <0.01, 0.1, 0.2> translate <-1.0, 0.0, 0.0> } object { Disk_X scale <0.01, 0.1, 0.2> translate < 1.0, 0.0, 0.0> } object { Disk_Y scale <0.05, 0.2, 0.1> translate <-0.2, -0.2, 0.0> } object { Disk_Y scale <0.05, 0.2, 0.1> translate < 0.2, -0.2, 0.0> } translate <0.0, 0.5, 1.8> } #declare RearWing3 = merge { // エアロボディー用 object { Disk_X scale <0.55, 0.05, 0.2> } object { Cube scale <0.01, 0.3, 0.2> translate <-0.55, -0.2, 0.0> } object { Cube scale <0.01, 0.3, 0.2> translate < 0.55, -0.2, 0.0> } object { Disk_X scale <0.55, 0.05, 0.2> translate <0.0, -0.4, 0.0> } translate <0.0, 0.4, 1.8> } // // ドライバー関係 // #declare Gogle = merge { intersection { // フレーム difference { object { Disk_X scale <1.0, 0.035, 0.06> } object { Disk_X scale <2.0, 0.025, 0.05> } translate <0, -0.045, -0.125> rotate 15*x } object { Disk_Y scale <0.1, 1.0, 0.125> inverse } object { Disk_Y scale <0.125, 1.0, 0.15> } texture { Dark } } intersection { // レンズ object { Disk_X scale <1.0, 0.034, 0.059> translate <0, -0.045, -0.125> rotate 15*x } object { Disk_Y scale <0.123, 1.0, 0.148> inverse } object { Disk_Y scale <0.124, 1.0, 0.149> } texture {T_Green_Glass} finish { conserve_energy } } translate <0.0, 0.425, 0.25> } #declare Shield = difference { difference { object { Disk_Y scale <0.155, 1.0, 0.180> } object { Disk_Y scale <0.152, 2.0, 0.177> } translate (-1+0.01)*y rotate 15*x } object { Cube translate <0, -1.055, -1> } object { Cube translate <0, 0, 1> rotate 15*x } translate <0.0, 0.425, 0.25> texture {T_Dark_Green_Glass} finish { conserve_energy } } #declare HelmetOuter = intersection { merge { object { Sphere scale <0.15, 0.15, 0.175> } object { Disk_Y scale <0.15, 0.05, 0.175> translate -0.05*y } object { Sphere scale <0.15, 0.15, 0.175> translate -0.10*y } rotate 15*x } object { Cube translate (1-0.15)*y texture { Dark } } } #declare HelmetInner = merge { object { // 頭上 Sphere scale <0.1, 0.1, 0.125> } object { // 頭下 Disk_Y scale <0.1, 0.1, 0.125> translate -0.1*y } intersection { // 顎前 object { Disk_Y scale <0.1, 0.20, 0.175> } object { Cube translate <0.0, -1.0, -1.0> } } texture { Dark } } #declare Helmet1 = difference { // ジェット型 object { HelmetOuter } object { HelmetInner } merge { object { Cube translate <0, -1, -1> } object { Cube translate <0, -1, -1> rotate -45*x translate -0.075*y } rotate 15*x texture { Dark } translate <0.0, 0.0, -0.05> } translate <0.0, 0.425, 0.25> } #declare Helmet2 = difference { // フルフェイス型 object { HelmetOuter } object { HelmetInner } difference { object { Cube translate <0, -1, -1> rotate 15*x } object { Cube scale 1 translate <0, -1.040, -1> } texture { Dark } translate <0.0, 0.0, -0.05> } translate <0.0, 0.425, 0.25> } #declare StWheel = merge { object { // ハンドル torus { 0.225 0.025 rotate 90*x } texture { Dark } } difference { // スポーク object { Disk_Z scale <0.225, 0.225, 0.01> } object { Disk_Z scale <0.5, 0.2, 0.02> translate <0.0, 0.275, 0.0> } object { Disk_Z scale <0.2, 0.2, 0.02> translate <-0.25, -0.2, 0.0> } object { Disk_Z scale <0.2, 0.2, 0.02> translate < 0.25, -0.2, 0.0> } pigment { color Gray80 } finish { Smooth } } object { // ボルト Disk_Z scale <0.05, 0.05, 0.025> texture { Dark } } object { // シャフト Disk_Z scale <0.025, 0.025, 0.1> translate <0.0, 0.0, -0.1> pigment { color Gray80 } finish { Smooth } } } #declare Eye = merge { object { Sphere scale <0.030, 0.030, 0.030> pigment { color White } finish { Smooth } } object { Sphere scale <0.008, 0.008, 0.002> translate -0.030*z pigment { color Blue } finish { Polished } } } #declare HeadMain = merge { object { // 頭 Sphere scale <0.1, 0.1, 0.125> } intersection { // 顎 object { Disk_Y scale <0.1, 0.15, 0.125> } object { Disk_X scale <0.1, 0.15, 0.125> translate -0.125*z } object { Cube translate <0.0, -1.0, -1.0> } } } #declare Head = merge { difference { object { HeadMain } object { Cube translate <0, -1, -1> rotate 25*x translate <0.0, 0.0, -0.125 + 0.03> } } object { Eye translate <-0.035, -0.0025, -0.08> } object { Eye translate < 0.035, -0.0025, -0.08> } object { // 鼻 Disk_Y scale <0.015, 0.04, 0.04> rotate 30*x translate <0.0, -0.04, -0.10> } object { // 首 Disk_Y scale <0.075, 0.1, 0.075> translate <0.0, -0.15, 0.0> } pigment { color Flesh } finish { Smooth } translate <0.0, 0.425, 0.0> } #declare Driver = merge { object { Head } object { // 肩 Sphere scale <0.25, 0.1, 0.175> translate <0.0, 0.15, 0.0> } object { // 胴体 Disk_Y scale <0.25, 0.1, 0.175> translate <0.0, 0.05, 0.0> } object { // 右肩 Sphere scale <0.08, 0.11, 0.125> translate <-0.25, 0.11, -0.05> } object { // 左肩 Sphere scale <0.08, 0.11, 0.125> translate < 0.25, 0.11, -0.05> } object { // 右腕 Disk_Z scale <0.05, 0.08, 0.3> translate <-0.25, 0.08, -0.3> } object { // 左腕 Disk_Z scale <0.05, 0.08, 0.3> translate < 0.25, 0.08, -0.3> } merge { // 右手 intersection { object { Sphere scale <0.06, 0.1, 0.10> } object { Cube translate 1*z } } object { Sphere scale <0.06, 0.1, 0.05> } translate <-0.25, 0.10, -0.6> } merge { // 左手 intersection { object { Sphere scale <0.06, 0.1, 0.10> } object { Cube translate 1*z } } object { Sphere scale <0.06, 0.1, 0.05> } translate < 0.25, 0.10, -0.6> } object { // ステアリングホイール StWheel translate < 0.0, 0.10, -0.6> } translate <0.0, 0.0, 0.25> pigment { color Orange } finish { Smooth } } // // 気球 // #declare BalloonColor = array[3] { OrangeRed, LimeGreen, NeonBlue } #declare BalloonBody = merge { object { Sphere scale 1.0 translate 0.5*y // texture { DarkMetal } } #local I = 0; #while (I < 12) #local J = 1; #while (J < 12) #local S = pow(J/12.0, 2); object { Sphere scale 1.0 + S translate (0.5 + 2.0*S)*y rotate 15*J*z #if (mod(I+J, 2) = 0) // pigment { color BalloonColor[mod(I+J, 2)] } pigment { color White } finish { Smooth } #end rotate 30*I*y } #local J = J + 1; #end #local I = I + 1; #end object { Sphere scale 2 translate -2.5*y // texture { DarkMetal } } } #declare Balloon = merge { difference { object { BalloonBody } object { Sphere scale <1, 2, 1> translate -4*y texture { Dark } } } #local I = 0; #while (I < 6) object { // ロープ Disk_Y scale <0.05, 1.0, 0.05> translate 1*y rotate -20*z translate <0.45, -5.5, 0> rotate 60*I*y texture { DarkMetal } } #local I = I + 1; #end object { // カゴ Disk_Y scale <0.5, 0.5, 0.5> translate -6.0*y texture { DarkMetal } } } #macro Balloons(N) #local I = 0; #while (I < N) #local X = (rand(SEED) - 0.5)*1000.0; #local Y = rand(SEED)*15.0 + 15.0; #local Z = (rand(SEED) - 0.5)*1000.0; #local C = mod(int(rand(SEED)*10000), 3); object { Balloon translate finish { Smooth } pigment { color BalloonColor[C] } } #local I = I + 1; #end #end // // 地面 // #declare Line = object { Cylinder_Z pigment { checker color White, color Red translate <0.5, 0.0, 0.0> scale <10.0, 1.0, 2.0> } finish { Smooth } scale <0.25, 0.1, 1.0> rotate z*180 } #declare Fence = object { Plane_YZ double_illuminate clipped_by { Cylinder_Z scale 0.5 } pigment { color CadetBlue } finish { Smooth } translate 0.5*y } #declare GreenBelt = difference { object { Plane_XZ pigment { dents color_map { [0.0 color ForestGreen] [0.2 color MediumForestGreen] [0.8 color Goldenrod] } scale 5 } } // clipped_by { Cylinder_Z scale 10.0 } object { Cylinder_Z scale 7.5 } finish { Smooth } } #declare Ground = merge { object { // コース Plane_XZ texture {T_Grnt1 finish { Smooth } } scale 0.01 clipped_by { Cylinder_Z scale 7.5 } } object { GreenBelt } // 芝 object { Line translate <-7.5, 0.0, 0.0> } object { Line translate < 7.5, 0.0, 0.0> } object { Fence translate <-20.0, 0.0, 0.0> } object { Fence translate < 20.0, 0.0, 0.0> } translate -0.3*y } // // 空 // #declare Sky = sky_sphere { pigment { bozo color_map { [ 0.2 color SkyBlue ] [ 0.8 White ] } scale <0.2, 0.05, 0.15> } } #declare Clear = sky_sphere { // 快晴 pigment { gradient y color_map{ [ 0.0 color rgb <1.0, 1.0, 1.0> ] [ 0.3 color rgb <0.5, 0.7, 1.0> ] } } } #declare Fine = sky_sphere { // 晴れ pigment { wrinkles color_map{ [ 0.2 color White ] [ 0.8 color rgb <0.3, 0.4, 1.2>] } scale <1.0, 0.2, 1.0> } } #declare Cloudy = sky_sphere { // 曇り pigment { wrinkles color_map{ [ 0.2 color DarkSlateGray ] [ 0.8 color Gray80 ] } scale <1, 0.1, 1.0> } } #declare Sunset = sky_sphere { // 夕焼け pigment { gradient y color_map{ [ 0.0 color Orange ] [ 0.4 color rgb <0.3, 0.4, 1.2> ] } } pigment { wrinkles color_map{ [ 0.3 color Gray50 filter 0.1 ] [ 0.7 color White filter 1.0 ] } scale <1.0, 0.2, 1.0> } } // // 座標軸 // #declare Axis = merge { object { Disk_X scale <1.0, 0.01, 0.01> } object { Cone_X scale <0.1, 0.03, 0.03> translate 1.1*x } } #declare Axis_X = object { Axis } #declare Axis_Y = object { Axis rotate 90*z } #declare Axis_Z = object { Axis rotate -90*y } // // 見本車 // #macro RoundCar(SA, BC, HC) merge { merge { // マシン object { RoundBody } object { FrontLeg1(SA) translate -0.3*z } object { RearLeg1 translate 0.2*z } object { RoundNose1 } object { RoundSide1 translate 0.0*z } object { FrontWing1 translate <0.0, 0.0, -0.3> } object { RearWing1 translate <0.0, 0.0, 0.0> } pigment { color BC } } merge { // ドライバー object { Driver } object { Gogle } object { Helmet1 pigment { color HC } } } // translate 0.3*y } #end #macro BoxyCar(SA, BC, HC) merge { merge { // マシン object { BoxyBody } object { FrontLeg1(SA) translate -0.3*z } object { RearLeg1 translate 0.2*z } object { BoxyNose2 } object { BoxySide2 translate 0.0*z } object { FrontWing2 translate <0.0, -0.15, -0.3> } object { RearWing2 translate <0.0, 0.15, 0.0> } pigment { color BC } } merge { // ドライバー object { Driver } object { Shield } object { Helmet2 pigment { color HC } } } // translate 0.3*y } #end #macro AeroCar(SA, BC, HC) merge { merge { // マシン object { AeroBody } object { FrontLeg2(SA) translate -0.3*z } object { RearLeg2 translate 0.2*z } object { AeroNoseN2 } object { AeroSide1 translate 0.3*z } object { FrontWing3 translate <0.0, 0.0, -0.2> } object { RearWing3 translate <0.0, 0.0, 0.0> } pigment { color BC } } merge { // ドライバー object { Driver pigment { color Orange } } object { Shield } object { Helmet2 pigment { color HC } } translate -0.05*y } // translate 0.3*y } #end #macro OddCar(SA, BC, HC) merge { merge { // マシン object { BoxyBody } object { FrontLeg1(SA) translate -0.3*z } object { RearLeg1 translate -0.3*z } object { RearLeg1 translate 0.35*z } object { BoxyNose2 } object { BoxySide1 translate -0.2*z } object { FrontWing2 translate <0.0, -0.15, -0.3> } object { RearWing2 translate <0.0, 0.15, 0.0> } pigment { color BC } } merge { // ドライバー object { Driver pigment { color Orange } } object { Shield } object { Helmet2 pigment { color HC } } translate -0.05*y } // translate 0.3*y } #end #declare Car1 = merge { merge { // マシン object { AeroBody } object { AeroNoseN1 } object { AeroSide1 translate <0.0, 0.0, 0.0> } object { FrontWing3 translate <0.0, 0.0, -0.3> } object { RearWing3 translate <0.0, 0.0, 0.0> } object { FrontLeg2(-10) translate <0.0, 0.0, -0.3> } object { RearLeg2 translate <0.0, 0.0, 0.2> } pigment{ color RichBlue } } merge { // ドライバー object { Driver pigment { color Orange } } object { Shield } object { Helmet2 pigment { color Goldenrod } } translate -0.1*y } // translate 0.3*y } #declare Car2 = merge { merge { // マシン object { AeroBody } object { AeroNoseN2 } object { AeroSide1 } object { FrontWing3 translate -0.3*z pigment { color Yellow } } object { RearWing3 pigment { color Yellow } } object { FrontLeg2(-5) translate -0.4*z } object { RearLeg2 translate 0.2*z } pigment{color Green} } merge { // ドライバー object { Driver pigment { color Red } } object { Shield } object { Helmet2 pigment { color Yellow } } translate -0.1*y } // translate 0.3*y } #declare Car3 = merge { merge { // マシン object { AeroBody } object { AeroNose2 } object { AeroSide1 } object { FrontWing3 translate -0.3*z pigment { color White } } object { RearWing3 pigment { color White } } object { FrontLeg2(0) translate -0.3*z } object { RearLeg2 translate 0.2*z } pigment { color Red } } merge { // ドライバー object { Driver pigment { color Blue } } object { Shield } object { Helmet2 pigment { color Gray } } translate -0.1*y } // translate 0.3*y }