Claude's Corner: Art Works

The Flying Fish

As of this writing (see date below), I made the following image exactly ten years ago:

3D render of a whimsical airship resembling a flying fish, painted yellow and with brass flippers, against a blue sky with wind-torn clouds. The nacelle hangs from an elongated canvas balloon, and has a propeller at the aft end.

The next spring it would be featured in the short story Second Contact, which makes it sound more plausible than it is.

Anyway, here's the source code:


// Persistence of Vision Ray Tracer Scene Description File
// File: flying-fish.pov
// Vers: 1
// Desc: A cartoonish airship.
// Date: 2011-12-04
// Auth: Claude LeChat <https://nosycat.neocities.org/>

#version 3.6;

#include "colors.inc"
#include "textures.inc"
#include "skies.inc"
#include "metals.inc"

// global_settings { assumed_gamma 1.0 }

sky_sphere {
	pigment {
		gradient y
		color_map {
			[0.50 color Orange]
			[0.525 color White]
			[0.75 color NewMidnightBlue]
		}
		scale 2
		translate -1
	}
}

light_source {
	//<0, 100, 10000> color Orange
	<0, 100, -10000> color White
	looks_like {
		sphere {
			<0, 0, 0>, 50
			pigment { color Yellow }
			finish { ambient 1 diffuse 1 }
		}
	}
}

camera {
	location <0, 1.65, 0>
	look_at <0, 15, 15>
	angle 45
	//right x * 1.5
}
/*camera {
	location <-15, 15, 0>
	look_at <0, 15, 15>
	angle 45
	//right x * 1.5
}*/


// The clouds.
object { O_Cloud1 scale <3, 1, 3> }

// The sea
disc {
	<0, 0, 0>, <0, 1, 0>, 10000
	texture {
		pigment { Turquoise filter 0.3 }
		finish {
			//ambient 0.25
			diffuse 0
			reflection {0.1, 0.3}
			specular 0.4
			roughness 0.1
		}
	}
	interior { ior 1.333 }
	normal { ripples scale 5 warp { turbulence 0.3 } translate -3 }
}


#declare Fish_Wing =
union {
	polygon {
		4,
		<0, 0, 1>, <5.5, 0, 1.5>, <7, 0, 1>
		<0, 0, 1>
		translate y * 0.02
	}
	polygon {
		5,
		<0, 0, 1>, <7, 0, 1>, <6.5, 0, 0>, <0, 0, 0.5>,
		<0, 0, 1>
		translate y * 0.01
	}
	polygon {
		5,
		<0, 0, 0.5>, <6.5, 0, 0>, <6, 0, -0.5>, <0, 0, 0>,
		<0, 0, 0.5>
	}
	polygon {
		5,
		<0, 0, 0>, <6, 0, -0.5>, <5, 0, -1>, <0, 0, -0.5>,
		<0, 0, 0>
		translate y * -0.01
	}
	polygon {
		5,
		<0, 0, -0.5>, <5, 0, -1>, <3.5, 0, -1.5>, <0, 0, -1>,
		<0, 0, -0.5>
		translate y * -0.02
	}
	rotate x * -5
}

// The propeller
#declare Propeller =
union {
	cylinder { <0, 0, -0.05>, <0, 0, 0.05>, 0.1 }
	sphere {
		<0, 0, 0>, 0.05
		scale <2, 10, 0.1>
		rotate y * 45
		translate y * 0.5
	}
	sphere {
		<0, 0, 0>, 0.05
		scale <2, 10, 0.1>
		rotate y * 45
		translate y * 0.5
		rotate z * 90
	}
	sphere {
		<0, 0, 0>, 0.05
		scale <2, 10, 0.1>
		rotate y * 45
		translate y * 0.5
		rotate z * -90
	}
	sphere {
		<0, 0, 0>, 0.05
		scale <2, 10, 0.1>
		rotate y * 45
		translate y * 0.5
		rotate z * 180
	}
}

// The airship
union {
	// Balloon
	sphere {
		<0, 0, 0>, 0.5
		scale <4, 4, 12>
		translate y * 2
		pigment { White }
		normal { uv_mapping bumps scale 0.1 }
	}
	// Nacelle
	difference {
		union {
			sphere {
				<0, 0, 0>, 0.5
				scale <3, 3, 10>
				translate y * -1.5
			}
			//Eye rim
			intersection {
				sphere {
					<0, 0, 0>, 0.5
					scale <3, 3, 10>
					translate y * -1.5
				}
				cylinder {
					<-2, -1.5, -4>, <2, -1.5, -4>, 0.5
				}
				scale 1.01
			}
		}
		// Eye hole
		cylinder {
			<-2, -1.5, -4>, <2, -1.5, -4>, 0.4
			scale 1.01
		}
		// Mouth
		box {
			<-1, -0.02, -5>, <1, 0.02, -4.5>
			translate y * -2
		}
		pigment { color Yellow }
		finish { F_MetalA }
	}
	// Front windows
	sphere {
		<0, 0, 0>, 1
		scale <1.1, 0.7, 0.7>
		translate <0, -1.5, -3.9>
		material { M_Glass }
	}
	// Cables
	union {
		cylinder { <0, 2, -6>, <0, -1.5, -5>, 0.01 }
		cylinder { <0, 2, 5>, <0, -1.5, 4>, 0.01 }

		cylinder { <-2, 2, 0>, <-1.5, -1.5, 0>, 0.01 }
		cylinder { <2, 2, 0>, <1.5, -1.5, 0>, 0.01 }

		cylinder { <-1.65, 2, -3>, <-1.3, -1.5, -2.5>, 0.01 }
		cylinder { <1.65, 2, -3>, <1.3, -1.5, -2.5>, 0.01 }

		cylinder { <-1.65, 2, 3>, <-1.3, -1.5, 2.5>, 0.01 }
		cylinder { <1.65, 2, 3>, <1.3, -1.5, 2.5>, 0.01 }

		texture { Brass_Metal }
	}
	// Wings
	object {
		Fish_Wing
		texture { Brass_Metal }
		rotate y * 180
		translate <-1, -2, -2>
	}
	object {
		Fish_Wing
		texture { Brass_Metal }
		rotate y * 180
		translate <-1, -2, -2>
		scale <-1, 1, 1> // Flip sideways
	}
	// Tailfins
	sphere {
		<0, 0, 0>, 0.1
		scale <10, 0.1, 6>
		texture { Brass_Metal }
		rotate y * 45
		translate <-2, -2, 2>
	}
	sphere {
		<0, 0, 0>, 0.1
		scale <10, 0.1, 6>
		texture { Brass_Metal }
		rotate y * -45
		translate <2, -2, 2>
	}
	difference {
		sphere {
			<0, 0, 0>, 0.1
			scale <0.1, 16, 20>
			texture { Brass_Metal }
		}
		cylinder {
			<-0.1, 0, 0>, <0.1, 0, 0>, 0.1
			scale <1, 16, 20>
			translate z * 1.6
		}
		translate <0, -1.5, 5>
	}

	object {
		Propeller
		texture { Brass_Metal }
		rotate z * -15
		translate <0, -1.5, 5.1>
	}

	rotate y * -45
	translate <0, 15, 15>
}