|
|
Greetings,
As promised, here are the 729 lines of Dr. Manhattan's Ship. If
you're gonna use my glass texture (or any other glass texture,
for that matter), be ready to wauit. A lot.
And if you use it on your scene, please, mail me a sample of the
result.
Thanks,
Ruy
______________________________________________
/*********************************************************/
/* */
/* Dr. Manhattan's Martian Ship */
/* ============================ */
/* */
/* As seen on Watchmen (DC Comics, 1986) by Allan Moore */
/* and David Gibbons. All rights reserved. This picture */
/* was modelled for non-commercial purposes only. */
/* */
/* Author: Ruy Flavio de Oliveira <ruy### [at] hipernetcombr> */
/* */
/*********************************************************/
global_settings
{
assumed_gamma 1.0
max_trace_level 20
radiosity
{
brightness 0.1
count 120
distance_maximum 5
error_bound 0.35
}
}
#declare Pink_Glass =
texture {
pigment { color rgbf<1.0, 0.9, 0.9, 0.7> }
finish
{
specular 1
roughness 0.001
ambient 0
diffuse 0
reflection 0.1
refraction 1
ior 1.5
}
}
/*********************************************************/
/* */
/* Cunhas - (don't know how to say taht properly in */
/* English). Union of "fat" and "thin" ones, */
/* to be taken */
/* from a cylinder making a Wheel. */
/* */
/* Ring - Inner ring of the Wheel. */
/* */
/* Spikes - Twelve Spikes on each "hour" of the Wheel. */
/* */
/* Teeth - 144 teeth on the Cog. */
/* */
/*********************************************************/
#declare Cunhinha = difference
{
difference
{
cylinder { <0, -0.026, 0>, <0, 0.026, 0>, 1.5 }
plane { z, 0 inverse rotate y*77 translate z*-0.1 }
}
plane {z, 0 inverse rotate y*-77 translate z*-0.1 }
rotate y*15
}
#declare Cunhinhas = union
{
#declare Juca = 0;
#while (Juca < 4)
object { Cunhinha rotate y*30 rotate y*Juca*90 }
#declare Juca = Juca + 1;
#end
}
#declare Cunhona = difference
{
difference
{
cylinder { <0, -0.026, 0>, <0, 0.026, 0>, 1.5 }
plane { z, 0 inverse rotate y*63 translate z*-0.1 }
}
plane {z, 0 inverse rotate y*-63 translate z*-0.1 }
rotate y*15
}
#declare Cunhonas = union
{
#declare Juca = 0;
#while (Juca < 4)
object { Cunhona rotate y*-15 rotate y*Juca*90 }
#declare Juca = Juca + 1;
#end
}
#declare Cunhas = union
{
object { Cunhinhas }
object { Cunhonas }
bounded_by { cylinder { <0, -0.0261, 0> <0, 0.0261, 0> 1.501
} }
}
#declare Ring = difference
{
cylinder { <0, -0.025, 0> <0, 0.025, 0> 0.9 }
cylinder { <0, -0.026, 0> <0, 0.026, 0> 0.7 }
}
#declare Wheel = object
{
difference
{
cylinder { <0, -0.025, 0>, <0, 0.025, 0>, 1.92 }
object { Cunhas }
}
bounded_by { cylinder { <0, -0.055, 0> <0, 0.055, 0> 2.01 } }
}
#declare Spike = difference
{
difference
{
cylinder { <0, -0.025, 0>, <0, 0.025, 0>, .8 }
plane { z, 0 rotate y*83 }
}
plane {z, 0 rotate y*-83 }
}
#declare Spikes1 = union
{
#declare Juca = 0;
#while (Juca < 4 )
object { Spike translate z*-2.5 rotate y*30 rotate
y*Juca*90 }
#declare Juca = Juca + 1;
#end
}
#declare Spikes2 = union
{
#declare Juca = 0;
#while (Juca < 4 )
object { Spike translate z*-2.5 rotate y*60 rotate
y*Juca*90 }
#declare Juca = Juca + 1;
#end
}
#declare Tooth = difference
{
difference
{
cylinder { <0, -0.026, 0>, <0, 0.026, 0>, 0.2 }
plane { z, 0 inverse rotate y*68 }
}
plane {z, 0 inverse rotate y*-68 }
}
#declare Bounding_Ring = difference
{
cylinder { <0, -0.031, 0> <0, 0.031> 1.92 }
cylinder { <0, -0.032, 0> <0, 0.032> 1.78 }
}
#declare Teeth = merge
{
#declare Juca = 0;
#while (Juca < 144 )
object { Tooth
translate z*-1.8
rotate y*-30
rotate y*Juca*2.5 }
#declare Juca = Juca + 1;
#end
bounded_by { Bounding_Ring }
}
#declare Little_Teeth1 = merge
{
#declare Juca = 0;
#while (Juca < 30 )
object { Tooth
translate z*-0.15
rotate y*-30
rotate y*Juca*12 }
#declare Juca = Juca + 1;
#end
// bounded_by { Bounding_Ring }
}
#declare Little_Teeth2 = merge
{
#declare Juca = 0;
#while (Juca < 20 )
object { Tooth
translate z*-0.10
rotate y*-30
rotate y*Juca*18 }
#declare Juca = Juca + 1;
#end
}
#declare Little_Cog1 = difference
{
difference
{
cylinder { <0, -0.025, 0> <0, 0.025, 0> 0.2 }
object { Little_Teeth1 }
}
cylinder { <0, -0.026, 0> <0, 0.026, 0> 0.08 }
bounded_by { cylinder { <0, -0.026, 0> <0, 0.026, 0> 0.2 } }
}
#declare Little_Cog2 = difference
{
difference
{
cylinder { <0, -0.025, 0> <0, 0.025, 0> 0.18 }
object { Little_Teeth2 }
}
cylinder { <0, -0.026, 0> <0, 0.026, 0> 0.08 }
bounded_by { cylinder { <0, -0.026, 0> <0, 0.026, 0> 0.18 } }
}
#declare Little_Cogs = merge
{
object { Little_Cog1 translate y* 1.1 }
object { Little_Cog2 translate y* 1.0 }
object { Little_Cog2 translate y*-1.0 }
object { Little_Cog1 translate y*-1.1 }
}
#declare Cog = merge
{
difference
{
object { Wheel }
object { Teeth }
}
object { Spikes1 }
object { Spikes2 }
object { Ring }
bounded_by { cylinder { <0, -.03, 0> <0, .03, 0> 2.5 } }
}
/*********************************************************/
/* Little watch hands. */
/* 12 of them pointing out of the Ship */
/*********************************************************/
#declare Hand = union
{
prism
{
linear_sweep
linear_spline
-0.025, 0.025, 8,
<-0.03, 0.00>, <-0.03, 0.40>, <-0.06, 0.37>,
< 0.00, 0.55>, < 0.06, 0.37>, < 0.03, 0.40>,
< 0.03, 0.00>, <-0.03, 0.00>
}
cylinder { <0, 0, 0.00> <0, 0, -0.06> 0.06 }
cylinder { <0, 0, -0.06> <0, 0, -0.12> 0.08 }
cylinder { <0, 0, -0.12> <0, 0, -0.18> 0.10 }
translate z*0.18
}
/*********************************************************/
/* Spears. Lots of them */
/* */
/* Twelve_Spears */
/* There is 12 double spears (formed by object Spear) */
/* on the rim of the Ship, where theHands come out. */
/* */
/* Six_Spears */
/* There are 6 double spears (formed by object Spear) */
/* going through the horizontal hour glasses. */
/* */
/* Six_Single_Spears */
/* There are 2 groups of 6 single pears, (object */
/* Single_Spear) keeping the highest (and it's double, */
/* the lowest) balcony. */
/* */
/* Big_Spear */
/* The large Spear-like column that goes through the */
/* center of the Ship. */
/* */
/*********************************************************/
#declare Tip = merge
{
cone { y*1.7, 0.07, y*2.3, 0 }
difference
{
cone { y*0.05, 0.07, 0, 0.05 }
torus { 0.096, 0.056 }
translate y*-0.05
scale <1, 2, 1>
translate y*1.7
}
}
#declare Spear = merge
{
object { Tip }
cylinder { <0, -1.7, 0> <0, 1.7, 0> 0.04 }
object { Tip rotate x*180 }
bounded_by { cylinder { <0, -2.31, 0> <0, 2.31, 0>, 0.071 } }
}
#declare Single_Spear = merge
{
object { Tip translate y*-0.4 }
cylinder { <0, -1.3, 0> <0, 1.3, 0> 0.03 }
bounded_by { cylinder { <0, -2.31, 0> <0, 2.31, 0>, 0.071 } }
}
#declare Twelve_Spears = merge
{
#declare Juca = 0;
#while (Juca < 12)
object { Spear translate z*3.03 rotate y*Juca*30 }
object { Hand translate z*3.00 rotate y*Juca*30 }
#declare Juca = Juca + 1;
#end
}
#declare Six_Spears = merge
{
#declare Juca = 0;
#while (Juca < 6)
object
{
Spear
scale 0.8
translate z*1.93
rotate y*30
rotate y*Juca*60
}
#declare Juca = Juca + 1;
#end
}
#declare Six_Single_Spears = merge
{
#declare Juca = 0;
#while (Juca < 6)
object
{
Single_Spear
scale 0.8
translate <0, 2.75, 0.48>
rotate y*Juca*60
}
#declare Juca = Juca + 1;
#end
}
#declare Big_Tip = merge
{
cone { y*3.9, 0.15, y*4.5, 0 }
difference
{
cone { 0, 0.15, -0.07*y, 0.13 }
torus { 0.15, 0.07 translate -0.07*y }
scale <1, 3, 1>
translate y*3.901
}
}
#declare Big_Spear = merge
{
object { Big_Tip }
cylinder { <0, -3.7, 0> <0, 3.7, 0> 0.08 }
object { Big_Tip rotate x*180 }
bounded_by { cylinder { <0, -4.51, 0> <0, 4.51, 0>, 0.151 } }
}
#declare Little_Ring1 = difference
{
cylinder { <0, -0.025, 0> <0, 0.025, 0> 0.15 }
cylinder { <0, -0.026, 0> <0, 0.025, 0> 0.08 }
}
#declare Little_Ring2 = difference
{
cylinder { <0, -0.025, 0> <0, 0.025, 0> 0.12 }
cylinder { <0, -0.026, 0> <0, 0.025, 0> 0.08 }
}
#declare Little_Rings = merge
{
object { Little_Ring1 translate -3.65*y }
object { Little_Ring2 translate -3.58*y }
object { Little_Ring2 translate 3.58*y }
object { Little_Ring1 translate 3.65*y }
}
/*********************************************************/
/* The six Hour Horizontal Hour Glasses. Deatails too */
/* boring to be discussed here. All CSG. */
/*********************************************************/
#declare Hemisphere = merge
{
difference
{
difference
{
sphere { 0, 0.50 }
sphere { 0, 0.49 }
}
plane { z, 0 }
}
cylinder { <0, 0, -0.01> <0, 0, 0> 0.5 }
}
#declare Differential_Hemisphere = merge
{
difference
{
sphere { 0, 0.50 }
plane { z, 0 }
}
cylinder { <0, 0, -0.01> <0, 0, 0> 0.5 }
}
#declare Hour_Glass = merge
{
object { Hemisphere translate z*-0.56 }
cylinder { <0, 0, -0.09> <0, 0, -0.03> 0.13 }
cylinder { <0, 0, -0.03> <0, 0, 0.03> 0.20 }
cylinder { <0, 0, 0.03> <0, 0, 0.09> 0.13 }
object { Hemisphere translate z*-0.56 rotate y*180 }
}
#declare Differential_Hour_Glass = merge
{
object { Differential_Hemisphere translate z*-0.56 }
cylinder { <0, 0, -0.09> <0, 0, -0.03> 0.13 }
cylinder { <0, 0, -0.03> <0, 0, 0.03> 0.20 }
cylinder { <0, 0, 0.03> <0, 0, 0.09> 0.13 }
object { Differential_Hemisphere translate z*-0.56 rotate
y*180 }
bounded_by { cylinder { <0, 0, -0.7> <0, 0, 0.7> 0.51 } }
}
#declare Six_Hour_Glasses = merge
{
#declare Juca = 0;
#while ( Juca < 6 )
object
{
Hour_Glass
scale 0.7
translate z*1.93
rotate y*30
rotate y*Juca*60
}
#declare Juca = Juca + 1;
#end
}
#declare Six_Differential_Hour_Glasses = merge
{
#declare Juca = 0;
#while ( Juca < 6 )
object
{
Differential_Hour_Glass
scale 0.7
translate z*1.93
rotate y*30
rotate y*Juca*60
}
#declare Juca = Juca + 1;
#end
}
/*********************************************************/
/* 2 pairs of domes (one of them is actually a balcony), */
/* at the top and at the bottom of the Ship. */
/*********************************************************/
#declare Lower_Dome = object
{
Hemisphere
scale 1.2
rotate x*-90
translate y*1.5
}
#declare Lower_Hemisphere = object
{
difference
{
sphere { 0, 0.50 }
plane { z, 0 }
}
scale 1.2
rotate x*-90
translate y*1.5
}
#declare Upper_Dome = object
{
merge
{
object { Hemisphere }
difference
{
cylinder { <0, 0, -0.01> <0, 0, -0.06> 0.50 }
cylinder { <0, 0, 0.00> <0, 0, -0.07> 0.49 }
}
}
scale 1.2
rotate x*90
translate y*3.0
}
#declare Upper_Hemisphere = object
{
difference
{
sphere { 0, 0.50 }
plane { z, 0 }
}
scale 1.2
rotate x*90
translate y*3.0
}
#declare Domes = merge
{
object { Upper_Dome }
object { Lower_Dome }
}
#declare Hemispheres = merge
{
object { Upper_Hemisphere }
object { Lower_Hemisphere }
}
/*********************************************************/
/* Entrance. */
/* Actually, a hole at the central Hall (a hollow sphere)*/
/*********************************************************/
#declare Entrance = difference
{
difference
{
sphere { 0, 0.30 }
sphere { 0, 0.29 }
}
sphere { <0, 0, -0.3>, 0.20 }
}
/*********************************************************/
/* 2 horizontal rings binding the Cogs together. */
/* Some ornaments to the Central Tower. */
/*********************************************************/
#declare Horizontal_Ring = difference
{
cylinder { <0, -0.025, 0> <0, 0.025, 0> 1.5 }
cylinder { <0, -0.026, 0> <0, 0.026, 0> 1.3 }
}
#declare Horizontal_Rings = merge
{
object { Horizontal_Ring translate 0.75*y }
object { Horizontal_Ring translate -0.75*y }
}
#declare Central_Spear = merge
{
difference
{
object { Big_Spear }
object { Big_Spear scale <.78, .995 , .78> }
}
object { Little_Rings }
object { Little_Cogs }
object { Entrance }
difference
{
merge
{
object { Domes }
object { Domes rotate x*180 }
}
cylinder { <0, -3.5, 0> <0, 3.5, 0> 0.08 }
}
}
/*********************************************************/
/* Blend it all together. Render on a medium-high oven */
/* for about forty hours. Serve cold. */
/*********************************************************/
#declare Ship = merge
{
difference
{
merge
{
object { /*Wheel*/ Cog rotate x*90 }
object { /*Wheel*/ Cog rotate x*90 rotate y*60 }
object { /*Wheel*/ Cog rotate x*90 rotate y*120 }
}
object
{
merge
{
object
{
merge
{
object { Big_Spear }
object { Hemispheres }
object { Hemispheres rotate x*180 }
}
scale 1.15
}
sphere { 0, 0.30 }
object { Six_Differential_Hour_Glasses }
}
}
}
cylinder { <0, -0.025, 0> <0, 0.025, 0> 3 }
object { Six_Hour_Glasses }
object { Six_Spears }
object { Six_Single_Spears }
object {Six_Single_Spears rotate x*180 }
object { Horizontal_Rings }
object { Twelve_Spears }
object { Central_Spear scale 1.15 }
}
/*********************************************************/
/* Main. */
/* 2 lights, one camera, one ship and a sky sphere. */
/* */
/*********************************************************/
light_source
{
<50, 200, -50> color rgb <1, 1, 1>
}
light_source
{
<-80, 140, -14> color rgb <1, 1, 1>
}
camera
{
direction <0, 0, 1.5>
location <0, 10, -11>
look_at <0, 4, 5>
}
object
{
object { Ship }
texture { Pink_Glass }
rotate y*15
translate <0, 4, 5>
}
sky_sphere
{
pigment
{
gradient y
color_map
{
[ 0.5 color red 0.258824 green 0.258824
blue 0.435294 ]
[ 1.0 color red 0.184314 green 0.184314
blue 0.309804 ]
}
scale 2
translate -1
}
pigment
{
bozo
turbulence 0.65
octaves 6
omega 0.7
lambda 2
color_map
{
[0.0 0.1 color rgb <0.85, 0.85, 0.85>
color rgb <0.75, 0.75, 0.75>]
[0.1 0.5 color rgb <0.75, 0.75, 0.75>
color rgbt <1, 1, 1, 1>]
[0.5 1.0 color rgbt <1, 1, 1, 1>
color rgbt <1, 1, 1, 1>]
}
scale <0.1, 0.07, 0.1>
}
rotate -135*x
}
Post a reply to this message
|
|