Compare commits

...

102 Commits

Author SHA1 Message Date
hjp a88e02d183 Made some minor changes for POVray 3.7 and added to the repository.
The scene files were originally created at or before Jun 12 2011.
2015-05-03 10:21:18 +00:00
hjp 20a544bebe added kintradims_hoehe to repository. Found on teal, last modified:
2001-08-27
2010-08-23 19:58:14 +00:00
hjp 59db73892c added missing files.
compatribility with modern povray.
2010-08-23 19:54:37 +00:00
hjp c256a2a08d added einparen to repository (found on teal, last modified 2002-06-02) 2010-08-23 17:39:16 +00:00
hjp ccaf9e3ea4 added ag-schacht to repository (found on teal, last modified 2000-12-15) 2010-08-23 17:35:11 +00:00
hjp eddbcf6f65 Applied some very old changes found on teal 2010-08-23 17:28:21 +00:00
hjp 1e320c2683 Landestützen (Juni 2002, offenbar nie eingecheckt) 2009-10-20 22:32:43 +00:00
hjp e773515aeb Transitionstriebwerk verkleinert (war ja für schweren Kreuzer)
und eingebaut.
2008-08-17 22:07:04 +00:00
hjp d9dcff27df copied transitionstriebwerk 2008-08-17 10:35:50 +00:00
hjp c6b32a7f54 ported to povray 3.6.1 2008-08-17 10:26:42 +00:00
hjp 685ea07db3 Added transitionstriebwerk to repository
(version from 1997-05-04, except povray.ini, which is from 2000).
2008-08-17 10:17:11 +00:00
hjp e5537cce8b Deck 4 2008-08-16 09:52:48 +00:00
hjp 2131fcfbee Feldschirmprojektoren auf Deck 3.
Treibstofftanks schneiden sich nicht mehr mit Landestützen.
2008-08-16 09:52:11 +00:00
hjp 0d8e25344c Raster 2008-08-14 21:01:02 +00:00
hjp e227f47218 Ausschnitte für Landestützen.
Kraftwerke.
Weniger Treibstofftanks (Platz für Kraftwerke).
2008-08-14 21:00:40 +00:00
hjp 57aeca6163 Deck 5 und 8. 2008-08-09 11:59:18 +00:00
hjp 29b7616751 Eigenes File für feldschirm_projektor 2008-08-08 20:06:08 +00:00
hjp daffeb8e2d restored image and fixed properties. 2008-08-08 19:41:45 +00:00
hjp 2fc5377024 restored. 2008-08-08 19:37:08 +00:00
hjp d988bcd68b PNGs don't have lines. 2008-08-08 19:33:23 +00:00
hjp 6d45eb2991 Vorschau. 2008-02-10 09:01:51 +00:00
hjp 6bcecb0c79 halo durch media ersetzt.
Die unteren Fenster leuchten noch nicht, keine Ahnung, wieso.
2008-02-10 08:53:26 +00:00
hjp 097c3a1f91 Textur der Schleusen gefixt: Transparenz bei GIFs scheint nicht mehr zu
funktionieren, verwende PNG.
2008-02-10 00:59:54 +00:00
hjp ccc5ac13e2 Port to Povray 3.6 part 1:
renamed files to match usage.
added lots of semicolons.
commented out halo.

Now the file can be rendered but not correctly.
2008-02-09 23:58:26 +00:00
hjp 2a05b44d39 Original von Harald Ottacher, 1997. 2008-02-09 23:32:10 +00:00
hjp 5b871b95b2 Deck 11 mit Maschinenzentrale. 2008-02-09 23:10:01 +00:00
hjp 3343510a7a Stiegenhaus renoviert. 2008-02-09 23:08:18 +00:00
hjp 39dd922e7e Ignore generated .png files. 2008-02-09 23:05:11 +00:00
hjp 79fc6a7cd4 Decks 2, 3 und Landestützen. 2008-02-09 23:04:45 +00:00
hjp 37f4151c1b Tanks. 2008-02-09 23:03:33 +00:00
hjp b8416ad682 Deck 2: Leer. 2008-02-09 23:03:20 +00:00
hjp 82cd61ec8b Anderer Blickwinkel. 2008-02-09 23:02:58 +00:00
hjp 9aaf8fcce0 Feldschirmprojektoren. 2008-02-09 23:01:16 +00:00
hjp 4765c5295c Geschütze. 2008-02-09 22:58:23 +00:00
hjp 897d4d0b53 Landestützen. 2008-02-09 22:40:23 +00:00
hjp 7055586f29 Testfile fuer Ringwulst 2007-12-23 19:12:29 +00:00
hjp cbd61105ce Testfile fuer Triebwerk. 2007-12-23 19:11:40 +00:00
hjp f56cb564d9 Test File fuer Deck 12 2007-12-23 18:57:43 +00:00
hjp 88465267d5 Ortung 2007-12-23 17:11:17 +00:00
hjp 37d3aa133f Only POV/rendering changes. 2007-12-23 16:38:01 +00:00
hjp 8e16393aa5 Deck 12 2007-12-23 16:36:53 +00:00
hjp 7f3adff308 Schnitt 2007-12-23 16:35:58 +00:00
hjp 6b103219b5 Triebwerke 2007-12-23 16:35:17 +00:00
hjp bfb041a30d Stiegenhaeuser, Schnitt. 2007-12-23 16:34:23 +00:00
hjp 8000e940f7 snapshot 2007-03-31 12:30:00 +00:00
hjp d1143705c8 Deck 1 2006-12-04 01:14:48 +00:00
hjp 816336c999 Shift. 2006-12-04 00:01:58 +00:00
hjp 5f85830e64 Ringwulst 2005-01-30 22:21:35 +00:00
hjp c9dbb5e149 Ein Bodenbelag. (Im Deck 13 - gibt's dort Teppiche? :-) 2005-01-30 22:10:22 +00:00
hjp a01cf87a5c Diverse Kabinenvariationen. 2005-01-30 21:55:57 +00:00
hjp 74c82246c4 Diverse Kabinenansichten. 2005-01-30 21:55:17 +00:00
hjp 94cbf7669e + Ringwulst 2005-01-30 21:53:41 +00:00
hjp d680e7477e Snapshot after POV troubles. 2002-04-07 15:52:06 +00:00
hjp b5fb740f71 *** empty log message *** 2002-03-18 20:14:17 +00:00
hjp f6b53b36b6 Kabinen & Deck 13 2002-03-18 20:11:37 +00:00
hjp 7c3e80b9c3 Povray 3.5 compatibility. 2002-03-18 20:08:59 +00:00
hjp 15c1f3407e Added movie
Megapov compatibility.
2002-03-18 20:01:51 +00:00
hjp 2bfd7a746e create png intead of ppm.
Different texture, less recursion deeper tracing.
2002-03-18 19:51:07 +00:00
hjp 048ab08bd8 Imported from Harald Ottacher's kr200.zip 2002-02-22 21:09:05 +00:00
hjp 9dbcf8b6c6 Improved engine jets.
Turned them on for orthogonal view
2002-02-18 11:47:10 +00:00
hjp 7181e7e57a Even more semicolons for povray 3.5 compatibility. 2002-02-18 04:52:49 +00:00
hjp 31a107099e Blobman 4.0 2002-02-17 22:29:41 +00:00
hjp bcdc8568cc Cris Colefax' galaxy macro. 2002-02-17 21:43:05 +00:00
hjp b5c1be574e Added lots of semicolons for povray 3.5 beta compatibility. 2002-02-17 21:34:03 +00:00
hjp 82b907127e Added scene sol-im-leerraum 2002-02-17 21:32:33 +00:00
hjp cf8db2ea4d Added scene sol-ortho 2002-02-17 21:30:10 +00:00
hjp 6e24b0fd21 Lot's of changes:
Added scenes raumhafen, sol-im-leerraum and sol-ortho.
Added engine jets to ringwulst (for "sol-im-leerraum").
Added parameter to make Ringwulst simple (don't remember what for).
Added lots of semicolons for Povray 3.5 beta.
2002-02-17 21:29:18 +00:00
hjp ff224d9e92 Uups. Es gibt nur zwei Ringwülste, nicht zwei. Damit schaut das schon
etwas vernünftiger aus.
2001-06-09 23:13:10 +00:00
hjp c125ef6dc3 Ritterschiff - roher Draft. 2001-06-05 22:06:57 +00:00
hjp 7ca1df82c6 Increased level and max_trace_level. Use union instead of merge (much faster) 2001-03-15 16:57:48 +00:00
hjp e703a5b029 *** empty log message *** 2001-03-11 21:49:10 +00:00
hjp 4b14cd8453 Test 13 & 14. 2000-12-23 00:10:55 +00:00
hjp da1d2ed43d *** empty log message *** 2000-06-28 22:13:01 +00:00
hjp cc104a6e3b Snapshot 2000-06-13 17:36:16 +00:00
hjp 03068540d6 Beleuchtung für suedpol2.pov wieder korrigiert.
entdecker-in-theophilus mit 800x1200.
2000-03-23 18:55:27 +00:00
hjp 1887cbde18 Removed superfluous includes. 2000-03-22 21:52:31 +00:00
hjp f41594543c Ortungsbänder, 4000GT-TFKs.
Erstes "echtes" Szene-File.
2000-03-21 23:13:34 +00:00
hjp bac2f1e88d Geschütze. Verbesserungen am Metagrav. Unterer Triebwerksring. 2000-02-14 00:59:17 +00:00
hjp d2cb45a183 *** empty log message *** 2000-01-31 11:30:47 +00:00
hjp d3f272b889 *** empty log message *** 2000-01-30 13:11:47 +00:00
hjp 992e59aa41 Belatedly added TODO file. 2000-01-29 16:00:20 +00:00
hjp 896548db02 Vesta-Kreuzer
Landestützen
2000-01-24 00:47:04 +00:00
hjp b901fc5543 Added .cvsignore 2000-01-23 20:22:02 +00:00
hjp 256c18df05 Metagrav (Rohfassung) 2000-01-23 20:05:04 +00:00
hjp 31bebfcc53 Snapshot von Aik.
Triebwerksring ausgeschnitten.
Displaymode aus GNUmakefile und povray.ini entfernt.
2000-01-23 16:03:11 +00:00
hjp 77ac951ccb Antigrav. Kombiblock ist damit ziemlich fertig (bis auf Feintuning). 2000-01-16 23:52:12 +00:00
hjp d01ca15bfe Snapshot. 2000-01-15 23:35:45 +00:00
hjp 5527092465 Snapshot: Too many lights, overexposed. 1999-10-24 15:00:52 +00:00
hjp fd922c00ae Snapshot 1999-10-24 12:27:53 +00:00
hjp a62f509390 snapshot 1999-10-16 21:19:15 +00:00
hjp d7570bda83 starting work on head. 1999-08-21 21:36:09 +00:00
hjp 5e8e0c284d Snapshot 1999-01-10 (!) 1999-08-21 19:04:52 +00:00
hjp 9b8913a7bf Snapshot 1999-01-10(!) 1999-08-21 19:01:24 +00:00
hjp d454863b7d Removed +D from GNUmakefile. 1998-12-01 16:01:23 +00:00
hjp 36f5bcba5a Ringwulst in eigenem parametrisiertem File. 1998-11-07 13:01:04 +00:00
hjp 054428e83a Ups! 1998-11-03 00:05:37 +00:00
hjp d771e6f7d2 Ringwulsthangars. 1998-11-02 23:58:35 +00:00
hjp 89d110b580 Roboter.
Zufällige Plazierung, Haltung und Kleidungsfarbe der Menschen.
Sonne ist jetzt weit weg.

TODO: Durch Änderung der Lichtverhältnisse ist der Detailmangel an den Menschen
jetzt störend. Muß verbessert werden. Auch Placement war schon besser.
Mehr Details am Mittelstueck.
Diesiges Wetter, Wolken, Abendstimmung, etc. ausprobieren.
Performance (vielleicht bounden der Robots und Menschen?)
1998-08-24 16:31:04 +00:00
hjp 388f7f77ce SZ: Geschütze, Hangars, Triebwerke. 1998-08-24 00:31:43 +00:00
hjp 1416292651 First snapshot: Too large for my PC. 1998-08-23 10:55:56 +00:00
hjp f3906351cf Minor cleanups in Makefile. 1998-06-29 21:53:11 +00:00
hjp c662372a5a Release 1998-06-28 21:49:09 +00:00
355 changed files with 35373 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 KiB

View File

@ -0,0 +1,290 @@
/***************************************************************
___ _ _ __ __
| _ ) |___| |__| \/ |__ _ _ _
| _ \ / _ \ '_ \ |\/| / _` | ' \ v4.0
|___/_\___/_.__/_| |_\__,_|_||_|
/ __| |_ _ _ __| (_)___
\__ \ _| || / _` | / _ \
|___/\__|\_,_\__,_|_\___/
For use with "bmpeople.inc"
Refer to "bmmanual.txt" for full usage details
****************************************************************
B L O B M A N S A M P L E P O S E S
Set Pose_Studio to 'no' to see pre-defined poses set PoseNo
for the pose you wish to try.
PoseNo PoseNo
0 = Standing Relaxed 6 = "We're Not Worthy"
1 = Standing Hands on Hips 7 = Hand Stand
2 = Meditation 8 = Sun Bathing
3 = Sitting at Table/Piano etc 9 = Surfer
4 = Gunfighter 10 = Reclined (Male)
5 = Praying on Knees 11 = Reclined (Female)
If you wish to experiment with Blob Man Studio (below) set
Pose_Studio to 'yes'.
****************************************************************/
#declare Pose_Studio=yes;
#declare BM_PoseNo=0; // If Pose_Studio is set to "no" set this to
// a Pose Number from the list above.
/****************************************************************
General Settings used for Pose Studio and Pre-Defined Poses
*****************************************************************/
#declare BM_Gender = 1; // Male=0, Female=1
#declare BM_EyeCol = <.22,.69,.87>; // Iris Colour of eye (<r,g,b>) - ie. <.22,.69,.87> = Blue
#declare BM_Hair_Col = <.6,.5,.4>; // Hair Colour <r,g,b>
#declare BM_Nose = 0.5; // Nose Size. Range: 0 - 1.25 Default : 0.5
#declare Costume = "lft.cdf" // Name of Costume Definition File eg. "sample.cdf"
#declare Background = <.5,.5,.5>; // <r,g,b> for Studio Background colour.
#declare BM_DeBug = off; // Puts Visible Locators at ends of Limbs
// useful for object positioning.
/****************************************************************
B L O B M A N S T U D I O
Change the settings below to create your own poses.
****************************************************************/
#include "bmpeople.inc"
#if (Pose_Studio=yes)
/****************************************************************
Head Settings
*****************************************************************/
#declare BM_Head_Rot = <0,0,0>; // x = Head position Front to Back
// y = Head rotation Left to Right
// z = Head position Right Side to Left Side
/****************************************************************
Torso Settings
Arm Rotation Vectors <X,Y,Z>
<0,0,0> is pointing straight down
X= Back(-) to Front(+)
Y= Twist Left(-), Right (+)
Z= Side to Side Lift Right(-), Left(+)
*****************************************************************/
#declare BM_Neck_Rot = <-10,0,0>; // Rotation vector for the neck (Note: "y" is not used)
#declare BM_Torso_Rot= <-10,0,0>; // Rotation vector for the Upper Torso
#declare BM_RA_S2E = <-20,0,-8>; // Right Upperarm
#declare BM_RA_E2W = <-20+20,0,-3>; // Right Forearm
#declare BM_RH_Rot = <0,0,0>; // Right Hand
#declare BM_LA_S2E = <20,0,8>; // Left Upperarm
#declare BM_LA_E2W = <20+20,0,3>; // Left Forearm
#declare BM_LH_Rot = <0,0,0>; // Left Hand
#declare BM_RL_H2K = <30,0,-5>; // Right Thigh
#declare BM_RL_K2A = <15,0,0>; // Right Lower Leg
#declare BM_RF_Rot = <0,0,0>; // Right Foot
#declare BM_LL_H2K = <0,0,5>; // Left Thigh
#declare BM_LL_K2A = <-30,0,0>; // Left Lower Leg
#declare BM_LF_Rot = <15,0,0>; // Left Foot
/****************************************************************
Hand Settings
Hand Rotation Vectors <X,Y,Z>
<0,0,0> - fingers pointing down with thumbs foward.
*****************************************************************/
// Right Hand
#declare BM_RFP_Pos = < 5, 45, 5, 0>; // Pinky Finger
#declare BM_RFR_Pos = < 10, 30, 5, 0>; // Ring Finger
#declare BM_RFM_Pos = < 5, 15, 5, 0>; // Middle Finger
#declare BM_RFI_Pos = < 0, 10, 0, 0>; // Index Finger
#declare BM_RFT_Pos = < 0,-10, 5, 10>; // Thumb
// Left Hand
#declare BM_LFP_Pos = < 5, 45, 5, 0>; // Pinky Finger
#declare BM_LFR_Pos = < 10, 30, 5, 0>; // Ring Finger
#declare BM_LFM_Pos = < 5, 15, 5, 0>; // Middle Finger
#declare BM_LFI_Pos = < 0, 10, 0, 0>; // Index Finger
#declare BM_LFT_Pos = < 0,-10, 5, 10>; // Thumb
/****************************************************************
Foot Settings
Foot Rotation Vectors <X,Y,Z>
<0,0,0> - toes pointing forward
*****************************************************************/
#declare BM_Toe_Angle =<15,0,0>; // x = Left Foot
// y = ** Not Used **
// z = Right Foot
/****************************************************************
Hair Settings
Note: Hair drastically increases the parse time !
*****************************************************************/
#declare BM_Hair_On = 1; // Hair (1) - No Hair (0)
#declare BM_Hair_Rot = <-20,0,0>; // Hair Rotation - Standard <0,0,0>
#declare BM_Hair_Arch = 0; // Arch hairline over head in line with ears (1) or Not (0)
#declare BM_Hair_Thck = 0.20; // Hair Thickness <0.15 to 0.5> - Standard: 0.25
#declare BM_Hair_Line = 4; // Hair Line Height (Best Settings 3 to 6) - Standard: 5
#declare BM_Hair_LDpth = 0.3; // Hairline profile Depth (Range: 0-Straight Fringe to 1-Widows Peak) - standard: 0.7
#declare BM_Hair_Wght = 0.015; // Hair Weight (Range 0.005 to 0.05) - Standard: 0.01
#declare BM_Hair_Hght = 1.5; // Hair Height (Range 1 to 2) - Standard: 1
#declare BM_Hair_Length= 15; // Hair Length (1 to 20) - Standard: 10
#declare BM_Hair_Curl = 0.00; // Curliness (Range 0-Straight to 0.1-Curly) - Standard: 0.05
/****************************************************************
*****************************************************************
*****************************************************************
Write settings to external files.
*****************************************************************/
#fopen file "bmarray.txt" write
#write (file, "/************************************************************\n",
" Blob Man Pose File for use with Blob_Man.inc\n",
" This file was created automatically by Blob_Man_Studio.POV\n",
"*************************************************************/\n\n")
#write (file, "#declare BM_Pose=array[1][17]\n",
" {\n",
" { ",BM_Head_Rot,",",BM_Neck_Rot,",",BM_Torso_Rot,",",BM_RA_S2E,",",BM_RA_E2W,",",BM_LA_S2E,",",BM_LA_E2W,",",BM_RL_H2K,",",BM_RL_K2A,",",BM_LL_H2K,",",BM_LL_K2A,",",BM_RF_Rot,",",BM_LF_Rot,",",BM_Toe_Angle,",",BM_RH_Rot,",",BM_LH_Rot,", <0,0,1> },\n",
" }\n\n")
#write (file, "#declare BM_Hands=array[2][5]\n",
" {\n",
" { ",BM_LFP_Pos,",",BM_LFR_Pos,",",BM_LFM_Pos,",",BM_LFI_Pos,",",BM_LFT_Pos," },\n",
" { ",BM_RFP_Pos,",",BM_RFR_Pos,",",BM_RFM_Pos,",",BM_RFI_Pos,",",BM_RFT_Pos," },\n",
" }\n\n")
#write (file, "#declare BM_Pose_Hair_1=array[1][1]\n",
" {\n",
" { ",BM_Hair_Rot," },\n",
" }\n\n")
#write (file, "#declare BM_Pose_Hair_2=array[1][9]\n",
" {\n",
" { ",BM_Hair_On,",",BM_Hair_Arch,",",BM_Hair_Thck,",",BM_Hair_Line,",",BM_Hair_LDpth,",",BM_Hair_Wght,",",BM_Hair_Hght,",",BM_Hair_Length,",",BM_Hair_Curl," },\n",
" }\n")
#write (file, "// End of File")
#fclose file
#fopen file "bmdeclar.txt" write
#write (file, "/************************************************************\n",
" Blob Man Pose File for use with bmpeople.inc\n",
" This file was created automatically by Blob_Man_Studio.POV\n",
"*************************************************************/\n\n")
#write (file, " #declare BM_Head_Rot = ",BM_Head_Rot,";\n")
#write (file, " #declare BM_Neck_Rot = ",BM_Neck_Rot,";\n")
#write (file, " #declare BM_Torso_Rot = ",BM_Torso_Rot,";\n")
#write (file, " #declare BM_RA_S2E = ",BM_RA_S2E,";\n")
#write (file, " #declare BM_RA_E2W = ",BM_RA_E2W,";\n")
#write (file, " #declare BM_LA_S2E = ",BM_LA_S2E,";\n")
#write (file, " #declare BM_LA_E2W = ",BM_LA_E2W,";\n")
#write (file, " #declare BM_RL_H2K = ",BM_RL_H2K,";\n")
#write (file, " #declare BM_RL_K2A = ",BM_RL_K2A,";\n")
#write (file, " #declare BM_LL_H2K = ",BM_LL_H2K,";\n")
#write (file, " #declare BM_LL_K2A = ",BM_LL_K2A,";\n")
#write (file, " #declare BM_RF_Rot = ",BM_RF_Rot,";\n")
#write (file, " #declare BM_LF_Rot = ",BM_LF_Rot,";\n")
#write (file, " #declare BM_Toe_Angle = ",BM_Toe_Angle,";\n")
#write (file, " #declare BM_RH_Rot = ",BM_RH_Rot,";\n")
#write (file, " #declare BM_LH_Rot = ",BM_LH_Rot,";\n\n")
#write (file, "// If you wish to use a predefined hand be sure to include\n",
"// bm_hands.inc and then set BM_Pose_RHand/LHand to the array\n",
"// entry number (0 being the first entry). Otherwise set them \n",
"// to -1 and use the finger positions defined below\n\n")
#write (file, " #declare BM_Pose_RHand = ",BM_Pose_RHand,";\n")
#write (file, " #declare BM_Pose_LHand = ",BM_Pose_LHand,";\n\n")
#write (file, " #declare BM_RFP_Pos = ",BM_RFP_Pos,";\n")
#write (file, " #declare BM_RFR_Pos = ",BM_RFR_Pos,";\n")
#write (file, " #declare BM_RFM_Pos = ",BM_RFM_Pos,";\n")
#write (file, " #declare BM_RFI_Pos = ",BM_RFI_Pos,";\n")
#write (file, " #declare BM_RFT_Pos = ",BM_RFT_Pos,";\n")
#write (file, " #declare BM_LFP_Pos = ",BM_LFP_Pos,";\n")
#write (file, " #declare BM_LFR_Pos = ",BM_LFR_Pos,";\n")
#write (file, " #declare BM_LFM_Pos = ",BM_LFM_Pos,";\n")
#write (file, " #declare BM_LFI_Pos = ",BM_LFI_Pos,";\n")
#write (file, " #declare BM_LFT_Pos = ",BM_LFT_Pos,";\n")
#write (file, " #declare BM_Hair_Rot = ",BM_Hair_Rot,";\n")
#write (file, " #declare BM_Hair_Arch = ",BM_Hair_Arch,";\n")
#write (file, " #declare BM_Hair_Thck = ",BM_Hair_Thck,";\n")
#write (file, " #declare BM_Hair_Line = ",BM_Hair_Line,";\n")
#write (file, " #declare BM_Hair_LDpth = ",BM_Hair_LDpth,";\n")
#write (file, " #declare BM_Hair_Wght = ",BM_Hair_Wght,";\n")
#write (file, " #declare BM_Hair_Hght = ",BM_Hair_Hght,";\n")
#write (file, " #declare BM_Hair_Length = ",BM_Hair_Length,";\n")
#write (file, " #declare BM_Hair_Curl = ",BM_Hair_Curl,";\n\n")
#write (file, " #declare BM_PoseNo = -1;\n\n")
#write (file, "// End of File")
#fclose file
#ifdef (Costume)
#include Costume
#end
#declare BM_PoseNo=-1;
Blob_Man(BM_Gender,0)
#else
/****************************************************************
Use Pre-Defined Poses
*****************************************************************/
#include "bm_pose.inc"
#ifdef (Costume)
#include Costume
#end
Blob_Man(BM_Gender,0)
#end
/****************************************************************
Lights, Camera and Setting
*****************************************************************/
camera{location <0,-40,-100> orthographic look_at <0,-40,0> }
light_source{<-200,200,-200> rgb <1,.9,.5> }
light_source{< 400,400,-200> rgb <.2,.4,.8> shadowless }
light_source{<-200,200,-200> rgb .7 shadowless }
light_source{< 100, 50,-150> rgb .5 shadowless }
light_source{< 100,-50,-150> rgb .3 shadowless }
light_source{<-100,-50,-150> rgb .1 shadowless }
background {rgb Background}
/****************************************************************
The Models
****************************************************************/
object {BlobMan translate x*-15 no_shadow}
object {BlobMan rotate y*180 translate x* 45 no_shadow}
object {BlobMan rotate y* 90 translate x*-45 no_shadow}
object {BlobMan rotate y*-90 translate x* 15 no_shadow}
object {BlobMan rotate x*-90 translate y*-75 translate x*-15 no_shadow}
object {BlobMan rotate y*180 rotate x*90 translate y*-75 translate x* 45 no_shadow}
text {
ttf
"crystal.ttf",
#if (BM_Gender=0)
#ifdef (Costume)
concat ("Blob Man v4.0 - ",Costume),
#else
"Blob Man v4.0",
#end
#else
#ifdef (Costume)
concat ("Blob Lady v4.0 - ",Costume),
#else
"Blob Lady v4.0",
#end
#end
.1,
0
translate <-11.5,1.5,0>
pigment {rgb 1}
finish {ambient 1}
no_shadow
scale 6
}
// EOF

View File

@ -0,0 +1,524 @@
/*******************************************************
Persistence of Vision Ray Tracer Scene Description File
File Name : Body_Part_Viewer.pov
Version : POV v 3.1 : Blob_Man v4.0
Desciption: View the inividual body parts of Blob Man
Use it to check positioning of Limb Objects
Date : 01 March 2000
Author : Peter Houston
Email : houston.graphics@iname.com
WWW : http://welcome.to/HoustonGraphics
http://members.xoom.com/HoustonGraph
********************************************************/
#include "bmpeople.inc"
#include "bm_hands.inc"
/*******************************************************
Include the Costume Definition File Here
********************************************************/
//#include "filname.cdf"
#ifndef (CDF)
#declare CDF=false;
#end
/*******************************************************
Body Part Switch Number
=======================
1 = Head
2 = Torso
3 = Upperarm Right
4 = Upperarm Left
5 = Forearm Right
6 = Forearm Left
7 = Hand Right
8 = Hand Left
9 = Thigh Right
10 = Thigh Left
11 = Calf Right
12 = Calf Left
13 = Foot Right
14 = Foot Left
********************************************************/
#declare Body_Part_Switch =1;
#declare BM_Gender=1; // 0=Male 1=Female
#declare HandPoseNo=0; // Hand Pose as defined in "bm_hands.inc"
#if (CDF=false) // The following options only apply if no CDF is included (see above)
#declare BM_Jowls=0; // Jowl Mass Range: 0-3
#declare BM_Teeth=1; // 0 = No Teeth, 1 = Teeth
#declare BM_Nose=.5; // Nose Size Range : 0 - 1.25 : Default=0.5
#declare BM_Jaw=.65; // Jaw Opening
#declare BM_Mouth=1; // Mouth Size
#declare BM_MouthShape=1; // + Mouth Corners Up / - Mouth Corners Down
#end
#declare ShowXYZ=on; // Places a visible marker at <0,0,0>
// Please Note that the DeBug variable
// does not work in this file.
#declare XYZ= union {cylinder {<-8,0,0><8,0,0>.25 pigment {rgb x}}
cylinder {<0,-8,0><0,8,0>.25 pigment {rgb y}}
cylinder {<0,0,-8><0,0,8>.25 pigment {rgb z}}
}
#declare BM_RA_S2E= <0,0,0>;
#declare BM_RA_E2W= <0,0,0>;
#declare BM_LA_S2E= <0,0,0>;
#declare BM_LA_E2W= <0,0,0>;
#declare BM_RL_H2K= <0,0,0>;
#declare BM_RL_K2A= <0,0,0>;
#declare BM_LL_H2K= <0,0,0>;
#declare BM_LL_K2A= <0,0,0>;
#declare BM_RH_Rot= <0,0,0>;
#declare BM_LH_Rot= <0,0,0>;
#declare BM_RF_Rot= <0,0,0>;
#declare BM_LF_Rot= <0,0,0>;
#declare BM_Toe_Angle= <0,0,0>;
#declare BM_Head_Rot= <0,0,0>;
#declare BM_Neck_Rot= <0,0,0>;
#declare BM_Torso_Rot= <0,0,0>;
#declare BM_Toe_Angle=<0,0,0>;
#declare BM_PoseNo=-1;
#switch (Body_Part_Switch)
#case (1)
plane {z,100 pigment {checker rgb .15,rgb .25} scale 2*2 translate y*2}
#declare Title="Head"
#if (ShowXYZ=on)
#declare BM_Head_Object=union {object {BM_Head_Object} object {XYZ}}
#end
#declare BodyPart =
object {
bmhead()
translate y*-5
scale 2
}
#break
#case (2)
plane {z,100 pigment {checker rgb .15,rgb .25} scale 2*1.5}
#declare Title="Torso"
#declare BM_R_Upperarm_Mass=0;
#declare BM_R_Forearm_Mass=0;
#declare BM_L_Upperarm_Mass=0;
#declare BM_L_Forearm_Mass=0;
#declare BM_R_Thigh_Mass=0;
#declare BM_R_Calf_Mass=0;
#declare BM_L_Thigh_Mass=0;
#declare BM_L_Calf_Mass=0;
#declare BM_Upperarm_R_Object=object{BM_nul}
#declare BM_Upperarm_L_Object=object{BM_nul}
#declare BM_Forearm_R_Object=object{BM_nul}
#declare BM_Forearm_L_Object=object{BM_nul}
#declare BM_Thigh_R_Object=object{BM_nul}
#declare BM_Thigh_L_Object=object{BM_nul}
#declare BM_Calf_R_Object=object{BM_nul}
#declare BM_Calf_L_Object=object{BM_nul}
#if (ShowXYZ=on)
#declare BM_Torso_Object=union {object {BM_Torso_Object} object {XYZ}}
#end
#declare BodyPart=
union {
bmtorso()
scale 1.5
}
#break
#case (3)
plane {z,100 pigment {checker rgb .15,rgb .25} scale 2*1.5}
#declare Title="Right Upperarm"
#declare BM_R_Forearm_Mass=0;
#declare BM_L_Upperarm_Mass=0;
#declare BM_L_Forearm_Mass=0;
#declare BM_R_Thigh_Mass=0;
#declare BM_R_Calf_Mass=0;
#declare BM_L_Thigh_Mass=0;
#declare BM_L_Calf_Mass=0;
#declare BM_Torso_Mass=0;
#declare BM_Abdomen_Mass=0;
#declare BM_Neck_Mass=0;
#declare BM_Neck_Object=object{BM_nul}
#declare BM_Torso_Object=object{BM_nul}
#declare BM_Abdomen_Object=object{BM_nul}
#declare BM_Upperarm_L_Object=object{BM_nul}
#declare BM_Forearm_R_Object=object{BM_nul}
#declare BM_Forearm_L_Object=object{BM_nul}
#declare BM_Thigh_R_Object=object{BM_nul}
#declare BM_Thigh_L_Object=object{BM_nul}
#declare BM_Calf_R_Object=object{BM_nul}
#declare BM_Calf_L_Object=object{BM_nul}
#declare BM_Neck_Object=object{BM_nul}
#if (ShowXYZ=on)
#declare BM_Upperarm_R_Object=union {object {BM_Upperarm_R_Object} object {XYZ}}
#end
#declare BodyPart=
union {
bmtorso()
translate <9,-5,0>
scale 1.5
}
#break
#case (4)
plane {z,100 pigment {checker rgb .15,rgb .25} scale 2*1.5}
#declare Title="Left Upperarm"
#declare BM_R_Upperarm_Mass=0;
#declare BM_R_Forearm_Mass=0;
#declare BM_L_Forearm_Mass=0;
#declare BM_R_Thigh_Mass=0;
#declare BM_R_Calf_Mass=0;
#declare BM_L_Thigh_Mass=0;
#declare BM_L_Calf_Mass=0;
#declare BM_Torso_Mass=0;
#declare BM_Abdomen_Mass=0;
#declare BM_Neck_Mass=0;
#declare BM_Neck_Object=object{BM_nul}
#declare BM_Torso_Object=object{BM_nul}
#declare BM_Abdomen_Object=object{BM_nul}
#declare BM_Upperarm_R_Object=object{BM_nul}
#declare BM_Forearm_R_Object=object{BM_nul}
#declare BM_Forearm_L_Object=object{BM_nul}
#declare BM_Thigh_R_Object=object{BM_nul}
#declare BM_Thigh_L_Object=object{BM_nul}
#declare BM_Calf_R_Object=object{BM_nul}
#declare BM_Calf_L_Object=object{BM_nul}
#declare BM_Neck_Object=object{BM_nul}
#if (ShowXYZ=on)
#declare BM_Upperarm_L_Object=union {object {BM_Upperarm_L_Object} object {XYZ}}
#end
#declare BodyPart=
union {
bmtorso()
translate <-9,-5,0>
scale 1.5
}
#break
#case (5)
plane {z,100 pigment {checker rgb .15,rgb .25} scale 2*1.5}
#declare Title="Right Forearm"
#declare BM_R_Upperarm_Mass=0;
#declare BM_L_Upperarm_Mass=0;
#declare BM_L_Forearm_Mass=0;
#declare BM_R_Thigh_Mass=0;
#declare BM_R_Calf_Mass=0;
#declare BM_L_Thigh_Mass=0;
#declare BM_L_Calf_Mass=0;
#declare BM_Torso_Mass=0;
#declare BM_Abdomen_Mass=0;
#declare BM_Neck_Mass=0;
#declare BM_Neck_Object=object{BM_nul}
#declare BM_Torso_Object=object{BM_nul}
#declare BM_Abdomen_Object=object{BM_nul}
#declare BM_Upperarm_R_Object=object{BM_nul}
#declare BM_Upperarm_L_Object=object{BM_nul}
#declare BM_Forearm_L_Object=object{BM_nul}
#declare BM_Thigh_R_Object=object{BM_nul}
#declare BM_Thigh_L_Object=object{BM_nul}
#declare BM_Calf_R_Object=object{BM_nul}
#declare BM_Calf_L_Object=object{BM_nul}
#declare BM_Neck_Object=object{BM_nul}
#if (ShowXYZ=on)
#declare BM_Forearm_R_Object=union {object {BM_Forearm_R_Object} object {XYZ}}
#end
#declare BodyPart=
union {
bmtorso()
translate <9,6,0>
scale 1.5
}
#break
#case (6)
plane {z,100 pigment {checker rgb .15,rgb .25} scale 2*1.5}
#declare Title="Left Forearm"
#declare BM_R_Upperarm_Mass=0;
#declare BM_R_Forearm_Mass=0;
#declare BM_L_Upperarm_Mass=0;
#declare BM_R_Thigh_Mass=0;
#declare BM_R_Calf_Mass=0;
#declare BM_L_Thigh_Mass=0;
#declare BM_L_Calf_Mass=0;
#declare BM_Torso_Mass=0;
#declare BM_Neck_Mass=0;
#declare BM_Neck_Object=object{BM_nul}
#declare BM_Torso_Object=object{BM_nul}
#declare BM_Abdomen_Object=object{BM_nul}
#declare BM_Upperarm_R_Object=object{BM_nul}
#declare BM_Upperarm_L_Object=object{BM_nul}
#declare BM_Forearm_R_Object=object{BM_nul}
#declare BM_Thigh_R_Object=object{BM_nul}
#declare BM_Thigh_L_Object=object{BM_nul}
#declare BM_Calf_R_Object=object{BM_nul}
#declare BM_Calf_L_Object=object{BM_nul}
#declare BM_Neck_Object=object{BM_nul}
#if (ShowXYZ=on)
#declare BM_Forearm_L_Object=union {object {BM_Forearm_L_Object} object {XYZ}}
#end
#declare BodyPart=
union {
bmtorso()
translate <-9,12,0>
scale 1.5
}
#break
#case (7)
plane {z,100 pigment {checker rgb .15,rgb .25} scale 2*3.5 translate y*3.5}
#declare Title="Right Hand"
#if (HandPoseNo>=0)
#declare BM_RFP_Pos=BM_Hands[HandPoseNo][0];
#declare BM_RFR_Pos=BM_Hands[HandPoseNo][1];
#declare BM_RFM_Pos=BM_Hands[HandPoseNo][2];
#declare BM_RFI_Pos=BM_Hands[HandPoseNo][3];
#declare BM_RFT_Pos=BM_Hands[HandPoseNo][4];
#end
#if (ShowXYZ=on)
#declare BM_Hand_R_Object=union {object {BM_Hand_R_Object} object {XYZ scale .5}}
#end
#declare BodyPart=
object {
bmhand(-1)
translate <9,30,0>
scale 3.5
}
#break
#case (8)
plane {z,100 pigment {checker rgb .15,rgb .25} scale 2*3.5 translate y*3.5}
#declare Title="Left - Hand"
#if (HandPoseNo>=0)
#declare BM_LFP_Pos=BM_Hands[HandPoseNo][0];
#declare BM_LFR_Pos=BM_Hands[HandPoseNo][1];
#declare BM_LFM_Pos=BM_Hands[HandPoseNo][2];
#declare BM_LFI_Pos=BM_Hands[HandPoseNo][3];
#declare BM_LFT_Pos=BM_Hands[HandPoseNo][4];
#end
#if (ShowXYZ=on)
#declare BM_Hand_L_Object=union {object {BM_Hand_L_Object} object {XYZ scale .5}}
#end
#declare BodyPart=
union {
bmhand(1)
translate <-9,30,0>
scale 3.5
}
#break
#case (9)
plane {z,100 pigment {checker rgb .15,rgb .25} scale 2*1.5 translate y*1.5}
#declare Title="Right Thigh"
#declare BM_R_Upperarm_Mass=0;
#declare BM_R_Forearm_Mass=0;
#declare BM_L_Upperarm_Mass=0;
#declare BM_L_Forearm_Mass=0;
#declare BM_R_Calf_Mass=0;
#declare BM_L_Thigh_Mass=0;
#declare BM_L_Calf_Mass=0;
#declare BM_Torso_Mass=0;
#declare BM_Abdomen_Mass=0;
#declare BM_Neck_Mass=0;
#declare BM_Neck_Object=object{BM_nul}
#declare BM_Torso_Object=object{BM_nul}
#declare BM_Abdomen_Object=object{BM_nul}
#declare BM_Upperarm_R_Object=object{BM_nul}
#declare BM_Upperarm_L_Object=object{BM_nul}
#declare BM_Forearm_R_Object=object{BM_nul}
#declare BM_Forearm_L_Object=object{BM_nul}
#declare BM_Thigh_L_Object=object{BM_nul}
#declare BM_Calf_R_Object=object{BM_nul}
#declare BM_Calf_L_Object=object{BM_nul}
#declare BM_Neck_Object=object{BM_nul}
#if (ShowXYZ=on)
#declare BM_Thigh_R_Object=union {object {BM_Thigh_R_Object} object {XYZ}}
#end
#declare BodyPart=
union {
bmtorso()
translate <4,18,0>
scale 1.5
}
#break
#case (10)
plane {z,100 pigment {checker rgb .15,rgb .25} scale 2*1.5 translate y*1.5}
#declare Title="Left Thigh"
#declare BM_R_Upperarm_Mass=0;
#declare BM_R_Forearm_Mass=0;
#declare BM_L_Upperarm_Mass=0;
#declare BM_L_Forearm_Mass=0;
#declare BM_R_Thigh_Mass=2;
#declare BM_R_Calf_Mass=0;
#declare BM_L_Calf_Mass=0;
#declare BM_Torso_Mass=0;
#declare BM_Neck_Mass=0;
#declare BM_Neck_Object=object{BM_nul}
#declare BM_Torso_Object=object{BM_nul}
#declare BM_Abdomen_Object=object{BM_nul}
#declare BM_Upperarm_R_Object=object{BM_nul}
#declare BM_Upperarm_L_Object=object{BM_nul}
#declare BM_Forearm_R_Object=object{BM_nul}
#declare BM_Forearm_L_Object=object{BM_nul}
#declare BM_Thigh_R_Object=object{BM_nul}
#declare BM_Calf_R_Object=object{BM_nul}
#declare BM_Calf_L_Object=object{BM_nul}
#declare BM_Neck_Object=object{BM_nul}
#if (ShowXYZ=on)
#declare BM_Thigh_L_Object=union {object {BM_Thigh_L_Object} object {XYZ}}
#end
#declare BodyPart=
union {
bmtorso()
translate <-4,18,0>
scale 1.5
}
#break
#case (11)
plane {z,100 pigment {checker rgb .15,rgb .25} scale 2*1.5 translate y*1.5}
#declare Title="Right Calf"
#declare BM_R_Upperarm_Mass=0;
#declare BM_R_Forearm_Mass=0;
#declare BM_L_Upperarm_Mass=0;
#declare BM_L_Forearm_Mass=0;
#declare BM_R_Thigh_Mass=0;
#declare BM_L_Thigh_Mass=0;
#declare BM_L_Calf_Mass=0;
#declare BM_Torso_Mass=0;
#declare BM_Abdomen_Mass=0;
#declare BM_Neck_Mass=0;
#declare BM_Neck_Object=object{BM_nul}
#declare BM_Torso_Object=object{BM_nul}
#declare BM_Abdomen_Object=object{BM_nul}
#declare BM_Upperarm_R_Object=object{BM_nul}
#declare BM_Upperarm_L_Object=object{BM_nul}
#declare BM_Forearm_R_Object=object{BM_nul}
#declare BM_Forearm_L_Object=object{BM_nul}
#declare BM_Thigh_R_Object=object{BM_nul}
#declare BM_Thigh_L_Object=object{BM_nul}
#declare BM_Calf_L_Object=object{BM_nul}
#declare BM_Neck_Object=object{BM_nul}
#if (ShowXYZ=on)
#declare BM_Calf_R_Object=union {object {BM_Calf_R_Object} object {XYZ}}
#end
#declare BodyPart=
union {
bmtorso()
translate <4,32,0>
scale 1.5
}
#break
#case (12)
plane {z,100 pigment {checker rgb .15,rgb .25} scale 2*1.5 translate y*1.5}
#declare Title="Left Calf"
#declare BM_R_Upperarm_Mass=0;
#declare BM_R_Forearm_Mass=0;
#declare BM_L_Upperarm_Mass=0;
#declare BM_L_Forearm_Mass=0;
#declare BM_R_Thigh_Mass=0;
#declare BM_R_Calf_Mass=0;
#declare BM_L_Thigh_Mass=0;
#declare BM_Torso_Mass=0;
#declare BM_Abdomen_Mass=0;
#declare BM_Neck_Mass=0;
#declare BM_Neck_Object=object{BM_nul}
#declare BM_Torso_Object=object{BM_nul}
#declare BM_Abdomen_Object=object{BM_nul}
#declare BM_Upperarm_R_Object=object{BM_nul}
#declare BM_Upperarm_L_Object=object{BM_nul}
#declare BM_Forearm_R_Object=object{BM_nul}
#declare BM_Forearm_L_Object=object{BM_nul}
#declare BM_Thigh_R_Object=object{BM_nul}
#declare BM_Thigh_L_Object=object{BM_nul}
#declare BM_Calf_R_Object=object{BM_nul}
#declare BM_Neck_Object=object{BM_nul}
#if (ShowXYZ=on)
#declare BM_Calf_L_Object=union {object {BM_Calf_L_Object} object {XYZ}}
#end
#declare BodyPart=
union {
bmtorso()
translate <-4,32,0>
scale 1.5
}
#break
#case (13)
plane {z,100 pigment {checker rgb .15,rgb .25} scale 2*2}
#declare Title="Right Foot"
#declare BM_L_Foot=0;
#declare BM_Foot_L_Object=object{BM_nul}
#if (ShowXYZ=on)
#declare BM_Foot_R_Object=union {object {BM_Foot_R_Object} object {XYZ scale .75}}
#end
#declare BodyPart=
union {
bmfeet()
translate <4,50,0>
scale 2
}
#break
#case (14)
plane {z,100 pigment {checker rgb .15,rgb .25} scale 2*2}
#declare Title="Left Foot"
#declare BM_R_Foot=0;
#declare BM_Foot_R_Object=object{BM_nul}
#if (ShowXYZ=on)
#declare BM_Foot_L_Object=union {object {BM_Foot_L_Object} object {XYZ scale .75}}
#end
#declare BodyPart=
union {
bmfeet()
translate <-4,50,0>
scale 2
}
#break
#end
/****************************************************************
Lights, Camera and Setting
*****************************************************************/
camera{location <0,-40,-100> orthographic look_at <0,-40,0> }
light_source{<-200,200,-200> rgb <1,.9,.5> }
light_source{< 400,400,-200> rgb <.2,.4,.8> shadowless }
light_source{<-200,200,-200> rgb .7 shadowless }
light_source{< 100, 50,-150> rgb .5 shadowless }
light_source{< 100,-50,-150> rgb .3 shadowless }
light_source{<-100,-50,-150> rgb .1 shadowless }
background {rgb 0}
/****************************************************************
The Models
****************************************************************/
text {
ttf
"crystal.ttf",
concat (Title," - 1 Square = 2 Units"),
.1,
0
translate <-9,1,-5>
pigment {rgb 1}
finish {ambient 1}
scale 7.5
no_shadow
}
object {BodyPart translate x*-15 no_shadow}
object {BodyPart rotate y*180 translate x* 45 no_shadow}
object {BodyPart rotate y* 90 translate x*-45 no_shadow}
object {BodyPart rotate y*-90 translate x* 15 no_shadow}
object {BodyPart rotate x*-90 translate y*-75 translate x*-15 no_shadow}
object {BodyPart rotate y*180 rotate x*90 translate y*-75 translate x* 45 no_shadow}
// EOF

132
blbman40/Hand_Studio.pov Normal file
View File

@ -0,0 +1,132 @@
/****************************************************************
_ _ _
| || |__ _ _ _ __| |
| __ / _` | ' \/ _` |
_|_||_\__,_|_||_\__,_|
/ __| |_ _ _ __| (_)___
\__ \ _| || / _` | / _ \
|___/\__|\_,_\__,_|_\___/
for use with bmpeople.inc
This scene creates a file "bmhand.txt" which contains a single
entry array for use with the hand macro in "bmpeople.inc"
see "bmmanual.txt" for full details.
Set View_Hands (below) to "yes", then change the HandNo to view
the hand poses in "bm_hands.inc"
*****************************************************************/
#local View_Hands=yes;
#local HandNo=0;
/****************************************************************
Set View_Hands (above) to off and then alter the vectors below
to change the finger positions.
<X,Y,Z,T> = <1st Joint, 2nd Joint, 3rd Joint, Spread>
Z Z Z
| | | Z
Y Y Y |
Z | | | Y
\ X X X | Please excuse the crude
Y +--+--+_ X Diagram :)
\ / \+
X \
| |
\ /
+------+
(+) Figures in X,Y or Z bend the joint towards the palm.
(-) Figures in X,Y or Z bend the joint away from the palm.
The T figure bends the whole finger sideways (+) is towards the
thumb, (-) towards the Pinky.
*****************************************************************/
#include "bmhand.inc"
#local Thumb = < 0, 0, 0, 0>; //<1st,2nd,3rd,Spread>
#local Index = < 0, 0, 0, 0>; //<1st,2nd,3rd,Spread>
#local Middle = < 0, 0, 0, 0>; //<1st,2nd,3rd,Spread>
#local Ring = < 0, 0, 0, 0>; //<1st,2nd,3rd,Spread>
#local Pinky = < 0, 0, 0, 0>; //<1st,2nd,3rd,Spread>
// Rendering at [320 x 240, No AA] shouldn't take very long,
// and is large enought to see if the positions are correct,
/****************************************************************
Lights, Camera and Setting
*****************************************************************/
camera{location <0,-40,-100> orthographic look_at <0,-40,0> }
light_source{<-200,200,-200> rgb <1,.9,.5> }
light_source{< 400,400,-200> rgb <.2,.4,.8> shadowless }
light_source{<-200,200,-200> rgb .7 shadowless }
light_source{< 100, 50,-150> rgb .5 shadowless }
light_source{< 100,-50,-150> rgb .3 shadowless }
light_source{<-100,-50,-150> rgb .1 shadowless }
background {rgb 0}
/****************************************************************
The Models
****************************************************************/
text {
ttf
"crystal.ttf",
concat ("Hand Studio for bmpeople.inc v4.0"),
.1,
0
translate <-9,1,-5>
pigment {rgb 1}
finish {ambient 1}
scale 7.5
no_shadow
}
#if (View_Hands=on)
#include "bm_hands.inc"
#local Pinky = BM_Hands[HandNo][0];
#local Ring = BM_Hands[HandNo][1];
#local Middle = BM_Hands[HandNo][2];
#local Index = BM_Hands[HandNo][3];
#local Thumb = BM_Hands[HandNo][4];
#end
#declare BM_RFP_Pos=Pinky;
#declare BM_RFR_Pos=Ring;
#declare BM_RFM_Pos=Middle;
#declare BM_RFI_Pos=Index;
#declare BM_RFT_Pos=Thumb;
#declare BM_RA_S2E=<0,0,0>;
#declare BM_RA_E2W=<0,0,0>;
#declare BM_RH_Rot=<0,0,0>;
#declare BodyPart=
union {
bmhand(-1)
translate <9,30,0>
scale 5
}
object {BodyPart scale <-1,-1,1> translate <-10,-45,0> no_shadow}
object {BodyPart scale <-1,-1,1> rotate y*180 translate <40,-45,0> no_shadow}
object {BodyPart scale <-1,-1,1> rotate y* 90 translate <-55,-45,0> no_shadow}
object {BodyPart scale <-1,-1,1> rotate y*-90 translate <20,-45,0> no_shadow}
object {BodyPart rotate x*-90 rotate z*-90 translate y*-75 translate x*-20 no_shadow}
object {BodyPart rotate y*180 rotate x*90 rotate z*90 translate y*-75 translate x* 50 no_shadow}
#fopen file "bmhand.txt" write
#write (file, "/************************************************************\n",
" Blob Man Hand Pose File for use with bmpeople.inc\n",
" This file was created automatically by Hand_Studio.pov\n",
"*************************************************************/\n\n")
#write (file, "#declare BM_Hands=array[1][5]\n",
" {\n",
" { ",Pinky,",",Ring,",",Middle,",",Index,",",Thumb," },\n",
" }\n")
#fclose file
// EOF

77
blbman40/How2CDF.txt Normal file
View File

@ -0,0 +1,77 @@
******************************************************************************************
___ _ _ __ __
| _ ) |___| |__| \/ |__ _ _ _
| _ \ / _ \ '_ \ |\/| / _` | ' \ v4.0
|___/_\___/_.__/_| |_\__,_|_||_|
How to Create Costume Definition Files
by Peter Houston
******************************************************************************************
When creating a Costume Definition File (CDF) it is a good idea to have a picture of what
you are attempting to create.
The first thing you should do is save a copy of layout.cdf to a new file, and then work
through each of the Body Part options, uncommenting any that need to be changed, leave image
and bump maps until later.
When creating CDFs I use Blob_Man_Studio.pov and Body_Part_Viewer.pov to position the
costume components correctly. If rendered at [ 320 x 240 No AA ] the objects are quite easy
to position and it doesn't take too long to render.
Using the Body_Part_Viewer.pov file change the Body_Part_Switch variable on line 41, to
the body part you are going to work on. If you render this you will notice six views of the
body part. Left Side, Front, Right Side, Back, Top and Underside. The scale of the grid
is shown at the top as is the name of Body Part (this is important as most of the arms/legs look
similar).
Also set BM_Gender (line 42) to 0 for Male or 1 for Female.
Uncomment line 18 and enter the filename of your CDF.
Uncomment the Body Part Object you are going to work on in your CDF file, you will notice that
the object refers to itself to begin with. This is important if you intend to use the DeBug
Variable later on, if you do, make sure you create a union with the current object as part if it.
e.g.
#declare Head_Object=union { object{Head_Object}
Your object definitions here
..
..
}
Create the objects you want to attached to the limb within this union in the CDF file. They should be
positioned in relation to <0,0,0>. If you change the ShowXYZ variable in Body_Part_Viewer.pov (line 54)
to "on" you will be able to see where <0,0,0> is in relation to the limb. (It is set to on by defult)
Tips
----
Think about how the objects you are placing will move with the limbs, for example if you are putting knee
pads on a skater, should they be attached to the bottom of the Thigh Objects or the Top of the Calf Objects.
use the Blob_Man_Studio.pov file to adjust the pose and see how the objects react. If you take a look at
sample.cdf you will notice that the helmet is attached to the Torso Object so that it remains static when the
head moves.
When adding objects to the hands be aware that the only static part is the palm area, any objects placed on
the fingers will NOT move if the finger positions change. Use the HandPose variable (line 43) test with different
hand poses (the number refers to the Array Entry in "bm_hands.inc"
If you intend to use Image Maps on the limb, remember that any object placed on that limb will adopt the image
map texture, if you do not want this to happen be sure you texture the objects in the CDF file.
When creating objects that are identical on both left and right limbs, declare them as a seperate object located
at <0,0,0> then add the object to the Body parts but flip them for the opposite side.
e.g Right Side would be : object {MyObject}
Left Side would be : object {MyObject scale <-1,1,1>}
If you intend to use the same objects in various CDF's why not create an include file with objects declared
in it and located at <0,0,0> then just include this file at the beginning of your CDF file, and place those
objects as normal in the body part objects.
******************************************************************************************
Last Updated : 9th April, 2000

21
blbman40/bm_hair.inc Normal file
View File

@ -0,0 +1,21 @@
/************************************************************
Sample BlobMan People Hair File for use with bmpeople.inc
*************************************************************/
#declare BM_Pose_Hair_1=array[5][1]
{
{ <0,0,0> },
{ <0,0,0> },
{ <0,0,0> },
{ <0,0,0> },
{ <0,0,0> },
}
#declare BM_Pose_Hair_2=array[5][9]
{
{ 0,0,0,0,0,0,0,0,0},
{ 1,0,0.25,5,0.7,0.01,1,10,0.05},
{ 1,0,0.25,5,0.7,0.01,1,20,0.1},
{ 1,0,0.25,5,0.7,0.05,1,6,0},
{ 1,0,0.5,5,0,0.005,1,6,0},
}

24
blbman40/bm_hands.inc Normal file
View File

@ -0,0 +1,24 @@
/************************************************************
Sample BlobMan Hands File for use with bmpeople.inc
Use Hand_Studio.pov to create new Hand Poses.
*************************************************************/
#declare BM_Hands=array[13][5]
{
{ <5,45,5,0> ,<10,30,5,0> ,<5,15,5,0> ,<0,10,0,0> ,<0,-10,5,10> },
{ <10,10,20,-10> ,<5,10,10,-5> ,<0,10,5,0> ,<0,10,5,5> ,<-10,-10,-20,0> },
{ <0,0,0,-20> ,<0,0,0,-10> ,<0,0,0,0> ,<0,0,0,10> ,<-20,-20,-20,0> },
{ <75,75,75,0> ,<75,75,75,0> ,<75,75,75,0> ,<75,75,75,0> ,<0,45,75,0> },
{ <75,75,75,0> ,<75,75,75,0> ,<10,5,0,0> ,<75,75,75,0> ,<0,45,75,0> },
{ <75,75,75,0> ,<75,75,75,0> ,<10,5,0,-10> ,<10,5,0,10> ,<0,45,75,0> },
{ <75,75,75,0> ,<75,75,75,0> ,<75,75,0,0> ,<5,5,0,0> ,<0,45,75,0> },
{ <2,1,0,0> ,<75,75,75,0> ,<75,75,75,0> ,<2,1,0,0> ,<0,45,75,0> },
{ <2,1,0,-10> ,<2,1,0,-12> ,<2,1,0,12> ,<2,1,0,8> ,<0,0,0,0> },
{ <85,75,55,0> ,<75,65,55,0> ,<65,55,45,0> ,<2,1,0,0> ,<-10,-10,-10,0> },
{ <45,45,45,0> ,<45,45,45,0> ,<45,45,45,0> ,<45,45,45,0> ,<45,20,10,0> },
{ <75,90,5,0> ,<75,90,5,0> ,<75,45,45,0> ,<25,45,60,0> ,<25,0,5,20> },
{ <0,0,0,0> ,<0,0,0,0> ,<0,0,0,0> ,<0,0,0,0> ,<0,0,0,30> },
}

40
blbman40/bm_pose.inc Normal file
View File

@ -0,0 +1,40 @@
/************************************************************
Sample BlobMan People Pose File for use with bmpeople.inc
PoseNo
0 = Standing Relaxed
1 = Standing Hands on Hips
2 = Meditation (transform BM_Abdomen_U)
3 = Sitting at Table/Piano etc (transform BM_Abdomen_U)
4 = Gunfighter
5 = Praying on Knees (transform BMO_Knee_R translate <0,1,0>*BM_Scale )
6 = "We're Not Worthy" (transform BMO_Knee_R translate <0,1,0>*BM_Scale )
7 = Hand Stand (transform BMO_Hand_R)
8 = Sun Bathing (transform BMO_Torso_B rotate x*99 ) Female
(transform BMO_Torso_B rotate x*109 ) Male
9 = Surfer
10 = Reclined (Male) (transform BMO_Abdomen_L rotate z*-85)
11 = Reclined (Female) (transform BMO_Abdomen_L rotate z*-85)
*************************************************************/
#include "bm_hands.inc"
#include "bm_hair.inc"
#declare BM_Pose=array[12][17]
{
{ <0,0,0> ,<0,0,0> ,<0,0,0> ,<-8,0,-8> ,<8,0,-3> ,<-8,0,8> ,<8,0,3> ,<8,0,-5> ,<-8,0,3> ,<8,0,5> ,<-8,0,-3> ,<8,0,-3> ,<8,0,3> ,<0,0,0> ,<0,0,0> ,<0,0,0> , <0,0,0> },
{ <0,0,0> ,<0,0,0> ,<0,0,0> ,<0,0,-42> ,<0,0,45> ,<0,0,42> ,<0,0,-45> ,<0,0,0> ,<0,0,0> ,<0,0,0> ,<0,0,0> ,<0,0,0> ,<0,0,0> ,<0,0,0> ,<0,0,-38> ,<0,0,38> ,<0,0,0> , },
{ <0,0,0> ,<5,0,0> ,<-5,0,0> ,<0,0,-15> ,<60,0,-15> ,<0,0,15> ,<60,0,15> ,<80,45,0> ,<10,0,90> ,<80,-45,0> ,<-5,0,-100> ,<-30,0,0> ,<-30,0,0> ,<0,0,0> ,<0,100,-20> ,<0,-100,20> , <11,0,11> },
{ <0,0,0> ,<0,0,0> ,<0,0,0> ,<25,0,-20> ,<90,0,0> ,<25,0,20> ,<90,0,0> ,<90,15,0> ,<0,0,0> ,<90,-15,0> ,<0,0,0> ,<0,0,0> ,<0,0,0> ,<0,0,0> ,<-10,-90,0> ,<10,90,0> ,<0,0,0> , },
{ <0,0,0> ,<0,0,0> ,<0,0,0> ,<-10,5,-35> ,<10,0,10> ,<-10,-5,35> ,<10,0,-10> ,<8,0,-15> ,<-8,0,0> ,<8,0,15> ,<-8,0,0> ,<8,0,0> ,<8,0,0> ,<0,0,0> ,<0,0,10> ,<0,0,-10> , <0,0,0> },
{ <-10,0,0> ,<-10,0,0> ,<0,0,0> ,<25,0,0> ,<145,-50,-4> ,<25,0,0> ,<145,50,4> ,<65,10,0> ,<-90,0,0> ,<65,-10,0> ,<-90,0,0> ,<-45,0,0> ,<-45,0,0> ,<-30,0,-30> ,<30,-30,-20> ,<30,30,20> , <12,0,12> },
{ <45,0,0> ,<0,0,0> ,<0,0,0> ,<145,20,0> ,<210,0,0> ,<145,-20,0> ,<210,0,0> ,<65,10,0> ,<-90,0,0> ,<65,-10,0> ,<-90,0,0> ,<-45,0,0> ,<-45,0,0> ,<-30,0,-30> ,<30,-30,-60> ,<30,30,60> , <0,0,0> },
{ <30,0,0> ,<30,0,0> ,<0,0,0> ,<0,0,-150> ,<0,90,-180> ,<0,0,150> ,<0,-90,180> ,<45,0,-10> ,<-45,0,-10> ,<-5,0,10> ,<-5,0,10> ,<0,0,0> ,<0,0,0> ,<0,0,0> ,<0,0,-90> ,<0,0,90> , <12,0,12> },
{ <0,-10,0> ,<0,0,0> ,<0,0,0> ,<-10,0,-120> ,<0,15,-260> ,<-10,0,120> ,<0,15,259> ,<30,0,0> ,<-30,0,0> ,<0,0,10> ,<-8,0,0> ,<-50,0,0> ,<0,-15,0> ,<0,0,0> ,<0,100,0> ,<0,-100,0> , <12,0,12> },
{ <0,50,0> ,<0,0,0> ,<0,15,0> ,<85,45,0> ,<110,30,0> ,<60,-60,0> ,<85,-30,0> ,<60,45,0> ,<45,45,0> ,<85,-45,0> ,<0,-30,0> ,<-25,0,0> ,<20,0,0> ,<0,0,0> ,<0,-90,0> ,<0,90,0> , <0,0,0> },
{ <0,10,10> ,<0,0,10> ,<0,0,18> ,<-20,0,15> ,<45,0,-33> ,<-8,0,146> ,<8,0,273> ,<25,0,0> ,<0,0,7.5> ,<8,0,-1> ,<-8,0,-1> ,<-15,0,8> ,<-8,0,-8> ,<0,0,0> ,<15,0,30> ,<0,180,-75> , <0,0,0> },
{ <0,10,10> ,<0,0,10> ,<0,0,17> ,<-20,0,15> ,<45,0,-40> ,<-8,0,138> ,<8,0,273> ,<25,0,0> ,<0,0,7.5> ,<8,0,0> ,<-8,0,0> ,<-15,0,8> ,<-8,0,-8> ,<0,0,0> ,<30,0,50> ,<0,180,-75> , <0,0,1> },
}

26
blbman40/bmarray.txt Normal file
View File

@ -0,0 +1,26 @@
/************************************************************
Blob Man Pose File for use with Blob_Man.inc
This file was created automatically by Blob_Man_Studio.POV
*************************************************************/
#declare BM_Pose=array[1][17]
{
{ <0,0,0> ,<-10,0,0> ,<-10,0,0> ,<-20,0,-8> ,<0,0,-3> ,<20,0,8> ,<40,0,3> ,<30,0,-5> ,<15,0,0> ,<0,0,5> ,<-30,0,0> ,<0,0,0> ,<15,0,0> ,<15,0,0> ,<0,0,0> ,<0,0,0> , <0,0,1> },
}
#declare BM_Hands=array[2][5]
{
{ <5,45,5,0> ,<10,30,5,0> ,<5,15,5,0> ,<0,10,0,0> ,<0,-10,5,10> },
{ <5,45,5,0> ,<10,30,5,0> ,<5,15,5,0> ,<0,10,0,0> ,<0,-10,5,10> },
}
#declare BM_Pose_Hair_1=array[1][1]
{
{ <-20,0,0> },
}
#declare BM_Pose_Hair_2=array[1][9]
{
{ 1,0,0.2,4,0.3,0.015,1.5,15,0 },
}
// End of File

53
blbman40/bmdeclar.txt Normal file
View File

@ -0,0 +1,53 @@
/************************************************************
Blob Man Pose File for use with bmpeople.inc
This file was created automatically by Blob_Man_Studio.POV
*************************************************************/
#declare BM_Head_Rot = <0,0,0> ;
#declare BM_Neck_Rot = <-10,0,0> ;
#declare BM_Torso_Rot = <-10,0,0> ;
#declare BM_RA_S2E = <-20,0,-8> ;
#declare BM_RA_E2W = <0,0,-3> ;
#declare BM_LA_S2E = <20,0,8> ;
#declare BM_LA_E2W = <40,0,3> ;
#declare BM_RL_H2K = <30,0,-5> ;
#declare BM_RL_K2A = <15,0,0> ;
#declare BM_LL_H2K = <0,0,5> ;
#declare BM_LL_K2A = <-30,0,0> ;
#declare BM_RF_Rot = <0,0,0> ;
#declare BM_LF_Rot = <15,0,0> ;
#declare BM_Toe_Angle = <15,0,0> ;
#declare BM_RH_Rot = <0,0,0> ;
#declare BM_LH_Rot = <0,0,0> ;
// If you wish to use a predefined hand be sure to include
// bm_hands.inc and then set BM_Pose_RHand/LHand to the array
// entry number (0 being the first entry). Otherwise set them
// to -1 and use the finger positions defined below
#declare BM_Pose_RHand = -1;
#declare BM_Pose_LHand = -1;
#declare BM_RFP_Pos = <5,45,5,0> ;
#declare BM_RFR_Pos = <10,30,5,0> ;
#declare BM_RFM_Pos = <5,15,5,0> ;
#declare BM_RFI_Pos = <0,10,0,0> ;
#declare BM_RFT_Pos = <0,-10,5,10> ;
#declare BM_LFP_Pos = <5,45,5,0> ;
#declare BM_LFR_Pos = <10,30,5,0> ;
#declare BM_LFM_Pos = <5,15,5,0> ;
#declare BM_LFI_Pos = <0,10,0,0> ;
#declare BM_LFT_Pos = <0,-10,5,10> ;
#declare BM_Hair_Rot = <-20,0,0> ;
#declare BM_Hair_Arch = 0;
#declare BM_Hair_Thck = 0.2;
#declare BM_Hair_Line = 4;
#declare BM_Hair_LDpth = 0.3;
#declare BM_Hair_Wght = 0.015;
#declare BM_Hair_Hght = 1.5;
#declare BM_Hair_Length = 15;
#declare BM_Hair_Curl = 0;
#declare BM_PoseNo = -1;
// End of File

236
blbman40/bmdefs.inc Normal file
View File

@ -0,0 +1,236 @@
/***************************************************************
Default Settings for the "bmpeople.inc" and associated files
****************************************************************/
// Default Settings
#declare BM_Defaults=true;
#declare Male=0;
#declare Female=1;
#ifndef (BM_Guide_Rad) #declare BM_Guide_Rad=2; #end
#ifndef (BM_PoseNo) #declare BM_PoseNo=-1; #end
#ifndef (BM_Pose_RHand) #declare BM_Pose_RHand=-1; #end
#ifndef (BM_Pose_LHand) #declare BM_Pose_LHand=-1; #end
#ifndef (BM_Hair_Seed) #declare BM_Hair_Seed=77; #end
#ifndef (BM_Gender) #declare BM_Gender=0; #end
#ifndef (BM_HairCol) #declare BM_HairCol=<.5,.5,.5,>; #end
#ifndef (BM_Flex) #declare BM_Flex=1; #end
#ifndef (BM_TShirt) #declare BM_TShirt=0; #end
#ifndef (BM_Build) #declare BM_Build=0.5; #end
#ifndef (BM_Mouth) #declare BM_Mouth=1; #end
#ifndef (BM_MouthShape) #declare BM_MouthShape=.5; #end
#ifndef (BM_EyeCol) #declare BM_EyeCol=<.22,.69,.87>; #end
#ifndef (BM_EyeLids) #declare BM_EyeLids=<0,0,0>; #end
#ifndef (BM_RA_S2E) #declare BM_RA_S2E= <-8,0,-8>; #end
#ifndef (BM_RA_E2W) #declare BM_RA_E2W= <8,0,-3>; #end
#ifndef (BM_LA_S2E) #declare BM_LA_S2E= <-8,0,8>; #end
#ifndef (BM_LA_E2W) #declare BM_LA_E2W= <8,0,3>; #end
#ifndef (BM_RL_H2K) #declare BM_RL_H2K= <8,0,-5>; #end
#ifndef (BM_RL_K2A) #declare BM_RL_K2A= <-8,0,3>; #end
#ifndef (BM_LL_H2K) #declare BM_LL_H2K= <8,0,5>; #end
#ifndef (BM_LL_K2A) #declare BM_LL_K2A= <-8,0,-3>; #end
#ifndef (BM_RH_Rot) #declare BM_RH_Rot= <0,0,0>; #end
#ifndef (BM_LH_Rot) #declare BM_LH_Rot= <0,0,0>; #end
#ifndef (BM_RF_Rot) #declare BM_RF_Rot= <8,0,-3>; #end
#ifndef (BM_LF_Rot) #declare BM_LF_Rot= <8,0,3>; #end
#ifndef (BM_Toe_Angle) #declare BM_Toe_Angle=<0,0,0>; #end
#ifndef (BM_Head_Rot) #declare BM_Head_Rot= <0,0,0>; #end
#ifndef (BM_Neck_Rot) #declare BM_Neck_Rot= <0,0,0>; #end
#ifndef (BM_Torso_Rot) #declare BM_Torso_Rot= <0,0,0>; #end
#ifndef (BM_LFP_Pos) #declare BM_LFP_Pos= <5,45,5,0>; #end
#ifndef (BM_LFR_Pos) #declare BM_LFR_Pos= <10,30,5,0>; #end
#ifndef (BM_LFM_Pos) #declare BM_LFM_Pos= <5,15,5,0>; #end
#ifndef (BM_LFI_Pos) #declare BM_LFI_Pos= <0,10,0,0>; #end
#ifndef (BM_LFT_Pos) #declare BM_LFT_Pos= <0,-10,5,10>; #end
#ifndef (BM_RFP_Pos) #declare BM_RFP_Pos= <5,45,5,0>; #end
#ifndef (BM_RFR_Pos) #declare BM_RFR_Pos= <10,30,5,0>; #end
#ifndef (BM_RFM_Pos) #declare BM_RFM_Pos= <5,15,5,0>; #end
#ifndef (BM_RFI_Pos) #declare BM_RFI_Pos= <0,10,0,0>; #end
#ifndef (BM_RFT_Pos) #declare BM_RFT_Pos= <0,-10,5,10>; #end
#ifndef (BM_Map_R_Finger) #declare BM_Map_R_Finger=1; #end
#ifndef (BM_Map_L_Finger) #declare BM_Map_L_Finger=1; #end
#ifndef (BM_Nails) #declare BM_Nails=1; #end
#ifndef (BM_Ears) #declare BM_Ears=2; #end
#ifndef (BM_Jaw) #declare BM_Jaw=.5; #end
#ifndef (BM_Teeth) #declare BM_Teeth=1; #end
#ifndef (BM_Jowls) #declare BM_Jowls=0; #end
#ifndef (BM_Nose) #declare BM_Nose=.4; #end
#ifndef (BM_Face) #declare BM_Face=1; #end
#ifndef (BM_R_Foot) #declare BM_R_Foot=1; #end
#ifndef (BM_L_Foot) #declare BM_L_Foot=1; #end
#ifndef (BM_R_Hand) #declare BM_R_Hand=1; #end
#ifndef (BM_L_Hand) #declare BM_L_Hand=1; #end
#ifndef (BM_Eyes) #declare BM_Eyes=1; #end
#ifndef (BM_HairStyle) #declare BM_HairStyle=-1; #end
#ifndef (BM_Hair_Col) #declare BM_Hair_Col=<.5,.5,.5>; #end
#ifndef (BM_Hair_Rot) #declare BM_Hair_Rot=<0,0,0>; #end
#ifndef (BM_Hair_On) #declare BM_Hair_On=0; #end
#ifndef (BM_Hair_Arch) #declare BM_Hair_Arch=0; #end
#ifndef (BM_Hair_Thck) #declare BM_Hair_Thck=0; #end
#ifndef (BM_Hair_Line) #declare BM_Hair_Line=0; #end
#ifndef (BM_Hair_LDpth) #declare BM_Hair_LDpth=0; #end
#ifndef (BM_Hair_Wght) #declare BM_Hair_Wght=0; #end
#ifndef (BM_Hair_Hght) #declare BM_Hair_Hght=0; #end
#ifndef (BM_Hair_Length) #declare BM_Hair_Length=0; #end
#ifndef (BM_Hair_Curl) #declare BM_Hair_Curl=0; #end
#ifndef (BM_R_Upperarm_Mass) #declare BM_R_Upperarm_Mass=2; #end
#ifndef (BM_L_Upperarm_Mass) #declare BM_L_Upperarm_Mass=2; #end
#ifndef (BM_R_Forearm_Mass) #declare BM_R_Forearm_Mass=2; #end
#ifndef (BM_L_Forearm_Mass) #declare BM_L_Forearm_Mass=2; #end
#ifndef (BM_R_Thigh_Mass) #declare BM_R_Thigh_Mass=2; #end
#ifndef (BM_L_Thigh_Mass) #declare BM_L_Thigh_Mass=2; #end
#ifndef (BM_R_Calf_Mass) #declare BM_R_Calf_Mass=2; #end
#ifndef (BM_L_Calf_Mass) #declare BM_L_Calf_Mass=2; #end
#ifndef (BM_Neck_Mass) #declare BM_Neck_Mass=1; #end
#ifndef (BM_Torso_Mass) #declare BM_Torso_Mass=1; #end
#ifndef (BM_Abdomen_Mass) #declare BM_Abdomen_Mass=1; #end
#ifndef (BM_Head_Mass) #declare BM_Head_Mass=1; #end
#ifndef (BM_Bump_Map_Size) #declare BM_Bump_Map_Size=0.25; #end
// Define Default Textures
#ifndef (BM_Skin_Tex)
#declare BM_Skin_Tex=
texture {
pigment{rgb <0.96,0.80,0.69>}
finish{
phong .1
phong_size 40
}
}
#end
#ifndef (BM_Lip_Tex)
#declare BM_Lip_Tex =
texture {
pigment{rgb <.7,.3,.2>}
finish{
phong .3
phong_size 40
}
normal{
crackle .2
turbulence .7
scale .7
}
}
#end
#ifndef (BM_Nail_Tex)
#declare BM_Nail_Tex =
texture{BM_Skin_Tex
finish {
ambient -.25
}
}
#end
#ifndef (BM_Tooth_Tex)
#declare BM_Tooth_Tex=
texture {
pigment {rgb 1}
finish {phong .9 phong_size 90}
}
#end
// Declare Default nul Objects
#ifndef (BM_DeBug)
#declare BM_DeBug=off;
#end
#declare BM_Vector_Locator=
union {
cylinder {<-8,0,0><8,0,0> .5 pigment {rgb x}}
cylinder {<0,0,-8><0,0,8> .5 pigment {rgb y}}
cylinder {<0,-8,0><0,8,0> .5 pigment {rgb z}}
torus {5,.4 pigment {rgb <1,1,0>}}
}
#declare BM_nul=sphere{0,.0000001 pigment {rgbft 1}}
#ifndef (BM_Head_Object) #declare BM_Head_Object=object{BM_nul} #end
#ifndef (BM_Neck_Object) #declare BM_Neck_Object=object{BM_nul} #end
#ifndef (BM_Torso_Object) #declare BM_Torso_Object=object{BM_nul} #end
#ifndef (BM_Abdomen_Object) #declare BM_Abdomen_Object=object{BM_nul} #end
#ifndef (BM_Upperarm_R_Object) #declare BM_Upperarm_R_Object=object{BM_nul} #end
#ifndef (BM_Upperarm_L_Object) #declare BM_Upperarm_L_Object=object{BM_nul} #end
#ifndef (BM_Forearm_R_Object) #declare BM_Forearm_R_Object=object{BM_nul} #end
#ifndef (BM_Forearm_L_Object) #declare BM_Forearm_L_Object=object{BM_nul} #end
#ifndef (BM_Hand_R_Object) #declare BM_Hand_R_Object=object{BM_nul} #end
#ifndef (BM_Hand_L_Object) #declare BM_Hand_L_Object=object{BM_nul} #end
#ifndef (BM_Thigh_R_Object) #declare BM_Thigh_R_Object=object{BM_nul} #end
#ifndef (BM_Thigh_L_Object) #declare BM_Thigh_L_Object=object{BM_nul} #end
#ifndef (BM_Calf_R_Object) #declare BM_Calf_R_Object=object{BM_nul} #end
#ifndef (BM_Calf_L_Object) #declare BM_Calf_L_Object=object{BM_nul} #end
#ifndef (BM_Foot_R_Object) #declare BM_Foot_R_Object=object{BM_nul} #end
#ifndef (BM_Foot_L_Object) #declare BM_Foot_L_Object=object{BM_nul} #end
#if (BM_DeBug=yes)
#declare BM_Head_Object=
union {
object{BM_Head_Object}
object{BM_Vector_Locator scale 1.5}
}
#declare BM_Torso_Object=object{BM_nul}
#declare BM_Upperarm_R_Object=
union {
object {BM_Upperarm_R_Object}
object {BM_Vector_Locator rotate z*90}
}
#declare BM_Upperarm_L_Object=
union {
object {BM_Upperarm_L_Object}
object {BM_Vector_Locator rotate z*90}
}
#declare BM_Forearm_R_Object=
union {
object {BM_Forearm_R_Object}
object {BM_Vector_Locator}
}
#declare BM_Forearm_L_Object=
union {
object {BM_Forearm_L_Object}
object {BM_Vector_Locator}
}
#declare BM_Hand_R_Object=
union {
object {BM_Hand_R_Object}
object {BM_Vector_Locator}
}
#declare BM_Hand_L_Object=
union {
object {BM_Hand_L_Object}
object {BM_Vector_Locator}
}
#declare BM_Thigh_R_Object=
union {
object {BM_Thigh_R_Object}
object {BM_Vector_Locator rotate z*90 scale 1.25}
}
#declare BM_Thigh_L_Object=
union {
object {BM_Thigh_L_Object}
object {BM_Vector_Locator rotate z*90 scale 1.25}
}
#declare BM_Calf_R_Object=
union {
object {BM_Calf_R_Object}
object {BM_Vector_Locator}
}
#declare BM_Calf_L_Object=
union {
object {BM_Calf_L_Object}
object {BM_Vector_Locator}
}
#declare BM_Foot_R_Object=
union {
object {BM_Foot_R_Object}
cylinder {<0,-3.25,0><0,-3.0,0>6.5 pigment {rgb <1,0,0>}}
object {BM_Vector_Locator}
}
#declare BM_Foot_L_Object=
union {
object {BM_Foot_L_Object}
cylinder {<0,-3.25,0><0,-3.0,0>6.5 pigment {rgb <1,0,0>}}
object {BM_Vector_Locator}
}
#end
// End of Defaults File

BIN
blbman40/bmface1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
blbman40/bmface2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

BIN
blbman40/bmface3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
blbman40/bmface4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

BIN
blbman40/bmface5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
blbman40/bmface6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

320
blbman40/bmfeet.inc Normal file
View File

@ -0,0 +1,320 @@
/****************************************************************
Feet Macro for use with "bmpeople.inc" v4.0
refer to "bmmanual.txt" for usage information
*******************************************************************/
#ifndef (BM_Defaults)
#include "bmdefs.inc"
#end
#macro FootModel (LR,ToeAng)
union {
blob{
threshold BM_Build
cylinder { <0,0,0>,<0,.00001,0> 0.36, .75 // joint
scale <1, 0.8, .5>
translate <0.0, 0.08, -0.03>
}
/*
sphere { <0,0,0>, 0.36, -.75 // joint
scale <1, 1, 1.5>
translate <0.0, 0.1, 0.1>
} */
/*
sphere {0,.3,-.75
scale <2,1,1>
translate <0,-.1,0> pigment {rgb x}
}
*/
cylinder { <-.1,.05,-.1>,<.1,.05,-.15>,.1,1 }
cylinder { <0, 0, -0.1>, <0, .1, -0.25>, 0.4, 1 //
scale <0.6,0.6, 1>
translate <-0.01, 0, 0>
}
cylinder { <0, 0, -0.05>, <0, 0, -0.45>, 0.3, 1
scale <0.9,0.7, 1>
translate <0.05, -0.08, 0>
}
cylinder { <0, 0, -0.5>, <0, 0, -0.75>, 0.3, 1 // side
scale <0.9, 0.5, 1>
translate <0.15, -0.15, 0>
}
cylinder { <0, 0, -0.15>, <0, 0, -0.65>, 0.4, 1 // bottom & heel
scale <0.9,0.55, 1>
translate <0, -0.17,0>
}
sphere { 0,.1, 1
scale <1,1,1.5>
translate <-0.12, -.21, -0.8>
}
sphere { 0,.1, 1
scale <1,1,1.5>
translate <0.01, -.22, -0.8>
}
sphere { 0,.1, 1
scale <1,1,1.5>
translate <0.12, -.22, -0.8>
}
sphere { <0,0,0>,.1, 1
scale <1,1,1.5>
translate <0.22, -.2, -0.8>
}
sphere { 0,.1, 1
scale <1,1,1.5>
translate <0.28, -.18, -0.8>
}
// Heel
cylinder {<0,0,0>,<0,.4,0>,.3,.5
scale <1,.5,1>
rotate x*-15
translate <0.00, -0.17,0>
}
sphere {0,.3,1
scale <.75,.5,.8>
translate <0.05, -0.15,-.7>
}
sphere {0,.3,-.85
scale <.75,2,.9>
rotate z*55
translate <-.3,-.27,-.45>
}
}
// Toes
union {
// 1st Toe (Big)
blob {
threshold BM_Build
cylinder { <0, 0, .1>, <0, 0, -0.2>, 0.16, 1
}
sphere { <0,0,.2>,.25,-.7 }
rotate <ToeAng, 0, 0>
translate <-0.12, 0, -0.8>
//sturm
}
// 2nd Toe
blob {
threshold BM_Build
cylinder { <0, 0, 0>, <0, 0, -0.19>, 0.14, 1
rotate ToeAng*x
translate <0.01, 0.01, -0.8>}
//sturm
}
// 3rd Toe
blob {
threshold BM_Build
cylinder { <0, 0, 0>, <0, 0, -0.17>, 0.13, 1
rotate ToeAng*x
translate <0.12, 0.005, -0.8>}
//sturm
}
// 4th Toe
blob {
threshold BM_Build
cylinder { <0, 0, 0>, <0, 0, -0.15>, 0.12, 1
rotate <ToeAng, 5, 0>
translate <0.22, 0, -0.8>}
sturm
}
// 5th Toe (Little)
blob {
threshold BM_Build
cylinder { <0, 0, 0>, <0, 0, -0.13>, 0.11, 1
rotate <ToeAng, 10, 0>
translate <0.3, 0,-0.8>}
//sturm
}
translate <0, -0.175, 0>
}
translate <0,.05,0>
#if (BM_Gender=0)
scale <8.5,8,8>
#end
#if (BM_Gender=1)
scale 7
#end
rotate -3*z
scale <LR,1,1>
}
#end
#macro bmfeet()
#if (BM_Gender=0)
#local Hips =<1.5,1.5,1.5>;
#local ThighLength =14;
#local CalfLength =17;
#local Ankle =<.15,-1.5,1.35>;
#local R_Foot =< 0,-1,-1.4>;
#local L_Foot =< 0,-1,-1.4>;
#end
#if (BM_Gender=1)
#local Hips =<.75,-2.5,1.5>;
#local ThighLength =14.7;
#local CalfLength =18.9;
#local Ankle =<0,-1,.25>;
#local R_Foot =<-.55,2,-1>;
#local L_Foot =< .55,2,-1>;
#end
#local RL_Knee =vrotate(<0,-ThighLength,0>,BM_RL_H2K);
#local RL_Ankle=vrotate(<0,-CalfLength,0> ,BM_RL_K2A);
#local LL_Knee =vrotate(<0,-ThighLength,0>,BM_LL_H2K);
#local LL_Ankle=vrotate(<0,-CalfLength,0> ,BM_LL_K2A);
#local R_HipReplace=<BM_RL_H2K.y/-50,0,BM_RL_H2K.y/-50>-<BM_RL_K2A.y/-50,0,BM_RL_K2A.y/-50>;
#local L_HipReplace=<BM_LL_H2K.y/-50,0,BM_LL_H2K.y/ 50>-<BM_LL_K2A.y/-50,0,BM_LL_K2A.y/ 50>;
#local R_Foot_Trans=transform {rotate BM_RF_Rot rotate BM_RL_K2A translate RL_Knee+RL_Ankle+<-Hips.x+R_HipReplace.x,-29+Hips.y+BM_Gender,R_HipReplace.z+Hips.z> translate R_Foot}
#local L_Foot_Trans=transform {rotate BM_LF_Rot rotate BM_LL_K2A translate LL_Knee+LL_Ankle+< Hips.x+L_HipReplace.x,-29+Hips.y+BM_Gender,L_HipReplace.z+Hips.z> translate L_Foot}
#declare BMOFL=transform {translate -(LL_Knee+LL_Ankle+<0,-ThighLength-CalfLength,0>)
#if (BM_Gender=0)
translate -L_Foot-<0,.5,0>
#end
#if (BM_Gender=1)
translate -L_Foot-<0,1,0>
#end
rotate -BM_LF_Rot
rotate -BM_LL_K2A
translate z*4
}
#declare BMOFR=transform {translate -(RL_Knee+RL_Ankle+<0,-ThighLength-CalfLength,0>)
#if (BM_Gender=0)
translate -R_Foot-<0,.5,0>
#end
#if (BM_Gender=1)
translate -R_Foot-<0,1,0>
#end
rotate -BM_RF_Rot
rotate -BM_RL_K2A
translate z*4
}
//#declare BM_RF_Location=<0,0,4>+R_Foot+<-Hips.x+R_HipReplace.x,-29+Hips.y+BM_Gender,R_HipReplace.z+Hips.z>+RL_Ankle+RL_Knee;
#declare BM_RF_Location=vrotate (<0,0,4>,BM_RF_Rot);
#declare BM_LF_Location=vrotate (<0,0,-4>,BM_LF_Rot);
#if (BM_Gender=1)
#declare BM_RF_Location=BM_RF_Location+<0,6,0>+< Hips.x,Hips.y,Hips.z>+RL_Ankle+RL_Knee;
#declare BM_LF_Location=BM_LF_Location+<0,6,0>+<-Hips.x,Hips.y,Hips.z>+LL_Ankle+LL_Knee;
#end
#if (BM_Gender=0)
#declare BM_RF_Location=BM_RF_Location+<0,.25,0>+< Hips.x,Hips.y,Hips.z>+RL_Ankle+RL_Knee;
#declare BM_LF_Location=BM_LF_Location+<0,.25,0>+<-Hips.x,Hips.y,Hips.z>+LL_Ankle+LL_Knee;
#end
union {
// Right Foot
union {
object {
#if (BM_R_Foot>0)
FootModel (-1,BM_Toe_Angle.z)
#else
BM_nul
#end
translate Ankle
}
object {BM_Foot_R_Object}
material {
texture {BM_Skin_Tex}
#ifdef (Foot_R_IMap)
texture {
pigment {
image_map {
png Foot_R_IMap
map_type 0
interpolate 4
once
}
scale 8
translate <-4,-4,-4>
}
#ifdef (BM_Map_Finish)
finish {BM_Map_Finish}
#end
#ifdef (BM_Map_Normal)
normal {BM_Map_Normal}
#end
#ifdef (Foot_R_BMap)
normal {
bump_map {
png Foot_R_BMap
map_type 2
interpolate 4
once
bump_size BM_Bump_Map_Size
}
scale 8
translate <-4,-4,-4>
}
#end
}
#end
}
transform R_Foot_Trans
}
// Left Foot
union {
object {
#if (BM_L_Foot>0)
FootModel (1,BM_Toe_Angle.x)
#else
BM_nul
#end
translate Ankle
}
object {BM_Foot_L_Object}
material {
texture {BM_Skin_Tex}
#ifdef (Foot_L_IMap)
texture {
pigment {
image_map {
png Foot_L_IMap
map_type 0
interpolate 4
once
}
scale 8
translate <-4,-4,-4>
}
#ifdef (BM_Map_Finish)
finish {BM_Map_Finish}
#end
#ifdef (BM_Map_Normal)
normal {BM_Map_Normal}
#end
#ifdef (Foot_L_BMap)
normal {
bump_map {
png Foot_L_BMap
map_type 2
interpolate 4
once
bump_size BM_Bump_Map_Size
}
scale 8
translate <-4,-4,-4>
}
#end
}
#end
}
transform L_Foot_Trans
}
}
#end
// End of Feet Macro

91
blbman40/bmhair.inc Normal file
View File

@ -0,0 +1,91 @@
/****************************************************************
Hair Macro for use with "bmpeople.inc" v4.0
refer to "bmmanual.txt" for usage information
*******************************************************************/
#ifndef (BM_Defaults)
#include "bmdefs.inc"
#end
#macro bmhair()
#local NeckTrans=transform {rotate <BM_Neck_Rot.x,0,BM_Neck_Rot.z>}
#local TorsoTrans=transform {translate <0,20,-3> rotate <BM_Torso_Rot.x,0,BM_Torso_Rot.z> translate <0,-20,3>
translate <0,20,0> rotate <0,BM_Torso_Rot.y,0> translate <0,-20,0>
}
#if (BM_Hair_On=1)
union{
#ifdef (Hair_Seed)
#local rr=seed(Hair_Seed);
#else
#local rr=seed(77);
#end
#local tt=0;
#while (tt<20)
#local zz=tt*3+3;
#local cc=0;
#while (cc<zz)
#local yy=cc*360/zz+rand(rr)*6;
#local xx=BM_Hair_Line-sin((yy+15)*pi/30)*BM_Hair_LDpth;
#local hh=vrotate(<0,.8,0>,<tt*xx+rand(rr)*5,yy,45>);
#local hx=hh.x;
#local hy=hh.y;
#local hz=hh.z;
#local dx=hx/50;
#local dy=hy/50*BM_Hair_Hght;
#local dz=hz/50;
#if (BM_Hair_Arch=1 & dx>0)
#local dy=dy+dx;
#local dx=-dx;
#end
#if (hy>-.25)
blob{
threshold .5
#local ll=0;
#local length=BM_Hair_Length-rand(rr)*BM_Hair_Length/5;
#local vv=rand(rr)*length;
#while (ll<length)
sphere{<hx+BM_Hair_Curl*sin((vv+ll)*pi/3),hy,hz+BM_Hair_Curl*cos((vv+ll)*pi/3)>,BM_Hair_Thck/5,1}
#local ll=ll+BM_Hair_Thck;
#local hx=hx+dx;
#local hy=hy+dy;
#local hz=hz+dz;
#local dx=dx*(1-BM_Hair_Wght*2);
#local dy=dy*(1-BM_Hair_Wght/2)-BM_Hair_Wght/20;
#local dz=dz*(1-BM_Hair_Wght);
#if (BM_Hair_Arch=1 & dx>0)
#local dy=dy+0.001;
#if (hx>-.5)
#local hx=hx+dx;
#end
#end
#end
#ifndef (BM_Hair_Tex)
pigment{rgb BM_Hair_Col+<rand(rr)/10,rand(rr)/10,rand(rr)/10>}}
#else
texture {BM_Hair_Tex}
#end
#end
#local cc=cc+1;
#end
#local tt=tt+1;
#end
rotate y*90
rotate BM_Hair_Rot
scale 4.5
#if (BM_Gender=1)
scale <.95,1.1,1>*.9
#end
translate <0,5,-1>
rotate z*BM_Head_Rot.z
rotate x*BM_Head_Rot.x
rotate y*BM_Head_Rot.y
transform NeckTrans
translate <0,-5.5,1>
transform TorsoTrans
}
#else
object {BM_nul}
#end
#end
// End of Hair Macro

376
blbman40/bmhand.inc Normal file
View File

@ -0,0 +1,376 @@
/****************************************************************
Hand Macro for use with "bmpeople.inc" v4.0
refer to "bmmanual.txt" for usage information
*******************************************************************/
#ifndef (BM_Defaults)
#include "bmdefs.inc"
#end
#macro bmhand(Hand)
#if (Hand>0)
#local H_S2E=BM_LA_S2E;
#local H_E2W=BM_LA_E2W;
#local Hand_Rot=BM_LH_Rot;
#local FP_Pos=BM_LFP_Pos;
#local FR_Pos=BM_LFR_Pos;
#local FM_Pos=BM_LFM_Pos;
#local FI_Pos=BM_LFI_Pos;
#local FT_Pos=BM_LFT_Pos;
#else
#local H_S2E=BM_RA_S2E;
#local H_E2W=BM_RA_E2W;
#local Hand_Rot=BM_RH_Rot;
#local FP_Pos=BM_RFP_Pos;
#local FR_Pos=BM_RFR_Pos;
#local FM_Pos=BM_RFM_Pos;
#local FI_Pos=BM_RFI_Pos;
#local FT_Pos=BM_RFT_Pos;
#end
#if (BM_Gender=0)
#local UpperarmLength= 11;
#local ForearmLength = 10.5;
#local Shoulder = <8.25,1.5,0>;
#end
#if (BM_Gender=1)
#local UpperarmLength= 10.85;
#local ForearmLength = 10.5;
#local Shoulder = <6.25,1.5,.2>;
#end
#local H_Elbow=vrotate(<0,-UpperarmLength,0>,H_S2E);
#local H_Wrist=vrotate(<0,-ForearmLength-.75,0> ,H_E2W);
#local Hand_Trans=transform {rotate y*(90*Hand) rotate Hand_Rot rotate H_E2W translate H_Elbow+H_Wrist+<Shoulder.x*Hand,-UpperarmLength+Shoulder.y,Shoulder.z+1>}
#local TorsoTrans=transform {translate <0,20,-3> rotate <BM_Torso_Rot.x,0,BM_Torso_Rot.z> translate <0,-20,3>
translate <0,20,0> rotate <0,BM_Torso_Rot.y,0> translate <0,-20,0>
}
#if (Hand=-1)
#local TempHand=BM_R_Hand;
#else
#local TempHand=BM_L_Hand;
#end
#local Finger_Joint_angle =
array[5][4]
{
{FT_Pos.x,FT_Pos.y,FT_Pos.z,FT_Pos.t}, // 1st finger
{FI_Pos.x,FI_Pos.y,FI_Pos.z,FI_Pos.t}, // 2nd finger
{FM_Pos.x,FM_Pos.y,FM_Pos.z,FM_Pos.t}, // 3rd finger
{FR_Pos.x,FR_Pos.y,FR_Pos.z,FR_Pos.t}, // 4th finger
{FP_Pos.x,FP_Pos.y,FP_Pos.z,FP_Pos.t} // 5th finger
}
#declare Finger_N = 1;
union {
union {
#if (TempHand>=1)
blob {
// part of palm
// palm length = 1
threshold BM_Build+.1
cylinder{<-0.3, 0.2, 0.00>, <-0.3, 0.85, 0.00>, 0.3, 1 scale <1,1,0.8>}
cylinder{<-0.2, 0.1, 0.05>, <-0.2, 0.90, 0.05>, 0.3, 1 scale <1,1,0.8>}
cylinder{<-0.1, 0.0 ,0.10>, <-0.1, 0.95, 0.10>, 0.3, 1 scale <1,1,0.8>}
cylinder{< 0.0, 0.0, 0.15>, < 0.1, 0.90, 0.15>, 0.3, 1 scale <1,1,0.8>} // palm center
cylinder{< 0.10, 0.00, 0.15>, < 0.10, 0.90, 0.15>, 0.30, 1 scale <1,1,0.8>}
cylinder{< 0.15, 0.10, 0.05>, < 0.20, 0.87, 0.0>, 0.30, 1 scale <1,1,0.8>}
cylinder{< 0.25, 0.05, 0.00>, < 0.35, 0.85, -0.025>, 0.30, 1 scale <1,1,0.8>}
cylinder{< 0.25, 0.15, 0.0>, < 0.40, 0.70, -0.05>, 0.28, 1 scale <1,1,0.8>}
cylinder{< 0.60, 0.40, 0.0>, < 0.75, 0.70, -0.1>, 0.28, 1 scale <0.6,1,0.8> }
//
sphere{<0, 0, 0>, 0.5, 1 // rize of 5th finger side
scale <0.6, 1.2, 0.5>
rotate -15*z
translate <0.15, 0.25, -0.10>
}
//
sphere{<0, 0, 0>, 0.4, 1 // rize of 1st finger side
scale <0.70, 1.0, 0.7>
rotate 30*z
translate <-0.15, 0.15, -0.10>
}
sphere { <-0.15, 0.15, -0.05>, 0.4, 1 scale <1,1, 0.6>}
// finger 1 of first finger
cylinder { <-0.3, 0.1, 0>, <-0.45, 0.3, -0.25>,0.33, 1
rotate <Finger_Joint_angle[0][3], -Finger_Joint_angle[0][0], 0>
}
}
//---------- finger 2 & 3 of 1st finger
object {
union{ // finger2
blob {
threshold BM_Build+.1
cylinder { <0, 0, 0 >, <0, 0.20, 0>, 0.30, 1 scale <1, 1, 1> }
sphere { <0,0,0>, 0.12, 1.5 scale < 1.2, 1.0, 0.8> translate <0, 0.26, 0.05> }
}
union { // finger3
blob {
threshold BM_Build+.1
cylinder { <0, 0, 0>, <0, 0.20, 0>, 0.26, 1 scale <0.9, 1, 0.9> }
sphere { <0,0,0>, 0.2, 1 scale <1.0, 1.3, 0.9> translate <0, 0.02, -0.02> }
}
// Nail
#if (BM_Nails=1)
difference {
cylinder { <0,0,0> <0,0.23, 0> 0.11 }
cylinder { <0,-0.1,0> <0,0.24, 0> 0.105 }
plane { z, 0.06 }
plane { -y, 0 rotate -50*x translate 0.08*y }
#if (BM_Gender=0)
scale <1,.5,0.8>
#else
scale <1,1,0.8>
#end
rotate -5*x
translate <0,0.15,0.045>
texture { BM_Nail_Tex }
}
#else
object {BM_nul}
#end
rotate <-10-Finger_Joint_angle[0][2], 0, 0>
translate <0, 0.35, 0.0> // 3rd finger joint point
}
rotate <-15-Finger_Joint_angle[0][1], 0, 15>
translate < 0.0, 0.40, 0.0> // 2nd finger joint point
}
rotate -90*y
rotate 30*z
rotate -20*x
translate <-0.3, 0.05, -0.2>
rotate <Finger_Joint_angle[0][3], -Finger_Joint_angle[0][0], 0>
#if (Hand=-1)
#if (BM_Map_R_Finger=0)
texture {BM_Skin_Tex}
#end
#else
#if (BM_Map_L_Finger=0)
texture {BM_Skin_Tex}
#end
#end
}
// Parts form 2nd to 5th finger
#while ( Finger_N < 5 )
// define finger
union {
blob { // finger 1
threshold BM_Build+.1
cylinder { <0,0,0>, <0,0.40,0>, 0.3, 1
#if (Hand=-1)
#if (BM_Map_R_Finger=0)
texture {BM_Skin_Tex}
#end
#else
#if (BM_Map_L_Finger=0)
texture {BM_Skin_Tex}
#end
#end
}
sphere { < 0,0,0 >, 0.20, 1 scale < 0.7, 1, 1.0> translate 0.01*z}
sphere { < 0,0,0 >, 0.10, 1 scale < 1.2, 1, 0.6> translate <0, 0.46, 0.08>}
}
union { // finger 2
blob {
threshold BM_Build+.1
cylinder { <0,0,0>, <0,0.25,0>, 0.28, 1 }
sphere { < 0,0,0 >, 0.10, 1 scale < 1.2, 1, 0.6> translate <0, -0.01, 0.08>}
sphere { < 0,0,0 >, 0.10, 1 scale < 1.2, 1, 0.6> translate <0, 0.26, 0.08>}
}
union{ // finger 3
blob{
threshold 0.6
cylinder { <0,0,0>, <0,0.25,0>, 0.26, 1 }
sphere { <0,0,0>, 0.12, 1 scale < 1, 1.2, 1> translate <0,0.30,0.01> }
sphere { < 0,0,0 >, 0.10, 1 scale < 1.2, 1, 0.6> translate <0, -0.01, 0.08>}
}
// Nail
#if (BM_Nails=1)
difference {
cylinder { <0,0,0> <0,0.30, 0> 0.11 }
cylinder { <0,-0.1,0> <0,0.31, 0> 0.105 }
plane { z, 0.06 }
plane { -y, 0 rotate -50*x translate 0.14*y }
#if (BM_Gender=0)
scale <1,.5,0.8>
#else
scale <1,1,0.8>
#end
translate <0,0.15,0.04>
texture { BM_Nail_Tex }
}
#else
object {BM_nul}
#end
rotate <-Finger_Joint_angle[Finger_N][2], 0, 0 >
translate <0,0.3,0> // 3rd finger joitnt point
}
rotate <-Finger_Joint_angle[Finger_N][1], 0, 0 >
translate <0,0.40,0> // 2nd finger joitnt point
#if (Hand=-1)
#if (BM_Map_R_Finger=0)
texture {BM_Skin_Tex}
#end
#else
#if (BM_Map_L_Finger=0)
texture {BM_Skin_Tex}
#end
#end
}
#switch ( Finger_N )
#case(1) scale 0.9 #break
#case(3) scale <0.85,0.90,0.85> #break
#case(4) scale <0.80,0.75,0.80> #break
#else
#end
rotate <-Finger_Joint_angle[Finger_N][0], 0, Finger_Joint_angle[Finger_N][3] >
#switch ( Finger_N )
#case(1) translate <-0.30, 0.95, 0.03> #break // 1st finger joitnt point of 2nd finger
#case(2) translate < 0.00, 1.00, 0.10> #break
#case(3) translate < 0.27, 0.95, 0.08> #break
#case(4) translate < 0.47, 0.75, -0.05> #break
#else
#end
#declare Finger_N = Finger_N + 1;
}
#end // while end
#else
object {BM_nul}
#end
scale <-Hand,-1,1>
translate <0,0,.05*Hand>
scale 3
}
#if (Hand=-1)
// Right Hand Object
object {BM_Hand_R_Object rotate y*(-90*Hand)}
#else
// Left Hand Object
object {BM_Hand_L_Object rotate y*(-90*Hand)}
#end
#if (BM_Gender=0)
scale <1,1,1.25>
scale 1.1
#end
#if (Hand=-1)
material {
texture {BM_Skin_Tex}
#ifdef (Hand_R_IMap)
texture {
pigment {
image_map {
png Hand_R_IMap
map_type 2
interpolate 4
once
}
rotate y*90
scale 9.5
translate <0,-8.5,0>
}
#ifdef (BM_Map_Finish)
finish {BM_Map_Finish}
#end
#ifdef (BM_Map_Normal)
normal {BM_Map_Normal}
#end
#ifdef (Hand_R_BMap)
normal {
bump_map {
png Hand_R_BMap
map_type 2
interpolate 4
once
bump_size BM_Bump_Map_Size
}
rotate y*90
scale 9.5
translate <0,-8.5,0>
}
#end
}
#end
}
#else
material {
texture {BM_Skin_Tex}
#ifdef (Hand_L_IMap)
texture {
pigment {
image_map {
png Hand_L_IMap
map_type 2
interpolate 4
once
}
rotate y*-90
scale 9.5
translate <0,-8.5,0>
}
#ifdef (BM_Map_Finish)
finish {BM_Map_Finish}
#end
#ifdef (BM_Map_Normal)
normal {BM_Map_Normal}
#end
#ifdef (Hand_L_BMap)
normal {
bump_map {
png Hand_L_BMap
map_type 2
interpolate 4
once
bump_size BM_Bump_Map_Size
}
rotate y*-90
scale 9.5
translate <0,-8.5,0>
}
#end
}
#end
}
#end
transform Hand_Trans
transform TorsoTrans
}
// Origin Variables
#local ReverseTorso=transform {translate <0,20,0> rotate <0,-BM_Torso_Rot.y,0> translate <0,-20,0>
translate <0,20,-3> rotate <-BM_Torso_Rot.x,0,-BM_Torso_Rot.z> translate <0,-20,3>
}
#if (Hand=-1)
#declare BMOPR=transform {transform ReverseTorso
translate -H_Elbow+-H_Wrist+<-Shoulder.x*Hand,UpperarmLength-Shoulder.y,-Shoulder.z+1>
rotate -H_E2W
rotate -Hand_Rot
rotate y*-(270*Hand)
rotate x*-(90*Hand)
rotate y*(25*Hand)
translate y*.5
translate x*-Hand
}
#else
#declare BMOPL=transform {transform ReverseTorso
translate -H_Elbow+-H_Wrist+<-Shoulder.x*Hand,UpperarmLength-Shoulder.y,-Shoulder.z+1>
rotate -H_E2W
rotate -Hand_Rot
rotate y*-(270*Hand)
rotate x*(90*Hand)
rotate y*(25*Hand)
translate y*.5
translate x*-Hand
}
#end
#end
// End of Hand Macro

278
blbman40/bmhead.inc Normal file
View File

@ -0,0 +1,278 @@
/****************************************************************
Head Macro for use with "bmpeople.inc" v4.0
refer to "bmmanual.txt" for usage information
*****************************************************************/
#ifndef (BM_Defaults)
#include "bmdefs.inc"
#end
#macro bmhead()
#local Eyes=BM_EyeLids;
#if (Eyes.x>1) #local Eyes=<1,Eyes.y,Eyes.z>; #end
#if (Eyes.x<0) #local Eyes=<0,Eyes.y,Eyes.z>; #end
#if (Eyes.z>1) #local Eyes=<Eyes.x,Eyes.y,1>; #end
#if (Eyes.z<0) #local Eyes=<Eyes.x,Eyes.y,0>; #end
#ifndef (BM_Eye_Shadow)
#local BM_Eye_Shadow=texture {BM_Skin_Tex}
#end
#local MouthWidth=BM_Mouth;//+1.5;
#local MouthHeight=BM_Jaw;
#local MouthPos=<0,-4,-2.75>;
#local NeckTrans=transform {rotate <BM_Neck_Rot.x,0,BM_Neck_Rot.z>}
#local TorsoTrans=transform {translate <0,20,-3> rotate <BM_Torso_Rot.x,0,BM_Torso_Rot.z> translate <0,-20,3>
translate <0,20,0> rotate <0,BM_Torso_Rot.y,0> translate <0,-20,0>
}
#local MouthRot=<0,0,BM_MouthShape*15>;
#local HalfHead=difference {
blob {
threshold BM_Build
#if (BM_Head_Mass>= 1)
sphere{0,5.6,2 scale <1,1,.95> translate z*-1 } // Top Front of Skull
sphere{0,5.6,2 scale <1,1,.9> translate z*1 } // Top of Back Skull
cylinder{<0,2.5,0><0,4,0>,1,1 scale <2.5,1,3> translate <0,-5,-1.3> }
cylinder{<0,1.5,0><0,2,0>,1,1 scale <1.5,1,3>translate <0,-5,-1.3> }
sphere{0,4,1 scale <.75,.5,.75> rotate x*10 translate <0,-3.5,.75>} // Base of Skull
sphere {0,2.85,2 translate <0,-2.75,-1.3> rotate y*-35}
cylinder{<0,0,0><0,1,0>,1,1 scale <3-(BM_Gender/2),1,3> translate <0,-5,-1.75> rotate x*(BM_Jaw*-12)}
sphere {0,4,1.5 scale <1,1,.75> translate <0,-3.5,0>}
#if (BM_Face>0)
cylinder {<1,0,0><2.5,0,0>,1,-.75 rotate y*-35 translate <0,-.8,-4.25> }
sphere {0,1,-.25 scale <3,1,1> translate <.5,-1,-4.25> }
// Nose
#if (BM_Gender=0)
cylinder{<-.5-(BM_Gender/6),1.5,1><-.15-(BM_Gender/6),-1,-BM_Nose>,1,2 translate <0,-.7-.75,-4.>} // Nose
cylinder{<-.7-(BM_Gender/4),0,0><.7-(BM_Gender/4),0,0>,.5,2 translate<0,-1.75-.75,-4.3>} // Nostrils
#end
#if (BM_Gender=1)
sphere {0,1,1 scale <.75,1,1> translate <-.15,-1.5,-3.8>}
sphere {0,1,1 scale <.75,1,1> translate <-.15,-2,-3.9>}
sphere {0,1,1 scale <.75,1,1> translate <-.10,-2.5,-4>}
sphere {0,.75,1 scale <.75,1,1> translate <-.05,-2.75,-4.25>}
#end
#end
// Eye Ridge Socket
#if (BM_Face>0)
cylinder{<0,0,0>,<10,0,0>,1,-1.5 scale <1,1.75,1> rotate y*-20 rotate z*0 translate <1.5,-1.8,-4.5> texture {BM_Eye_Shadow}}
cylinder{<0,0,0>,<10,0,0>,1,-1 scale <1,1.75,1> rotate y*-20 rotate z*0 translate <1.5,-1.8,-4.5> rotate y*-20 texture {BM_Eye_Shadow}}
cylinder{<0,0,0>,<10,0,0>,1,-1 scale <1,1.75,1> rotate y*-20 rotate z*0 translate <1.5,-1.9,-4.5> rotate y*-40 }
cylinder{<0,0,0>,<10,0,0>,1,-1.5 scale <1,1,1> rotate y*-20 rotate z*7.5 translate <1.5,-1.8,-4.5> }
#else
cylinder{<0,0,0>,<10,0,0>,1,-1.5 scale <1,1.75,1> rotate y*-20 rotate z*0 translate <1.5,-1.8,-4.5> }
cylinder{<0,0,0>,<10,0,0>,1,-1 scale <1,1.75,1> rotate y*-20 rotate z*-30 translate <1.5,-1.8,-4.5> rotate y*-20}
#end
// Cheeks
sphere{0,1.5,BM_Jowls+.0000001 scale <1.25,1.5,.75> rotate x*-20 translate <0,-3,-3> rotate y*-55 }
// Ears
#if (BM_Ears>= 2)
sphere{0,1,2 scale<1,1.75,.7> rotate y*-45 rotate z*-10 translate<4.2,-.85-.5,0> } // Outer Ear Left
sphere{0,1,-2 scale<1,1.75,.7>*.7 rotate y*-45 rotate z*-10 translate<4.2,-.7-.5,-.35>} // Inner Ear Left
sphere{0,1,2 scale<1,1.75,.7>/3.5 rotate y*-45 rotate z*-10 translate<4.025,-.7-.5,-.35>} // Inner Ear Canal Left
#end
#if (BM_Ears = 1)
sphere{0,1,2 scale<1,1.0,.9> scale <1,1.75,1.5> rotate z*-5 translate<3.8,-.85-.75,0> } // Outer Ear Left
#end
// Mouth
#if (BM_Face>0)
#if (BM_Jaw>1)
#local MouthHeight=1;
#end
#if (MouthHeight<=.25)
#local MouthHeight=.5;
#end
#local MouthHeight=BM_Jaw+(BM_Jaw/10)+.0001;
// Inside of Mouth
sphere {0,1,-4 scale <.1+BM_Mouth*1.5,.1+BM_Jaw,1> rotate MouthRot translate MouthPos-<0,BM_Jaw/2-(BM_Jaw/3),0> pigment {rgb -1.5}}
#end
#end
#if (BM_Head_Mass= 0)
sphere {<0,0,0>.00001,0.0000001 pigment {rgbft 1}}
#end
#if (BM_Head_Mass< 0)
// Object Guides
sphere{0,5.6,2 scale <1,1,.95> translate z*-1 } // Top Front of Skull
sphere{0,5.6,2 scale <1,1,.9> translate z*1 } // Top of Back Skull
sphere{0,4,1 scale <.75,.5,.75> rotate x*10 translate <0,-3.5,.75>} // Base of Skull
cylinder{<0,2.5,0><0,4,0>,1,1 scale <2.5,1,3> translate <0,-5,-1.3> }
cylinder{<0,1.5,0><0,2,0>,1,1 scale <1.5,1,3>translate <0,-5,-1.3> }
sphere {0,2.85,2 translate <0,-2.75,-1.3> rotate y*-35}
cylinder{<0,0,0><0,1,0>,1,1 scale <3-(BM_Gender/2),1,3> translate <0,-5,-1.75> rotate x*(BM_Jaw*-12)}
sphere {0,4,1.5 scale <1,1,.75> translate <0,-3.5,0>}
#end
}
plane {x,-0.0000001}
}
union {
object {HalfHead}
object {HalfHead scale <-1,1,1>}
// Teeth
#local Loop=90;
#local Denture=union {
#while (Loop>-90)
superellipsoid {<.25,.25> scale <.2,.5,.1> translate z*-2.2 rotate y*Loop}
#local Loop=Loop-11;
#end
texture {BM_Tooth_Tex}
scale <.8,.75,1>
translate z*-.5
}
#if (BM_Teeth)
union {
object {Denture translate <0,MouthPos.y+1.2,-1.25>}
object {Denture scale <1,-1,1> translate y*-.5 rotate x*-MouthHeight*6 translate <0,MouthPos.y+.5,-.75>}
rotate x*-15
translate y*.15
}
#end
// Eyes
#if (BM_Eyes>0)
union {
sphere{0,1 pigment{rgb 1}}
sphere{0,.7 translate z*-.35 rotate y*18 pigment{rgb BM_EyeCol}}
sphere{0,.2 translate z*-.9 rotate y*18 pigment{rgb 0}}
difference {
sphere{0,1.1 }
box {<5,5,0><-5,-5,-10> }
rotate z*-9
rotate x*-(Eyes.x*65+65)
texture {BM_Eye_Shadow}
}
rotate x*-7
rotate y*-11
rotate <0,Eyes.y+10,0>
#if (BM_Face>0)
translate<0,-.75,-3.>
#else
translate<0,-.75,-3.>
#end
rotate y*-27
}
union {
sphere{0,1 pigment{rgb 1}}
sphere{0,.7 translate z*-.35 rotate y*-18 pigment{rgb BM_EyeCol}}
sphere{0,.2 translate z*-.9 rotate y*-18 pigment{rgb 0}}
difference {
sphere{0,1.1 }
box {<2,2,0><-2,-2,-4> }
rotate z*9
rotate x*-(Eyes.z*65+65)
texture {BM_Eye_Shadow}
}
rotate x*-7
rotate y*11
rotate <0,Eyes.y-10,0>
#if (BM_Face>0)
translate<0,-.75,-3.>
#else
translate<0,-.75,-3.>
#end
rotate y*27
}
#else
object {BM_nul}
#end
object {BM_Head_Object}
material {
texture {BM_Skin_Tex}
#ifdef (Face_IMap)
texture {
pigment {
image_map {
png Face_IMap
map_type 2
interpolate 4
once
}
rotate y*-90
translate <0,-.55,0>
scale 12
}
#ifdef (BM_Map_Finish)
finish {BM_Map_Finish}
#end
#ifdef (BM_Map_Normal)
normal {BM_Map_Normal}
#end
#ifdef (Face_BMap)
normal {
bump_map {
png Face_BMap
map_type 2
interpolate 4
once
bump_size BM_Bump_Map_Size
}
rotate y*-90
translate <0,-.55,0>
scale 12
}
#end
}
#end
}
#if (BM_Gender=1)
scale <.95,1.1,1>*.9
#end
translate <0,5,-1>
rotate z*BM_Head_Rot.z
rotate x*BM_Head_Rot.x
rotate y*BM_Head_Rot.y
transform NeckTrans
translate <0,-5.5,1>
transform TorsoTrans
}
// Origin Variables
#local ReverseAll=transform {
translate <0,20,0> rotate <0,-BM_Torso_Rot.y,0> translate <0,-20,0>
translate <0,20,-3> rotate <-BM_Torso_Rot.x,0,-BM_Torso_Rot.z> translate <0,-20,3>
translate <0,5,-1>
rotate -<BM_Neck_Rot.x,0,BM_Neck_Rot.z>
rotate -y*BM_Head_Rot.y
rotate -x*BM_Head_Rot.x
rotate -z*BM_Head_Rot.z
translate <0,-5.5,1>
}
#declare BMOHF=transform {transform ReverseAll
translate z*4.5
}
#declare BMOHB=transform {transform ReverseAll
translate z*-4
}
#declare BMOHT=transform {transform ReverseAll
translate y*-3.5
}
#declare BMOeR=transform {transform ReverseAll
translate y*3
translate x*-3.5
}
#declare BMOeL=transform {transform ReverseAll
translate y*3
translate x*3.5
}
#declare BMONs=transform {transform ReverseAll
translate y*3
translate z*4.75
}
#end
// End of Head Macro

908
blbman40/bmmanual.txt Normal file
View File

@ -0,0 +1,908 @@
******************************************************************************************
___ _ _ __ __
| _ ) |___| |__| \/ |__ _ _ _
| _ \ / _ \ '_ \ |\/| / _` | ' \ v4.0
|___/_\___/_.__/_| |_\__,_|_||_|
| _ \___ ___ _ __| |___
| _/ -_) _ \ '_ \ / -_)
|_| \___\___/ .__/_\___|
|_|
Humanoid figures for POV-Ray v3.1
by Peter Houston 1999, 2000
******************************************************************************************
IMPORTANT NOTE : This version is not compatitble with older Pose or CDF files, also
all of the macro's have been renamed and reformatted.
I apologise if this causes some confusion but the changes were necessary
to allow the improvements in this latest release.
The latest version of the package is avilable from my website (see section 9.0)
******************************************************************************************
0.0 INTRODUCTION
1.0 INSTALLATION
2.0 QUICK START
3.0 BASIC FEATURES
3.1 Blob_Man Macro
3.2 Textures
3.3 Origin Transformations
3.4 Positioning the Limbs
3.4.1 Using Decalrations
3.4.2 Using Arrays
3.4.3 Blob_Man_Studio.pov and Hand_Studio.pov
4.0 ADVANCED FEATURES
4.1 Head Macro
4.2 Torso Macro
4.3 Hand Macro
4.4 Feet Macro
4.5 Hair Macro
4.6 Optional Parameters
4.7 Image Maps
5.0 COSTUME OBJECTS
5.1 Limb Objects
5.2 Costume Definition File
6.0 HINTS & TIPS
7.0 MISC INFO
7.1 Creating Face Image Maps
7.2 Creating Limb Image Maps
7.3 Bump Maps
7.4 Blob Man's Future
7.5 Known Problems
8.0 HISTORY
9.0 CONTACTING THE AUTHOR
10.0 CREDITS
******************************************************************************************
0.0 INTRODUCTION
******************************************************************************************
Blob Man People is a set of macros to create humanoid figures, these figure can be Male or
Female and almost every moving body part can be positioned, right down to individual finger
joints.
The figures can be clothed by the use of externally created Costume Files.
******************************************************************************************
1.0 INSTALLATION
******************************************************************************************
Copy all *.INC, *.PNG, and *.CDF files to one of the directories (folders) in your
POV-Ray library path (as for example, the default include directory). If you don´t know
what they are, open your POVRAY.INI. If you have a PC running Windows95/98 or WindowsNT,
they probably look something like this:
Library_Path=C:\POV-Ray for Windows\include
******************************************************************************************
2.0 QUICK START
******************************************************************************************
Create a basic scene file similar to this :
// Cut Here
global_settings { assumed_gamma 2.2 }
camera {
location <0, 1, -3.5>
direction 1.5*z
right 4/3*x
look_at <0, 1, 0.0>
}
sky_sphere
{
pigment
{
gradient y
color_map { [0.0 color rgb <0.7,0.7,1.0>] [1.0 color blue 0.5] }
}
}
light_source
{
0*x
color rgb <1,.9,.95>*1.5
translate <-80, 40, -80>
}
cylinder {<0,0,0><0,-2,0> 20
pigment {checker pigment {rgb 0}, pigment {rgb 1} rotate y*16}
}
/***********************************************************
The following code loads the Blob Man Include and Pose files
and creates the one Male and one Female Figure
************************************************************/
#include "bmpeople.inc"
Blob_Man(Male,2)
object {BlobMan
transform BMO_Foot_R
translate x*-.5
}
Blob_Man(Female,2)
object {BlobMan
transform BMO_Foot_R
translate x*.5
}
// Cut here
******************************************************************************************
3.0 BASIC FEATURES
******************************************************************************************
3.1 Blob_Man Macro
===================
Before the Blob_Man Macro can be called the "bmpeople.inc" file needs to be included.
The syntax for calling the macro is as follows :-
Blob_Man( Gender, Height )
Gender : [ FLOAT ] 0=Male, 1=Female (Note you can also use the identifiers Male or Female)
Height : [ FLOAT ] This is the overall height of the figure in POV Units.
Once called an object BlobMan is declared, this can now be positioned as required using the
Origin Transformations (refer to 3.3).
3.2 Textures
=============
In its basic form Blob_Man declares two default textures, but these can be user defined,
along with an optional texture.
BM_Skin_Tex : This is the overall texture for the figure, if it is undeclared the default
texture will be used.
Default: BM_Skin_Tex= texture {pigment{rgb <.9,.7,.6>}
finish{phong .3 phong_size 40}
}
BM_Lip_Tex : This is the texture for the figures lips, if it is undeclared the default
texture will be used.
Default: BM_Lip_Tex = texture {pigment{rgb <.7,.3,.2>}
finish{phong .3 phong_size 40}
normal{crackle .2 turbulence .7 scale .7}
}
BM_Nail_Tex : This is the texture for the Finger Nails, if it is undeclared the default
texture will be used.
Default : BM_Nail_Tex = texture{ BM_Skin_Tex
finish { ambient -.25}
}
BM_Tooth_Tex: This is the texture used for the teeth, if it is undeclared the default texture
will be used.
Default: BM_Tooth_Tex= texture { pigment {rgb 1}
finish {phong .9 phong_size 90}
}
BM_Hair_Tex : This is the texture for the figures hair, if it is undecalred then the Hair_Col
<r,g,b> variable passed by the Blob_Man macro will be used to generate a
randomised hair colour. There is no default hair texture.
BM_Eye_Shadow: This is the texture for putting colour on the Eye Lids, if it is undeclared then
the Eye Lids will use BM_Skin_Tex. There is no default for Eye Shadow.
In addition to these textures, there are also defineable Image Maps that is used for each part of
the body. Refer to section 4.7
For tips on creating your own image maps refer to section 7.1
3.3 Origin Transformations
===========================
The Blob_Man Macro declares the following Origin Transformations for you to locate the figure,
when used they locate the given point to <0,0,0>.
BMO_Foot_R = Locates to the Right Foot
BMO_Foot_L = Locates to the Left Foot
BMO_Toe_R = Locates to the Right Toes
BMO_Toe_L = Locates to the Left Toes
BMO_Knee_R = Locates to the Right Knee
BMO_Knee_L = Locates to the Left Knee
BMO_Hip_R = Locates to the Right Hip
BMO_Hip_L = Locates to the Left Hip
BMO_Abdomen_F = Locates to the Front of the Abdomen
BMO_Abdomen_B = Locates to the Back of the Abdomen
BMO_Abdomen_U = Locates to the Underside of the Abdomen
BMO_Abdomen_R = Locates to the Right of the Abdomen
BMO_Abdomen_L = Locates to the Left of the Abdomen
BMO_Torso_F = Locates to the Front of the Torso (Chest)
BMO_Torso_B = Locates to the Back of the Torso
BMO_Torso_R = Locates to the Right of the torso
BMO_Torso_L = Locates to the Left of the Torso
BMO_Torso_T = Locates to the Top of the Torso (Mid-Shoulders)
BMO_Shoulder_R = Locates to the Right Shoulder
BMO_Shoulder_L = Locates to the Left Shoulder
BMO_Elbow_R = Locates to the Right Elbow
BMO_Elbow_L = Locates to the Left Elbow
BMO_Hand_R = Locates to the Right Palm (Flat on y plane)
BMO_Hand_L = Locates to the Left Palm (Flat of y plane)
BMO_Head_F = Locates to the Front of the Head (Forehead)
BMO_Head_B = Locates to the Back of the Head
BMO_Head_T = Locates to the Top of the Head
BMO_Ear_R = Locates to the Right Ear
BMO_Ear_L = Locates to the Left Ear
BMO_Nose = Locates to the Nose
eg. transform BMO_Foot_R
This would relocate the BlobMan object to <0,0,0>
If you do not use any of the above transformations then you will need to include the
following.
scale BM_Scale
This is necessary to resize the figure to the correct size that you specified in the
Blob_Man macro, it is already included in the above transformations so isn't required if you
stick with those.
3.4 Positioning the Limbs
==========================
Blob Man is made up of 27 individually positionable parts. Each one needs to be declared
before Blob_Man macro is called.
There are two ways of defining the poses.
3.4.1 Using Decalrations
=========================
The following variables need to be declared to alter the position of the relevant body part
if undeclared the default value will be used.
Note: If you are using multiple figures, you will need to re-declare these variables or
else all the figures will be in the same pose.
BM_Head_Rot Default: <0,0,0> Head
BM_Neck_Rot Default: <0,0,0> Neck (Note y is not used)
BM_Torso_Rot Default: <0,0,0> Upper Torso (Chest)
BM_RA_S2E Default: <-8,0,-8> Right Upper Arm
BM_RA_E2W Default: <8,0,-3> Right Forearm
BM_LA_S2E Default: <-8,0,8> Left Upper Arm
BM_LA_E2W Default: <8,0,3> Left Forearm
BM_RL_H2K Default: <8,0,-5> Right Thigh
BM_RL_K2A Default: <-8,0,3> Right Lower Leg
BM_LL_H2K Default: <8,0,5> Left Thigh
BM_LL_K2A Default: <-8,0,-3> Left Lower Leg
BM_RF_Rot Default: <8,0,-3> Right Foot
BM_LF_Rot Default: <8,0,3> Left Foot
BM_RH_Rot Default: <0,0,0> Right Hand
BM_LH_Rot Default: <0,0,0> Left Hand
BM_Toe_Angle Default: <0,0,0> Toe Angle x=left Foot z=Right Foot (Note y is not used)
The Fingers are handled in a slightly different way, they are declared as 4 component vectors
<x,y,z,t>
x=Angle of 1st joint of the finger nearest the palm
y=Angle of 2nd joint of the finger
z=Angle of 3rd joint of the finger
t=Side to side movement angle (Range: -10 to 10)
Right Hand Fingers
BM_RFP_Pos Default: <5,45,5,0> Pinky
BM_RFR_Pos Default: <10,30,5,0> Ring
BM_RFM_Pos Default: <5,15,5,0> Middle
BM_RFI_Pos Default: <0,10,0,0> Index
BM_RFT_Pos Default: <0,-10,5,10> Thumb
Left Hand Fingers
BM_LFP_Pos Default: <5,45,5,0> Pinky
BM_LFR_Pos Default: <10,30,5,0> Ring
BM_LFM_Pos Default: <5,15,5,0> Middle
BM_LFI_Pos Default: <0,10,0,0> Index
BM_LFT_Pos Default: <0,-10,5,10> Thumb
If you intend to use multiple figures in a scene each with differing poses, or if you want
to use the same pose in different scenes, then you should declare these variables in a
seperate file, then include it just before you call the Blob_Man macro.
3.4.2 Using Arrays
===================
The second method of defining the positions of the body parts is to use an array.
For more information about arrays refer to the POV-Ray Documentation.
The following Arrays will need to be defined before the Blob_Man Macro is called.
BM_Pose = array[n][17] (Where n is the number of entries in the array)
All entries are 3 component vectors <x,y,z>
{BM_Head_Rot, Head
BM_Neck_Rot, Neck (Note y is not used)
BM_Torso_Rot, Upper Torso (Chest)
BM_RA_S2E, Right Upper Arm
BM_RA_E2W, Right Forearm
BM_LA_S2E, Left Upper Arm
BM_LA_E2W, Left Forearm
BM_RL_H2K, Right Thigh
BM_RL_K2A, Right Lower Leg
BM_LL_H2K, Left Thigh
BM_LL_K2A, Left Lower Leg
BM_RF_Rot, Right Foot
BM_LF_Rot, Left Foot
BM_Toe_Angle, Toe Angle x=left Foot z=Right Foot (Note y is not used)
BM_RH_Rot, Right Hand
BM_LH_Rot, Left Hand
<0,0,1> x=Left Hand Array Entry z=Right Hand Array Entry (See Below)
} (Note y is not used)
BM_Hands = array[n][5] (Where n is the number of entries in the array)
All entries are 4 component vectors <x,y,z,t>
x=Angle of 1st joint of the finger nearest the palm
y=Angle of 2nd joint of the finger
z=Angle of 3rd joint of the finger
t=Side to side movement angle (Range: -10 to 10)
{
BM_ FP_Pos, Pinky
BM_ FR_Pos, Ring
BM_ FM_Pos, Middle
BM_ FI_Pos, Index
BM_ FT_Pos Thumb
}
As you can have many entries in the arrays, before the Blob_Man macro is called you will
need to specify the Array Entry Number
#declare BM_PoseNo= Arry Entry Number (Remember that the first entry in an array is 0)
If you have used a figure that has been positioned using Arrays, and then you want to
position the body parts of a new figure using the declaration method (Section 3.4.1)
you will need to re-declare BM_PoseNo to a value of -1.
i.e.
#declare BM_PoseNo=-1;
Included in the distribution pack, you will find three includes "bm_pose.inc" and "bm_hands.inc"
are sample arrays containing 12 (0-11) pre-defined poses, and 13 (0-12) pre-defined hand
positions, and "bm_hair.inc" contains arrays for 5 (0-4) pre-defined Hair styles.
3.4.3 Blob_Man_Studio.pov and Hand_Studio.pov
==============================================
To aid you in the creation of the Pose files needed for Blob Man, there are two Scene Files
that you can use, "Blob_Man_Studio.pov" and "Hand_Studio.pov"
Blob_Man_Studio.pov allows you to view the pre-defined poses included in "bm_pose.inc" as
well as create your own, it shows six views of the figure (Left, Front, Right, Back, Top
and Underneath), you can change each of the variables and view the results (it doesn't take
long to render at 320 x 240 No AA and you can easily see if the pose is correct).
Part of this scene creates two external files "bmarray.txt" and "bmdaclar.txt", when you
are happy with the pose rename the file you wish to use
"bmarray.txt" defines the BM_Pose array with one entry (0) and BM_Hands array with
two entrie (0-1) and the Arrays for defining the Hair Style.
"bmdeclar.txt" contains all the declarations needed to define the pose including Hair.
Hand_Studio.pov allows you to view the pre-defined hand positions included in "bm_hands.inc"
as well as create your own, it shows six views of a hand, you can alter each finger
and once you are happy with the results, rename the file "bmhand.txt" which contains
a BM_Hand Array of one entry (0).
******************************************************************************************
4.0 ADVANCED FEATURES
******************************************************************************************
Each of the macros that make up Blob Man can each be called individually if required. This
could be useful if you only wanted to use body parts individually.
Note: if you use these macros in this way, you will need to scale them yourself BM_Scale will
not work, nor will the Origin Transformations.
Call all of these macros from within an object{} definition. Skin_Tex and Lip_Tex need to be
decalred before the macros are called or the default textures will be used (see section 3.2)
4.1 Head Macro
===============
The syntax for using this macro is as follows :
bmhead()
The following variables effect the head
BM_Head_Rot Head
BM_Neck_Rot Neck (Note y is not used)
BM_Torso_Rot Upper Torso (Chest)
4.2 Torso Macro
================
The syntax for using this macro is as follows :
bmtorso()
The following variables effect the torso (including the abdomen)
BM_Torso_Rot Upper Torso (Chest)
BM_RA_S2E Right Upper Arm
BM_RA_E2W Right Forearm
BM_LA_S2E Left Upper Arm
BM_LA_E2W Left Forearm
BM_RL_H2K Right Thigh
BM_RL_K2A Right Lower Leg
BM_LL_H2K Left Thigh
BM_LL_K2A Left Lower Leg
4.3 Hand Macro
===============
The syntax for using this macro is as follows :
Call this macro twice, once for each hand.
bmhand( Hand )
Hand = [ FLOAT ] Right Hand = -1 / Left Hand = 1
The following variables effect the hands
BM_Torso_Rot, Upper Torso (Chest)
BM_RA_S2E, Right Upper Arm
BM_RA_E2W, Right Forearm
BM_LA_S2E, Left Upper Arm
BM_LA_E2W, Left Forearm
BM_RH_Rot, Right Hand
BM_LH_Rot, Left Hand
BM_RFP_Pos Right Pinky Finger
BM_RFR_Pos Right Ring Finger
BM_RFM_Pos Right Middle Finger
BM_RFI_Pos Right Index Finger
BM_RFT_Pos Right Thumb
BM_LFP_Pos Left Pinky Finger
BM_LFR_Pos Left Ring Finger
BM_LFM_Pos Left Middle Finger
BM_LFI_Pos Left Index Finger
BM_LFT_Pos Left Thumb
4.4 Feet Macro
===============
The syntax for using this macro is as follows :
bmfeet()
The following variables effect the feet
BM_Torso_Rot Upper Torso (Chest)
BM_RL_H2K Right Thigh
BM_RL_K2A Right Lower Leg
BM_LL_H2K Left Thigh
BM_LL_K2A Left Lower Leg
BM_RF_Rot Right Foot
BM_LF_Rot Left Foot
BM_Toe_Angle Toe Angle x=left Foot z=Right Foot (Note y is not used)
4.5 Hair Macro
===============
The syntax for using this macro is as follows :
bmhair()
The following variables effect the hair
BM_Head_Rot Head
BM_Neck_Rot Neck (Note y is not used)
BM_Torso_Rot Upper Torso (Chest)
BM_Hair_On Hair (1) or No Hair (0)
BM_Hair_Rot Rotation Vector for Hair
BM_Hair_Arch Arch hairline over head inline with ears (1) or Not (0)
BM_Hair_Thck Thickness of Hair (Best settings 0.15 to 0.5)
BM_Hair_Line Height of Hairline (Best settings 3 to 6)
BM_Hair_LDpth Hairline profile Depth (Range : 0 to 1)
BM_Hair_Wght Hair Weight (Range: 0.005 to 0.05)
BM_Hair_Hght Hair Height (Range: 1 to 2)
BM_Hair_Length Hair Length (Range: 1 to 20)
BM_Hair_Curl Curliness (Range 0-Straight to 0.1-Curly)
4.6 Optional Parameters
========================
There are a few optional parameters available that will change the way Blob Man appears,
these variables must be declared before the Macro's are called. (# = Default Setting)
BM_Ears = [ FLOAT ] 2 = Normal Ears (#)
1 = Replace ears with small lumps as if under a swimming cap
0 = No ears
BM_Eyes = [ FLOAT ] 1 = Normal Eyes (#)
0 = No Eyes
BM_Face = [ FLOAT ] 1 = Normal Face Structure (#)
0 = Removes Nose and Lips
BM_R_Foot = [ FLOAT ] 1 = Normal Right Foot (#)
0 = Missing Right Foot
BM_L_Foot = [ FLOAT ] 1 = Normal Left Foot (#)
0 = Missing Left Foot
BM_R_Hand = [ FLOAT ] 1 = Normal Right Hand (#)
0 = Missing Right Hand
BM_L_Hand = [ FLOAT ] 1 = Normal Left Hand (#)
0 = Missing Left Hand
BM_Torso_Mass = [ FLOAT ] 1 = Normal Torso (#)
0 = No Torso
-1 = Guides
BM_Head_Mass = [ FLOAT ] 1 = Normal Head (#)
0 = No Head
-1 = Guides
BM_Jaw = [ FLOAT ] Range: 0 - 1 0= Closed, 1=Open. Default = 0.5
BM_Mouth = [ FLOAT ] Mouth Size Range: 0(Small) to 1(Large) Default = 1;
BM_MouthShape = [ FLOAT ] Range: -1 - 1 Turns the corners of the mouth
+Up / -Down Default= 0.5
BM_Teeth = [ FLOAT ] 0 = No Teeth
1 = Teeth (#)
BM_Jowls = [ FLOAT ] Range 0 - 2 : Amount of mass added to sides of jaw,
Jowls. Default=0
BM_Nose = [ FLOAT ] Range 0 - 1.25 : Size of Nose. Default = 0.5
BM_Flex = [ FLOAT ] (Male Figure Only) When the Torso is rotated some of the
muscles flex in the abdomen, this makes Costume Definition difficult
if there are objects located near these muscles.
1 = Flex On (#)
0 = Flex Off
BM_TShirt = [ FLOAT ] (Female Figures Only) This adds extra mass between the breasts to
give the impression that the figure is wearing a T-Shirt.
Useful for Costume Definition
1 = On
0 = Off (#)
BM_EyeCol = [ R,G,B ] This is the Eye Colour vector Default= <.22,.69,.87>
BM_EyeLids = [ X,Y,Z ] X=Left EyeLid Range 0 (Open) - 1 (Closed)
Y=Eye Rotation Angle (Left to Right)
Z=Right EyeLid Range 0 (Open) - 1 (Closed)
Default = <0,0,0>
BM_Nails = [ FLOAT ] 1 = Finger Nails (#)
0 = No Finger Nails
BM_Map_R_Finger = [ FLOAT ] 1 = Apply Right Hand Image Map to Fingers (#)
0 = Do Not Apply Right Hand Image Map to Fingers
BM_Map_L_Finger = [ FLOAT ] 1 = Apply Left Hand Image Map to Fingers (#)
0 = Do Not Apply Left Hand Image Map to Fingers
The following parameters all have the same options
BM_R_Upperarm_Mass : Right Upper Arm =
BM_L_Upperarm_Mass : Left Upper Arm =
BM_R_Forearm_Mass : Right Forearm = [ FLOAT ] 1 = Normal (#)
BM_L_Forearm_Mass : Left Forearm = 0 = Amputated
BM_R_Thigh_Mass : Right Thigh = -1 = Guides
BM_L_Thigh_Mass : Left Thigh =
BM_R_Calf_Mass : Right Calf =
BM_L_Calf_Mass : Left Calf =
BM_Guide_Rad = [ FLOAT ] When using Guide Settings (-1) above this is the radius of
cylindrical sections. Default = 2
BM_Hair_Seed = [ FLOAT ] Random seed for the hair macro. Default = 77
BM_PoseNo = [ FLOAT ] This is used in conjunction with BM_Pose Array it specifies
which Array entry to use for the pose.
-1 = Do not Use Arrays (#) This must be reset if you are switching
between array and declarations in one scene
refer to section 3.4.2
0-... = Array Entry Number
BM_Pose_RHand = [ FLOAT ] If you are using the BM_Pose Array when this is set to -1 the
Right hand specified by the Pose Array Entry will be used, however
if it is set to >=0 then the Hand Positions specified in that
entry of the BM_Hands Array will be used.
If you are not using the BM_Pose Array then when set to -1 the
figure will use the finger positions that have been declared
but if it is set >=0 then the Hand Positions specified in that
entry of the BM_Hands Array will be used.
Default = -1 (Arrays Not Used)
BM_Pose_LHand = [ FLOAT ] If you are using the BM_Pose Array when this is set to -1 the
Left hand specified by the Pose Array Entry will be used, however
if it is set to >=0 then the Hand Positions specified in that
entry of the BM_Hands Array will be used.
If you are not using the BM_Pose Array then when set to -1 the
figure will use the finger positions that have been declared
but if it is set >=0 then the Hand Positions specified in that
entry of the BM_Hands Array will be used.
Default = -1 (Arrays Not Used)
BM_HairStyle = [ FLOAT ] If you are using Arrays for Hair Settings then this represents the
Array Entry Number for the Hairstyle.
Default = -1 (Arrays Not Used)
4.7 Image Maps
===============
In addition to the basic Skin, Lip and Nail textures (section 3.2), image maps can also be applied
to each of the Body parts.
The image maps need to be in PNG format, with the alpha channel being used for transparent
areas.
The following variables need to be set prior to the macros being called, the image map files
need to be in the POV-Ray library path, or the same folder as the scene file.
Face_IMap = [ "FILENAME.PNG" ] Image map to be used for the Head.
Neck_IMap = [ "FILENAME.PNG" ] Image map to be used for the Neck.
Torso_IMap = [ "FILENAME.PNG" ] Image map to be used for the Torso.
Abdomen_IMap = [ "FILENAME.PNG" ] Image map to be used for the Abdomen.
Upperarm_R_IMap = [ "FILENAME.PNG" ] Image map to be used for the Right Upperarm.
Upperarm_L_IMap = [ "FILENAME.PNG" ] Image map to be used for the Left Upperarm.
Forearm_R_IMap = [ "FILENAME.PNG" ] Image map to be used for the Right Forearm.
Forearm_L_IMap = [ "FILENAME.PNG" ] Image map to be used for the Left Forearm.
Hand_R_IMap = [ "FILENAME.PNG" ] Image map to be used for the Right Hand.
Hand_L_IMap = [ "FILENAME.PNG" ] Image map to be used for the Left Hand.
Thigh_R_IMap = [ "FILENAME.PNG" ] Image map to be used for the Right Thigh.
Thigh_L_IMap = [ "FILENAME.PNG" ] Image map to be used for the Left Thigh.
Calf_R_IMap = [ "FILENAME.PNG" ] Image map to be used for the Right Calf (Lower Leg).
Calf_L_IMap = [ "FILENAME.PNG" ] Image map to be used for the Left Calf (Lower Leg).
Foot_R_IMap = [ "FILENAME.PNG" ] Image map to be used for the Right Foot.
Foot_L_IMap = [ "FILENAME.PNG" ] Image map to be used for the Left Foot.
Bump Maps can also be difined in the same way, however these will only be used if the above
image maps are defined.
The bump maps need to be in PNG format.
The following variables need to be set prior to the macros being called, the bump map files
need to be in the POV-Ray library path, or the same folder as the scene file.
Face_BMap = [ "FILENAME.PNG" ] Bump map to be used for the Head.
Neck_BMap = [ "FILENAME.PNG" ] Bump map to be used for the Neck.
Torso_BMap = [ "FILENAME.PNG" ] Bump map to be used for the Torso.
Abdomen_BMap = [ "FILENAME.PNG" ] Bump map to be used for the Abdomen.
Upperarm_R_BMap = [ "FILENAME.PNG" ] Bump map to be used for the Right Upperarm.
Upperarm_L_BMap = [ "FILENAME.PNG" ] Bump map to be used for the Left Upperarm.
Forearm_R_BMap = [ "FILENAME.PNG" ] Bump map to be used for the Right Forearm.
Forearm_L_BMap = [ "FILENAME.PNG" ] Bump map to be used for the Left Forearm.
Hand_R_BMap = [ "FILENAME.PNG" ] Bump map to be used for the Right Hand.
Hand_L_BMap = [ "FILENAME.PNG" ] Bump map to be used for the Left Hand.
Thigh_R_BMap = [ "FILENAME.PNG" ] Bump map to be used for the Right Thigh.
Thigh_L_BMap = [ "FILENAME.PNG" ] Bump map to be used for the Left Thigh.
Calf_R_BMap = [ "FILENAME.PNG" ] Bump map to be used for the Right Calf (Lower Leg).
Calf_L_BMap = [ "FILENAME.PNG" ] Bump map to be used for the Left Calf (Lower Leg).
Foot_R_BMap = [ "FILENAME.PNG" ] Bump map to be used for the Right Foot.
Foot_L_BMap = [ "FILENAME.PNG" ] Bump map to be used for the Left Foot.
The following options can also be set, these only effect the above image maps.
BM_Map_Finish = finish {} : Set the finish you wish to apply to the image maps.
There is no default finish.
BM_Map_Normal = normal {} : Set the normal you wish to apply to the image maps.
There is no default normal.
BM_Bump_Map_Size = [ FLOAT ] Bump Map Size, Default = 0.25
Refer to POV-Ray Documentation for more information on image and bump maps.
******************************************************************************************
5.0 COSTUME OBJECTS
******************************************************************************************
5.1 Limb Objects
=================
The following parameters are used to create clothing and props for Blob Man, they need to
be declared prior to the macros being called, and they must all be valid objects located
around <0,0,0>.
BM_Head_Object = Objects located about the Head.
BM_Neck_Object = Objects located about the Head.
BM_Torso_Object = Objects located about the Torso.
BM_Abdomen_Object = Objects located about the Abdomen.
BM_Upperarm_R_Object = Objects located about the Right Upperarm.
BM_Upperarm_L_Object = Objects located about the Left Upperarm.
BM_Forearm_R_Object = Objects located about the Right Forearm.
BM_Forearm_L_Object = Objects located about the Left Forearm.
BM_Hand_R_Object = Objects located about the Right Hand.
BM_Hand_L_Object = Objects located about the Left Hand.
BM_Thigh_R_Object = Objects located about the Right Thigh.
BM_Thigh_L_Object = Objects located about the Left Thigh.
BM_Calf_R_Object = Objects located about the Right Calf.
BM_Calf_L_Object = Objects located about the Left Calf.
BM_Foot_R_Object = Objects located about the Right Foot.
BM_Foot_L_Object = Objects located about the Left Foot.
Note : If no texture is given to these objects they will adopt the Skin_Tex texture plus
any image maps assigned to that limb.
The Objects defined above will be included even if the Mass parameters (i.e. BM_Torso_Mass etc)
are set in such a way as to be missing, this is useful, if for example you wished to give
Blob_man a "Peg Leg". It could also be possible to create a Skeleton, by defining all the
bones as objects, and then removing the original body parts by setting their Mass=0
5.2 Costume Definition File
============================
The best way to define how blob man will look is to create a Costume Definition File (.cdf)
this is basically an include file with all the optional settings declared. The advantage
of using this method, is that the same CDF can be used in multiple scenes and likewise
multiple CDF's can be used in the same scene. All that needs to be done is include the
correct CDF before the macros are called.
eg.
#include "bmpeople.inc"
#include "bm_pose.inc"
#include "example1.cdf"
Blob_Man(0,2)
#include "example2.cdf"
Blob_Man(1,1.8)
etc.
Included in the Blob Man package are sample .cdf files; "layout.cdf" lists all the optional
parameters and their settings, "sample.cdf" and "croft.cdf" are basic Costume Definition File
More Costume Definition Files are available on from CDF Library (see section 9.0)
******************************************************************************************
6.0 HINTS & TIPS
******************************************************************************************
To help in the positioning of Blob_Man, there is a DeBug variable that can be set, this
generates visible locators to the ends of Blob Mans limbs, note that this will only work
if any limb objects created contain the current object as part of the definition i.e.
#declare BM_Head_Object= union { object{BM_Head_Object}
Costume Objects ...
.....
}
See "sample.cdf" for further examples.
When testing scenes avoid using hair, as the parse time increases considerably, if you
declare a variable eg. HairTest=0, then multiply Hair setting by this number you only need
to set HairTest=1 to turn the hair back on for all figures.
eg.
#decalre HairTest=0 // 1= Hair On 0=Hair Off
#include "bm_hair.inc" // Hair Arrays Already Defined
#declare BM_HairStyle=2*HairTest
Blob_Man (0,2)
#declare BM_HairStyle=3*HairTest
Blob_Man (1,1.8)
Use Body_Part_Viewer.pov in conjunction with a CDF file to model clothing/props for
Blob Man. (see "HOW2CDF.txt" for more information)
******************************************************************************************
7.0 MISC INFO
******************************************************************************************
7.1 Creating Face Image Maps
=============================
The image maps used for Blob Mans face are PNG format which uses the Alpha Channel.
Use an Image Editor that allows you to edit the Alpha channel (eg. Paint Shop Pro, PhotoShop)
then create the areas that you wish to be mapped, in the alpha channel. In the main image
roughly colour the same areas the colours you want, it doesn't matter how accurate you are
as the aplha channel will make unwanted areas transparant.
7.2 Creating Limb Image Maps
=============================
As with the face image maps, these need to be in PNG format with the Alpha channel being
used for transpancy. There are no sample limb image maps, but below are the dimensions for
the different limbs:
Head, Neck, Torso, Abdomen, Hands, Feet = 1:1 (eg. 600 Wide x 600 High)
Upper Arms, Forearms, Thighs, Calves = 1:2 (eg. 300 Wide x 600 High)
Note about hands :
Because the Image maps are applied after the fingers have been positioned, if the
image map has a pattern, it will not look the same if the finger positions are changed.
BM_Map_R_Finger and BM_Map_L_Finger can be set to 0 and this will not map the image map
onto the Fingers (1 is the default)
7.3 Bump Maps
==============
Bump maps should be Grayscale and in PNG format. Alpha Channel is not used for Bump Maps.
They should be the same scale as the Image Maps
7.4 Blob Man's Future
======================
Here are just a few ideas I have for improving Blob Man.
* Different ages ( 2 Years, 6 Years, 12 Years)
* A More configurable face model.
* An optional Hair Macro
* An animation system ( I will probably need help with this, any offers...)
7.5 Known Problems
===================
At this time I am unaware of any major problems, except that old CDF Files need to be
rewritten to be useable by this version, as will any Pose Files created for earlier versions.
******************************************************************************************
8.0 HISTORY
******************************************************************************************
v4.0 09 Apr 2000 Major Release.
Redesigned and renamed Macros, added Gender, changed the hands and
feet, redesigned the torso, torso and abdomen now seperate to allow
torso movement, improved the Origin transformations, added scale
option to main macro, remodelled the head, plus many other changes.
This version is no longer compatible with older versions.
v3.6 01 Mar 2000 Remodelled the Chest, there is now an optional parameter to switch
between the old and new style, for compatability the original style
is the default. Added nose size and eyebrow ridge options. Added
a section to this doc about Array formats. Included a very basic
"How to.." document on CDF creation ("HOW2CDF.TXT")
v3.5 25 Jul 1999 Added extra modelling detail to head. New optional variables
available for Teeth, Jaw and Jowls.
v3.0 06 Jul 1999 Added Limb Objects to allow creation of clothing and props.
Added image and bump maps to all limbs.
Maintained Macro Settings for backwards compatibilty with older
pose files.
Remodeled Nose and lips slightly.
Included "sample.cdf" and "layout.cdf"
v2.0 23 Apr 1999 Remodeled the head, and added variable image_map textures for the
face, eye lid variables in head macro now have a range of 0-1 and
are can be set for each eye, so winking is possible.
Remodeled the feet.
Added mass to the arms and legs.
Remodeled the hands and articulated the fingers, hand macro now
needs to be called twice, once for each hand.
Externally defined skin texture.
Added a Blob_Man Macro to create a complete figure from a given
pose number as defined in a Pose File
Rewrote the motion mechanics to make the code more readable.
Generally cleaned up the code.
Generated more Pre-Defined poses
v1.0 09 Apr 1999 Initial release.
v0.0 March 1999 Govert Zoethout published his source files.
Original Macros had static arms and no hands or legs, and was in
his native language (which I can't speak)
******************************************************************************************
9.0 CONTACTING THE AUTHOR
******************************************************************************************
If you wish to contact me with bug reports, bug fixes, criticisms, comments, suggested
improvements, questions, etc. you can reach me by email at:
E-mail : houston.graphics@iname.com
ICQ# : 8770407
Homepage: http://welcome.to/HoustonGraphics
-or-
http://members.xoom.com/HoustonGraph
If you do make any improvements to these macros please let me know, so that I can include
them in future releases.
Also if you design any Costume Definition Files that you would like to share, please send
them and I will include them in the CDF Library.
******************************************************************************************
10.0 CREDITS
******************************************************************************************
Thanks go to the following :-
POV-Ray Team for producing such fantastic software, and FREE too !!!!
Govert Zoethout who without his original model, this work would never have come about.
Yasunari Iwanaga who created his own lady include file which I drew heavily on for
the version 4.0 release.
Chris Colefax for the template of this readme file, producing excellent include files,
and inspiring me to contribute to the POV-Ray community.
All the helpful POV-Ray users around the world, who frequent the POV-Ray Newsgroups.
( news.povray.org )
******************************************************************************************
POV-Ray(tm) and Persistence of Vision(tm) are registered trademarks of the POV-Ray Team(tm)

186
blbman40/bmpeople.inc Normal file
View File

@ -0,0 +1,186 @@
/***************************************************************
___ _ _ __ __
| _ ) |___| |__| \/ |__ _ _ _
| _ \ / _ \ '_ \ |\/| / _` | ' \ v4.0
|___/_\___/_.__/_| |_\__,_|_||_|
| _ \___ ___ _ __| |___
| _/ -_) _ \ '_ \ / -_)
|_| \___\___/ .__/_\___|
|_| 09 April 2000
by Peter Houston <houston.graphics@iname.com>
< http://welcome.to/HoustonGraphics >
< http://members.xoom.com/HoustonGraph >
based on Blob Man model by Govert Zoethout < zoethout@gmx.net >
< http://victorian.fortunecity.com/dada/507/ >
and lady.inc by Yasunari Iwanaga < iwaentcl@po.saganet.ne.jp >
< http://yasucg.site.ne.jp/ >
Refer to "bmmanual.txt" for full usage details.
****************************************************************/
#local BlobMan_People_Version = version;
#version 3.1;
#ifndef (BM_Defaults)
#include "bmdefs.inc"
#end
#include "bmhead.inc"
#include "bmtorso.inc"
#include "bmhand.inc"
#include "bmfeet.inc"
#include "bmhair.inc"
/***************************************************************
Blob_Man Macro
Syntax
Blob_Man(Gender, Height)
Gender : 0=Male ; 1=Female
Height : In POV Units
****************************************************************/
#macro Blob_Man(Gender,Height)
#declare BM_Gender=Gender;
#if (BM_PoseNo>=0)
#declare BM_Head_Rot = BM_Pose[BM_PoseNo][0];
#declare BM_Neck_Rot = BM_Pose[BM_PoseNo][1];
#declare BM_Torso_Rot = BM_Pose[BM_PoseNo][2];
#declare BM_RA_S2E = BM_Pose[BM_PoseNo][3];
#declare BM_RA_E2W = BM_Pose[BM_PoseNo][4];
#declare BM_LA_S2E = BM_Pose[BM_PoseNo][5];
#declare BM_LA_E2W = BM_Pose[BM_PoseNo][6];
#declare BM_RL_H2K = BM_Pose[BM_PoseNo][7];
#declare BM_RL_K2A = BM_Pose[BM_PoseNo][8];
#declare BM_LL_H2K = BM_Pose[BM_PoseNo][9];
#declare BM_LL_K2A = BM_Pose[BM_PoseNo][10];
#declare BM_RF_Rot = BM_Pose[BM_PoseNo][11];
#declare BM_LF_Rot = BM_Pose[BM_PoseNo][12];
#declare BM_Toe_Angle = BM_Pose[BM_PoseNo][13];
#declare BM_RH_Rot = BM_Pose[BM_PoseNo][14];
#declare BM_LH_Rot = BM_Pose[BM_PoseNo][15];
#if (BM_Pose_RHand<0)
#declare BM_Pose_RHand = BM_Pose[BM_PoseNo][16].z;
#end
#if (BM_Pose_LHand<0)
#declare BM_Pose_LHand = BM_Pose[BM_PoseNo][16].x;
#end
#declare BM_RFP_Pos = BM_Hands[BM_Pose_RHand][0];
#declare BM_RFR_Pos = BM_Hands[BM_Pose_RHand][1];
#declare BM_RFM_Pos = BM_Hands[BM_Pose_RHand][2];
#declare BM_RFI_Pos = BM_Hands[BM_Pose_RHand][3];
#declare BM_RFT_Pos = BM_Hands[BM_Pose_RHand][4];
#declare BM_LFP_Pos = BM_Hands[BM_Pose_LHand][0];
#declare BM_LFR_Pos = BM_Hands[BM_Pose_LHand][1];
#declare BM_LFM_Pos = BM_Hands[BM_Pose_LHand][2];
#declare BM_LFI_Pos = BM_Hands[BM_Pose_LHand][3];
#declare BM_LFT_Pos = BM_Hands[BM_Pose_LHand][4];
#else
#if (BM_Pose_RHand>=0)
#declare BM_RFP_Pos = BM_Hands[BM_Pose_RHand][0];
#declare BM_RFR_Pos = BM_Hands[BM_Pose_RHand][1];
#declare BM_RFM_Pos = BM_Hands[BM_Pose_RHand][2];
#declare BM_RFI_Pos = BM_Hands[BM_Pose_RHand][3];
#declare BM_RFT_Pos = BM_Hands[BM_Pose_RHand][4];
#end
#if (BM_Pose_LHand>=0)
#declare BM_LFP_Pos = BM_Hands[BM_Pose_LHand][0];
#declare BM_LFR_Pos = BM_Hands[BM_Pose_LHand][1];
#declare BM_LFM_Pos = BM_Hands[BM_Pose_LHand][2];
#declare BM_LFI_Pos = BM_Hands[BM_Pose_LHand][3];
#declare BM_LFT_Pos = BM_Hands[BM_Pose_LHand][4];
#end
#end
#if (BM_HairStyle>=0)
#declare BM_Hair_Rot = BM_Pose_Hair_1[BM_HairStyle][0];
#declare BM_Hair_On = BM_Pose_Hair_2[BM_HairStyle][0];
#declare BM_Hair_Arch = BM_Pose_Hair_2[BM_HairStyle][1];
#declare BM_Hair_Thck = BM_Pose_Hair_2[BM_HairStyle][2];
#declare BM_Hair_Line = BM_Pose_Hair_2[BM_HairStyle][3];
#declare BM_Hair_LDpth = BM_Pose_Hair_2[BM_HairStyle][4];
#declare BM_Hair_Wght = BM_Pose_Hair_2[BM_HairStyle][5];
#declare BM_Hair_Hght = BM_Pose_Hair_2[BM_HairStyle][6];
#declare BM_Hair_Length= BM_Pose_Hair_2[BM_HairStyle][7];
#declare BM_Hair_Curl = BM_Pose_Hair_2[BM_HairStyle][8];
#end
#declare BM_Pose_RHand=-1;
#declare BM_Pose_LHand=-1;
#declare BlobMan= union {
object { bmhead ( )}
object { bmtorso( )}
object { bmhand ( 1)}
object { bmhand (-1)}
object { bmfeet ( )}
object { bmhair ( )}
}
#declare BM_Scale=(((Height*1000)/66)/30)*1.2/40;
#if (BM_Gender=1)
#declare BM_Scale=BM_Scale*.977;
#end
// Origin Variables including Scale
#declare BMO_Foot_R =transform {transform BMOFR scale BM_Scale}
#declare BMO_Foot_L =transform {transform BMOFL scale BM_Scale}
#declare BMO_Toe_R =transform {transform BMOFR rotate <-BM_Toe_Angle.z,0,0> scale BM_Scale}
#declare BMO_Toe_L =transform {transform BMOFL rotate <-BM_Toe_Angle.x,0,0> scale BM_Scale}
#declare BMO_Knee_R =transform {transform BMOKR scale BM_Scale}
#declare BMO_Knee_L =transform {transform BMOKL scale BM_Scale}
#declare BMO_Hip_R =transform {transform BMOHR scale BM_Scale}
#declare BMO_Hip_L =transform {transform BMOHL scale BM_Scale}
#declare BMO_Abdomen_F =transform {transform BMOAF scale BM_Scale}
#declare BMO_Abdomen_B =transform {transform BMOAB scale BM_Scale}
#declare BMO_Abdomen_U =transform {transform BMOAU scale BM_Scale}
#declare BMO_Abdomen_R =transform {transform BMOAR scale BM_Scale}
#declare BMO_Abdomen_L =transform {transform BMOAL scale BM_Scale}
#declare BMO_Torso_F =transform {transform BMOTF scale BM_Scale}
#declare BMO_Torso_B =transform {transform BMOTB scale BM_Scale}
#declare BMO_Torso_R =transform {transform BMOTR scale BM_Scale}
#declare BMO_Torso_L =transform {transform BMOTL scale BM_Scale}
#declare BMO_Torso_T =transform {transform BMOTT scale BM_Scale}
#declare BMO_Shoulder_R =transform {transform BMOSR scale BM_Scale}
#declare BMO_Shoulder_L =transform {transform BMOSL scale BM_Scale}
#declare BMO_Elbow_R =transform {transform BMOER scale BM_Scale}
#declare BMO_Elbow_L =transform {transform BMOEL scale BM_Scale}
#declare BMO_Hand_R =transform {transform BMOPR scale BM_Scale}
#declare BMO_Hand_L =transform {transform BMOPL scale BM_Scale}
#declare BMO_Head_F =transform {transform BMOHF scale BM_Scale}
#declare BMO_Head_B =transform {transform BMOHB scale BM_Scale}
#declare BMO_Head_T =transform {transform BMOHT scale BM_Scale}
#declare BMO_Ear_R =transform {transform BMOeR scale BM_Scale}
#declare BMO_Ear_L =transform {transform BMOeL scale BM_Scale}
#declare BMO_Nose =transform {transform BMONs scale BM_Scale}
#declare BM_RF_Location =BM_RF_Location*BM_Scale;
#declare BM_LF_Location =BM_LF_Location*BM_Scale;
#if (vlength(<0,0,0>-<0,BM_RF_Location.y,0>)>vlength(<0,0,0>-<0,BM_LF_Location.y,0>))
#if (BM_RF_Location.x<0)
#declare BM_StrideRL=<-(vlength(<0,0,0>-<BM_RF_Location.x,0,0>)),vlength(<0,0,0>-<0,BM_RF_Location.y,0>),0>;
#else
#declare BM_StrideRL=<vlength(<0,0,0>-<BM_RF_Location.x,0,0>),vlength(<0,0,0>-<0,BM_RF_Location.y,0>),0>;
#end
#if (BM_LF_Location.x<0)
#declare BM_StrideLL=<-(vlength(<0,0,0>-<BM_LF_Location.x,0,0>)),vlength(<0,0,0>-<0,BM_RF_Location.y,0>),0>;
#else
#declare BM_StrideLL=<vlength(<0,0,0>-<BM_LF_Location.x,0,0>),vlength(<0,0,0>-<0,BM_RF_Location.y,0>),0>;
#end
#else
#if (BM_RF_Location.x<0)
#declare BM_StrideRL=<-(vlength(<0,0,0>-<BM_RF_Location.x,0,0>)),vlength(<0,0,0>-<0,BM_LF_Location.y,0>),0>;
#else
#declare BM_StrideRL=<vlength(<0,0,0>-<BM_RF_Location.x,0,0>),vlength(<0,0,0>-<0,BM_LF_Location.y,0>),0>;
#end
#if (BM_LF_Location.x<0)
#declare BM_StrideLL=<-(vlength(<0,0,0>-<BM_LF_Location.x,0,0>)),vlength(<0,0,0>-<0,BM_LF_Location.y,0>),0>;
#else
#declare BM_StrideLL=<vlength(<0,0,0>-<BM_LF_Location.x,0,0>),vlength(<0,0,0>-<0,BM_LF_Location.y,0>),0>;
#end
#end
#end
#version BlobMan_People_Version;
//End of Blob Man People Include File

1139
blbman40/bmtorso.inc Normal file

File diff suppressed because it is too large Load Diff

469
blbman40/croft.cdf Normal file
View File

@ -0,0 +1,469 @@
/*******************************************************
POV-Ray - BlobMan People Costume Definition File
File Name : croft.cdf
BM_Version: 4.0
Desciption: Costume Definition File - Lara ?
Date : April 2000
Author : Peter Houston
Email : houston.graphics@iname.com
WWW : http://welcome.to/HoustoGraphics
Notes :
This CDF only works for Female Figures.
This CDF includes a hair setting. To test render
scenes without hair enter the following code
after the CDF is included
#decalre BM_HairStyle=0;
Then just remove it when you want the hair.
The Boots do not sit on y0 so if you transform
the figure using the Foot or Toe Origins you will need
to add the following translation after the
transformation
translate <0,1.0>*BM_Scale
The Toes of the Boot will bend to match the Toe Angle
however you need to specify the Toe Angle before the
CDF is called, even if you are using arrays.
#declare BM_Toe_Angle=<0,0,0>;
********************************************************/
#include "bm_hair.inc"
/********************************************************
Image Maps & Textures
********************************************************/
#declare BM_Skin_Tex=
texture {
pigment{rgb <0.96,0.80,0.69>}
}
#declare BM_Lip_Tex = texture {pigment {rgb x*.75}}
#declare BM_Nail_Tex = texture {pigment {rgb <.2,.5,.5>} finish {phong 1}}
#declare BM_Eye_Shadow= texture {pigment {rgb <.2,.5,.5>}}
#declare BM_Map_Normal = normal {wrinkles 0.15 scale <.5,10,.5>}
#include "glass.inc"
#declare BuckleTex = texture {
pigment {
rgb <0.70, 0.56, 0.37>
}
finish {
metallic
ambient 0.1
diffuse 0.65
specular 0.85
roughness 0.01
reflection 0.45
brilliance 1.5
}
}
#declare SockTex=
texture {
pigment {rgb 1}
normal {quilted .5 scale .1}
}
#declare BootTex= texture {
pigment {rgb .05}
finish {phong .5 reflection .1}
}
#declare SoleTex= texture {
pigment {rgb .15 }
normal {ripples 1 scale .5}
}
#declare LaceTex=texture {pigment {rgb <0.556863, 0.137255, 0.137255>}
normal {quilted 1 scale .1 rotate z*45}
}
#declare SpecFrames = texture {
pigment {
rgb <0.2, 0.2, 0.2>
}
finish {
ambient 0.1
diffuse 0.7
brilliance 6.0
reflection 0.2
phong 0.8
phong_size 120
}
}
#declare BagTex=texture {pigment {rgb <0.35, 0.20, 0.1>}
normal {quilted .5 scale .05 rotate z*45}
}
#declare Torso_IMap = "croft1.png"
#declare Abdomen_IMap = "croft2.png"
#declare Hand_R_IMap = "croft5.png"
#declare Hand_L_IMap = "croft5.png"
#declare Thigh_R_IMap = "croft3.png"
#declare Thigh_L_IMap = "croft3.png"
#declare Calf_R_IMap = "croft4.png"
#declare Calf_L_IMap = "croft4.png"
#declare Foot_R_IMap = "croft5.png"
#declare Foot_L_IMap = "croft5.png"
/********************************************************
Body Part Options
********************************************************/
#declare BM_EyeCol=<.25,.25,0>
#declare BM_Hair_Col=<0.35, 0.20, 0.1>;
#declare BM_HairStyle=2;
#declare BM_Map_R_Finger=0;
#declare BM_Map_L_Finger=0;
#declare BM_TShirt=1;
#declare Specs=
union {
sphere {0,1 scale <1,.75,.25> translate <-1.75,0,0> texture {T_Ruby_Glass}}
torus {1.15,.15 rotate x*90 scale <1,.75,.1> translate <-1.75,0,0> }
cylinder {<0,0,0><-1.9,0,4>.15 translate <-2.75,0,0>}
torus {1,.15 rotate z*90 scale <1,1,1> clipped_by {plane {z,0 inverse}}translate y*-1 rotate z*15 translate <-4.75,0,4>}
sphere {0,1 scale <1,.75,.25> translate <1.75,0,0> texture {T_Ruby_Glass}}
torus {1.15,.15 rotate x*90 scale <1,.75,.1> translate <1.75,0,0>}
cylinder {<0,0,0><1.9,0,4>.15 translate <2.75,0,0>}
torus {1,.15 rotate z*90 scale <1,1,1> clipped_by {plane {z,0 inverse}}translate y*-1 rotate z*-15 translate <4.75,0,4>}
torus {1,.15 rotate x*90 translate y*-.5 clipped_by {plane {y,0 inverse}} }
texture {SpecFrames}
}
#declare Bag=
union {
blob {threshold .5
cylinder {<0,0,0><0,-12,0> 3,1 translate <2,0,0>}
cylinder {<0,0,0><0,-12,0> 3,1 translate <1,0,0>}
cylinder {<0,0,0><0,-12,0> 3,1 translate <0,0,0>}
cylinder {<0,0,0><0,-12,0> 3,1 translate <-1,0,0>}
cylinder {<0,0,0><0,-12,0> 3,1 translate <-2,0,0>}
cylinder {<0,-1,-1><0,-12,0> 3,1 translate <2,0,2>}
cylinder {<0,-1,-1><0,-12,0> 3,1 translate <1,0,2>}
cylinder {<0,-1,-1><0,-12,0> 3,1 translate <0,0,2>}
cylinder {<0,-1,-1><0,-12,0> 3,1 translate <-1,0,2>}
cylinder {<0,-1,-1><0,-12,0> 3,1 translate <-2,0,2>}
scale <1.1,.5,.75>
}
blob {threshold .5
cylinder {<0,0,0><0,-12,0> 3,1 translate <2,0,0>}
cylinder {<0,0,0><0,-12,0> 3,1 translate <1,0,0>}
cylinder {<0,0,0><0,-12,0> 3,1 translate <0,0,0>}
cylinder {<0,0,0><0,-12,0> 3,1 translate <-1,0,0>}
cylinder {<0,0,0><0,-12,0> 3,1 translate <-2,0,0>}
cylinder {<0,-1,-1><0,-12,0> 3,1 translate <2,0,2>}
cylinder {<0,-1,-1><0,-12,0> 3,1 translate <1,0,2>}
cylinder {<0,-1,-1><0,-12,0> 3,1 translate <0,0,2>}
cylinder {<0,-1,-1><0,-12,0> 3,1 translate <-1,0,2>}
cylinder {<0,-1,-1><0,-12,0> 3,1 translate <-2,0,2>}
scale <1.1,.5,.75>
clipped_by {plane {y,0 inverse rotate x*30 rotate z*15 translate y*-1 }}
clipped_by {plane {y,0 inverse rotate x*30 rotate z*-15 translate y*-1 }}
scale <1.1,1.05,1.1>
rotate x*-5
}
torus {.5,.25 translate <0,-1.2,2.75> texture {SpecFrames}}
}
/********************************************************
Body Part Objects
********************************************************/
#declare BM_Head_Object= union {object{BM_Head_Object}
object {Specs
rotate x*-30
translate <0,-2,-4.5>
}
}
//#declare BM_Neck_Object=object {BM_Neck_Object}
#declare BM_Torso_Object=union {
object{BM_Torso_Object}
union {
object {Bag}
object {Bag scale <.2,.5,.5> rotate y*90 translate <3.5,-3,1> }
object {Bag scale <.6,.5,.5> translate <0,-3,2.5> }
object {Bag scale <.2,.5,.5> rotate y*-90 translate <-3.5,-3,1> }
torus {3,.5 scale <1.2,2,1> rotate y*-15 rotate z*80 rotate y*30 translate <-4.5,-2.5,-2>}
torus {3,.5 scale <1.2,2,1> rotate y*-15 rotate z*80 rotate y*30 translate <-4.5,-2.5,-2> scale <-1,1,1>}
translate <0,-8,4>
texture {BagTex}
}
}
#declare BM_Abdomen_Object=union {
object{BM_Abdomen_Object}
cone {<0,0,0>,5.3,<0,-2,0>5.5
scale <1.1,1,.8>
translate <0,-23.25,-.5>
pigment { rgb <0.25, 0.10, 0.0> }
}
difference {
box {<-1.5,-1.5,0><1.5,1.5,.5>
translate <0,-24.25,-5>
texture {BuckleTex}
}
box {<-1,-1,0><1,1,.25>
translate <0,-24.25,-5>
texture {BuckleTex
finish {ambient -.15}}
}
}
box {<-.5,0,0><.5,-4,1>
rotate x*-5
translate <0,-24.25,-4.6>
}
}
//#declare BM_Upperarm_R_Object=object {BM_Upperarm_R_Object}
//#declare BM_Upperarm_L_Object=object {BM_Upperarm_L_Object}
//#declare BM_Forearm_R_Object=object {BM_Forearm_R_Object}
//#declare BM_Forearm_L_Object=object {BM_Forearm_L_Object}
//#declare BM_Hand_R_Object=object {BM_Hand_R_Object}
//#declare BM_Hand_L_Object=object {BM_Hand_L_Object}
#declare BM_Thigh_R_Object=union {
object {BM_Thigh_R_Object}
torus {3.5,.5 scale <1,2,1>
translate <-2,-4,-.5>
}
}
#declare BM_Thigh_L_Object=union {
object {BM_Thigh_L_Object}
torus {3.5,.5 scale <1,2,1>
translate < 2,-4,-.5>
}
}
#declare BM_Calf_R_Object=union {
object {BM_Calf_R_Object}
blob {threshold .5
cylinder {<0,1.5,0><0,-1.5,0>,4.2,1.1
scale <1,.5,1.1>
translate <-.05,-10,.4>
}
texture {SockTex}
}
cone {<0,0,.5>2.1,<0,-8,0>1.75
scale <1,1,1>
translate <0,-11,0>
texture {BootTex}
//pigment {rgb x}
}
#local Laces=0
#while (Laces<7)
torus {1,.2
texture {LaceTex}
rotate z*30
translate <0,-12-Laces,-1>
rotate x*-1
}
torus {1,.2
texture {LaceTex}
rotate z*-30
translate <0,-12-Laces,-1.1>
rotate x*-1
}
#declare Laces=Laces+1
#end
torus {2.2,.2
texture {LaceTex}
rotate z*10
translate <0,-12,.25>
}
torus {2.2,.2
texture {LaceTex}
rotate z*-13
translate <0,-12,.25>
}
}
#declare BM_Calf_L_Object=union {
object {BM_Calf_L_Object}
blob {threshold .5
cylinder {<0,1.5,0><0,-1.5,0>,4.2,1.1
scale <1,.5,1.1>
translate <-.05,-10,.4>
}
texture {SockTex}
}
cone {<0,0,.5>2.1,<0,-8,0>1.75
scale <1,1,1>
translate <0,-11,0>
texture {BootTex}
//pigment {rgb x}
}
#local Laces=0
#while (Laces<7)
torus {1,.2
texture {LaceTex}
rotate z*30
translate <0,-12-Laces,-1>
rotate x*-1
}
torus {1,.2
texture {LaceTex}
rotate z*-30
translate <0,-12-Laces,-1.1>
rotate x*-1
}
#declare Laces=Laces+1
#end
torus {2.2,.2
texture {LaceTex}
rotate z*10
translate <0,-12,.25>
}
torus {2.2,.2
texture {LaceTex}
rotate z*-13
translate <0,-12,.25>
}
scale <-1,1,1>
}
#declare BM_Foot_R_Object=union {
object {BM_Foot_R_Object}
difference {
union { // Sole
cylinder {<0,0,0><0,-.75,0> 2.2
translate <0,-2.5,0>
}
cylinder {<0,0,0><0,-.75,0> 2.9
rotate x*BM_Toe_Angle.z
translate <-.3,-2.5,-5.7>
clipped_by {plane {z,-5.7}}
}
prism { linear_sweep linear_spline
0,-0.75,5,
<-2,0>,<2,0>,<2.5,-5.7>,<-3.4,-5.7>,<-2,0>
translate <0,-2.5,0>
}
}
box {<-4,-8,0><4,0,-8>
rotate x*-14
rotate y*8
translate <0,-2.6,-2>
}
texture {SoleTex}
}
union { //Uppers
union {sphere {<0,.5,0>,2.6}
cylinder {<0,.5,0><0,0,0>2.6}
clipped_by {plane{y,0 inverse}}
clipped_by {plane {z,0 rotate x*45}}
rotate x*BM_Toe_Angle.z
translate <-.3,-2.5,-5.7>
}
cone {<0,0,0>1.75,<0,-2.5,0>1.9}
sphere {0,1.75}
cone {<0,-.5,0>1.75,<-.3,-2.5,-5.7>2.6
clipped_by {plane {y,-2.5 inverse}}
}
cone {<0,-2,0>1.75,<-.3,-2.5,-5.7>2.6
clipped_by {plane {y,-2.5 inverse}}
}
texture {BootTex}
}
#local Laces=0
#while (Laces<4)
torus {1,.2
texture {LaceTex}
rotate z*30
translate <0,-1-Laces,-.2>
rotate x*80
}
torus {1,.2
texture {LaceTex}
rotate z*-30
translate <0,-1-Laces,-.3>
rotate x*80
}
#declare Laces=Laces+1
#end
}
#declare BM_Foot_L_Object=union {
object {BM_Foot_R_Object}
difference {
union { // Sole
cylinder {<0,0,0><0,-.75,0> 2.2
translate <0,-2.5,0>
}
cylinder {<0,0,0><0,-.75,0> 2.9
rotate x*BM_Toe_Angle.z
translate <-.3,-2.5,-5.7>
clipped_by {plane {z,-5.7}}
}
prism { linear_sweep linear_spline
0,-0.75,5,
<-2,0>,<2,0>,<2.5,-5.7>,<-3.4,-5.7>,<-2,0>
translate <0,-2.5,0>
}
}
box {<-4,-8,0><4,0,-8>
rotate x*-14
rotate y*8
translate <0,-2.6,-2>
}
texture {SoleTex}
}
union { //Uppers
union {sphere {<0,.5,0>,2.6}
cylinder {<0,.5,0><0,0,0>2.6}
clipped_by {plane{y,0 inverse}}
clipped_by {plane {z,0 rotate x*45}}
rotate x*BM_Toe_Angle.z
translate <-.3,-2.5,-5.7>
}
cone {<0,0,0>1.75,<0,-2.5,0>1.9}
sphere {0,1.75}
cone {<0,-.5,0>1.75,<-.3,-2.5,-5.7>2.6
clipped_by {plane {y,-2.5 inverse}}
}
cone {<0,-2,0>1.75,<-.3,-2.5,-5.7>2.6
clipped_by {plane {y,-2.5 inverse}}
}
texture {BootTex}
}
#local Laces=0
#while (Laces<4)
torus {1,.2
texture {LaceTex}
rotate z*30
translate <0,-1-Laces,-.2>
rotate x*80
}
torus {1,.2
texture {LaceTex}
rotate z*-30
translate <0,-1-Laces,-.3>
rotate x*80
}
#declare Laces=Laces+1
#end
scale <-1,1,1>
}
// End of Costume Definition File

BIN
blbman40/croft.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

62
blbman40/croft.pov Normal file
View File

@ -0,0 +1,62 @@
/********************************************************
Persistence of Vision Ray Tracer Scene Description File
File : croft.pov
Version : 3.1
Description: Sample Scene using Blob Man
Date : April 2000
Author : Peter Houston
Email : houston.graphics@iname.com
WWW : http://welcome.to/HoustonGraphics
*********************************************************/
global_settings { assumed_gamma 2.2 }
camera {
location <0, 1.5, -3>
direction 1.5*z
right 4/3*x
look_at <-.25, 0, 0>
}
sky_sphere {
pigment {
gradient y
color_map { [0.0 color rgb <0.7,0.7,1.0>] [1.0 color blue 0.5] }
}
}
light_source {
<-80, 80, -80>
color rgb <1,.9,.95>*1.5
spotlight
point_at <0, 0, 0>
radius .1
tightness 75
falloff 3
}
plane {y,0
pigment {checker pigment {rgb 0}, pigment {rgb 1} rotate y*16}
}
#include "bmpeople.inc"
#include "bm_pose.inc"
#include "croft.cdf"
//#declare BM_HairStyle=0; // Uncomment to Test without Hiar
#declare BM_PoseNo=11;
#declare BM_EyeLids=<.35,0,.35>
#declare BM_Jaw=.25;
#declare BM_Mouth=1;
#declare BM_MouthShape=1;
Blob_Man(Female,2)
object {BlobMan
transform BMO_Abdomen_L
rotate z*-85
}
// EOF

BIN
blbman40/croft1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

BIN
blbman40/croft2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
blbman40/croft3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
blbman40/croft4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
blbman40/croft5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

169
blbman40/layout.cdf Normal file
View File

@ -0,0 +1,169 @@
/*******************************************************
POV-Ray - BlobMan People Costume Definition File
File Name : filename.cdf
BM_Version: 4.0
Desciption: Costume Definition File Layout
Date :
Author :
Email :
WWW :
Note :
********************************************************/
#declare CDF=true; //Used by Body_Part_Viewer.pov Can be removed.
/********************************************************
Image Maps & Textures
********************************************************/
//#declare BM_Skin_Tex = texture {}
//#declare BM_Lip_Tex = texture {}
//#declare BM_Hair_Tex = texture {}
//#declare BM_Tooth_Tex = texture {}
//#declare BM_Nail_Tex = texture {}
//#declare BM_EyeShadow = texture {}
//#declare BM_Map_Finish = finish {}
//#declare BM_Map_Normal = normal {}
//#declare BM_Bump_Map_Size = 0.25;
// PNG Image Maps for Body Parts these must be in your Library Path
//#declare Face_IMap = "filename.png"
//#declare Neck_IMap = "filename.png"
//#declare Torso_IMap = "filename.png"
//#declare Abdomen_IMap = "filename.png"
//#declare Upperarm_R_IMap = "filename.png"
//#declare Upperarm_L_IMap = "filename.png"
//#declare Forearm_R_IMap = "filename.png"
//#declare Forearm_L_IMap = "filename.png"
//#declare Hand_R_IMap = "filename.png"
//#declare Hand_L_IMap = "filename.png"
//#declare Thigh_R_IMap = "filename.png"
//#declare Thigh_L_IMap = "filename.png"
//#declare Calf_R_IMap = "filename.png"
//#declare Calf_L_IMap = "filename.png"
//#declare Foot_R_IMap = "filename.png"
//#declare Foot_L_IMap = "filename.png"
// PNG Bump Maps for Body Parts these must be in your Library Path
//#declare Face_BMap = "filename.png"
//#declare Neck_BMap = "filename.png"
//#declare Torso_BMap = "filename.png"
//#declare Abdomen_BMap = "filename.png"
//#declare Upperarm_R_BMap = "filename.png"
//#declare Upperarm_L_BMap = "filename.png"
//#declare Forearm_R_BMap = "filename.png"
//#declare Forearm_L_BMap = "filename.png"
//#declare Hand_R_BMap = "filename.png"
//#declare Hand_L_BMap = "filename.png"
//#declare Thigh_R_BMap = "filename.png"
//#declare Thigh_L_BMap = "filename.png"
//#declare Calf_R_BMap = "filename.png"
//#declare Calf_L_BMap = "filename.png"
//#declare Foot_R_BMap = "filename.png"
//#declare Foot_L_BMap = "filename.png"
/********************************************************
Body Part Options
********************************************************/
// Ears - 2 = Normal Ears, 1=Replace ears with small lumps as if under a swimming cap, 0 = No ears
//#declare BM_Ears=2;
// Eyes - 1=Normal 0=No Eyes
//#declare BM_Eyes=1;
// Nose - Range : 0 - 1.25 Size of Nose
//#declare BM_Nose=.5;
// Face - 1 = Normal Face Structure, 0 = Removes Nose and Lips
//#declare BM_Face=2;
// Teeth - 0 = No Teeth, 1 = Teeth
//#declare BM_Teeth=1;
// Jowls - Range : 0 - 3 Mass added to side of jaw.
//#declare BM_Jowls=0;
// Head - 1 = Normal Head, 0 = No Head, -1 = Guides
//#declare BM_Head_Mass=1;
// Torso - 1 = Normal Torso, 0 = No Torso, -1 = Guides
//#declare BM_Torso_Mass=1;
// Right Upperarm - 1 = Normal, 0 = Amputated, -1=Guide
//#declare BM_R_Upperarm_Mass=2;
// Right Forearm - 1 = Normal, 0 = Amputated, -1=Guide
//#declare BM_R_Forearm_Mass=2;
// Right Hand - 1 = Normal, 0 = Amputated
//#declare BM_R_Hand=1;
// Left Upperarm - 1 = Normal, 0 = Amputated, -1=Guide
//#declare BM_L_Upperarm_Mass=2;
// Left Forearm - 1 = Normal, 0 = Amputated, -1=Guide
//#declare BM_L_Forearm_Mass=2;
// Left Hand - 1 = Normal, 0 = Amputated
//#declare BM_L_Hand=1;
// Right Thigh - 1 = Normal, 0 = Amputated, -1=Guide
//#declare BM_R_Thigh_Mass=2;
// Right Calf - 1 = Normal, 0 = Amputated, -1=Guide
//#declare BM_R_Calf_Mass=2;
// Right Foot - 1 = Normal, 0 = Amputated
//#declare BM_R_Foot=1;
// Left Thigh - 1 = Normal, 0 = Amputated, -1=Guide
//#declare BM_L_Thigh_Mass=2;
// Left Calf - 1 = Normal, 0 = Amputated, -1=Guide
//#declare BM_L_Calf_Mass=2;
// Left Foot - 1 = Normal, 0 = Amputated
//#declare BM_L_Foot=1;
// Male Abdomen Muscle Flexing - 1 = On, 0 = off
//#declare BM_Flex=1;
// Female T-Shirt - 1 = On, 0 = Off
//#declare BM_TShirt=0;
// Finger Nails - 1 = On, 0 = Off
// #declare BM_Nails=1;
// Apply Iamge Maps to Right Hand Fingers - 1=On, 0=Off
//#declare BM_Map_R_Finger=1;
// Apply Iamge Maps to Left Hand Fingers - 1=On, 0=Off
//#declare BM_Map_L_Finger=1;
/********************************************************
Body Part Objects
********************************************************/
//#declare BM_Head_Object=object{BM_Head_Object}
//#declare BM_Neck_Object=object{BM_Neck_Object}
//#declare BM_Torso_Object=object{BM_Torso_Object}
//#declare BM_Abdomen_Object=object{BM_Abdomen_Object}
//#declare BM_Upperarm_R_Object=object {BM_Upperarm_R_Object}
//#declare BM_Upperarm_L_Object=object {BM_Upperarm_L_Object}
//#declare BM_Forearm_R_Object=object {BM_Forearm_R_Object}
//#declare BM_Forearm_L_Object=object {BM_Forearm_L_Object}
//#declare BM_Hand_R_Object=object {BM_Hand_R_Object}
//#declare BM_Hand_L_Object=object {BM_Hand_L_Object}
//#declare BM_Thigh_R_Object=object {BM_Thigh_R_Object}
//#declare BM_Thigh_L_Object=object {BM_Thigh_L_Object}
//#declare BM_Calf_R_Object=object {BM_Calf_R_Object}
//#declare BM_Calf_L_Object=object {BM_Calf_L_Object}
//#declare BM_Foot_R_Object=object {BM_Foot_R_Object}
//#declare BM_Foot_L_Object=object {BM_Foot_R_Object}
// End of Costume Definition File

BIN
blbman40/lft-abdomen.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

BIN
blbman40/lft-calf.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

BIN
blbman40/lft-foot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 B

BIN
blbman40/lft-forearm.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

BIN
blbman40/lft-thigh.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

BIN
blbman40/lft-torso-g1.1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
blbman40/lft-torso-g2.2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
blbman40/lft-torso.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
blbman40/lft-torso1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
blbman40/lft-torso2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
blbman40/lft-upper_arm.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

169
blbman40/lft.cdf Normal file
View File

@ -0,0 +1,169 @@
/*******************************************************
POV-Ray - BlobMan People Costume Definition File
File Name : filename.cdf
BM_Version: 4.0
Desciption: Costume Definition File Layout
Date :
Author :
Email :
WWW :
Note :
********************************************************/
#declare CDF=true; //Used by Body_Part_Viewer.pov Can be removed.
/********************************************************
Image Maps & Textures
********************************************************/
//#declare BM_Skin_Tex = texture {}
//#declare BM_Lip_Tex = texture {}
//#declare BM_Hair_Tex = texture {}
//#declare BM_Tooth_Tex = texture {}
//#declare BM_Nail_Tex = texture {}
//#declare BM_EyeShadow = texture {}
//#declare BM_Map_Finish = finish {}
//#declare BM_Map_Normal = normal {}
//#declare BM_Bump_Map_Size = 0.25;
// PNG Image Maps for Body Parts these must be in your Library Path
//#declare Face_IMap = "filename.png"
//#declare Neck_IMap = "filename.png"
#declare Torso_IMap = "lft-torso.png"
#declare Abdomen_IMap = "lft-abdomen.png"
#declare Upperarm_R_IMap = "lft-upper_arm.png"
#declare Upperarm_L_IMap = "lft-upper_arm.png"
#declare Forearm_R_IMap = "lft-forearm.png"
#declare Forearm_L_IMap = "lft-forearm.png"
//#declare Hand_R_IMap = "filename.png"
//#declare Hand_L_IMap = "filename.png"
#declare Thigh_R_IMap = "lft-thigh.png"
#declare Thigh_L_IMap = "lft-thigh.png"
#declare Calf_R_IMap = "lft-calf.png"
#declare Calf_L_IMap = "lft-calf.png"
#declare Foot_R_IMap = "lft-foot.png"
#declare Foot_L_IMap = "lft-foot.png"
// PNG Bump Maps for Body Parts these must be in your Library Path
//#declare Face_BMap = "filename.png"
//#declare Neck_BMap = "filename.png"
//#declare Torso_BMap = "filename.png"
//#declare Abdomen_BMap = "filename.png"
//#declare Upperarm_R_BMap = "filename.png"
//#declare Upperarm_L_BMap = "filename.png"
//#declare Forearm_R_BMap = "filename.png"
//#declare Forearm_L_BMap = "filename.png"
//#declare Hand_R_BMap = "filename.png"
//#declare Hand_L_BMap = "filename.png"
//#declare Thigh_R_BMap = "filename.png"
//#declare Thigh_L_BMap = "filename.png"
//#declare Calf_R_BMap = "filename.png"
//#declare Calf_L_BMap = "filename.png"
//#declare Foot_R_BMap = "filename.png"
//#declare Foot_L_BMap = "filename.png"
/********************************************************
Body Part Options
********************************************************/
// Ears - 2 = Normal Ears, 1=Replace ears with small lumps as if under a swimming cap, 0 = No ears
//#declare BM_Ears=2;
// Eyes - 1=Normal 0=No Eyes
//#declare BM_Eyes=1;
// Nose - Range : 0 - 1.25 Size of Nose
//#declare BM_Nose=.5;
// Face - 1 = Normal Face Structure, 0 = Removes Nose and Lips
//#declare BM_Face=2;
// Teeth - 0 = No Teeth, 1 = Teeth
//#declare BM_Teeth=1;
// Jowls - Range : 0 - 3 Mass added to side of jaw.
//#declare BM_Jowls=0;
// Head - 1 = Normal Head, 0 = No Head, -1 = Guides
//#declare BM_Head_Mass=1;
// Torso - 1 = Normal Torso, 0 = No Torso, -1 = Guides
//#declare BM_Torso_Mass=1;
// Right Upperarm - 1 = Normal, 0 = Amputated, -1=Guide
//#declare BM_R_Upperarm_Mass=2;
// Right Forearm - 1 = Normal, 0 = Amputated, -1=Guide
//#declare BM_R_Forearm_Mass=2;
// Right Hand - 1 = Normal, 0 = Amputated
//#declare BM_R_Hand=1;
// Left Upperarm - 1 = Normal, 0 = Amputated, -1=Guide
//#declare BM_L_Upperarm_Mass=2;
// Left Forearm - 1 = Normal, 0 = Amputated, -1=Guide
//#declare BM_L_Forearm_Mass=2;
// Left Hand - 1 = Normal, 0 = Amputated
//#declare BM_L_Hand=1;
// Right Thigh - 1 = Normal, 0 = Amputated, -1=Guide
//#declare BM_R_Thigh_Mass=2;
// Right Calf - 1 = Normal, 0 = Amputated, -1=Guide
//#declare BM_R_Calf_Mass=2;
// Right Foot - 1 = Normal, 0 = Amputated
//#declare BM_R_Foot=1;
// Left Thigh - 1 = Normal, 0 = Amputated, -1=Guide
//#declare BM_L_Thigh_Mass=2;
// Left Calf - 1 = Normal, 0 = Amputated, -1=Guide
//#declare BM_L_Calf_Mass=2;
// Left Foot - 1 = Normal, 0 = Amputated
//#declare BM_L_Foot=1;
// Male Abdomen Muscle Flexing - 1 = On, 0 = off
//#declare BM_Flex=1;
// Female T-Shirt - 1 = On, 0 = Off
//#declare BM_TShirt=0;
// Finger Nails - 1 = On, 0 = Off
// #declare BM_Nails=1;
// Apply Iamge Maps to Right Hand Fingers - 1=On, 0=Off
//#declare BM_Map_R_Finger=1;
// Apply Iamge Maps to Left Hand Fingers - 1=On, 0=Off
//#declare BM_Map_L_Finger=1;
/********************************************************
Body Part Objects
********************************************************/
//#declare BM_Head_Object=object{BM_Head_Object}
//#declare BM_Neck_Object=object{BM_Neck_Object}
//#declare BM_Torso_Object=object{BM_Torso_Object}
//#declare BM_Abdomen_Object=object{BM_Abdomen_Object}
//#declare BM_Upperarm_R_Object=object {BM_Upperarm_R_Object}
//#declare BM_Upperarm_L_Object=object {BM_Upperarm_L_Object}
//#declare BM_Forearm_R_Object=object {BM_Forearm_R_Object}
//#declare BM_Forearm_L_Object=object {BM_Forearm_L_Object}
//#declare BM_Hand_R_Object=object {BM_Hand_R_Object}
//#declare BM_Hand_L_Object=object {BM_Hand_L_Object}
//#declare BM_Thigh_R_Object=object {BM_Thigh_R_Object}
//#declare BM_Thigh_L_Object=object {BM_Thigh_L_Object}
//#declare BM_Calf_R_Object=object {BM_Calf_R_Object}
//#declare BM_Calf_L_Object=object {BM_Calf_L_Object}
//#declare BM_Foot_R_Object=object {BM_Foot_R_Object}
//#declare BM_Foot_L_Object=object {BM_Foot_R_Object}
// End of Costume Definition File

62
blbman40/readme.txt Normal file
View File

@ -0,0 +1,62 @@
**************************************************************************
___ _ _ __ __
| _ ) |___| |__| \/ |__ _ _ _
| _ \ / _ \ '_ \ |\/| / _` | ' \ v4.0
|___/_\___/_.__/_| |_\__,_|_||_|
| _ \___ ___ _ __| |___
| _/ -_) _ \ '_ \ / -_)
|_| \___\___/ .__/_\___|
|_|
Humanoid figures for POV-Ray v3.1
by Peter Houston 1999, 2000
**************************************************************************
Files included in the distribution pack:
"BMPEOPLE.INC" : Main include file which compiles the Macros
"BMHEAD.INC" : Head Macro
"BMTORSO.INC" : Torso Macro
"BMHAND.INC" : Hand Macro
"BMFEET.INC" : Foot Macro
"BMHAIR.INC" : Hair Macro
"BMDEFS.INC" : Default Settings for Macros
"BM_POSE.INC" : Sample Pose Library.
"BM_HANDS.INC" : Sample Hand Pose Library.
"BM_HAIR.INC" : Sample Hair Style Library.
"SAMPLE.CDF" : Sample Costume Definition File - Astronaut
"CROFT.CDF" : Sample Costume Definition File - Lara ?
"LAYOUT.CDF" : Template for Costume Definition File
"BMMANUAL.TXT" : Instruction Manual.
"HOW2CDF.TXT" : Basic "How to.." document for CDF Creation
"README.TXT" : This File.
"BMFACE1.PNG" : Face Image Map.
"BMFACE2.PNG" : Face Image Map.
"BMFACE3.PNG" : Face Image Map.
"BMFACE4.PNG" : Face Image Map.
"BMFACE5.PNG" : Face Image Map.
"BMFACE6.PNG" : Face Iamge Map.
"TEMPLATE.PNG" : Template for Face Image Maps.
"SAMP1.PNG" : Image Map used in "Sample.cdf"
"CROFT1.PNG" : \
"CROFT2.PNG" : \
"CROFT3.PNG" : Image Maps used in "Croft.cdf"
"CROFT4.PNG" : /
"CROFT5.PNG" : /
"BLOB_MAN_STUDIO.POV" : POV Scene file used for creating Blob Man Poses.
"BODY_PART_VIEWER.POV" : POV Scene file used for testing Limb Objects.
"HAND_STUDIO.POV" : POV Scene File used for creating Hand Poses
"SAMPLE.POV" : Example scene file using sample poses, but not CDF's.
"SURFUR.POV" : Example scene file of the Silver Surfer.
"CROFT.POV" : Example scene file using croft.cdf
See "BMMANUAL.TXT" for full instructions regarding installation, usage,
contact information, etc.

BIN
blbman40/samp1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 B

702
blbman40/sample.cdf Normal file
View File

@ -0,0 +1,702 @@
/*******************************************************
POV-Ray - Blob_Man Costume Definition File
File Name : sample.cdf
BM_Version: 4.0
Desciption: Sample Costume Definition File - Astronaut
Date : 06 July 1999
Author : Peter Houston
Email : houston.graphics@iname.com
WWW : http://welcome.to/HoustonGraphics
********************************************************/
#declare CDF=true; //Used by Body_Part_Viewer.pov Can be removed.
#include "glass.inc"
/********************************************************
Image Maps & Textures
********************************************************/
//#declare Skin_Tex = texture {}
//#declare Lip_Tex = texture {}
//#declare Hair_Tex = texture {}
//#declare Tooth_Pig= pigment {}
#declare Map_Finish = finish {phong .15 phong_size 20 }
//#declare Map_Normal = normal {}
//#declare Bump_Map_Size = 0.25;
// PNG Image Maps for Body Parts these must be in your Library Path
//#declare Face_IMap = "filename.png"
#declare Torso_IMap = "samp1.png"
#declare Abdomen_IMap = "samp1.png"
#declare Upperarm_R_IMap = "samp1.png"
#declare Upperarm_L_IMap = "samp1.png"
#declare Forearm_R_IMap = "samp1.png"
#declare Forearm_L_IMap = "samp1.png"
#declare Hand_R_IMap = "samp1.png"
#declare Hand_L_IMap = "samp1.png"
#declare Thigh_R_IMap = "samp1.png"
#declare Thigh_L_IMap = "samp1.png"
#declare Calf_R_IMap = "samp1.png"
#declare Calf_L_IMap = "samp1.png"
#declare Foot_R_IMap = "samp1.png"
#declare Foot_L_IMap = "samp1.png"
/********************************************************
Body Part Options
********************************************************/
#declare BM_Nails=0;
// Ears - 2 = Normal Ears, 1=Replace ears with small lumps as if under a swimming cap, 0 = No ears
#declare BM_Ears=0;
// Eyes - 1=Normal 0=No Eyes
#declare BM_Eyes=1;
// Nose - Range : 0 - 1.25 Size of Nose
//#declare BM_Nose=.5;
// Face - 1 = Normal Face Structure, 0 = Removes Nose and Lips
#declare BM_Face=2;
// Jaw - Range: 0 - 1 0 = Closed, 1 = Open
//#declare BM_Jaw=.5;
// Teeth - 0 = No Teeth, 1 = Teeth
//#declare BM_Teeth=1;
// Jowls - Range : 0 - 3 Mass added to side of jaw.
//#declare BM_Jowls=0;
// Toes - 1 = Bare Foot with toes, 0 = Replaces toes so that foot looks like it has a sock on
#declare BM_Toes=0;
// Body Style - 0=Original Chest Modelling 1=New Chest Modelling
//#declare BM_BodyStyle=1;
// Hand Scale <X,Y,Z>
//#declare BM_Hand_Scale=<1,1,1>;
// Head - 1 = Normal Head, 0 = No Head, -1 = Guides
//#declare BM_Head_Mass=1;
// Torso - 1 = Normal Torso, 0 = No Torso, -1 = Guides
//#declare BM_Torso_Mass=1;
// Right Upperarm - 2 = Muscles, 1 = Cylinders, 0 = Amputated, -1=Guide
#declare BM_R_Upperarm_Mass=1;
// Right Forearm - 2 = Muscles, 1 = Cylinders, 0 = Amputated, -1=Guide
#declare BM_R_Forearm_Mass=1;
// Right Hand - 1 = Normal, 0 = Amputated
#declare BM_R_Hand=1;
// Left Upperarm - 2 = Muscles, 1 = Cylinders, 0 = Amputated, -1=Guide
#declare BM_L_Upperarm_Mass=1;
// Left Forearm - 2 = Muscles, 1 = Cylinders, 0 = Amputated, -1=Guide
#declare BM_L_Forearm_Mass=1;
// Left Hand - 1 = Normal, 0 = Amputated
#declare BM_L_Hand=1;
// Right Thigh - 2 = Muscles, 1 = Cylinders, 0 = Amputated, -1=Guide
#declare BM_R_Thigh_Mass=1;
// Right Calf - 2 = Muscles, 1 = Cylinders, 0 = Amputated, -1=Guide
#declare BM_R_Calf_Mass=1;
// Right Foot - 1 = Normal, 0 = Amputated
#declare BM_R_Foot=1;
// Left Thigh - 2 = Muscles, 1 = Cylinders, 0 = Amputated, -1=Guide
#declare BM_L_Thigh_Mass=1;
// Left Calf - 2 = Muscles, 1 = Cylinders, 0 = Amputated, -1=Guide
#declare BM_L_Calf_Mass=1;
// Left Foot - 1 = Normal, 0 = Amputated
#declare BM_L_Foot=1;
/********************************************************
Body Part Objects
********************************************************/
#declare Pouch=union { box {<1,0,0><-1,3,.5>}
cylinder {<1,0,.25><1,3,.25> .25}
cylinder {<-1,0,.25><-1,3,.25> .25}
cylinder {<-1,0,.25><1,0,.25> .25}
cylinder {<-1,3,.25><1,3,.25> .25}
sphere {<-1,0,.25>.25}
sphere {<-1,3,.25>.25}
sphere {< 1,0,.25>.25}
sphere {< 1,3,.25>.25}
difference {
cylinder {<0,0,0><0,0,-.25>1.25 rotate x*5}
plane{y,0 inverse}
translate <0,3.25,.2>
}
sphere {<0,2.5,-.25>.35 scale <1,1,.25> pigment {rgb 0}}
scale <1,1,2.5>
}
#declare ShoeGrip=texture {pigment {rgb .15}
finish {Map_Finish}
normal {crackle 3 scale <3,1,1>}
}
#declare BM_Head_Object=union {
object{BM_Head_Object}
union { // Headset
torus {4.35,.25
rotate x*90
clipped_by {plane {y,0 inverse}}
}
sphere{0,1 scale<1,1,1> scale <1,1.75,1.5> rotate z*5 translate<-3.5,-.85,0>}
sphere{0,1 scale<1,1,1> scale <1,1.75,1.5> rotate z*-5 translate<3.5,-.85,0>}
torus {4.25,.25
clipped_by {plane {x,0}}
clipped_by {plane {z,0}}
rotate x*-40
translate <0,-1,-1>
}
pigment {rgb 0}
}
}
#declare BM_Torso_Object=union {
object{BM_Torso_Object}
union {
cone{<-7,-10,1>3.5<-1.99,-10,1>,5}
cone{< 7,-10,1>3.5< 1.99,-10,1>,5}
cylinder {<-2,-10,1>< 2,-10,1> 5 }
}
torus {3,1 rotate z*90 translate <-7,-10,1>}
torus {3,1 rotate z*90 translate < 7,-10,1>}
superellipsoid {
<.5,.6>
scale <6,10,4>
translate <0,-17, 3>
}
cylinder {<0,-9,5><0,-29,4>3}
union {
cylinder {<-4,-9,5>< 4,-9,5> 3 }
sphere {<-4,-9,5> 3}
sphere {< 4,-9,5> 3}
}
union {
cylinder {<-4,-9,5>< 4,-9,5> 3 }
sphere {<-4,-9,5> 3}
sphere {< 4,-9,5> 3}
translate y*-19
}
union {
torus {1,.5 rotate x*90 translate <-3, 0,0>}
torus {1,.5 rotate x*90 translate <-3,-3,0>}
torus {1,.5 rotate x*90 translate <-3,-6,0>}
torus {1,.5 rotate x*90 translate <-3,-9,0>}
torus {1,.5 rotate x*90 translate <3, 0,0>}
torus {1,.5 rotate x*90 translate <3,-3,0>}
torus {1,.5 rotate x*90 translate <3,-6,0>}
torus {1,.5 rotate x*90 translate <3,-9,0>}
translate <0,-14,7>
}
cone {<0,0,0>6.15<0,3,0>6.3
scale <1.05,1,.65>
translate <0,-25,-.3>
}
union {
#declare Loop=30;
#while (Loop<360)
object {Pouch
translate <0,0,-7>
rotate y*Loop
}
#declare Loop=Loop+30;
#end
translate y*-25
scale <1.05,1,.65>
translate z*-.3
}
cylinder {<0,0,0><0,0,-1.8>5 translate <0,-15,-3> }
torus {4.5,.5 rotate x*90 translate <0,-15,-4.8>}
torus {2.5,.5 rotate x*90 translate <0,-15,-4.8>}
cylinder {< 4.5,0,1><0,-10,0>2 translate < 1,-15,-3> }
cylinder {<-4.5,0,1><0,-10,0>2 translate <-1,-15,-3> }
cylinder {<0,0,1><0,-10,0>2 translate < 1,-15,-3> }
cylinder {<0,0,1><0,-10,0>2 translate <-1,-15,-3> }
sphere {< 4.5,0,1>2 translate < 1,-15,-3>}
sphere {<-4.5,0,1>2 translate <-1,-15,-3>}
union {
#declare Length=20;
#declare Loop=0;
#while (Loop<Length)
torus {6,1
scale <1,1,.5>
translate <0,-Loop-10,0>
}
#declare Loop=Loop+1;
#end
}
torus {5,3 rotate z*90 translate <0,-28,1> scale <1,1,.75>}
merge {
sphere {0,8 clipped_by {plane {y,-0.0000001 inverse}}}
cone {<0,0,0>8<0,-10,0>5.5}
hollow
translate z*1
clipped_by {plane {y,-2 rotate x*-45 inverse}}
texture {T_Old_Glass}
}
merge {
sphere {0,8 clipped_by {plane {y,-0.0000001 inverse}}}
cone {<0,0,0>8<0,-10,0>5.5}
hollow
translate z*1
clipped_by {plane {y,-2 rotate x*-45}}
texture {
pigment {
image_map {
png Torso_IMap
map_type 2
interpolate 4
//once
}
rotate y*-90
scale 40
translate <0,-40,0>
}
#ifdef (Map_Finish)
finish {Map_Finish}
#end
#ifdef (Map_Normal)
normal {Map_Normal}
#end
#ifdef (Torso_BMap)
normal {
bump_map {
png Torso_BMap
map_type 2
interpolate 4
once
bump_size Bump_Map_Size
}
rotate y*-90
scale 40
translate <0,-40,0>
}
#end
}
}
difference {
union {
torus {3,.5 rotate z*90 translate <0,-5,7> rotate y*45}
torus {3,.5 rotate z*90 translate <0,-5,7> rotate y*-45}
}
cone {<0,0,0>8<0,-10,1>5.5}
}
}
#declare BM_Upperarm_R_Object=union {
object {BM_Upperarm_R_Object}
union {
#declare Length=11;
#declare Loop=0;
#while (Loop<Length)
torus {2.05,.65
translate y*-Loop
#if (Loop=4)
pigment {rgb <1,0,0>}
#end
}
#declare Loop=Loop+1;
#end
}
union {
#declare Loop=0;
#while (Loop<360)
torus {2.6,.8
rotate z*Loop
//rotate y*Loop
}
#declare Loop=Loop+30;
#end
sphere {0,2.6}
translate y*1
}
//pigment {rgb 1}
}
#declare BM_Upperarm_L_Object=union {
object {BM_Upperarm_L_Object}
union {
#declare Length=11;
#declare Loop=0;
#while (Loop<Length)
torus {2.05,.65
translate y*-Loop
}
#declare Loop=Loop+1;
#end
}
union {
#declare Loop=0;
#while (Loop<360)
torus {2.6,.8
rotate z*Loop
//rotate y*Loop
}
#declare Loop=Loop+30;
#end
sphere {0,2.6}
translate y*1
}
//pigment {rgb 1}
}
#declare BM_Forearm_R_Object=union {
object {BM_Forearm_R_Object}
union {
#declare Length=11;
#declare Loop=0;
#while (Loop<Length)
torus {2.05-(Loop/9),.65
translate y*-Loop
}
#declare Loop=Loop+1;
#end
}
union {
#declare Loop=0;
#while (Loop<360)
torus {2.4,.8
rotate x*Loop
//rotate y*Loop
}
#declare Loop=Loop+30;
#end
sphere {0,2.4}
}
//pigment {rgb 1}
}
#declare BM_Forearm_L_Object=union {
object {BM_Forearm_L_Object}
union {
#declare Length=11;
#declare Loop=0;
#while (Loop<Length)
torus {2.05-(Loop/9),.65
translate y*-Loop
}
#declare Loop=Loop+1;
#end
}
union {
#declare Loop=0;
#while (Loop<360)
torus {2.4,.8
rotate x*Loop
//rotate y*Loop
}
#declare Loop=Loop+30;
#end
sphere {0,2.4}
}
//pigment {rgb 1}
}
#declare BM_Hand_R_Object=union {
object {BM_Hand_R_Object}
union {
union {
sphere {0,.3 pigment {rgb .5}}
torus {.3,.2 rotate z*90 scale <.75,1,1>}
rotate y*-15
translate <-.5,-2.5,0>
rotate x*17
}
union {
sphere {0,.3 pigment {rgb .5}}
torus {.3,.2 rotate z*90 scale <.75,1,1>}
rotate y*-10
translate <-.5,-2.5,0 >
rotate x*0
}
union {
sphere {0,.3 pigment {rgb .5}}
torus {.3,.2 rotate z*90 scale <.75,1,1>}
rotate y*10
translate <-.5,-2.5, 0>
rotate x*-17
}
union {
sphere {0,.3 pigment {rgb .5}}
torus {.3,.2 rotate z*90 scale <.75,1,1>}
rotate y*45
translate <-.1,-2.5,0>
rotate x*-34
}
union {
cylinder {<-.45,0,0><-.45,-2.5,0>,.3 rotate x*17}
cylinder {<-.45,0,0><-.45,-2.5,0>,.3 rotate x*0}
cylinder {<-.45,0,0><-.45,-2.5,0>,.3 rotate x*-17}
cylinder {<-.25,0,0><-.1,-2.5,0>,.3 rotate x*-34}
translate <0,0,0>
}
translate z*0
}
torus {1.1,.6 scale <.65,1.5,1> translate x*.2}
//pigment {rgb 1}
}
#declare BM_Hand_L_Object=union {
object {BM_Hand_L_Object}
union {
union {
sphere {0,.3 pigment {rgb .5}}
torus {.3,.2 rotate z*90 scale <.75,1,1>}
rotate y*-15
translate <-.5,-2.5,0>
rotate x*17
}
union {
sphere {0,.3 pigment {rgb .5}}
torus {.3,.2 rotate z*90 scale <.75,1,1>}
rotate y*-10
translate <-.5,-2.5,0 >
rotate x*0
}
union {
sphere {0,.3 pigment {rgb .5}}
torus {.3,.2 rotate z*90 scale <.75,1,1>}
rotate y*10
translate <-.5,-2.5, 0>
rotate x*-17
}
union {
sphere {0,.3 pigment {rgb .5}}
torus {.3,.2 rotate z*90 scale <.75,1,1>}
rotate y*45
translate <-.1,-2.5,0>
rotate x*-34
}
union {
cylinder {<-.45,0,0><-.45,-2.5,0>,.3 rotate x*17}
cylinder {<-.45,0,0><-.45,-2.5,0>,.3 rotate x*0}
cylinder {<-.45,0,0><-.45,-2.5,0>,.3 rotate x*-17}
cylinder {<-.25,0,0><-.1,-2.5,0>,.3 rotate x*-34}
translate <0,0,0>
}
translate z*0
}
torus {1.1,.6 scale <.65,1.5,1> translate x*.2}
scale <-1,1,1>
//pigment {rgb 1}
}
#declare BM_Thigh_R_Object=union {
object {BM_Thigh_R_Object}
union {
#declare Length=16;
#declare Loop=0;
#while (Loop<Length)
torus {4.5-(Loop/14),.65
translate y*-Loop
}
#declare Loop=Loop+1;
#end
}
union {
#declare Loop=0;
#while (Loop<360)
torus {5,.65
rotate z*Loop
//rotate y*Loop
}
#declare Loop=Loop+15;
#end
sphere {0,3.35}
//translate y*1
}
translate y*16
rotate z*5
translate y*-16
}
#declare BM_Thigh_L_Object=union {
object {BM_Thigh_L_Object}
union {
#declare Length=16;
#declare Loop=0;
#while (Loop<Length)
torus {4.5-(Loop/14),.65
translate y*-Loop
}
#declare Loop=Loop+1;
#end
}
union {
#declare Loop=0;
#while (Loop<360)
torus {5,.65
rotate z*Loop
//rotate y*Loop
}
#declare Loop=Loop+15;
#end
sphere {0,3.35}
//translate y*1
}
translate y*16
rotate z*-5
translate y*-16
}
#declare BM_Calf_R_Object=union {
object {BM_Calf_R_Object}
union {
#declare Length=19;
#declare Loop=0;
#while (Loop<Length)
torus {3.4-(Loop*0.05),.65
translate y*-Loop
}
#declare Loop=Loop+1;
#end
}
union {
#declare Loop=0;
#while (Loop<360)
torus {3.75,.8
rotate x*Loop
//rotate y*Loop
}
#declare Loop=Loop+30;
#end
sphere {0,3.75}
}
union {
sphere { 0,1.5}
cylinder {<0,0,0><0,-8,0> 1.5 }
sphere {<0,-8,0>,1.5}
scale <1.6,1,1> rotate x*5 translate <0,-4,3.5>
}
torus {1,.5 scale <1,1,1.5> translate <2,-6,3.5>}
torus {1,.5 scale <1,1,1.5> translate <-2,-8,3.5>}
}
#declare BM_Calf_L_Object=union {
object {BM_Calf_L_Object}
union {
#declare Length=19;
#declare Loop=0;
#while (Loop<Length)
torus {3.4-(Loop*0.05),.65
translate y*-Loop
}
#declare Loop=Loop+1;
#end
}
union {
#declare Loop=0;
#while (Loop<360)
torus {3.75,.8
rotate x*Loop
//rotate y*Loop
}
#declare Loop=Loop+30;
#end
sphere {0,3.75}
}
union {
sphere { 0,1.5}
cylinder {<0,0,0><0,-8,0> 1.5 }
sphere {<0,-8,0>,1.5}
scale <1.6,1,1> rotate x*5 translate <0,-4,3.5>
}
torus {1,.5 scale <1,1,1.5> translate <2,-6,3.5>}
torus {1,.5 scale <1,1,1.5> translate <-2,-8,3.5>}
scale <-1,1,1>
}
#declare BM_Foot_R_Object=union{difference {
union {
cylinder {<0,-1,0><0,1,0>2 translate <0,0,7> texture {ShoeGrip}}
sphere{<0,0,.5>,3.25}
torus {2.25,.5 translate <0,0,7> texture {ShoeGrip}}
torus {2.0,.5 translate <0,1,7>}
torus {1.9,.5 translate <0,1.75,7>}
torus {1.8,.5 translate <0,2.5,7>}
torus {3,.5 translate <0,0,.5> texture {ShoeGrip}}
cone {<0,1.25,7>2.25,<0,-1,.5>3.25 scale <1,1.1,1>}
cone {<0,1.25,7>2.25,<0,-1,.5>3.25 scale <1.1,1.1,1> clipped_by {plane{y,.5}}texture {ShoeGrip}}
cone {<0,3.6,7>2,<0,-0.00001,7>2.5}
blob { threshold .5
#declare SideLoop=-60;
#while (SideLoop<61)
#declare Loop=5;
#while (Loop<60)
#declare Width=(61-Loop)/30;
sphere {0,Width,1 scale <1,1,1> translate <0,0,-3> rotate x*50 rotate x*Loop rotate y*SideLoop translate <0,-.5,1>}
sphere {0,Width,1 scale <1,1,1> translate <0,0,-3> rotate x*50 rotate x*-Loop rotate y*SideLoop translate <0,-.5,1>}
#declare Loop=Loop+10;
#end
#declare SideLoop=SideLoop+60;
#end
}
torus {.75,.35 rotate z*90 rotate y*5 translate <-2.1,2.5,7>}
}
plane {y,-.5 texture {ShoeGrip}}
translate <0,-3.6,-7>
}
torus {1.5,.5 scale <1,2,1>}
scale .85
translate <0,.5,-.35>
}
#declare BM_Foot_L_Object=union{difference {
union {
cylinder {<0,-1,0><0,1,0>2 translate <0,0,7> texture {ShoeGrip}}
sphere{<0,0,.5>,3.25}
torus {2.25,.5 translate <0,0,7> texture {ShoeGrip}}
torus {2.0,.5 translate <0,1,7>}
torus {1.9,.5 translate <0,1.75,7>}
torus {1.8,.5 translate <0,2.5,7>}
torus {3,.5 translate <0,0,.5> texture {ShoeGrip}}
cone {<0,1.25,7>2.25,<0,-1,.5>3.25 scale <1,1.1,1>}
cone {<0,1.25,7>2.25,<0,-1,.5>3.25 scale <1.1,1.1,1> clipped_by {plane{y,.5}}texture {ShoeGrip}}
cone {<0,3.6,7>2,<0,-0.00001,7>2.5}
blob { threshold .5
#declare SideLoop=-60;
#while (SideLoop<61)
#declare Loop=5;
#while (Loop<60)
#declare Width=(61-Loop)/30;
sphere {0,Width,1 scale <1,1,1> translate <0,0,-3> rotate x*50 rotate x*Loop rotate y*SideLoop translate <0,-.5,1>}
sphere {0,Width,1 scale <1,1,1> translate <0,0,-3> rotate x*50 rotate x*-Loop rotate y*SideLoop translate <0,-.5,1>}
#declare Loop=Loop+10;
#end
#declare SideLoop=SideLoop+60;
#end
}
torus {.75,.35 rotate z*90 rotate y*5 translate <-2.1,2.5,7>}
}
plane {y,-.5 texture {ShoeGrip}}
translate <0,-3.6,-7>
}
torus {1.5,.5 scale <1,2,1>}
scale .85
translate <0,.5,-.35>
scale <-1,1,1>
}
// EOF

BIN
blbman40/sample.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

107
blbman40/sample.pov Normal file
View File

@ -0,0 +1,107 @@
/********************************************************
Persistence of Vision Ray Tracer Scene Description File
File : sample.pov
BM_Version : 4.0
Description: Sample Scene using Blob Man Figures
Date : April 2000
Author : Peter Houston
Email : houston.graphics@iname.com
WWW : http://welcome.to/HoustonGraphics
*********************************************************/
global_settings { assumed_gamma 2.2 }
camera {
location <0, 2, -5>
direction 1.5*z
right 4/3*x
look_at <-.25, 1, 0>
}
sky_sphere {
pigment {
gradient y
color_map { [0.0 color rgb <0.7,0.7,1.0>] [1.0 color blue 0.5] }
}
}
light_source {
<-80, 80, -80>
color rgb <1,.9,.95>*1.5
spotlight
point_at <0, 0, 0>
radius .1
tightness 75
falloff 3
}
plane {y,0
pigment {checker pigment {rgb 0}, pigment {rgb 1} rotate y*16}
}
#declare Hair=off; // Warning : Turning hair on increase parsing time !
#include "bmpeople.inc"
#include "bm_pose.inc"
#declare BM_EyeLids=<.35,0,.35>
#declare BM_Jaw=.25;
#declare BM_Mouth=1;
#declare BM_MouthShape=1;
#declare BM_HairStyle=2*Hair;
#declare BM_PoseNo=11;
Blob_Man(Female,1.8)
object {BlobMan
transform BMO_Abdomen_L
rotate z*-85
}
#declare BM_HairStyle=1*Hair;
#declare BM_PoseNo=0;
Blob_Man(Female,1.8)
object {BlobMan
transform BMO_Foot_L
translate <-.5,0,1>
}
#declare BM_HairStyle=2*Hair;
#declare BM_PoseNo=2;
Blob_Man(Male,2)
object {BlobMan
transform BMO_Abdomen_U
rotate y*45
translate <1,0,-.5>
}
#declare BM_HairStyle=1*Hair;
#declare BM_PoseNo=7;
Blob_Man(Male,1.85)
object {BlobMan
transform BMO_Hand_R
translate <-1,0,0>
}
#declare BM_HairStyle=3*Hair;
#declare BM_PoseNo=6;
Blob_Man(Female,1.85)
object {BlobMan
transform BMO_Knee_R
rotate y*-45
translate <0,1,0>*BM_Scale
translate <-1.5,0,-1>
}
#declare BM_HairStyle=1*Hair;
#declare BM_PoseNo=8;
Blob_Man(Female,2)
object {BlobMan
transform BMO_Torso_B
rotate x*99
rotate y*30
translate <1,0,2.5>
}
// EOF

BIN
blbman40/surfer.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

92
blbman40/surfer.pov Normal file
View File

@ -0,0 +1,92 @@
/*******************************************************
Persistence of Vision Ray Tracer Scene Description File
File Name : silversurfer.pov
Version : 3.1
Desciption: Tribute to the comics I read as a youth.
Date : 23 April 1999
Author : Peter Houston
Email : houston.graphics@iname.com
WWW : http://members.xoom.com/HoustonGraph/
********************************************************/
#version 3.1;
#include "metals.inc"
global_settings {
assumed_gamma 2.2
}
// ----------------------------------------
camera {
location <-.5, -1, -5>
direction 1.5*z
right 4/3*x
look_at <0, .5, 0.0>
//rotate z*-15
}
sky_sphere {
pigment {
gradient z
color_map {
[0.0 color rgb <0.7,0.7,1.0>]
[1.0 color blue 0.5]
}
}
}
background {rgb .5}
light_source {
<-30, 100, -200>
rgb <.95,.98,.99>
}
// ----------------------------------------
#declare BM_Skin_Tex=texture {T_Chrome_1E}
#declare BM_Lip_Tex=BM_Skin_Tex
#declare BM_Tooth_Tex=BM_Skin_Tex
#declare BM_EyeShadow=BM_Skin_Tex
#include "bmpeople.inc"
#include "bm_pose.inc"
#declare BM_PoseNo=9
#declare BM_EyeSet=<1,0,1>;
#declare BM_Eyes=0;
#declare BM_Jaw=0;
#declare BM_Mouth=1;
#declare BM_MouthShape=1;
#declare BM_Jowls=-.25;
#declare BM_Ears=1;
#declare BM_Teeth=0;
#declare DeBug=off;
Blob_Man(1,2)
union {
object{ BlobMan
transform BMO_Foot_L
rotate z*-4.5
rotate y*-20
translate <.9,.06,0>
}
sphere { <0,0,0>.6
scale <3.5,.1,.5>
texture {T_Chrome_1E}
}
rotate y*30
rotate z*15
}
//EOF

BIN
blbman40/template.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

61
galaxy/AllObjs.pov Normal file
View File

@ -0,0 +1,61 @@
// GALAXY INCLUDE FILE: SAMPLE GALAXY OBJECTS
// ******************************************
// This scene shows all of the twenty galaxy objects created by
// Galaxy.obj. They are grouped by row (Stars, Nebulae, Galaxies,
// Comets, and Meteors at the bottom), numbered from left to right
// (starting at 1). For more information on using these objects,
// see Galaxy.txt
//
// Recommended resolution: 800 x 600 or larger, no anti-aliasing
// NARROW ANGLE CAMERA (TO PREVENT DISTORTION)
camera {location <0, 0, 0> look_at <0, 0, 1> angle 24}
// COMMON GALAXY OPTIONS
#declare galaxy_colour1 = <1.3, 1.2, .9>;
#declare galaxy_colour2 = <.4, .8, 1>;
#declare galaxy_cluster_name = ""
// STARFIELD BACKGROUND
#declare galaxy_bgstars = 2;
#declare galaxy_bgnebula = false;
#declare galaxy_nebula_sphere = false;
#include "GALAXY.BG"
// STAR OBJECTS
#declare galaxy_object_scale = .2;
#declare C = 0; #while (C < 4)
#declare galaxy_object_name = concat("Star", str(C + 1, 0, 0))
#declare galaxy_object_position = <7, -10 + C * 4, 0>;
#include "GALAXY.OBJ"
#declare C = C + 1; #end
// NEBULAE OBJECTS
#declare galaxy_object_scale = .15;
#declare C = 0; #while (C < 6)
#declare galaxy_object_name = concat("Nebula", str(C + 1, 0, 0))
#declare galaxy_object_position = <3, -10 + C * 4, 0>;
#include "GALAXY.OBJ"
#declare C = C + 1; #end
// GALAXY OBJECTS
#declare galaxy_object_rotate = 30;
#declare C = 0; #while (C < 5)
#declare galaxy_object_name = concat("Galaxy", str(C + 1, 0, 0))
#declare galaxy_object_position = <-1, -10 + C * 4, 0>;
#include "GALAXY.OBJ"
#declare C = C + 1; #end
// COMET OBJECTS
#declare C = 0; #while (C < 3)
#declare galaxy_object_name = concat("Comet", str(C + 1, 0, 0))
#declare galaxy_object_position = <-4.5, -11 + C * 4, 0>;
#include "GALAXY.OBJ"
#declare C = C + 1; #end
// METEOR OBJECTS
#declare C = 0; #while (C < 2)
#declare galaxy_object_name = concat("Meteor", str(C + 1, 0, 0))
#declare galaxy_object_position = <-7.5, -11 + C * 4, 0>;
#include "GALAXY.OBJ"
#declare C = C + 1; #end

20
galaxy/DnmcOpts.pov Normal file
View File

@ -0,0 +1,20 @@
// GALAXY INCLUDE FILE: DYNAMIC OPTIONS ANIMATION
// **********************************************
// This animation shows the effect of various galaxy options on the
// resulting galaxy scene.
//
// Recommended frames: 50 to 100, cyclic animation
// BACKGROUND STARFIELD AND MILKY WAY
#declare galaxy_bgstars = 5;
#declare galaxy_bgnebula = 6;
#declare galaxy_nebula_sphere = false;
#include "GALAXY.BG"
// ANIMATED NEBULA
#declare galaxy_nebula_sphere = 1;
#declare galaxy_colour1 = <1, .5, .4> + <0, .5, .2> * (sin((clock - .25) * pi) + 1) / 2;
#declare galaxy_colour2 = <0, .5, 1> + <1, -.3, -.3> * (sin((clock - .25) * pi) + 1) / 2;
#declare galaxy_pattern_scale = 1 + .4 * sin(clock * 2 * pi);
#declare galaxy_pattern_origin = <-10, 10, 10> + vrotate (z * .2, <45 * sin(clock * pi * 4), clock * 360, 0>);
#include "GALAXY.BG"

180
galaxy/GALAXY.BG Normal file
View File

@ -0,0 +1,180 @@
/*************************************************************************
GALAXY BACKGROUNDS FILE FOR PERSISTENCE OF VISION 3.x
**************************************************************************
Created by Chris Colefax, 1 February 1998
Updated 9 August 1998: updated for POV-Ray 3.1
See "Galaxy.htm" for more information.
*************************************************************************/
// CHECK VARIABLES AND ASSIGN DEFAULTS
// ***********************************
#declare _GX_bgtempver = version; #version 3.0;
#ifndef (galaxy_declare_only) #declare galaxy_declare_only = false; #end
#ifndef (galaxy_bgstars) #declare galaxy_bgstars = 2; #end
#ifndef (galaxy_bgnebula) #declare galaxy_bgnebula = 6; #end
#ifndef (galaxy_nebula_sphere) #declare galaxy_nebula_sphere = 1; #end
#ifndef (galaxy_nebula_ambient) #declare _GX_nebambient = <1, 1, 1>; #else #declare _GX_nebambient = galaxy_nebula_ambient * <1, 1, 1>; #end
#ifndef (galaxy_distance) #declare galaxy_distance = 1e4; #end
#ifndef (galaxy_pattern_scale) #declare galaxy_pattern_scale = 1; #end
#ifndef (galaxy_pattern_origin) #declare galaxy_pattern_origin = <0, 0, 0>; #end
#ifndef (galaxy_turb_origin) #declare galaxy_turb_origin = <0, 0, 0>; #end
#ifndef (galaxy_intensity) #declare galaxy_intensity = 1; #end
#ifdef (galaxy_colour1) #declare _GX_colour1 = galaxy_colour1 * <1, 1, 1>;
#else #ifdef (galaxy_color1) #declare _GX_colour1 = galaxy_color1 * <1, 1, 1>;
#else #declare _GX_colour1 = <1, 1, 1>; #end #end
#ifdef (galaxy_colour2) #declare _GX_colour2 = galaxy_colour2 * <1, 1, 1>;
#else #ifdef (galaxy_color2) #declare _GX_colour2 = galaxy_color2 * <1, 1, 1>;
#else #declare _GX_colour2 = _GX_colour1 - .3; #end #end
#ifdef (galaxy_colour3) #declare _GX_colour3 = galaxy_colour3 * <1, 1, 1>;
#else #ifdef (galaxy_color3) #declare _GX_colour3 = galaxy_color3 * <1, 1, 1>;
#else #declare _GX_colour3 = (_GX_colour1 + _GX_colour2) / 2; #end #end
#ifdef (galaxy_star_colouration) #declare _GX_starcolouration = galaxy_star_colouration;
#else #ifdef (galaxy_star_coloration) #declare _GX_starcolouration = galaxy_star_coloration;
#else #declare _GX_starcolouration = .2; #end #end
#declare _GX_finaltranslate = galaxy_turb_origin - galaxy_pattern_origin;
#ifndef (_GX_tracelevel) #declare _GX_tracelevel = 5; #end
// CALCULATE STAR COLOURS
// **********************
#if (_GX_starcolouration = 1)
#declare _GX_starcolour1 = _GX_colour1;
#declare _GX_starcolour2 = _GX_colour2;
#declare _GX_starcolour3 = _GX_colour3;
#else
#declare _GX_tempfloat1 = max(_GX_colour1.x, _GX_colour1.y); #declare _GX_tempfloat1 = max(_GX_tempfloat1, _GX_colour1.z);
#declare _GX_tempfloat2 = min(_GX_colour1.x, _GX_colour1.y); #declare _GX_tempfloat2 = min(_GX_tempfloat2, _GX_colour1.z);
#declare _GX_tempfloat1 = (_GX_tempfloat1 + _GX_tempfloat2) / 2; #declare _GX_starcolour1 = _GX_tempfloat1 + (_GX_colour1 - _GX_tempfloat1) * _GX_starcolouration;
#declare _GX_tempfloat1 = max(_GX_colour2.x, _GX_colour2.y); #declare _GX_tempfloat1 = max(_GX_tempfloat1, _GX_colour2.z);
#declare _GX_tempfloat2 = min(_GX_colour2.x, _GX_colour2.y); #declare _GX_tempfloat2 = min(_GX_tempfloat2, _GX_colour2.z);
#declare _GX_tempfloat1 = (_GX_tempfloat1 + _GX_tempfloat2) / 2; #declare _GX_starcolour2 = _GX_tempfloat1 + (_GX_colour2 - _GX_tempfloat1) * _GX_starcolouration;
#declare _GX_tempfloat1 = max(_GX_colour3.x, _GX_colour3.y); #declare _GX_tempfloat1 = max(_GX_tempfloat1, _GX_colour3.z);
#declare _GX_tempfloat2 = min(_GX_colour3.x, _GX_colour3.y); #declare _GX_tempfloat2 = min(_GX_tempfloat2, _GX_colour3.z);
#declare _GX_tempfloat1 = (_GX_tempfloat1 + _GX_tempfloat2) / 2; #declare _GX_starcolour3 = _GX_tempfloat1 + (_GX_colour3 - _GX_tempfloat1) * _GX_starcolouration;
#end
// CREATE STAR PIGMENTS
// ********************
#declare BGStars1 = pigment {leopard color_map {
[.6 rgb 0] [.9 rgb _GX_starcolour2 * .1] [.98 rgb _GX_starcolour3 * .4] [1 rgb _GX_starcolour1 * galaxy_intensity]}
scale 1e-15 translate -galaxy_pattern_origin}
#declare BGStars2 = pigment {leopard color_map {
[.4 rgb 0] [.75 rgb _GX_starcolour2 * .2] [.95 rgb _GX_starcolour3 * .5] [1 rgb _GX_starcolour1 * galaxy_intensity]}
scale 1e-15 translate -galaxy_pattern_origin}
#declare BGStars3 = pigment {leopard color_map {
[.1 rgb 0] [.5 rgb _GX_starcolour2 * .3] [.85 rgb _GX_starcolour3 * .6] [1 rgb _GX_starcolour1 * galaxy_intensity]}
scale 1e-15 translate -galaxy_pattern_origin}
#declare BGStars4 = pigment {leopard color_map {
[.97 rgb 0] [.975 rgb _GX_starcolour2 * galaxy_intensity]
[.98 rgb 0] [.985 rgb _GX_starcolour3 * galaxy_intensity]
[.99 rgb 0] [1 rgb _GX_starcolour1 * galaxy_intensity]}
scale 1e-15 translate -galaxy_pattern_origin}
#declare BGStars5 = pigment {leopard color_map {
[.85 rgb 0] [.87 rgb _GX_starcolour2 * galaxy_intensity]
[.89 rgb 0] [.92 rgb _GX_starcolour3 * galaxy_intensity]
[.95 rgb 0] [1 rgb _GX_starcolour1 * galaxy_intensity]}
scale 1e-15 translate -galaxy_pattern_origin}
#declare BGStars6 = pigment {leopard color_map {
[.7 rgb 0] [.75 rgb _GX_starcolour2 * 1.5 * galaxy_intensity]
[.8 rgb 0] [.85 rgb _GX_starcolour3 * 1.5 * galaxy_intensity]
[.9 rgb 0] [1 rgb _GX_starcolour1 * 1.5 * galaxy_intensity]}
scale 1e-15 translate -galaxy_pattern_origin}
#declare BGMilkyWay = pigment {gradient y pigment_map {
[.03 granite color_map {[.1 rgb _GX_starcolour3 transmit pow(.9, galaxy_intensity)] [.8 rgb _GX_starcolour1 transmit pow(.7, galaxy_intensity)]} scale .8 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[.08 granite color_map {[.4 rgb _GX_starcolour2 transmit 1] [1 rgb _GX_starcolour3 transmit pow(.8, galaxy_intensity)]} scale .6 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[.1 rgb _GX_starcolour2 transmit 1]}
scale 3
translate -galaxy_turb_origin warp {turbulence .3 octaves 4 lambda 3} translate galaxy_turb_origin}
// CREATE NEBULAE PIGMENTS
// ***********************
#declare BGNebula1 = pigment {bozo pigment_map {
[-.3 granite color_map {[0 rgb _GX_colour1 transmit pow(.1, galaxy_intensity)] [1 rgb _GX_colour1 transmit pow(.6, galaxy_intensity)]} scale 6 * galaxy_pattern_scale]
[.4 granite color_map {[0 rgb _GX_colour3 transmit pow(.6, galaxy_intensity)] [.5 rgb _GX_colour2 transmit pow(.95, galaxy_intensity)]} scale 3 * galaxy_pattern_scale]
[.9 rgb _GX_colour2 transmit 1]}
scale .3
translate -galaxy_turb_origin warp {turbulence .18 octaves 4 omega .4 lambda 3} translate _GX_finaltranslate}
#declare BGNebula2 = pigment {bozo pigment_map {
[-.3 wrinkles color_map {[0 rgb _GX_colour1 transmit pow(.1, galaxy_intensity)] [1 rgb _GX_colour3 transmit pow(.6, galaxy_intensity)]}
warp {turbulence 2 octaves 1} scale 1.5 * galaxy_pattern_scale]
[.4 wrinkles color_map {[0 rgb _GX_colour3 transmit pow(.5, galaxy_intensity)] [.5 rgb _GX_colour2 transmit pow(.9, galaxy_intensity)]}
warp {turbulence 1 octaves 1} scale galaxy_pattern_scale]
[.7 rgb _GX_colour2 transmit 1]}
scale .3
translate -galaxy_turb_origin warp {turbulence .15 octaves 2 lambda 4} translate _GX_finaltranslate}
#declare BGNebula3 = pigment {leopard pigment_map {
[-.1 rgbt _GX_colour2 transmit 1]
[.4 wrinkles color_map {[0 rgb _GX_colour2 transmit 1] [1 rgb _GX_colour3 transmit pow(.6, galaxy_intensity)]}
scale .8 * galaxy_pattern_scale translate -galaxy_turb_origin]
[1 granite color_map {[.05 rgb _GX_colour3 transmit 1] [.3 rgb _GX_colour1 transmit pow(.1, galaxy_intensity)]}
scale 6 * galaxy_pattern_scale translate galaxy_turb_origin]}
scale .13
translate -galaxy_turb_origin warp {turbulence .3 octaves 4 lambda 3 omega .4} translate _GX_finaltranslate}
#declare BGNebula4 = pigment {bozo pigment_map {
[0 granite color_map {[0 rgb _GX_colour1 transmit pow(.4, galaxy_intensity)] [1 rgb _GX_colour3 transmit pow(.95, galaxy_intensity)]} scale 2 * galaxy_pattern_scale]
[.6 granite color_map {[0 rgb _GX_colour3 transmit pow(.6, galaxy_intensity)] [.4 rgb _GX_colour2 transmit 1]} scale 1.7 * galaxy_pattern_scale]
[.9 rgb _GX_colour2 transmit 1]}
scale .3
translate -galaxy_turb_origin warp {turbulence .5 octaves 4 omega .4 lambda 3} translate _GX_finaltranslate}
#declare BGNebula5 = pigment {bozo pigment_map {
[-.1 wrinkles color_map {[.1 rgb _GX_colour2 transmit 1] [.4 rgb _GX_colour3 transmit pow(.5, galaxy_intensity)] [.8 rgb _GX_colour1 transmit pow(.1, galaxy_intensity)]} scale .3 * galaxy_pattern_scale]
[.4 wrinkles color_map {[.5 rgb _GX_colour2 transmit 1] [1 rgb _GX_colour3 transmit pow(.4, galaxy_intensity)]} scale .3 * galaxy_pattern_scale]
[.6 rgb _GX_colour2 transmit 1]}
scale .22
translate -galaxy_turb_origin warp {turbulence .2 octaves 4 omega .3 lambda 5} translate _GX_finaltranslate}
// CREATE GALAXY BACKGROUND (SKYSPHERE)
// ************************************
#if (galaxy_declare_only = false)
#ifndef (galaxy_sky_sphere) #if (galaxy_bgstars != false | galaxy_bgnebula != false)
sky_sphere {
#if (galaxy_bgstars != false) pigment { #switch (abs(int(galaxy_bgstars)))
#case (1) BGStars1 #break #case (3) BGStars3 #break #case (4) BGStars4 #break
#case (5) BGStars5 #break #case (6) BGStars6 #break #else BGStars2 #end }
#end
#if (galaxy_bgnebula != false) pigment { #switch (abs(int(galaxy_bgnebula)))
#case (1) BGNebula1 #break #case (2) BGNebula2 #break #case (3) BGNebula3 #break
#case (4) BGNebula4 #break #case (5) BGNebula5 #break #else BGMilkyWay #end
#ifdef (galaxy_rotate) rotate galaxy_rotate #end }
#end
}
#declare galaxy_sky_sphere = false;
#declare galaxy_bgstars = false;
#declare galaxy_bgnebula = false;
// CREATE DUMMY OBJECT (TO PREVENT "No objects in scene" ERROR)
// ************************************************************
#if (galaxy_nebula_sphere = false) sphere {<0, 0, 0>, 0 pigment {rgb <0, 0, 0>}} #end
#end #end
// CREATE NEBULA SPHERE
// ********************
#if (galaxy_nebula_sphere != false) sphere {<0, 0, 0>, 1
pigment { #switch (abs(int(galaxy_nebula_sphere)))
#case (2) BGNebula2 #break #case (3) BGNebula3 #break #case (4) BGNebula4 #break
#case (5) BGNebula5 #break #else BGNebula1 #end
translate -galaxy_pattern_origin}
finish {ambient _GX_nebambient diffuse 0 reflection 0 phong 0 specular 0 crand 0}
no_shadow hollow scale galaxy_distance
#ifdef (galaxy_rotate) rotate galaxy_rotate #end
#ifdef (galaxy_origin) translate -galaxy_origin #end }
#declare galaxy_distance = galaxy_distance * 1.001;
#declare _GX_tracelevel = _GX_tracelevel + 1;
global_settings {max_trace_level min(_GX_tracelevel, 30)}
#end #end #version _GX_bgtempver;

154
galaxy/GALAXY.INC Normal file
View File

@ -0,0 +1,154 @@
/*************************************************************************
GALAXY INCLUDE FILE FOR PERSISTENCE OF VISION 3.x
**************************************************************************
Created by Chris Colefax, 1 February 1998
Updated 9 August 1998: updated for POV-Ray 3.1
NOTE: This file requires that Galaxy.bg, Galaxy.obj and Galaxy.sf
be properly installed. See "Galaxy.htm" for more information.
*************************************************************************/
// CHECK VARIABLES AND ASSIGN DEFAULTS
// ***********************************
#declare _GX_tempver = version; #version 3.0;
#ifndef (galaxy_seed) #declare galaxy_seed = 0; #end
#ifndef (galaxy_bg) #declare galaxy_bg = true; #end
#ifndef (galaxy_objects) #declare galaxy_objects = true; #end
#ifndef (galaxy_starfield) #declare galaxy_starfield = true; #end
#ifndef (options_only) #declare options_only = false; #end
#ifndef (debug_options) #declare debug_options = false; #end
#ifdef (galaxy_colour) #declare _GX_colour = galaxy_colour * <1, 1, 1>;
#else #ifdef (galaxy_color) #declare _GX_colour = galaxy_color * <1, 1, 1>;
#else #declare _GX_colour = <1, 1, 1>; #end #end
#ifdef (galaxy_colouration) #declare _GX_colouration = galaxy_colouration;
#else #ifdef (galaxy_coloration) #declare _GX_colouration = galaxy_coloration;
#else #declare _GX_colouration = .5; #end #end
#ifdef (galaxy_colour_turb) #declare _GX_colourturb = galaxy_colour_turb * <1, 1, 1>;
#else #ifdef (galaxy_color_turb) #declare _GX_colourturb = galaxy_color_turb * <1, 1, 1>;
#else #declare _GX_colourturb = <.2, .2, .2>; #end #end
// SELECT FIRST GALAXY HUE AND CONVERT TO RGB VALUE
// ************************************************
#declare _GX_rand = seed(galaxy_seed);
#declare _GX_tempfloat1 = rand(_GX_rand);
#switch (_GX_tempfloat1)
#range (0, .333) #declare galaxy_colour1 = <1, _GX_tempfloat1 * 3, 0>; #break
#range (.333, .444) #declare galaxy_colour1 = <1 - (_GX_tempfloat1 * 9 - 3), 1, 0>; #break
#range (.444, .555) #declare galaxy_colour1 = <0, 1, _GX_tempfloat1 * 9 - 4>; #break
#range (.555, .667) #declare galaxy_colour1 = <0, 1 - (_GX_tempfloat1 * 9 - 4), 1>; #break
#range (.667, .833) #declare galaxy_colour1 = <_GX_tempfloat1 * 6 - 4, 0, 1>; #break
#range (.833, 1) #declare galaxy_colour1 = <1, 0, 1 - (_GX_tempfloat1 * 6 - 5)>; #end
#declare galaxy_colour1 = (1 + ((galaxy_colour1 - .5) * _GX_colouration)) * _GX_colour;
// SELECT SECOND GALAXY HUE AND CONVERT TO RGB VALUE
// *************************************************
#declare _GX_tempfloat1 = _GX_tempfloat1 + ((_GX_colourturb.x + _GX_colourturb.y + _GX_colourturb.z) / (rand(_GX_rand) < .5 ? 3 : -3));
#declare _GX_tempfloat1 = mod(_GX_tempfloat1, 1) + (_GX_tempfloat1 < 0 ? 1 : 0);
#switch (_GX_tempfloat1)
#range (0, .333) #declare galaxy_colour2 = <1, _GX_tempfloat1 * 3, 0>; #break
#range (.333, .444) #declare galaxy_colour2 = <1 - (_GX_tempfloat1 * 9 - 3), 1, 0>; #break
#range (.444, .555) #declare galaxy_colour2 = <0, 1, _GX_tempfloat1 * 9 - 4>; #break
#range (.555, .667) #declare galaxy_colour2 = <0, 1 - (_GX_tempfloat1 * 9 - 4), 1>; #break
#range (.667, .833) #declare galaxy_colour2 = <_GX_tempfloat1 * 6 - 4, 0, 1>; #break
#range (.833, 1) #declare galaxy_colour2 = <1, 0, 1 - (_GX_tempfloat1 * 6 - 5)>; #end
#declare galaxy_colour2 = (.8 + ((galaxy_colour2 - .5) * _GX_colouration)) * _GX_colour;
// SELECT RANDOM OPTIONS
// *********************
#declare galaxy_pattern_scale = .6 + (rand(_GX_rand) * .8);
#declare galaxy_pattern_origin = (<rand(_GX_rand), rand(_GX_rand), rand(_GX_rand)> - .5) * 50;
#declare galaxy_turb_origin = (<rand(_GX_rand), rand(_GX_rand), rand(_GX_rand)> - .5) * 50;
#declare galaxy_star_colouration = rand(_GX_rand) - .5;
#declare _GX_colourturb = _GX_colourturb * _GX_colouration;
// SELECT RANDOM GALAXY.BG OPTIONS
// *******************************
#declare galaxy_bgstars = 1 + int(rand(_GX_rand) * 5.99);
#declare galaxy_bgnebula = min(1 + int(rand(_GX_rand) * 10), 6);
#declare galaxy_nebula_sphere = 1 + int(rand(_GX_rand) * 4.99);
#declare galaxy_nebula_ambient = 1 + (<rand(_GX_rand), rand(_GX_rand), rand(_GX_rand)> - .5) * _GX_colourturb;
// SELECT RANDOM GALAXY.OBJ OPTIONS
// ********************************
#declare _GX_tempfloat1 = rand(_GX_rand)
#if (_GX_tempfloat1 <= .6)
#declare galaxy_cluster_name = concat("Star", str(1 + int(rand(_GX_rand) * 3.99), 0, 0))
#declare galaxy_cluster_objects = 6 + int(rand(_GX_rand) * 6);
#declare galaxy_cluster_rotate = min(0, mod(rand(_GX_rand) * 90, 15) - 45);
#else #declare galaxy_cluster_name = "" #end
#declare galaxy_object_scale = 1 + rand(_GX_rand);
#declare galaxy_object_flatten = .1 + rand(_GX_rand) * .5;
#declare galaxy_object_rotate = (rand(_GX_rand) - .5) * 90;
#declare galaxy_cluster_scale = galaxy_object_scale * (.3 + (rand(_GX_rand) * .4));
#switch (_GX_tempfloat1)
#range (0, .3) #declare galaxy_object_name = concat("Nebula", str(1 + int(rand(_GX_rand) * 5.3), 0, 0)) #break
#range (.3, .6) #declare galaxy_object_name = concat("Star", str(1 + int(rand(_GX_rand) * 3.99), 0, 0)) #declare galaxy_object_rotate = galaxy_cluster_rotate #break
#range (.6, .8) #declare galaxy_object_name = concat("Comet", str(1 + int(rand(_GX_rand) * 2.99), 0, 0)) #break
#else
#declare galaxy_cluster_name = concat("Meteor", str(1 + int(rand(_GX_rand) * 1.4), 0, 0))
#declare galaxy_cluster_objects = 4 + int(rand(_GX_rand) * 4);
#declare galaxy_cluster_rotate = (rand(_GX_rand) - .5) * 90;
#declare galaxy_object_name = ""
#end
// SELECT RANDOM STARFIELD OPTIONS
// *******************************
#declare star_type = int(rand(_GX_rand) * 2.99) + 1;
#declare star_colour = _GX_colour;
#declare star_colour_turb = _GX_colourturb;
// WRITE OPTION VALUES TO DEBUG STREAM
// ***********************************
#if (debug_options != false)
#debug concat("// GALAXY INCLUDE FILE OPTIONS (galaxy_seed = ", str(galaxy_seed, 0, 0), ")\r\n")
#debug concat(" #declare galaxy_colour1 = <", str(galaxy_colour1.x, 0, 3), ", ", str(galaxy_colour1.y, 0, 3), ", ", str(galaxy_colour1.z, 0, 3), ">;\r\n")
#debug concat(" #declare galaxy_colour2 = <", str(galaxy_colour2.x, 0, 3), ", ", str(galaxy_colour2.y, 0, 3), ", ", str(galaxy_colour2.z, 0, 3), ">;\r\n")
#debug concat(" #declare galaxy_pattern_scale = ", str(galaxy_pattern_scale, 0, 3), ";\r\n")
#debug concat(" #declare galaxy_pattern_origin = <", str(galaxy_pattern_origin.x, 0, 3), ", ", str(galaxy_pattern_origin.y, 0, 3), ", ", str(galaxy_pattern_origin.z, 0, 3), ">;\r\n")
#debug concat(" #declare galaxy_turb_origin = <", str(galaxy_turb_origin.x, 0, 3), ", ", str(galaxy_turb_origin.y, 0, 3), ", ", str(galaxy_turb_origin.z, 0, 3), ">;\r\n")
#debug concat(" #declare galaxy_star_colouration = ", str(galaxy_star_colouration, 0, 3), ";\r\n")
#debug "\r\n"
#debug concat(" #declare galaxy_bgstars = ", str(galaxy_bgstars, 0, 0), ";\r\n")
#debug concat(" #declare galaxy_bgnebula = ", str(galaxy_bgnebula, 0, 0), ";\r\n")
#debug concat(" #declare galaxy_nebula_sphere = ", str(galaxy_nebula_sphere, 0, 0), ";\r\n")
#debug concat(" #declare galaxy_nebula_ambient = <", str(galaxy_nebula_ambient.x, 0, 3), ", ", str(galaxy_nebula_ambient.y, 0, 3), ", ", str(galaxy_nebula_ambient.z, 0, 3), ">;\r\n")
#debug "\r\n"
#debug concat(" #declare galaxy_object_name = \"", galaxy_object_name, "\"\r\n")
#if (strlen (galaxy_object_name) > 0)
#debug concat(" #declare galaxy_object_scale = ", str(galaxy_object_scale, 0, 3), ";\r\n")
#debug concat(" #declare galaxy_object_flatten = ", str(galaxy_object_flatten, 0, 3), ";\r\n")
#debug concat(" #declare galaxy_object_rotate = ", str(galaxy_object_rotate, 0, 1), ";\r\n")
#end
#debug concat(" #declare galaxy_cluster_name = \"", galaxy_cluster_name, "\"\r\n")
#if (strlen (galaxy_cluster_name) > 0)
#debug concat(" #declare galaxy_cluster_objects = ", str(galaxy_cluster_objects, 0, 0), ";\r\n")
#debug concat(" #declare galaxy_cluster_scale = ", str(galaxy_cluster_scale, 0, 3), ";\r\n")
#debug concat(" #declare galaxy_cluster_rotate = ", str(galaxy_cluster_rotate, 0, 1), ";\r\n")
#end
#debug "\r\n"
#debug concat(" #declare star_type = ", str(star_type, 0, 0), ";\r\n")
#debug concat(" #declare star_colour = <", str(star_colour.x, 0, 3), ", ", str(star_colour.y, 0, 3), ", ", str(star_colour.z, 0, 3), ">;\r\n")
#debug concat(" #declare star_colour_turb = <", str(star_colour_turb.x, 0, 3), ", ", str(star_colour_turb.y, 0, 3), ", ", str(star_colour_turb.z, 0, 3), ">;\r\n")
#debug "\r\n\r\n"
#end
// CREATE GALAXY BACKGROUND, OBJECTS AND STARFIELD
// ***********************************************
#if (options_only = false)
#if (galaxy_bg != false) #include "GALAXY.BG" #end
#if (galaxy_objects != false) #include "GALAXY.OBJ" #end
#if (galaxy_starfield != false) #include "GALAXY.SF" #end
#end
#declare galaxy_objects = false;
#declare galaxy_starfield = false;
// SELECT NEW GALAXY SEED (FOR SUBSQUENT GALAXY.INC INCLUSIONS)
// ************************************************************
#declare galaxy_seed = (rand(_GX_rand) - .5) * 2e6;
#version _GX_tempver;

461
galaxy/GALAXY.OBJ Normal file
View File

@ -0,0 +1,461 @@
/*************************************************************************
GALAXY OBJECTS FILE FOR PERSISTENCE OF VISION 3.x
**************************************************************************
Created by Chris Colefax, 1 February 1998
Updated 9 August 1998: updated for POV-Ray 3.1
See "Galaxy.htm" for more information.
*************************************************************************/
// CHECK VARIABLES AND ASSIGN DEFAULTS
// ***********************************
#declare _GX_objtempver = version; #version 3.0;
#ifndef (galaxy_seed) #declare galaxy_seed = 0; #end
#ifndef (galaxy_declare_only) #declare galaxy_declare_only = false; #end
#ifndef (galaxy_distance) #declare galaxy_distance = 1e4; #end
#ifndef (galaxy_pattern_scale) #declare galaxy_pattern_scale = 1; #end
#ifndef (galaxy_pattern_origin) #declare galaxy_pattern_origin = <0, 0, 0>; #end
#ifndef (galaxy_turb_origin) #declare galaxy_turb_origin = <0, 0, 0>; #end
#ifndef (galaxy_intensity) #declare galaxy_intensity = 1; #end
#ifndef (galaxy_object_name) #declare galaxy_object_name = "Nebula" #end
#ifndef (galaxy_object_scale) #declare galaxy_object_scale = 1; #end
#ifndef (galaxy_object_flatten) #declare galaxy_object_flatten = .2; #end
#ifndef (galaxy_object_rotate) #declare galaxy_object_rotate = 0; #end
#ifndef (galaxy_object_position) #declare galaxy_object_position = <0, 0, 0>; #end
#ifndef (galaxy_cluster_name) #declare galaxy_cluster_name = "Star" #end
#ifndef (galaxy_cluster_objects) #declare galaxy_cluster_objects = 6; #end
#ifndef (galaxy_cluster_scale) #declare galaxy_cluster_scale = galaxy_object_scale * .5; #end
#ifndef (galaxy_cluster_rotate) #declare galaxy_cluster_rotate = galaxy_object_rotate; #end
#ifndef (galaxy_scale_turb) #declare galaxy_scale_turb = .5; #end
#ifndef (galaxy_rotate_turb) #declare galaxy_rotate_turb = 0; #end
#ifndef (galaxy_cluster_spread) #declare _GX_spread = <15, 15, 0> * galaxy_object_scale; #else #declare _GX_spread = galaxy_cluster_spread * <1, 1, 0>; #end
#ifdef (galaxy_colour1) #declare _GX_colour1 = galaxy_colour1 * <1, 1, 1>;
#else #ifdef (galaxy_color1) #declare _GX_colour1 = galaxy_color1 * <1, 1, 1>;
#else #declare _GX_colour1 = <1, 1, 1>; #end #end
#ifdef (galaxy_colour2) #declare _GX_colour2 = galaxy_colour2 * <1, 1, 1>;
#else #ifdef (galaxy_color2) #declare _GX_colour2 = galaxy_color2 * <1, 1, 1>;
#else #declare _GX_colour2 = _GX_colour1 - .3; #end #end
#ifdef (galaxy_colour3) #declare _GX_colour3 = galaxy_colour3 * <1, 1, 1>;
#else #ifdef (galaxy_color3) #declare _GX_colour3 = galaxy_color3 * <1, 1, 1>;
#else #declare _GX_colour3 = (_GX_colour1 + _GX_colour2) / 2; #end #end
#ifdef (galaxy_star_colouration) #declare _GX_starcolouration = galaxy_star_colouration;
#else #ifdef (galaxy_star_coloration) #declare _GX_starcolouration = galaxy_star_coloration;
#else #declare _GX_starcolouration = .2; #end #end
#ifdef (galaxy_colour_turb) #declare _GX_colourturb = galaxy_colour_turb * <1, 1, 1>;
#else #ifdef (galaxy_color_turb) #declare _GX_colourturb = galaxy_color_turb * <1, 1, 1>;
#else #declare _GX_colourturb = <.2, .2, .2>; #end #end
#declare _GX_finaltranslate = galaxy_turb_origin - galaxy_pattern_origin;
#ifndef (_GX_tracelevel) #declare _GX_tracelevel = 5; #end
#if (galaxy_object_flatten > 0) #declare _GX_flatten = <1, 1.01 - mod(galaxy_object_flatten, 1), 1>;
#else #declare _GX_flatten = <mod(galaxy_object_flatten, 1) + 1.01, 1, 1>; #end
// CALCULATE STAR COLOURS
// **********************
#if (_GX_starcolouration = 1)
#declare _GX_starcolour1 = _GX_colour1;
#declare _GX_starcolour2 = _GX_colour2;
#declare _GX_starcolour3 = _GX_colour3;
#else
#declare _GX_tempfloat1 = max(_GX_colour1.x, _GX_colour1.y); #declare _GX_tempfloat1 = max(_GX_tempfloat1, _GX_colour1.z);
#declare _GX_tempfloat2 = min(_GX_colour1.x, _GX_colour1.y); #declare _GX_tempfloat2 = min(_GX_tempfloat2, _GX_colour1.z);
#declare _GX_tempfloat1 = (_GX_tempfloat1 + _GX_tempfloat2) / 2; #declare _GX_starcolour1 = _GX_tempfloat1 + (_GX_colour1 - _GX_tempfloat1) * _GX_starcolouration;
#declare _GX_tempfloat1 = max(_GX_colour2.x, _GX_colour2.y); #declare _GX_tempfloat1 = max(_GX_tempfloat1, _GX_colour2.z);
#declare _GX_tempfloat2 = min(_GX_colour2.x, _GX_colour2.y); #declare _GX_tempfloat2 = min(_GX_tempfloat2, _GX_colour2.z);
#declare _GX_tempfloat1 = (_GX_tempfloat1 + _GX_tempfloat2) / 2; #declare _GX_starcolour2 = _GX_tempfloat1 + (_GX_colour2 - _GX_tempfloat1) * _GX_starcolouration;
#declare _GX_tempfloat1 = max(_GX_colour3.x, _GX_colour3.y); #declare _GX_tempfloat1 = max(_GX_tempfloat1, _GX_colour3.z);
#declare _GX_tempfloat2 = min(_GX_colour3.x, _GX_colour3.y); #declare _GX_tempfloat2 = min(_GX_tempfloat2, _GX_colour3.z);
#declare _GX_tempfloat1 = (_GX_tempfloat1 + _GX_tempfloat2) / 2; #declare _GX_starcolour3 = _GX_tempfloat1 + (_GX_colour3 - _GX_tempfloat1) * _GX_starcolouration;
#end
// START LOOP TO CREATE SINGLE AND CLUSTER OBJECTS
// ***********************************************
#declare _GX_name = strupr(galaxy_object_name)
#declare _GX_objscale = galaxy_object_scale * <1, 1, 1>;
#declare _GX_objloop = 0; #while (_GX_objloop < 2)
#declare _GX_objcreated = false;
#if (strcmp(_GX_name, "-") != 0 & strlen(_GX_name) != 0)
// SELECT STAR OBJECTS
// *******************
#if (strcmp(substr(_GX_name, 1, 1), "S") = 0)
#if (strcmp(_GX_name, "STAR") = 0 | strcmp(_GX_name, "STAR1") = 0 | strcmp(_GX_name, "S1") = 0)
#declare _GX_object = disc {0, z, .999 pigment {average pigment_map {
[1 onion color_map {
[.1 rgb _GX_starcolour1 * 8 transmit pow(.05, galaxy_intensity)] [.3 rgb _GX_starcolour3 * 2 transmit pow(.2, galaxy_intensity)]
[.35 rgb _GX_starcolour1 * 3 transmit pow(.1, galaxy_intensity)] [.4 rgb _GX_starcolour3 * 1.5 transmit pow(.2, galaxy_intensity)]
[.7 rgb _GX_starcolour2 transmit pow(.5, galaxy_intensity)] [.71 rgb _GX_starcolour3 * 1.5 transmit pow(.4, galaxy_intensity)]
[.72 rgb _GX_starcolour2 transmit pow(.5, galaxy_intensity)] [1 rgb _GX_starcolour2 transmit 1]}
scallop_wave scale 2]
[1 onion color_map {
[0 rgb _GX_starcolour1 * 2 transmit pow(.05, galaxy_intensity)] [.02 rgb _GX_starcolour2 transmit 1]}
scale <45, 1, 1>]
[1 onion color_map {
[0 rgb _GX_starcolour1 * 2 transmit pow(.05, galaxy_intensity)] [.02 rgb _GX_starcolour2 transmit 1]}
scale <1, 50, 1>]}}}
#declare _GX_objscale = <.2, .2, 1> * _GX_objscale; #declare _GX_objcreated = true; #end
#if (strcmp(_GX_name, "STAR2") = 0 | strcmp(_GX_name, "S2") = 0)
#declare _GX_object = disc {0, z, .999 pigment {average pigment_map {
[1 onion color_map {
[.05 rgb _GX_starcolour1 * 8 transmit pow(.05, galaxy_intensity)] [.2 rgb _GX_starcolour3 * 3 transmit pow(.3, galaxy_intensity)]
[1 rgb _GX_starcolour2 transmit 1]} scallop_wave scale 2]
[1 onion color_map {[0 rgb _GX_starcolour1 * 4 transmit pow(.05, galaxy_intensity)] [.02 rgb _GX_starcolour2 transmit 1]}
scale <45, 1, 1>]
[1 onion color_map {[0 rgb _GX_starcolour1 * 4 transmit pow(.05, galaxy_intensity)] [.02 rgb _GX_starcolour2 transmit 1]}
scale <1, 50, 1>]}}}
#declare _GX_objscale = <.2, .2, 1> * _GX_objscale; #declare _GX_objcreated = true; #end
#if (strcmp(_GX_name, "STAR3") = 0 | strcmp(_GX_name, "S3") = 0)
#declare _GX_object = disc {0, z, .999 pigment {average pigment_map {
[1 onion color_map {
[.15 rgb _GX_starcolour1 * 8 transmit pow(.05, galaxy_intensity)] [.4 rgb _GX_starcolour3 * 3 transmit pow(.1, galaxy_intensity)]
[.49 rgb _GX_starcolour3 * 1.5 transmit pow(.3, galaxy_intensity)] [.5 rgb _GX_starcolour1 * 2 transmit pow(.1, galaxy_intensity)]
[.51 rgb _GX_starcolour3 transmit pow(.3, galaxy_intensity)] [1 rgb _GX_starcolour2 transmit 1]}
scallop_wave scale 2]
[1 onion color_map {[0 rgb _GX_starcolour1 * 2 transmit pow(.05, galaxy_intensity)] [.01 rgb _GX_starcolour2 transmit 1]}
scale <90, 1, 1>]
[1 onion color_map {[0 rgb _GX_starcolour1 * 2 transmit pow(.05, galaxy_intensity)] [.01 rgb _GX_starcolour2 transmit 1]}
scale <1, 100, 1>]}}}
#declare _GX_objscale = <.2, .2, 1> * _GX_objscale; #declare _GX_objcreated = true; #end
#if (strcmp(_GX_name, "STAR4") = 0 | strcmp(_GX_name, "S4") = 0)
#declare _GX_object = disc {0, z, .999 pigment {average pigment_map {
[1 onion color_map {
[.05 rgb _GX_starcolour1 * 10 transmit pow(.05, galaxy_intensity)] [.2 rgb _GX_starcolour3 * 3 transmit pow(.3, galaxy_intensity)]
[1 rgb _GX_starcolour2 transmit 1]} scallop_wave scale 2]
[1 onion color_map {[0 rgb _GX_starcolour1 transmit pow(.8, galaxy_intensity)] [.06 rgb _GX_starcolour2 transmit 1]}
scale <16, 1, 1>]
[1 onion color_map {[0 rgb _GX_starcolour1 transmit pow(.8, galaxy_intensity)] [.06 rgb _GX_starcolour2 transmit 1]}
scale <16, 1, 1> rotate z * 120]
[1 onion color_map {[0 rgb _GX_starcolour1 transmit pow(.8, galaxy_intensity)] [.06 rgb _GX_starcolour2 transmit 1]}
scale <16, 1, 1> rotate z * 240]}}}
#declare _GX_objscale = <.2, .2, 1> * _GX_objscale; #declare _GX_objcreated = true; #end
#end
// SELECT GALAXY OBJECTS
// *********************
#if (strcmp(substr(_GX_name, 1, 1), "G") = 0)
#if (strcmp(_GX_name, "GALAXY") = 0 | strcmp(_GX_name, "GALAXY1") = 0 | strcmp(_GX_name, "G1") = 0)
#declare _GX_object = disc {0, z, .999 pigment {onion pigment_map {
[0 rgb _GX_colour1 transmit pow(.1, galaxy_intensity)]
[.2 wrinkles color_map {[0 rgb _GX_colour1 transmit pow(.1, galaxy_intensity)] [1 rgb _GX_colour3 transmit pow(.4, galaxy_intensity)]}
scale .06 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[.4 spiral1 2 pigment_map {
[.3 wrinkles color_map {[0 rgb _GX_colour1 transmit pow(.1, galaxy_intensity)] [1 rgb _GX_colour3 transmit pow(.6, galaxy_intensity)]}
scale .2 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[1 rgb _GX_colour3 transmit pow(.6, galaxy_intensity)]}
scale .15 translate -galaxy_turb_origin warp {turbulence .06 octaves 4 lambda 3} translate galaxy_turb_origin]
[.8 spiral1 6 pigment_map {
[.1 wrinkles color_map {[0 rgb _GX_colour3 transmit pow(.2, galaxy_intensity)] [1 rgb _GX_colour2 transmit pow(.8, galaxy_intensity)]}
scale .2 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[.8 rgb _GX_colour2 transmit pow(.8, galaxy_intensity)]}
scale .13 translate -galaxy_turb_origin warp {turbulence .06 octaves 4 lambda 3} translate galaxy_turb_origin]
[.9 spiral1 12 pigment_map {
[0 wrinkles color_map {[0 rgb _GX_colour3 transmit pow(.3, galaxy_intensity)] [.8 rgb _GX_colour2 transmit pow(.9, galaxy_intensity)]}
scale .2 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[.6 rgb _GX_colour2 transmit pow(.9, galaxy_intensity)]}
scale .09 translate -galaxy_turb_origin warp {turbulence .06 octaves 4 lambda 3} translate galaxy_turb_origin]
[1 rgb _GX_colour2 transmit 1]}
scallop_wave scale 2}}
#declare _GX_objscale = <.25, .25, 1> * _GX_objscale * _GX_flatten; #declare _GX_objcreated = true; #end
#if (strcmp(_GX_name, "GALAXY2") = 0 | strcmp(_GX_name, "G2") = 0)
#declare _GX_object = disc {0, z, .999 pigment {onion pigment_map {
[0 rgb _GX_colour1 transmit pow(.05, galaxy_intensity)]
[.4 wrinkles color_map {[0 rgb _GX_colour1 transmit pow(.1, galaxy_intensity)] [1 rgb _GX_colour3 transmit pow(.7, galaxy_intensity)]}
scale .08 * galaxy_pattern_scale translate -galaxy_turb_origin warp {turbulence .08 octaves 4 lambda 4} translate _GX_finaltranslate]
[.65 spiral1 2 pigment_map {
[0 wrinkles color_map {[0 rgb _GX_colour1 transmit pow(.2, galaxy_intensity)] [1 rgb _GX_colour3 transmit pow(.7, galaxy_intensity)]}
scale .25 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[1 wrinkles color_map {[0 rgb _GX_colour3 transmit pow(.5, galaxy_intensity)] [.6 rgb _GX_colour3 transmit pow(.9, galaxy_intensity)]}
scale .15 * galaxy_pattern_scale translate -galaxy_pattern_origin]}
sine_wave scale .2 translate -galaxy_turb_origin warp {turbulence -.08 octaves 4 lambda 4} translate galaxy_turb_origin]
[.85 spiral1 2 pigment_map {
[0 wrinkles color_map {[0 rgb _GX_colour3 transmit pow(.4, galaxy_intensity)] [.8 rgb _GX_colour2 transmit pow(.8, galaxy_intensity)]}
scale .2 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[.8 rgb _GX_colour2 transmit pow(.9, galaxy_intensity)]}
sine_wave scale .15 translate -galaxy_turb_origin warp {turbulence .05 octaves 4 lambda 4} translate galaxy_turb_origin]
[1 rgb _GX_colour2 transmit 1]}
scallop_wave scale 2}}
#declare _GX_objscale = <.25, .25, 1> * _GX_objscale * _GX_flatten; #declare _GX_objcreated = true; #end
#if (strcmp(_GX_name, "GALAXY3") = 0 | strcmp(_GX_name, "G3") = 0)
#declare _GX_object = disc {0, z, .999 pigment {onion pigment_map {
[.03 rgb _GX_colour1 transmit pow(.1, galaxy_intensity)]
[.25 spiral1 -2 pigment_map {
[0 wrinkles color_map {[0 rgb _GX_colour3 transmit pow(.9, galaxy_intensity)] [.6 rgb _GX_colour1 transmit pow(.4, galaxy_intensity)]} scale .1 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[.1 wrinkles color_map {[0 rgb _GX_colour1 transmit pow(.3, galaxy_intensity)] [1 rgb _GX_colour3 transmit pow(.5, galaxy_intensity)]} scale .3 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[.9 wrinkles color_map {[0 rgb _GX_colour3 transmit pow(.5, galaxy_intensity)] [1 rgb _GX_colour1 transmit pow(.8, galaxy_intensity)]} scale .2 * galaxy_pattern_scale translate -galaxy_pattern_origin]}
scale .4 translate -galaxy_turb_origin warp {turbulence .04 octaves 4 lambda 3 omega .5} translate galaxy_turb_origin]
[.5 spiral1 -2 pigment_map {
[0 wrinkles color_map {[0 rgb _GX_colour3 transmit pow(.1, galaxy_intensity)] [.5 rgb _GX_colour2 transmit pow(.5, galaxy_intensity)]} scale .1 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[.3 wrinkles color_map {[0 rgb _GX_colour2 transmit pow(.3, galaxy_intensity)] [1 rgb _GX_colour2 transmit pow(.4, galaxy_intensity)]} scale .3 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[1 wrinkles color_map {[0 rgb _GX_colour2 transmit pow(.7, galaxy_intensity)] [1 rgb _GX_colour2 transmit 1]} scale .2 * galaxy_pattern_scale translate -galaxy_pattern_origin]}
scale .8 translate -galaxy_turb_origin warp {turbulence .1 octaves 4 lambda 3 omega .4} translate galaxy_turb_origin]
[1 rgb _GX_colour2 transmit 1]}}}
#declare _GX_objscale = <.25, .25, 1> * _GX_objscale * _GX_flatten; #declare _GX_objcreated = true; #end
#if (strcmp(_GX_name, "GALAXY4") = 0 | strcmp(_GX_name, "G4") = 0)
#declare _GX_object = disc {0, z, .999 pigment {onion pigment_map {
[0 rgb _GX_colour1 transmit pow(.1, galaxy_intensity)]
[.4 spiral1 -2 pigment_map {
[0 wrinkles color_map {[.2 rgb _GX_colour3 transmit pow(.7, galaxy_intensity)] [1 rgb _GX_colour1 transmit pow(.2, galaxy_intensity)]} scale .2 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[.4 wrinkles color_map {[.4 rgb _GX_colour3 transmit pow(.8, galaxy_intensity)] [1 rgb _GX_colour3 transmit pow(.4, galaxy_intensity)]} scale .1 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[.9 wrinkles color_map {[0 rgb _GX_colour2 transmit pow(.9, galaxy_intensity)] [1 rgb _GX_colour3 transmit pow(.8, galaxy_intensity)]} scale .3 * galaxy_pattern_scale translate -galaxy_pattern_origin]}
scale 1.2 translate -galaxy_turb_origin warp {turbulence .04 octaves 4 lambda 3} translate galaxy_turb_origin]
[.6 spiral1 -2 pigment_map {
[0 wrinkles color_map {[.3 rgb _GX_colour3 transmit pow(.8, galaxy_intensity)] [1 rgb _GX_colour1 transmit pow(.3, galaxy_intensity)]} scale .2 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[.3 wrinkles color_map {[.5 rgb _GX_colour2 transmit pow(.9, galaxy_intensity)] [1 rgb _GX_colour3 transmit pow(.5, galaxy_intensity)]} scale .1 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[.8 wrinkles color_map {[0 rgb _GX_colour2 transmit 1] [1 rgb _GX_colour2 transmit pow(.8, galaxy_intensity)]} scale .3 * galaxy_pattern_scale translate -galaxy_pattern_origin]}
scale .8 translate -galaxy_turb_origin warp {turbulence .03 octaves 4 lambda 3} translate galaxy_turb_origin]
[1 rgb _GX_colour2 transmit 1]}}}
#declare _GX_objscale = <.25, .25, 1> * _GX_objscale * _GX_flatten; #declare _GX_objcreated = true; #end
#if (strcmp(_GX_name, "GALAXY5") = 0 | strcmp(_GX_name, "G5") = 0)
#declare _GX_object = disc {0, z, .999 pigment {onion pigment_map {
[0 rgb _GX_colour1 transmit pow(.1, galaxy_intensity)]
[.35 granite color_map {
[0 rgb _GX_colour3 transmit pow(.4, galaxy_intensity)] [.8 rgb _GX_colour1 transmit pow(.1, galaxy_intensity)]}
scale .06 * galaxy_pattern_scale translate _GX_finaltranslate]
[.6 granite color_map {
[.3 rgb _GX_colour2 transmit pow(.7, galaxy_intensity)] [1 rgb _GX_colour3 transmit pow(.2, galaxy_intensity)]}
scale .05 * galaxy_pattern_scale translate _GX_finaltranslate]
[.75 granite color_map {
[.5 rgb _GX_colour2 transmit pow(.9, galaxy_intensity)] [1 rgb _GX_colour2 transmit pow(.3, galaxy_intensity)]}
scale .04 * galaxy_pattern_scale translate _GX_finaltranslate]
[1 rgb _GX_colour2 transmit 1]}
scallop_wave scale 2}}
#declare _GX_objscale = <.25, .25, 1> * _GX_objscale * _GX_flatten; #declare _GX_objcreated = true; #end
#end
// SELECT NEBULA OBJECTS
// *********************
#if (strcmp(substr(_GX_name, 1, 1), "N") = 0)
#if (strcmp(_GX_name, "NEBULA") = 0 | strcmp(_GX_name, "NEBULA1") = 0 | strcmp(_GX_name, "N1") = 0)
#declare _GX_object = disc {0, z, .999 pigment {onion pigment_map {
[.2 granite color_map {[0 rgb _GX_colour1 transmit pow(.1, galaxy_intensity)] [1 rgb _GX_colour3 transmit pow(.6, galaxy_intensity)]} scale 2 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[.8 granite color_map {[0 rgb _GX_colour3 transmit pow(.6, galaxy_intensity)] [.5 rgb _GX_colour2 transmit pow(.95, galaxy_intensity)]} scale galaxy_pattern_scale translate -galaxy_pattern_origin]
[.9 rgb _GX_colour2 transmit 1]}
scallop_wave scale 2.2
translate -galaxy_turb_origin warp {turbulence .35 octaves 4 omega .4 lambda 3} translate galaxy_turb_origin}}
#declare _GX_objscale = <.3, .3, 1> * _GX_objscale; #declare _GX_objcreated = true; #end
#if (strcmp(_GX_name, "NEBULA2") = 0 | strcmp(_GX_name, "N2") = 0)
#declare _GX_object = disc {0, z, .999 pigment {onion pigment_map {
[0 wrinkles color_map {[0 rgb _GX_colour1 transmit pow(.1, galaxy_intensity)] [1 rgb _GX_colour3 transmit pow(.6, galaxy_intensity)]}
warp {turbulence .5 octaves 2} scale .2 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[.8 wrinkles color_map {[0 rgb _GX_colour3 transmit pow(.5, galaxy_intensity)] [.5 rgb _GX_colour2 transmit pow(.9, galaxy_intensity)]}
warp {turbulence .5 octaves 2} scale .18 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[.9 rgbt _GX_colour2 transmit 1]}
scallop_wave scale 2.2
translate -galaxy_turb_origin warp {turbulence .2 octaves 2 lambda 3 omega .6} translate galaxy_turb_origin}}
#declare _GX_objscale = <.3, .3, 1> * _GX_objscale; #declare _GX_objcreated = true; #end
#if (strcmp(_GX_name, "NEBULA3") = 0 | strcmp(_GX_name, "N3") = 0)
#declare _GX_object = disc {0, z, .999 pigment {onion pigment_map {
[0 granite color_map {[.05 rgb _GX_colour3 transmit 1] [.3 rgb _GX_colour1 transmit pow(.1, galaxy_intensity)]}
scale .7 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[.8 wrinkles color_map {[0 rgb _GX_colour2 transmit 1] [1 rgb _GX_colour3 transmit pow(.6, galaxy_intensity)]}
scale .1 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[.9 rgbt _GX_colour2 transmit 1]}
scallop_wave scale 2.2
translate -galaxy_turb_origin warp {turbulence .25 octaves 4 lambda 3 omega .4} translate galaxy_turb_origin}}
#declare _GX_objscale = <.3, .3, 1> * _GX_objscale; #declare _GX_objcreated = true; #end
#if (strcmp(_GX_name, "NEBULA4") = 0 | strcmp(_GX_name, "N4") = 0)
#declare _GX_object = disc {0, z, .999 pigment {onion pigment_map {
[.2 wrinkles color_map {[0 rgb _GX_colour1 transmit pow(.1, galaxy_intensity)] [1 rgb _GX_colour3 transmit pow(.9, galaxy_intensity)]} scale .1 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[.5 granite color_map {[0 rgb _GX_colour1 transmit pow(.3, galaxy_intensity)] [.6 rgb _GX_colour3 transmit pow(.95, galaxy_intensity)]} scale .4 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[.8 granite color_map {[0 rgb _GX_colour3 transmit pow(.6, galaxy_intensity)] [.3 rgb _GX_colour2 transmit 1]} scale .3 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[.9 rgb _GX_colour2 transmit 1]}
scallop_wave scale 2.2
translate -galaxy_turb_origin warp {turbulence .25 octaves 4 omega .4 lambda 3} translate galaxy_turb_origin}}
#declare _GX_objscale = <.3, .3, 1> * _GX_objscale; #declare _GX_objcreated = true; #end
#if (strcmp(_GX_name, "NEBULA5") = 0 | strcmp(_GX_name, "N5") = 0)
#declare _GX_object = disc {0, z, .999 pigment {onion pigment_map {
[.5 wrinkles color_map {[.1 rgb _GX_colour2 transmit 1] [.4 rgb _GX_colour3 transmit pow(.5, galaxy_intensity)] [.8 rgb _GX_colour1 transmit pow(.1, galaxy_intensity)]} scale .1 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[.8 wrinkles color_map {[.5 rgb _GX_colour2 transmit 1] [1 rgb _GX_colour3 transmit pow(.4, galaxy_intensity)]} scale .1 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[.9 rgb _GX_colour2 transmit 1]}
scallop_wave scale 2.3
translate -galaxy_turb_origin warp {turbulence .3 octaves 4 omega .3 lambda 5} translate galaxy_turb_origin}}
#declare _GX_objscale = <.2, .2, 1> * _GX_objscale; #declare _GX_objcreated = true; #end
#if (strcmp(_GX_name, "NEBULA6") = 0 | strcmp(_GX_name, "N6") = 0)
#declare _GX_object = disc {0, z, .999 pigment {onion pigment_map {
[.4 wrinkles color_map {[0 rgb _GX_colour2 transmit pow(.7, galaxy_intensity)] [1 rgb _GX_colour2 transmit pow(.9, galaxy_intensity)]} scale .2 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[.5 wrinkles pigment_map {
[0 wrinkles color_map {[0 rgb _GX_colour3 transmit pow(.4, galaxy_intensity)] [1 rgb _GX_colour2 transmit pow(.8, galaxy_intensity)]} scale .5]
[1 wrinkles color_map {[0 rgb _GX_colour3 transmit pow(.8, galaxy_intensity)] [1 rgb _GX_colour2 transmit pow(.95, galaxy_intensity)]} scale .5]}
scale .2 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[.7 wrinkles pigment_map {
[0 granite color_map {[0 rgb _GX_colour1 transmit pow(.2, galaxy_intensity)] [1 rgb _GX_colour1 transmit pow(.6, galaxy_intensity)]}]
[1 granite color_map {[0 rgb _GX_colour3 transmit pow(.8, galaxy_intensity)] [1 rgb _GX_colour3 transmit pow(.95, galaxy_intensity)]}]}
scale .2 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[.85 granite color_map {[0 rgb _GX_colour3 transmit pow(.8, galaxy_intensity)] [.4 rgb _GX_colour3 transmit 1]} scale .4 * galaxy_pattern_scale translate -galaxy_pattern_origin]
[.9 rgb _GX_colour1 transmit 1]}
scallop_wave scale 2.5
translate -galaxy_turb_origin warp {turbulence .04 octaves 4 omega .8 lambda 3} translate galaxy_turb_origin}}
#declare _GX_objscale = <.15, .15, 1> * _GX_objscale; #declare _GX_objcreated = true; #end
#end
// SELECT COMET OBJECTS
// ********************
#if (strcmp(substr(_GX_name, 1, 1), "C") = 0)
#if (strcmp(_GX_name, "COMET") = 0 | strcmp(_GX_name, "COMET1") = 0 | strcmp(_GX_name, "C1") = 0)
#declare _GX_object = disc {<.5, 0, 0>, z, .499 pigment {onion pigment_map {
[.03 onion color_map {[.03 rgb _GX_colour1 transmit pow(.05, galaxy_intensity)] [.05 rgb _GX_colour3 transmit 1]} translate <.05, 0, 0>]
[.06 radial color_map {[.1 rgb _GX_colour1 transmit pow(.05, galaxy_intensity)] [.25 rgb _GX_colour2 transmit 1]} triangle_wave]
[.4 radial pigment_map {
[.05 wrinkles color_map {[0 rgb _GX_colour2 transmit 1] [1 rgb _GX_colour3 transmit pow(.1, galaxy_intensity)]}
scale galaxy_pattern_scale translate -galaxy_turb_origin warp {turbulence 2 octaves 3 lambda 2} translate _GX_finaltranslate]
[.25 rgb _GX_colour2 transmit 1]} triangle_wave]
[.8 rgb _GX_colour2 transmit 1]} rotate x * 90}
scale <1.05, .35, 1> translate <-.05, 0, 0>}
#declare _GX_objscale = <.5, .5, 1> * _GX_objscale * _GX_flatten; #declare _GX_objcreated = true; #end
#if (strcmp(_GX_name, "COMET2") = 0 | strcmp(_GX_name, "C2") = 0)
#declare _GX_object = disc {<.5, 0, 0>, z, .499 pigment {onion pigment_map {
[.03 onion color_map {[.03 rgb _GX_colour1 transmit pow(.05, galaxy_intensity)] [.05 rgb _GX_colour3 transmit 1]} translate <.05, 0, 0>]
[.06 radial color_map {[.1 rgb _GX_colour1 transmit pow(.05, galaxy_intensity)] [.25 rgb _GX_colour2 transmit 1]} triangle_wave]
[.2 radial pigment_map {
[.1 granite color_map {[0 rgb _GX_colour3 transmit pow(.2, galaxy_intensity)] [1 rgb _GX_colour2 transmit 1]} scale galaxy_pattern_scale translate _GX_finaltranslate]
[.2 rgb _GX_colour2 transmit 1]} translate -galaxy_turb_origin warp {turbulence .03 lambda 3 octaves 3 omega .9} translate galaxy_turb_origin
triangle_wave]
[.6 radial pigment_map {
[.1 granite color_map {[0 rgb _GX_colour3 transmit pow(.8, galaxy_intensity)] [.6 rgb _GX_colour2 transmit 1]} scale .4 * galaxy_pattern_scale translate _GX_finaltranslate]
[.2 rgb _GX_colour2 transmit 1]} translate -galaxy_turb_origin warp {turbulence .1 lambda 3 octaves 3 omega .9} translate galaxy_turb_origin
triangle_wave]
[.8 rgb _GX_colour2 transmit 1]} rotate x * 90}
scale <1.05, .4, 1> translate <-.05, 0, 0>}
#declare _GX_objscale = <.5, .5, 1> * _GX_objscale * _GX_flatten; #declare _GX_objcreated = true; #end
#if (strcmp(_GX_name, "COMET3") = 0 | strcmp(_GX_name, "C3") = 0)
#declare _GX_object = disc {<.5, 0, 0>, z, .499 pigment {average pigment_map {
[1 onion color_map {[.006 rgb _GX_colour1 * 3 transmit pow(.05, galaxy_intensity)] [.02 rgb _GX_colour3 transmit 1]}
scale <1.5, 1, 1> rotate z * 30 translate <.05, 0, 0>]
[1 onion pigment_map {
[.05 rgb _GX_colour3 transmit 1]
[.1 spiral1 1 color_map {[.03 rgb _GX_colour1 * 3 transmit pow(.05, galaxy_intensity)] [.07 rgb _GX_colour3 transmit 1]} scale 4]
[.3 spiral1 1 color_map {[.03 rgb _GX_colour3 * 2 transmit pow(.1, galaxy_intensity)] [.07 rgb _GX_colour2 transmit 1]} scale 4]
[.6 spiral1 1 pigment_map {
[0 granite color_map {[0 rgb _GX_colour3 * 2 transmit pow(.1, galaxy_intensity)] [1 rgb _GX_colour2 transmit pow(.4, galaxy_intensity)]}
scale <.2, .03, .03> * galaxy_pattern_scale rotate z * 50 translate _GX_finaltranslate]
[.08 rgb _GX_colour2 transmit 1]} scale 4]
[.85 spiral1 1 pigment_map {
[0 granite color_map {[0 rgb _GX_colour2 transmit pow(.4, galaxy_intensity)] [1 rgb _GX_colour2 transmit pow(.7, galaxy_intensity)]}
scale <.2, .03, .03> * galaxy_pattern_scale rotate z * 35 translate _GX_finaltranslate]
[.1 rgb _GX_colour2 transmit 1]} scale 4]
[.98 rgb _GX_colour2 transmit 1]}
scallop_wave scale 2 rotate z * 125 translate <.02, -.02, 0>]}
scale <1, 2, 1>}
scale <1.05, .6, 1> translate <-.05, 0, 0>}
#declare _GX_objscale = <.5, .5, 1> * _GX_objscale * _GX_flatten; #declare _GX_objcreated = true; #end
#end
// SELECT METEOR OBJECTS
// *********************
#if (strcmp(substr(_GX_name, 1, 1), "M") = 0)
#if (strcmp(_GX_name, "METEOR") = 0 | strcmp(_GX_name, "METEOR1") = 0 | strcmp(_GX_name, "M1") = 0)
#declare _GX_object = disc {<.5, 0, 0>, z, .499 pigment {gradient x pigment_map {
[.1 onion color_map {[.03 rgb _GX_colour1 transmit pow(.1, galaxy_intensity)] [.05 rgb _GX_colour3 transmit 1]} translate <.1, 0, 0>]
[.12 onion color_map {[.02 rgb _GX_colour1 transmit pow(.2, galaxy_intensity)] [.05 rgb _GX_colour3 transmit 1]}
scale <18, 1, 1> translate <.1, 0, 0>]
[.5 onion pigment_map {
[0 granite color_map {[0 rgb _GX_colour3 transmit pow(.3, galaxy_intensity)] [1 rgb _GX_colour2 transmit 1]} scale .2 * galaxy_pattern_scale translate _GX_finaltranslate]
[.05 rgb _GX_colour2 transmit 1]}
scale <18, 1, 1> translate <.1, 0, 0> translate -galaxy_turb_origin warp {turbulence .02 octaves 3 lambda 4} translate galaxy_turb_origin]}
scale <1, 5, 1>}
scale <1.1, .1, 1> translate <-.1, 0, 0>}
#declare _GX_objscale = <.5, .5, 1> * _GX_objscale * _GX_flatten; #declare _GX_objcreated = true; #end
#if (strcmp(_GX_name, "METEOR2") = 0 | strcmp(_GX_name, "M2") = 0)
#declare _GX_object = disc {<.5, 0, 0>, z, .499 pigment {gradient x pigment_map {
[.1 onion pigment_map {
[.03 granite color_map {[0 rgb _GX_colour1 transmit pow(.05, galaxy_intensity)] [1 rgb _GX_colour3 transmit pow(.4, galaxy_intensity)]} scale <.3, .15, .1> * galaxy_pattern_scale translate _GX_finaltranslate]
[.05 rgb _GX_colour2 transmit 1]}
translate <.1, 0, 0>]
[.12 onion pigment_map {
[.02 granite color_map {[0 rgb _GX_colour1 transmit pow(.1, galaxy_intensity)] [1 rgb _GX_colour3 transmit pow(.4, galaxy_intensity)]} scale <.02, .15, .1> * galaxy_pattern_scale translate _GX_finaltranslate]
[.04 granite color_map {[0 rgb _GX_colour3 transmit pow(.2, galaxy_intensity)] [.7 rgb _GX_colour2 transmit 1]} scale <.015, .1, .1> * galaxy_pattern_scale translate _GX_finaltranslate]
[.05 rgb _GX_colour2 transmit 1]}
scale <18, 1, 1> translate <.1, 0, 0>
translate -galaxy_turb_origin warp {turbulence .02 octaves 4 omega .6 lambda 4} translate galaxy_turb_origin]
[.5 onion pigment_map {
[0 granite color_map {[0 rgb _GX_colour3 transmit pow(.4, galaxy_intensity)] [.7 rgb _GX_colour2 transmit pow(.9, galaxy_intensity)]} scale <.015, .1, .1> * galaxy_pattern_scale translate _GX_finaltranslate]
[.05 rgb _GX_colour2 transmit 1]}
scale <18, 1, 1> translate <.1, 0, 0> translate -galaxy_turb_origin warp {turbulence .04 octaves 4 omega .4 lambda 4} translate galaxy_turb_origin]}
scale <1, 5, 1>}
scale <1.1, .2, 1> translate <-.1, 0, 0>}
#declare _GX_objscale = <.5, .5, 1> * _GX_objscale * _GX_flatten; #declare _GX_objcreated = true; #end
#end
// POSITION SINGLE OBJECT
// **********************
#switch (_GX_objloop)
#case (0) #if (_GX_objcreated = false)
#warning "You specified an incorrect galaxy_object_name!\r\n"
#else
#declare galaxy_object = object {_GX_object
finish {ambient 1 diffuse 0 reflection 0 phong 0 specular 0 crand 0}
scale _GX_objscale rotate z * galaxy_object_rotate
no_shadow hollow}
#if (galaxy_declare_only = false) object {galaxy_object
translate z rotate <-1, 1, 0> * galaxy_object_position
scale galaxy_distance
#ifdef (galaxy_rotate) rotate galaxy_rotate #end
#ifdef (galaxy_origin) translate -galaxy_origin #end }
#declare galaxy_distance = galaxy_distance * (sqrt(1 + pow(max(_GX_objscale.x, _GX_objscale.y), 2)) + .001);
#declare _GX_tracelevel = _GX_tracelevel + 1;
global_settings {max_trace_level min(_GX_tracelevel, 30)}
#end
#end #break
// POSITION CLUSTER OBJECTS
// ************************
#case (1) #if (_GX_objcreated = false)
#warning "You specified an incorrect galaxy_cluster_name!\r\n"
#else
#declare galaxy_cluster_object = object {_GX_object
finish {ambient 1 diffuse 0 reflection 0 phong 0 specular 0 crand 0}
scale _GX_objscale rotate z * galaxy_cluster_rotate
no_shadow hollow}
#if (galaxy_declare_only = false & galaxy_cluster_objects >= 1)
#declare _GX_objrand = seed(galaxy_seed);
union { #declare _GX_objcount = 0; #while (_GX_objcount < galaxy_cluster_objects)
object {galaxy_cluster_object
finish {ambient 1 + ((<rand(_GX_objrand), rand(_GX_objrand), rand(_GX_objrand)> - .5) * _GX_colourturb)}
#declare _GX_clusterscale = 1 + ((rand(_GX_objrand) - .5) * galaxy_scale_turb * 2);
scale _GX_clusterscale
rotate z * (rand(_GX_objrand) - .5) * galaxy_rotate_turb
translate z
rotate (<rand(_GX_objrand), rand(_GX_objrand), .5> - .5) * _GX_spread + <-1, 1, 0> * galaxy_object_position
scale galaxy_distance}
#declare _GX_objscale2 = _GX_clusterscale * _GX_objscale;
#declare galaxy_distance = galaxy_distance * (sqrt(1 + pow(max(_GX_objscale2.x, _GX_objscale2.y), 2)) + .001);
#declare _GX_tracelevel = _GX_tracelevel + 1;
#declare _GX_objcount = _GX_objcount + 1; #end
#ifdef (galaxy_rotate) rotate galaxy_rotate #end
#ifdef (galaxy_origin) translate -galaxy_origin #end }
global_settings {max_trace_level min(_GX_tracelevel, 30)}
#end
#end
#end
// LOOP THROUGH FILE TO SELECT CLUSTER OBJECT
// ******************************************
#end
#declare _GX_name = strupr(galaxy_cluster_name)
#declare _GX_objscale = galaxy_cluster_scale * <1, 1, 1>;
#declare _GX_objloop = _GX_objloop + 1; #end
#version _GX_objtempver;

75
galaxy/GALAXY.SF Normal file
View File

@ -0,0 +1,75 @@
/*************************************************************************
GALAXY STARFIELD FILE FOR PERSISTENCE OF VISION 3.x
**************************************************************************
Created by Chris Colefax, 1 February 1998
Updated 9 August 1998: updated for POV-Ray 3.1
See "Galaxy.htm" for more information.
*************************************************************************/
// CHECK VARIABLES AND ASSIGN DEFAULTS
// ***********************************
#declare _SF_tempver = version; #version 3.0;
#ifndef (galaxy_seed) #declare galaxy_seed = 0; #end
#ifndef (star_count) #declare star_count = 1000; #end
#ifndef (star_type) #declare star_type = 1; #end
#ifndef (star_scale) #declare star_scale = 1; #end
#ifndef (star_spread) #declare star_spread = 1; #end
#ifndef (star_distribution) #declare star_distribution = 1; #end
#ifndef (star_brightness_turb) #declare star_brightness_turb = .5; #end
#ifndef (star_distance) #ifdef (galaxy_distance) #declare star_distance = galaxy_distance * 2;
#else #declare star_distance = 2e4; #end #end
#ifdef (star_colour) #declare _SF_colour = star_colour * <1, 1, 1>;
#else #ifdef (star_color) #declare _SF_colour = star_color * <1, 1, 1>;
#else #declare _SF_colour = <.9, .9, .9>; #end #end
#ifdef (star_colour_turb) #declare _SF_colourturb = star_colour_turb * <1, 1, 1>;
#else #ifdef (star_color_turb) #declare _SF_colourturb = star_color_turb * <1, 1, 1>;
#else #ifdef (_GX_colourturb) #declare _SF_colourturb = _GX_colourturb;
#else #declare _SF_colourturb = <.2, .2, .2>; #end #end #end
// SELECT STAR PIGMENT
// *******************
#switch (star_type)
#case (2) #declare _SF_starpigment = pigment {onion color_map {
[.3 rgb 1] [.8 rgbt 1] [.9 rgbt <1, 1, 1, .7>] [1 rgbt 1]}
scallop_wave scale 2}
#declare _SF_starobjscale = .015; #break
#case (3) #declare _SF_starpigment = pigment {onion pigment_map {
[.1 rgb 1]
[.4 average pigment_map {
[1 onion color_map {[.04 rgb 3] [.1 rgbt 1]} scale <10, 1, 1>]
[1 onion color_map {[.04 rgb 3] [.1 rgbt 1]} scale <10, 1, 1> rotate z * 120]
[1 onion color_map {[.04 rgb 3] [.1 rgbt 1]} scale <10, 1, 1> rotate z * 240]}
scale .5]}
scallop_wave scale 2}
#declare _SF_starobjscale = .025; #break
#else #declare _SF_starpigment = pigment {onion color_map {
[.3 rgb <1, 1, 1>] [1 rgbt <1, 1, 1, 1>]}}
#declare _SF_starobjscale = .01; #end
#declare _SF_starobject = triangle {<-1, -.6, 0>, <0, 1, 0>, <1, -.6, 0>
pigment {onion pigment_map {[.25 _SF_starpigment scale .25] [.25 rgbt <1, 1, 1, 1>]} scale 2}
finish {ambient 1 diffuse 0 reflection 0 phong 0 specular 0 crand 0}
scale star_scale * _SF_starobjscale}
// CREATE STAR FIELD
// *****************
#declare _SF_rand = seed(galaxy_seed);
#declare _SF_stars = union { #declare _SF_count = 0; #while (_SF_count < 50)
object {_SF_starobject
finish {ambient _SF_colour * (1 + (rand(_SF_rand) - .5) * star_brightness_turb * 2) * (1 + <rand(_SF_rand), rand(_SF_rand), rand(_SF_rand)> * _SF_colourturb)}
translate z * (1 + pow(rand(_SF_rand), star_distribution) * star_spread)
rotate <rand(_SF_rand), rand(_SF_rand), 0> * 360}
#declare _SF_count = _SF_count + 1; #end }
union { #declare _SF_count = 0; #while (_SF_count < star_count / 50)
object {_SF_stars rotate <rand(_SF_rand), rand(_SF_rand), 0> * 360}
#declare _SF_count = _SF_count + 1; #end
no_shadow hollow scale star_distance
#ifdef (galaxy_rotate) rotate galaxy_rotate #end
#ifdef (galaxy_origin) translate -galaxy_origin #end }
#version _SF_tempver;

865
galaxy/Galaxy.htm Normal file
View File

@ -0,0 +1,865 @@
<HTML><HEAD><TITLE>Galaxy Include File</TITLE></HEAD>
<FONT FACE="Arial, Helvetica, Switzerland"><BODY BGCOLOR=#FFFFFF>
<TABLE WIDTH=100% BORDER=0 CELLPADDING=10><TR><TD BGCOLOR=#C0C0C0 ALIGN=CENTER>
<FONT SIZE=+2><B>GALAXY INCLUDE FILE </B></FONT><FONT SIZE=+1><I>for Persistence of Vision 3.x</I></FONT>
</TD></TR></TABLE>
<I>
<P>Created by Chris Colefax, 1 February 1998
<BR>Updated 9 August 1998: updated for POV-Ray 3.1
</I>
<P><HR>
<P><B><I><A HREF="#Installation">INSTALLATION</A></B></I>
<P><B><I><A HREF="#Quick Start">QUICK START</A></B></I>
<P><B><I><A HREF="#Galaxy Files">UNDERSTANDING THE DIFFERENT GALAXY.* FILES</A></B></I>
<P><B><I><A HREF="#Options">GALAXY OPTIONS</A></B></I>
<UL><I><A HREF="#INC Options">GALAXY INCLUDE FILE OPTIONS</A></I>
<UL><A HREF="#galaxy_seed">galaxy_seed</A>
<BR><A HREF="#galaxy_colour">galaxy_colour</A>
<BR><A HREF="#galaxy_colouration">galaxy_colouration</A>
<BR><A HREF="#galaxy_colour_turb">galaxy_colour_turb</A>
<BR><A HREF="#galaxy_intensity">galaxy_intensity</A>
<BR><A HREF="#galaxy_rotate">galaxy_rotate</A>
<BR><A HREF="#galaxy_distance">galaxy_distance</A>
<BR><A HREF="#galaxy_origin">galaxy_origin</A>
<BR><A HREF="#galaxy_bg">galaxy_bg</A>
<BR><A HREF="#galaxy_objects">galaxy_objects</A>
<BR><A HREF="#galaxy_starfield">galaxy_starfield</A>
<BR><A HREF="#options_only">options_only</A>
<BR><A HREF="#debug_options">debug_options</A>
</UL>
<BR><I><A HREF="#BG Options">GALAXY BACKGROUNDS FILE OPTIONS</A></I>
<UL><A HREF="#galaxy_bgstars">galaxy_bgstars</A>
<BR><A HREF="#galaxy_bgnebula">galaxy_bgnebula</A>
<BR><A HREF="#galaxy_nebula_sphere">galaxy_nebula_sphere</A>
<BR><A HREF="#galaxy_nebula_ambient">galaxy_nebula_ambient</A>
<BR><A HREF="#galaxy_colour options">galaxy_colour1, galaxy_colour2, galaxy_colour3</A>
<BR><A HREF="#galaxy_star_colouration">galaxy_star_colouration</A>
<BR><A HREF="#galaxy_pattern_scale">galaxy_pattern_scale</A>
<BR><A HREF="#galaxy_pattern_origin">galaxy_pattern_origin</A>
<BR><A HREF="#galaxy_turb_origin">galaxy_turb_origin</A>
<BR><A HREF="#galaxy_declare_only">galaxy_declare_only</A>
</UL>
<BR><I><A HREF="#SF Options">GALAXY STARFIELD FILE OPTIONS</A></I>
<UL><A HREF="#star_count">star_count</A>
<BR><A HREF="#star_colour">star_colour</A>
<BR><A HREF="#star_type">star_type</A>
<BR><A HREF="#star_scale">star_scale</A>
<BR><A HREF="#star_distance">star_distance</A>
<BR><A HREF="#star_spread">star_spread</A>
<BR><A HREF="#star_distribution">star_distribution</A>
<BR><A HREF="#star_colour_turb">star_colour_turb</A>
<BR><A HREF="#star_brightness_turb">star_brightness_turb</A>
</UL>
<BR><I><A HREF="#OBJ Options">GALAXY OBJECTS FILE OPTIONS</A></I>
<UL><A HREF="#galaxy_object_name">galaxy_object_name</A>
<BR><A HREF="#galaxy_object_scale">galaxy_object_scale</A>
<BR><A HREF="#galaxy_object_rotate">galaxy_object_rotate</A>
<BR><A HREF="#galaxy_object_flatten">galaxy_object_flatten</A>
<BR><A HREF="#galaxy_object_position">galaxy_object_position</A>
<BR><A HREF="#galaxy_cluster_name">galaxy_cluster_name</A>
<BR><A HREF="#galaxy_cluster_objects">galaxy_cluster_objects</A>
<BR><A HREF="#galaxy_cluster_scale">galaxy_cluster_scale</A>
<BR><A HREF="#galaxy_cluster_rotate">galaxy_cluster_rotate</A>
<BR><A HREF="#galaxy_cluster_spread">galaxy_cluster_spread</A>
<BR><A HREF="#galaxy_scale_turb">galaxy_scale_turb</A>
<BR><A HREF="#galaxy_rotate_turb">galaxy_rotate_turb</A>
<BR><A HREF="#galaxy_declare_only">galaxy_declare_only</A>
</UL>
</UL>
<P><B><I><A HREF="#Troubleshooting">TROUBLESHOOTING</A></B></I>
<P><B><I><A HREF="#Legal">COPYRIGHT AND LEGAL INFORMATION</A></B></I>
<P><B><I><A HREF="#Contact">CONTACTING THE AUTHOR</A></B></I>
<P>
<BR>
<A NAME="Installation"></A><TABLE WIDTH=100% BORDER=0 CELLPADDING=7><TR><TD BGCOLOR=#C0C0C0>
<FONT SIZE=+1><B><I>INSTALLATION</B></I></FONT>
</TD></TR></TABLE>
The Galaxy Include File package consists of four files (<I>Galaxy.inc,
Galaxy.bg, Galaxy.obj</I> and <I>Galaxy.sf</I>) which work separately and together,
depending on the desired effect. All four files should be copied to
one of the directories (folders) in your POV-Ray library path. Normally
this is the <I>INCLUDE</I> sub-directory of the directory where you installed
POV-Ray, so if you installed POV-Ray in <I>C:\POVRAY</I> you should copy the files
to <I>C:\POVRAY\INCLUDE</I>. On a Windows 95 system, this is probably something
like:
<P><I>C:\Program Files\POV-Ray for Windows\Include</I>
<P>On UNIX and similar systems, where filenames are case-sensitive, you may
have to rename the four include files so that the filenames are all uppercase.
This will enable you to render the sample files without modification.
<P>
<BR>
<A NAME="Quick Start"></A><TABLE WIDTH=100% BORDER=0 CELLPADDING=7><TR><TD BGCOLOR=#C0C0C0>
<FONT SIZE=+1><B><I>QUICK START</B></I></FONT>
</TD></TR></TABLE>
The Galaxy Include File package allows you to create a variety of outer-
space scenes which can be used on their own or as backgrounds to other
scenes and animations. In addition to spiral galaxies, the Galaxy Include
File package can also create starfields, star clusters, nebulae, comets,
and meteor showers. You can easily create a galaxy scene containing a
selection of these elements by adding the following lines to a POV-Ray
scene file:
<P><CODE>#declare galaxy_seed = 123456789;
<BR>#include "GALAXY.INC"</CODE>
<P>You can choose any positive or negative integer you like for the
<A HREF="#galaxy_seed">galaxy_seed</A> value. When you render this scene, the Galaxy Include File
will select random options, and then use <I>Galaxy.bg, Galaxy.obj,</I> and
<I>Galaxy.sf</I> to create the galaxy scene. In addition to changing the seed
number, you can use a variety of options to modify the galaxy scene.
To use any of these options just add the following line to your scene file,
<I>before</I> including <I>Galaxy.inc</I>:
<P><CODE>#declare </CODE><I>[variable-name]</I><CODE> = </CODE><I>[value]</I>
<P>substituting the desired variable name and value where appropriate.
Note that <I>Galaxy.inc</I> (or any of the <I>Galaxy.*</I> files) should <B>never</B> be
included at the start of a scene (like <I>colors.inc</I> or <I>textures.inc</I>).
They should only be included after declaring the desired galaxy options.
<P>As well as creating random galaxy scenes using <I>Galaxy.inc</I>, you can use
<I>Galaxy.bg, Galaxy.obj</I>, and/or <I>Galaxy.sf</I> separately to build custom galaxy
scenes piece by piece. You can include any of the four <I>Galaxy.*</I> files as
many times as you want in a single POV-Ray scene, declaring separate options
for each <I>Galaxy.*</I> inclusion. Note that you don't have to redeclare any
options that are common to any or all of the <I>Galaxy.*</I> files, eg:
<P><CODE>// COMMON GALAXY OPTIONS
<BR>#declare galaxy_colour1 = &lt 1.3, 1.2, .8&gt ;
<BR>#declare galaxy_colour2 = &lt 1, .5, .3 &gt ;
<BR>#declare galaxy_rotate = &lt 90, 180, 0&gt ;
<P>// GALAXY BACKGROUND
<BR>#declare galaxy_bgstars = 4;
<BR>#declare galaxy_bgnebula = off;
<BR>#declare galaxy_nebula_sphere = 5;
<BR>#include "GALAXY.BG"
<P>// GALAXY OBJECTS
<BR>#declare galaxy_object_name = "Nebula3"
<BR>#declare galaxy_cluster_name = "Star4"
<BR>#include "GALAXY.OBJ"
<BR>#declare galaxy_object_name = "Comet2"
<BR>#declare galaxy_cluster_name = ""
<BR>#include "GALAXY.OBJ"</CODE>
<P>In the above example the same colours and rotation are applied to each
element of the galaxy scene, without having to redeclare them each time
you include one of the <I>Galaxy.*</I> files.
<P>
<BR>
<A NAME="Galaxy Files"></A><TABLE WIDTH=100% BORDER=0 CELLPADDING=7><TR><TD BGCOLOR=#C0C0C0>
<FONT SIZE=+1><B><I>UNDERSTANDING THE DIFFERENT GALAXY.* FILES</B></I></FONT>
</TD></TR></TABLE>
As mentioned above, the four different files of the Galaxy Include File
package can be used in a variety of ways, depending on how you wish to
create your galaxy scene. The files are:
<P>The Galaxy Backgrounds File (<I>GALAXY.BG</I>): this include file is used to
create a selection of starfield and nebula pigments (including a Milky Way
pigment), which can either be mapped directly to the sky_sphere, or to an
actual sphere object. Although <I>Galaxy.bg</I> allows you to create backgrounds
quite easily, the file gives you little control over the exact shape of the
nebulae, and the starfields are not suitable for anti-aliasing or
animations in which the camera is moved or altered in some way.
<P>The Galaxy Starfield File (<I>GALAXY.SF</I>): this include file is used to create
starfields consisting of actual objects, rather than textures. Because of
this, the starfields can be anti-aliased and animated very well, and
improved programming means that the parsing takes about one fifth of the
time needed for previous versions of the Starfield Include File. <I>Galaxy.sf</I>
can create three different types of stars, and can be used in conjunction
with <I>Galaxy.bg</I> to create stars larger than one pixel in size.
<P>The Galaxy Objects File (<I>GALAXY.OBJ</I>): this include file is used to create
and position a selection of outer-space objects, including four different
feature stars, six different nebulae, five different galaxies, three
different comets, and two different meteors. The objects can be positioned
individually, or in random clusters (eg. star clusters or meteor showers).
<P>The Galaxy Include File (<I>GALAXY.INC</I>): this include file uses the above three
files to create random galaxy scenes. <I>Galaxy.inc</I> selects random options for
the other files, including colours, object types, scaling, rotation, etc.,
and can automatically include the other files into your POV-Ray scene, making
it quick and easy to use the Galaxy Include File package without having to
declare separate options for each of the <I>Galaxy.*</I> files.
<P>
<BR>
<A NAME="Options"></A><TABLE WIDTH=100% BORDER=0 CELLPADDING=7><TR><TD BGCOLOR=#C0C0C0>
<FONT SIZE=+1><B><I>GALAXY OPTIONS</B></I></FONT>
</TD></TR></TABLE>
This section explains the various options that can be used with <I>Galaxy.inc</I>,
as well as the options that can be used separately with <I>Galaxy.bg,
Galaxy.obj</I>, and <I>Galaxy.sf</I>.
<P>Note that the Galaxy Include File package supports both British and
American English, eg: <I>galaxy_colour</I> and <I>galaxy_color</I> are interchangeable,
as are <I>galaxy_colouration</I> and <I>galaxy_coloration</I>, etc.
<P><HR><A NAME="INC Options"></A>
<B>GALAXY INCLUDE FILE OPTIONS</B>
<HR>
The options in this section apply to <I>Galaxy.inc</I>.
<P><A NAME="galaxy_seed"></A>
<B>galaxy_seed</B>
<HR>
This is the random number seed used for all random aspects of the Galaxy
Include File package. Changing this number can result in vastly different
galaxy scenes, and any positive or negative integer accepted by POV-Ray can
be used. The default <I>galaxy_seed</I> value is 0. Each time you include
<I>Galaxy.inc</I>, a new <I>galaxy_seed</I> value is chosen at random. To find out the
new value, see <A HREF="#debug_options">debug_options</A>.
<P><A NAME="galaxy_colour"></A>
<B>galaxy_colour</B>
<HR>
Use this option to change the overall colour of the galaxy scene. The
exact result of changing this option depends on the current colour of
the galaxy scene, eg. if the current galaxy scene is predominantly green,
setting <I>galaxy_colour</I> to &lt 1.5, 0.1, 1&gt will increase the amount of red
in the scene, decrease the amount of green, and leave the blue unaltered,
resulting in a purple coloured galaxy.
<BR>The default <I>galaxy_colour</I> value is &lt 1, 1, 1&gt (which has no effect).
<P><A NAME="galaxy_colouration"></A>
<B>galaxy_colouration</B>
<HR>
Use this option to increase of decrease the amount of colour in the galaxy
scene. Good values range from 0 (little or no colour) to 1 or larger (very
saturated colour). Setting this option to a low value means that the
<A HREF="#galaxy_colour">galaxy_colour</A> option has more of an effect.
<BR>The default <I>galaxy_colouration</I> value is 0.5
<P><A NAME="galaxy_colour_turb"></A>
<B>galaxy_colour_turb</B>
<HR>
Use this option to alter the amount of colour variation between different
elements of the galaxy scene. Setting this option to 0 results in a
monochromatic galaxy scene, while larger values give greater colour
variation. The default <I>galaxy_colour_turb</I> value is 0.2
<P><A NAME="galaxy_intensity"></A>
<B>galaxy_intensity</B>
<HR>
Use this option to increase or decrease the overall visibility of the
galaxy scene. Good values usually lie somewhere between 0 (completely
transparent) and 5 (very opaque).
<BR>The default <I>galaxy_intensity</I> value is 1
<P><A NAME="galaxy_rotate"></A>
<B>galaxy_rotate</B>
<HR>
This option is a vector that is used to rotate the galaxy scene as a whole.
It can be useful when you want to create the illusion of movement in an
animation, without having to transform the camera and all the other objects
in a scene. The default <I>galaxy_rotate</I> value is &lt 0, 0, 0&gt
<P><A NAME="galaxy_distance"></A>
<B>galaxy_distance</B>
<HR>
All the objects in a galaxy scene are arranged around a giant sphere,
usually surrounding the camera. You can use this option to set the size of
this sphere. The default value is 10000, which should be sufficient for
most scenes and animations. If the rest of the objects in your scene are
this size or larger, you may need to increase this value. However, values
that are too large may result in disappearing objects, or cause POV-Ray to
crash when rendering the scene.
<P><A NAME="galaxy_origin"></A>
<B>galaxy_origin</B>
<HR>
As mentioned above, the objects in a galaxy scene are arranged around a
giant sphere. By default this sphere is centred around &lt 0, 0, 0&gt, but
you can use this option to change this value.
<P><A NAME="galaxy_bg"></A>
<B>galaxy_bg</B>
<HR>
Use this option to disable the elements of the galaxy scene created by the
Galaxy Backgrounds File (<I>Galaxy.bg</I>). Setting this option to false (or off)
removes the background stars, background nebulae, and nebula sphere from
the galaxy scene. To remove these elements individually, see <A HREF="#BG Options">Background File Options</A>.
<P><A NAME="galaxy_objects"></A>
<B>galaxy_objects</B>
<HR>
Use this option to disable the elements of the galaxy scene created by the
Galaxy Objects File (<I>Galaxy.obj</I>). Setting this option to false (or off)
removes any feature nebulae, stars, comets, star clusters, or meteor
showers from the galaxy scene. Note that this option is always set to
false after including <I>Galaxy.inc</I>; if you wish to include <I>Galaxy.inc</I> a
second time (or third, fourth, etc.) and have it automatically create galaxy
objects, you must manually set <I>galaxy_objects</I> to true before including
<I>Galaxy.inc</I>.
<P><A NAME="galaxy_starfield"></A>
<B>galaxy_starfield</B>
<HR>
Use this option to remove the starfield objects in a galaxy scene created by
the Galaxy Starfield File (<I>Galaxy.sf</I>). Note that this option is always
set to false after including <I>Galaxy.inc</I>; if you wish <I>Galaxy.inc</I> to
automatically create another starfield, you must manually set
<I>galaxy_starfield</I> to true before including <I>Galaxy.inc</I>.
<P><A NAME="options_only"></A>
<B>options_only</B>
<HR>
Setting this option to true will cause <I>Galaxy.inc</I> to declare all the options
it uses for <I>Galaxy.bg, Galaxy.obj</I>, and <I>Galaxy.sf</I>, but these three files will
not be automatically included. You can use this to then alter selected
galaxy options, before including some or all of the remaining <I>Galaxy.*</I> files,
eg. say you have discovered you like the galaxy produced by using 7362512
as the <A HREF="#galaxy_seed">galaxy_seed</A> value, but you want to change the galaxy object used:
<P><CODE>#declare galaxy_seed = 7362512;
<BR>#declare options_only = true;
<BR>#include "GALAXY.INC"
<BR>#declare galaxy_object = "Galaxy2"
<BR>#include "GALAXY.OBJ"
<BR>#include "GALAXY.BG"
<BR>#include "GALAXY.SF"</CODE>
<P>Note that setting <I>options_only</I> to true is the same as setting <A HREF="#galaxy_bg">galaxy_bg</A>,
<A HREF="#galaxy_objects">galaxy_objects</A>, and <A HREF="#galaxy_starfield">galaxy_starfield</A> to false.
<P><A NAME="debug_options"></A>
<B>debug_options</B>
<HR>
Setting this option to true will cause <I>Galaxy.inc</I> to output all the random
option values it uses to POV-Ray's debug stream. You can then use the +GD
command-line switch, or the Debug_File INI file setting, to direct the
debug stream to a file. This file can then be altered as desired, and
included directly into your scene before including <I>Galaxy.bg, Galaxy.obj</I>,
and/or <I>Galaxy.sf</I> (see the <I>Rand.pov</I> and <I>Rand.ini</I> files for an example of how
this option can be used).
<P><HR><A NAME="BG Options"></A>
<B>GALAXY BACKGROUNDS FILE OPTIONS</B>
<HR>
The options in this section apply to <I>Galaxy.bg</I>. In addition to the
options below, the Galaxy Backgrounds File supports the <A HREF="#galaxy_intensity">galaxy_intensity</A>,
<A HREF="#galaxy_rotate">galaxy_rotate</A>, <A HREF="#galaxy_distance">galaxy_distance</A>, and <A HREF="#galaxy_origin">galaxy_origin</A> options, as detailed above.
<P><A NAME="galaxy_bgstars"></A>
<B>galaxy_bgstars</B>
<HR>
This option specifies the type of background star pigment mapped to the
sky_sphere. Values range from 1 (sparse) to 3 (dense), and 4 (sparse) to
6 (dense). The first group has a mixture of faint and light stars, while
the second is mostly composed of bright stars of different colours. If you
don't want any background stars (for an animation, say), set this option
to false. The default <I>galaxy_bgstars</I> value is 2
<P><A NAME="galaxy_bgnebula"></A>
<B>galaxy_bgnebula</B>
<HR>
This option specifies the type of nebula pigment mapped to the sky_sphere.
Possible values are:
<UL>1 - Default nebula
<BR>2 - Light reflection nebula
<BR>3 - Nebula criss-crossed by dark gas lanes
<BR>4 - Spidery nebula
<BR>5 - Dense reflection nebula
<BR>6 - Milky Way pattern
</UL>
<P>Values 1 to 5 correspond roughly with the nebulae created by <I>Galaxy.obj</I>
(see <A HREF="#galaxy_object_name">galaxy_object_name</A>). If you don't want a background nebula, set this option
to false. The default <I>galaxy_bgnebula</I> value is 6
<P><A NAME="galaxy_nebula_sphere"></A>
<B>galaxy_nebula_sphere</B>
<HR>
Use this option to create a large sphere (the radius is specified by the
<A HREF="#galaxy_distance">galaxy_distance</A> option) mapped with a nebula pigment. Possible values are
1 to 5, corresponding to the <A HREF="#galaxy_bgnebula">galaxy_bgnebula</A> option. If you don't want a
nebula sphere, set this value to false.
<BR>The default <I>galaxy_nebula_sphere</I> value is 1
<P><A NAME="galaxy_nebula_ambient"></A>
<B>galaxy_nebula_ambient</B>
<HR>
Use this option to change the ambient light value of the nebula sphere.
The default <I>galaxy_nebula_ambient</I> value is &lt 1, 1, 1&gt
<P><A NAME="galaxy_colour options"></A>
<B>galaxy_colour1, galaxy_colour2, galaxy_colour3</B>
<HR>
Use this option to set the RGB colour value used to create the galaxy
background pigments. For a monochromatic galaxy scene, only declare
the first option; for a scene that uses two colours declare both
<I>galaxy_colour1</I> and <I>galaxy_colour2</I>. Finally, to add another colour to
the galaxy pigments declare all three galaxy_colour options.
<BR>The default <I>galaxy_colour1</I> value is &lt 1, 1, 1&gt (White).
<P><A NAME="galaxy_star_colouration"></A>
<B>galaxy_star_colouration</B>
<HR>
This option sets the colour saturation used by the six background star
pigments, and by the Milky Way pigment. Good values range from 0 (no
colour) to 1 (complete colour). An interesting effect can be achieved by
using negative numbers, which result in the stars being the opposite colour
to the nebulae and other objects in the galaxy scene.
<BR>The default <I>galaxy_star_colouration</I> value is 0.2
<P><A NAME="galaxy_pattern_scale"></A>
<B>galaxy_pattern_scale</B>
<HR>
Use this option to alter the size of the patterns used to create the
galaxy background pigments. Changing this option does not alter the general
shape of the pigments; it only changes the scaling of the patterns used
within each pigment. The default <I>galaxy_pattern_scale</I> value is 1
<P><A NAME="galaxy_pattern_origin"></A>
<B>galaxy_pattern_origin</B>
<HR>
Use this option to translate the origin of the patterns used to create the
galaxy background pigments. Changing this option can completely alter the
shapes created by the pigments, and can be changed gradually within an
animation to create dynamic nebulae, etc.
<BR>The default <I>galaxy_pattern_origin</I> is &lt 0, 0, 0&gt
<P><A NAME="galaxy_turb_origin"></A>
<B>galaxy_turb_origin</B>
<HR>
Many of the galaxy pigments use some sort of turbulence; changing this
option translates the origin of the turbulence before it is applied to the
pigment. You can use this option to alter the shapes of various pigments,
or to animate the turbulence applied to the pigments.
<BR>The default <I>galaxy_turb_origin</I> is &lt 0, 0, 0&gt
<P><A NAME="galaxy_declare_only"></A>
<B>galaxy_declare_only</B>
<HR>
Setting this option to true stops <I>Galaxy.bg</I> from actually creating the
sky_sphere or nebula sphere to which the galaxy background pigments are
mapped. Instead, the file declares each of the 12 pigments separately, so
that you can then use them in the ways you use any other pigment. The
pigment names are BGStars? (from 1 to 6), BGNebula? (from 1 to 5), and
BGMilkyWay. Each of the pigments is designed to be used at unit size, but
they can be scaled or transformed any way you want, eg:
<P><CODE>#declare galaxy_declare_only = true;
<BR>#include "GALAXY.BG"
<P>sky_sphere {
<BR>pigment {BGStars3}
<BR>pigment {BGMilkyWay rotate z * 45}
<BR>pigment {BGNebula5 scale 2}
<BR>pigment {BGNebula1 rotate &lt 60, 50, 0&gt}}
<P>box {&lt -1, -1, -1&gt, &lt 1, 1, 1&gt
<BR>pigment {BGStars6} finish {phong .5}}</CODE>
<P>Note that setting <I>galaxy_declare_only</I> to true is the same as setting
<A HREF="#galaxy_bgstars">galaxy_bgstars</A>, <A HREF="#galaxy_bgnebula">galaxy_bgnebula</A>, and <A HREF="#galaxy_nebula_sphere">galaxy_nebula_sphere</A> to false.
<P><HR><A NAME="SF Options"></A>
<B>GALAXY STARFIELD FILE OPTIONS</B>
<HR>
The options in this section apply to <I>Galaxy.sf</I>. In addition to the
options below, the Galaxy Starfield File supports the <A HREF="#galaxy_seed">galaxy_seed</A>,
<A HREF="#galaxy_rotate">galaxy_rotate</A>, and <A HREF="#galaxy_origin">galaxy_origin</A> options, as detailed above.
<P><A NAME="star_count"></A>
<B>star_count</B>
<HR>
This option sets the number of star objects created. The larger the number,
the longer the parsing time and memory required.
The default <I>star_count</I> value is 1000
<P><A NAME="star_colour"></A>
<B>star_colour</B>
<HR>
This option sets the RGB colour value of the stars.
The default star_colour value is &lt 0.9, 0.9, 0.9&gt
<P><A NAME="star_type"></A>
<B>star_type</B>
<HR>
This option selects the pigment used on each star object. Possible
values are:
<UL>1 - Plain circular star (default)
<BR>2 - Circular star with halo
<BR>3 - Circular star with six evenly spaced rays
</UL>
<P><A NAME="star_scale"></A>
<B>star_scale</B>
<HR>
Use this option to increase or decrease the size of the star objects. By
default the stars are designed to look best when rendered at resolutions
between 320x240 and 640x480; you may wish use smaller numbers for larger
resolutions, and vice-versa.
The default <I>star_scale</I> value is 1
<P><A NAME="star_distance"></A>
<B>star_distance</B>
<HR>
The star objects are arranged around a large sphere; this option sets the
radius of this sphere. The default value is 20000, which should be
sufficient for most scenes and animations. If the rest of the objects in
your scene are this size or larger, you may need to increase this value.
However, values that are too large may result in disappearing objects, or
cause POV-Ray to crash when rendering the scene.
<P><A NAME="star_spread"></A>
<B>star_spread</B>
<HR>
This option sets the difference between the distances to the closest
(largest) star and the farthest (smallest) star. The option is expressed
as a percentage of the <A HREF="#star_distance">star_distance</A>, eg: the default value of 1 means that
the stars lie somewhere between 20000 and 40000 units away (40000 being
equal to 20000 plus 20000 times 1). Setting this option to 0 would result
in all the star objects being the same distance from the origin.
<P><A NAME="star_distribution"></A>
<B>star_distribution</B>
<HR>
This option sets the ratio of large (close) stars to small (far) stars.
The default value of 1 results in equal numbers of each. Values larger
than 1 give more large stars, while values smaller than 1 give more small
stars.
<P><A NAME="star_colour_turb"></A>
<B>star_colour_turb</B>
<HR>
Use this option to alter the amount of colour variation between different
stars. Setting this option to 0 results in stars all of the same colour,
while larger values give greater colour variation.
The default <I>star_colour_turb</I> value is 0.2
<P><A NAME="star_brightness_turb"></A>
<B>star_brightness_turb</B>
<HR>
Use this option to set the amount of brightness variation between different
stars. Setting this option to 0 results in stars all of the same brightness,
while larger values give greater brightness variation.
The default <I>star_brightness_turb</I> value is 0.5
<P><HR><A NAME="OBJ Options"></A>
<B>GALAXY OBJECTS FILE OPTIONS</B>
<HR>
The options in this section apply to <I>Galaxy.obj</I>. In addition to the
options below, the Galaxy Objects File supports the following options
detailed above:
<UL><A HREF="#galaxy_seed">galaxy_seed</A>, <A HREF="#galaxy_colour_turb">galaxy_colour_turb</A>, <A HREF="#galaxy_intensity">galaxy_intensity</A>,
<A HREF="#galaxy_rotate">galaxy_rotate</A>, <A HREF="#galaxy_distance">galaxy_distance</A>, <A HREF="#galaxy_origin">galaxy_origin</A>
<A HREF="#galaxy_colour options">galaxy_colour1, galaxy_colour2, galaxy_colour3</A>, <A HREF="#galaxy_star_colouration">galaxy_star_colouration</A>,
<A HREF="#galaxy_pattern_scale">galaxy_pattern_scale</A>, <A HREF="#galaxy_pattern_origin">galaxy_pattern_origin</A>, <A HREF="#galaxy_turb_origin">galaxy_turb_origin</A>
</UL>
<P><A NAME="galaxy_object_name"></A>
<B>galaxy_object_name</B>
<HR>
Use this option to select which galaxy object you wish to use. Possible
values are (the case of the strings is not important):
<UL>Star1, Star2, Star3, Star4
<BR>Nebula1, Nebula2, Nebula3, Nebula4, Nebula5, Nebula6
<BR>Galaxy1, Galaxy2, Galaxy3, Galaxy4, Galaxy5
<BR>Comet1, Comet2, Comet3
<BR>Meteor1, Meteor2
</UL>
<P>As a shortcut you can just use the first and last letters of the object
name, eg. S3 for Star3, or N4 for Nebula4. If you don't want to create
a galaxy object, set this value to an empty string.
The default <I>galaxy_object_name</I> is Nebula1
<P><A NAME="galaxy_object_scale"></A>
<B>galaxy_object_scale</B>
<HR>
Use this option to increase of decrease the size of the galaxy object.
The default <I>galaxy_object_scale</I> value is 1
<P><A NAME="galaxy_object_rotate"></A>
<B>galaxy_object_rotate</B>
<HR>
Use this option to rotate the galaxy object. The object is rotated around
the viewing axis, so only one float value is required.
The default <I>galaxy_object_rotate</I> value is 0
<P><A NAME="galaxy_object_flatten"></A>
<B>galaxy_object_flatten</B>
<HR>
Use this option to flatten Galaxy, Comet, and Meteor objects. Good values
lie somewhere between 0 (no flattening) and 1 (completely flattened). You
can also use negative numbers to widen the object instead of thinning it.
The default <I>galaxy_object_flatten</I> value is 0.2
<P><A NAME="galaxy_object_position"></A>
<B>galaxy_object_position</B>
<HR>
Use this option to move the galaxy object and cluster objects. The
x-component of this option specifies the altitude of the objects, while the
y-component specifies the azimuth of the objects. The z-component is
ignored. The default value of &lt 0, 0, 0&gt positions the objects directly
perpendicular to the z-axis. North lies along the z-axis and up lies along
the y-axis. Therefore, &lt 90, 0, 0&gt positions the object directly above the
origin, and &lt-90, 0, 0&gt positions the objects below the origin. &lt 0, 90, 0&gt
positions the objects to the east (along the x-axis), &lt 0, -90, 0&gt positions
the objects to the west (along the negative x-axis), and &lt 0, 180, 0&gt
positions the objects to the south (along the negative z-axis). You can
combine these two movements using the <I>galaxy_object_position</I> value to place
the galaxy object and cluster objects anywhere in the sky.
<P><A NAME="galaxy_cluster_name"></A>
<B>galaxy_cluster_name</B>
<HR>
In addition to a single galaxy object you can create a cluster of randomly
positioned, sized, and coloured objects. Use this option to select which
object you wish to use for the cluster, using the same selection as
the <A HREF="#galaxy_object_name">galaxy_object_name</A> option. If you don't want to create
a cluster of objects, set this option to an empty string.
The default <I>galaxy_cluster_name</I> is Star1
<P><A NAME="galaxy_cluster_objects"></A>
<B>galaxy_cluster_objects</B>
<HR>
Use this option to set the number of objects you want to create in the
cluster. The default <I>galaxy_cluster_objects</I> value is 6
<P><A NAME="galaxy_cluster_scale"></A>
<B>galaxy_cluster_scale</B>
<HR>
Use this option to increase of decrease the size of the individual objects
in the cluster (not the overall size of the cluster itself). The default
<I>galaxy_cluster_scale</I> value is half of the <A HREF="#galaxy_object_scale">galaxy_object_scale</A> value.
<P><A NAME="galaxy_cluster_rotate"></A>
<B>galaxy_cluster_rotate</B>
<HR>
Use this option to rotate each individual object in the cluster (not the
cluster as a whole). The default <I>galaxy_cluster_rotate</I> value is the same
as the <A HREF="#galaxy_object_rotate">galaxy_object_rotate</A> value.
<P><A NAME="galaxy_cluster_spread"></A>
<B>galaxy_cluster_spread</B>
<HR>
Use this option to increase the amount of space between the individual
cluster objects. The option is expressed as an angle, where 0 results in
all the objects being clustered at the same position, while 360 spreads the
objects across the entire sky.
The default <I>galaxy_cluster_spread</I> value is 15 degrees.
<P><A NAME="galaxy_scale_turb"></A>
<B>galaxy_scale_turb</B>
<HR>
Use this option to alter the amount of size variation between individual
cluster objects. Setting this option to 0 results in all the cluster
objects being the same size, while larger values give greater size
variation. The default <I>galaxy_scale_turb</I> value is 0.5
<P><A NAME="galaxy_rotate_turb"></A>
<B>galaxy_rotate_turb</B>
<HR>
Use this option to alter the amount of variation (in degrees) between the
rotations of individual cluster objects. Setting this option to 0 results
in all the cluster objects being rotated by the same amount, while setting
this option to 360 gives objects rotated by completely random angles.
The default <I>galaxy_rotate_turb</I> value is 0
<P><A NAME="galaxy_declare_only"></A>
<B>galaxy_declare_only</B>
<HR>
Setting this option to true stops <I>Galaxy.obj</I> from actually creating the
galaxy object and cluster objects. Instead, these objects are declared
(as <CODE>galaxy_object</CODE> and <CODE>galaxy_cluster_object</CODE> respectively) as textured
discs which can be used like any other object. The discs are scaled
and rotated according to the relevant options above, and are centred
at the origin perpendicular to the z-axis.
<P>
<BR>
<A NAME="Troubleshooting"></A><TABLE WIDTH=100% BORDER=0 CELLPADDING=7><TR><TD BGCOLOR=#C0C0C0>
<FONT SIZE=+1><B><I>TROUBLESHOOTING</B></I></FONT>
</TD></TR></TABLE>
This section contains some common problems you might encounter while using
the Galaxy Include File package, and instructions on how to fix these
problems.
<P><HR>
<B>Q) POV-Ray crashes when I try to render my galaxy scene?</B>
<BR>A: This may be caused by objects being larger than POV-Ray's allowed limit.
To make the objects smaller, try decreasing the <A HREF="#galaxy_distance">galaxy_distance</A> value
(the default is 10000), and also the <A HREF="#star_distance">star_distance</A> value if you have
declared this separately. If reducing this value doesn't help, try
reducing the <I>max_trace_level</I> of your scene; the Galaxy Include File
automatically increases the value for each object it creates, so add
the line:
<P><CODE>global_settings {max_trace_level 10}</CODE>
<P><B>after</B> including any of the <I>Galaxy.*</I> files.
<P><HR>
<B>Q) POV-Ray crashes before even starting to render my galaxy scene?</B>
<BR>A: This is probably caused by a lack of memory; try decreasing your
<A HREF="#star_count">star_count</A> value, or your <A HREF="#galaxy_cluster_objects">galaxy_cluster_objects</A> value if they
are quite large. Otherwise, check the error message POV-Ray gives
you; you have probably tried to redeclare an option that has
already been used by one of the Galaxy Include Files; ensuring that
options are always declared as the same type (eg. vectors are always
redeclared as vectors, etc.) should remove the problem.
<P><HR>
<B>Q) POV-Ray renders my galaxy scene, but it is very slow?</B>
<BR>A: This is probably caused by very large objects; try reducing the
<A HREF="#galaxy_distance">galaxy_distance</A> and/or <A HREF="#star_distance">star_distance</A> options as detailed in the first
question. Note, however, that when using many complex pigments like
those used by the Galaxy Include Files a certain amount of calculation
time is to be expected.
<P><HR>
<B>Q) I have created an animation using the Galaxy Include File, but the
stars seems to flicker annoyingly?</B>
<BR>A: This is caused by using background stars (mapped to the sky_sphere)
which are only suitable for still scenes. Try setting the
<A HREF="#galaxy_sky_sphere">galaxy_sky_sphere</A> option to false <B>before</B> including the <I>Galaxy.*</I> files
to remove the problem.
<P><HR>
<B>Q) I am using the <I>galaxy_pattern_origin</I> and/or <I>galaxy_turb_origin</I> options,
and there are some strange artefacts in my galaxy scene?</B>
<BR>A: This is caused by problems with POV-Ray's internal pigment mapping
functions; you should be able to fix the problem by using smaller values
for the <A HREF="#galaxy_pattern_origin">galaxy_pattern_origin</A> and <A HREF="#galaxy_turb_origin">galaxy_turb_origin</A> options.
<P><HR>
<B>Q) I have tried declaring some of the options, but nothing changes?</B>
<BR>A: Make sure that you have declared all the desired options <B>before</B>
including any of the <I>Galaxy.*</I> files. The files are not designed
to be included once at the beginning of a scene.
<P><HR>
<B>Q) How can I use the Galaxy Include File with Moray (or another modeller)?</B>
<BR>A: First export your scene from your modeller to a POV file. Then just add
your desired galaxy options to this file, and include the desired
<I>Galaxy.*</I> files before rendering the scene. If your modeller uses a
right handed coordinate system (like Moray) declare these two options
before any others to ensure that the galaxy objects are positioned
properly:
<P><CODE>#declare galaxy_distance = &lt -1, 1, 1&gt * 10000;
<BR>#declare galaxy_rotate = &lt -90, 180, 0&gt ;</CODE>
<P><HR>
<B>Q) I want to fly around a galaxy I have created, but this doesn't seem possible?</B>
<BR>A: This is because the galaxy objects are designed to generally be viewed in the background, and so they are placed at a great distance from the other objects in a scene.
You can, however, use any of the galaxy objects just as you would any other object in POV-Ray, so that it can translated, rotated, scaled, etc.
Just use the <A HREF="#galaxy_declare_only">galaxy_declare_only</A> option to create the <CODE>galaxy_object</CODE>, eg:
<P><CODE>#declare galaxy_colour1 = &lt 1.3, 1.2, .9&gt ;
<BR>#declare galaxy_colour2 = &lt .4, .8, 1&gt ;
<BR>#declare galaxy_cluster_name = ""
<P>#declare galaxy_object_name = "Galaxy3"
<BR>#declare galaxy_object_flatten = 0;
<BR>#declare galaxy_declare_only = true;
<BR>#include "Galaxy.obj"
<BR>object {galaxy_object rotate x * 90 scale 10}
<P>camera {location &lt 1, 2, -3&gt look_at &lt 0, .5, 0&gt}</CODE>
<P><HR>
<B>Q) I rendered my galaxy image using anti-aliasing and all the stars disappeared?</B>
<BR>A: This is usually the result of using the <I>Galaxy.bg</I> file to create stars as a pigment on the sky_sphere.
Stars created in this manner will not work well with anti-aliasing, and it is usually a good idea to set the <A HREF="#galaxy_bgstars">galaxy_bgstars</A> option to false to remove these background stars if you plan to render the image with anti-aliasing turned on.
In their place, you should use the stars created by <I>Galaxy.sf</I>, as these are actual objects with pigments that have already been anti-aliased.
The best settings for a scene usually depend on the rendering size, but for an 800x600 image these settings work quite well:
<P><CODE>#declare star_count = 5000;
<BR>#declare star_scale = .5;
<BR>#include "Galaxy.sf"</CODE>
<P><HR>
<B>Q) I can't get media to work with the Galaxy Include Files?</B>
<BR>A: Due to the way the Galaxy Include Files create the galaxy objects and stars, the results obtained using POV-Ray 3.1's media can be unpredictable.
Part of the problem is caused by the galaxy objects usually being at a great distance from the other objects in a scene, which makes it very difficult for POV-Ray to calculate accurate media interactions.
One solution is to decrease the <A HREF="#galaxy_distance">galaxy_distance</A> option to bring the galaxy objects closer to the camera, although this can make it difficult to place other objects correctly.
A better solution might be to use localised media container objects, rather than atmospheric media, to only place the media in those sections of the scene that it is required for.
This should give you more control over the media interactions in your scene, and possibly increase the rendering speed as well.
<P>
<BR>
<A NAME="Legal"></A><TABLE WIDTH=100% BORDER=0 CELLPADDING=7><TR><TD BGCOLOR=#C0C0C0>
<FONT SIZE=+1><B><I>COPYRIGHT AND LEGAL INFORMATION</B></I></FONT>
</TD></TR></TABLE>
The <B>Galaxy Include File package</B>, including <I>Galaxy.inc</I>, <I>Galaxy.bg</I>, <I>Galaxy.obj</I>, <I>Galaxy.sf</I>, all documentation, and
associated sample *.POV files are <B>Copyright 1998</B> by <B>Chris Colefax</B>. Full
permission is granted to the user to modify any or all of the files for
his/her own use. If modified versions are to be distributed the user
should make clear the modifications that have been made by him/herself.
<P>The <B>Galaxy Include File package</B> may be bundled with or without other
software on CD-ROM collections, Bulletin Board systems and other file
archives, providing that all associated files, including documentation and
samples, are included. I would also request that persons intending to
distribute the <B>Galaxy Include File package</B> in this manner or otherwise
would first <A HREF="#Contact">contact me</A> to ensure that
they are in possession of the latest available version.
<P>Further, no restrictions of any sort are placed on the usage of the include
files themselves (<I>Galaxy.inc, Galaxy.bg, Galaxy.obj</I>, and <I>Galaxy.sf</I>), and scene files or images created using the include
files remain entirely the property of the user or users who have created
them. I claim no liability or responsibility for damages or loss resulting
from usage of the include files, or any part of the include file package.
<P>
<BR>
<A NAME="Contact"></A><TABLE WIDTH=100% BORDER=0 CELLPADDING=7><TR><TD BGCOLOR=#C0C0C0>
<FONT SIZE=+1><B><I>CONTACTING THE AUTHOR</B></I></FONT>
</TD></TR></TABLE>
If you wish to contact me with bug reports, bug fixes, criticisms,
comments, suggested improvements, questions, etc. you can reach me by
email at:
<P><A HREF="mailto:ccolefax@geocities.com">ccolefax@geocities.com</A>
<P>or by regular mail at:
<UL>Chris Colefax
<BR>PO Box 110
<BR>Kuranda, Queensland
<BR>Australia 4872
</UL>
<HR>
<DIV ALIGN=RIGHT><FONT SIZE=-1><I>
POV-Ray<FONT SIZE=-2><SUP>TM</SUP></FONT> and Persistence of Vision<FONT SIZE=-2><SUP>TM</SUP></FONT> are registered trademarks of the POV-Ray Team<FONT SIZE=-2><SUP>TM</SUP></FONT>
</I></FONT></DIV>
</BODY></HTML>

25
galaxy/Rand.ini Normal file
View File

@ -0,0 +1,25 @@
; GALAXY INCLUDE FILE: RANDOM GALAXY INI FILE
; *******************************************
; Use this file to easily render many different (and unique) galaxy scenes.
; First, set the Final_Frame option to the number of renderings you want:
Final_Frame=100
; Then render Rand.pov using this INI file, plus any other options
; you want. To get the options for a particular galaxy, take note of
; the frame number and use it to set the following options, eg. if you
; wanted to find out the options for RAND057.TGA, use 57 (and make
; sure to remove the semicolons):
;Subset_Start_Frame=57
;Subset_End_Frame=57
; Then remove the semicolon from the following line (and change the file
; name if desired):
;Debug_File=GX_OPTS.INC
; You can now render Rand.pov using this INI file, and you will get a
; file called GX_OPTS.INC (or whatever name you are using) which you
; can modify and include directly into your scene, before including
; Galaxy.bg, Galaxy.obj, and Galaxy.sf.

8
galaxy/Rand.pov Normal file
View File

@ -0,0 +1,8 @@
// GALAXY INCLUDE FILE: RANDOM GALAXY SCENE FILE
// *********************************************
// Use this file to easily render many different (and unique) galaxy
// scenes. For more information, see Rand.ini
#declare galaxy_seed = (clock - .5) * 2e5;
#declare debug_options = true;
#include "GALAXY.INC"

25
galaxy/Readme.txt Normal file
View File

@ -0,0 +1,25 @@
*************************************************
GALAXY INCLUDE FILE FOR PERSISTENCE OF VISION 3.x
*************************************************
Included files:
Galaxy.inc - Galaxy include file for POV-Ray 3.x
Galaxy.bg - Galaxy backgrounds file for POV-Ray 3.x
Galaxy.obj - Galaxy objects file for POV-Ray 3.x
Galaxy.sf - Galaxy starfield file for POV-Ray 3.x
Galaxy.htm - Instructions for Galaxy.*
Readme.txt - This file
AllObjs.pov - Samples of all galaxy objects
Trifid.pov - Example of custom galaxy scene
Rand.pov - Samples of random galaxy scenes
Rand.ini - INI file for use with Rand.pov
DnmcOpts.pov - Dynamic galaxy options animation
See Galaxy.htm for full instructions regarding installation, usage,
troubleshooting, copyright, legal and contact information, etc.
All the included *.pov files use Galaxy.inc and/or Galaxy.bg, Galaxy.obj,
and Galaxy.sf. Before rendering any of these files, follow the
instructions in Galaxy.htm to properly install the include files.

45
galaxy/Trifid.pov Normal file
View File

@ -0,0 +1,45 @@
// GALAXY INCLUDE FILE: CUSTOM GALAXY SCENE
// ****************************************
// This scene shows how Galaxy.obj and Galaxy.sf can be used to build
// custom galaxy scenes, piece by piece.
//
// Recommended resolution: 640 x 480, anti-aliasing on
// STARFIELD
#declare star_count = 2000;
#declare star_scale = .5;
#include "GALAXY.SF"
#declare galaxy_seed = 1;
#declare star_count = 500;
#declare star_type = 3;
#declare star_colour = <1, .9, .7>;
#declare star_scale = 1.5;
#include "GALAXY.SF"
// PINK NEBULA
#declare galaxy_colour1 = <1.2, 1, 1.1>;
#declare galaxy_colour2 = <1, .3, .6>;
#declare galaxy_pattern_origin = x * 1;
#declare galaxy_turb_origin = x * -4;
#declare galaxy_object_name = "Nebula3"
#declare galaxy_object_scale = 1.75;
#declare galaxy_object_position = <-5, 5, 0>;
#declare galaxy_cluster_name = ""
#include "GALAXY.OBJ"
// BLUE NEBULA
#declare galaxy_colour1 = <.5, .9, 1.2>;
#declare galaxy_colour2 = <.1, .3, .5>;
#declare galaxy_pattern_origin = x * -20;
#declare galaxy_object_name = "Nebula2"
#declare galaxy_object_scale = 1.2;
#declare galaxy_object_position = <10, -12, 0>;
#include "GALAXY.OBJ"
// LARGE STAR
#declare galaxy_object_name = "Star1"
#declare galaxy_colour1 = <1.5, 1.5, 1.5>;
#declare galaxy_object_scale = 1;
#declare galaxy_object_position = <17, -10, 0>;
#include "GALAXY.OBJ"

View File

@ -0,0 +1,35 @@
version 5.0
set nocompatible
let cpo_save=&cpo
set cpo=B
map! <xHome> <Home>
map! <xEnd> <End>
map! <S-xF4> <S-F4>
map! <S-xF3> <S-F3>
map! <S-xF2> <S-F2>
map! <S-xF1> <S-F1>
map! <xF4> <F4>
map! <xF3> <F3>
map! <xF2> <F2>
map! <xF1> <F1>
map <xHome> <Home>
map <xEnd> <End>
map <S-xF4> <S-F4>
map <S-xF3> <S-F3>
map <S-xF2> <S-F2>
map <S-xF1> <S-F1>
map <xF4> <F4>
map <xF3> <F3>
map <xF2> <F2>
map <xF1> <F1>
map!  }I\begin{yyplcwendO
map!  >I<yypa/O
let &cpo=cpo_save
unlet cpo_save
set autoindent
set exrc
set number
set ruler
set shiftwidth=4
set showmatch
set textwidth=72

View File

@ -0,0 +1,27 @@
# what's where?
include GNUmakevars
all: \
test-buckyball.jpg \
%.ppm: %.pov
$(POVRAY) +L$(POVINC) +V -I$< +FP
%.pov: make%
$< > $@
test-buckyball.ppm: test-buckyball.pov buckyball.pov
%.gif: %.ppm
ppmquant 256 $< | ppmtogif > $@
%.jpg: %.ppm
cjpeg $< > $@
www/%: %
cp $< $@

View File

@ -0,0 +1,102 @@
#include "colors.inc"
#declare r5 = 0.5 / sin (radians(36));
#declare rho5 = 0.5 * tan (radians(54));
#declare rho6 = 0.5 * tan (radians(60));
#declare v1 = 90 - degrees(asin(rho5/rho6));
#debug concat("v1 = ", str(v1, 0, 5), "\n")
#declare a = rho6 * cos(radians(v1)) + r5;
#declare b = 1;
#declare c = sqrt(a*a + b*b);
#declare d = rho6 * sin(radians(v1));
#declare v2 = 2 * degrees (asin(d/(c-r5)));
#debug concat("v2 = ", str(v2, 0, 5), "\n")
#declare e = sin(radians(72));
#debug concat("e = ", str(e, 0, 5), "\n")
#declare f = e * sin(radians(v1));
#debug concat("f = ", str(f, 0, 5), "\n")
#declare v3 = degrees (asin(f/rho6)) + v1;
#debug concat("v3 = ", str(v3, 0, 5), "\n")
#declare buckyball =
intersection {
plane {
<0, 1, 0> 1
pigment { color rgbf <1, 0, 0, 0.5> }
}
#declare i = 0;
#while (i < 360)
plane {
<0, 1, 0> 1
pigment { color rgbf <1, 1, 0, 0.5> }
rotate <0, 0, v1>
rotate <0, i, 0>
}
#declare i = i + 72;
#end
#declare i = 36;
#while (i < 360)
plane {
<0, 1, 0> 1
pigment { color rgbf <0, 1, 0, 0.5> }
rotate <0, 0, v2>
rotate <0, i, 0>
}
#declare i = i + 72;
#end
#declare i = 0;
#while (i < 360)
plane {
<0, 1, 0> 1
pigment { color rgbf <0, 1, 1, 0.5> }
rotate <0, 0, v3>
rotate <0, i, 0>
}
#declare i = i + 72;
#end
#declare i = 36;
#while (i < 360)
plane {
<0, 1, 0> 1
pigment { color rgbf <0, 0, 1, 0.5> }
rotate <0, 0, 180 - v3>
rotate <0, i, 0>
}
#declare i = i + 72;
#end
#declare i = 0;
#while (i < 360)
plane {
<0, 1, 0> 1
pigment { color rgbf <1, 0, 1, 0.5> }
rotate <0, 0, 180-v2>
rotate <0, i, 0>
}
#declare i = i + 72;
#end
#declare i = 36;
#while (i < 360)
plane {
<0, 1, 0> 1
pigment { color rgbf <1, 0, 0, 0.5> }
rotate <0, 0, 180-v1>
rotate <0, i, 0>
}
#declare i = i + 72;
#end
plane {
<0, 1, 0> 1
pigment { color rgbf <1, 1, 0, 0.5> }
rotate <0, 0, 180>
}
}

View File

@ -0,0 +1,5 @@
+A
+QR
+HTP
+fp +w800 +h600
display_gamma = 2.2

View File

@ -0,0 +1,113 @@
#include "colors.inc"
#include "buckyball.pov"
global_settings {
assumed_gamma 1.0
ambient_light rgb<0.5, 0.5, 0.5>
}
light_source {
<2000, 2000, 2000>
color White
}
#declare Camera_Ortho_pl = 0;
#declare Camera_Ortho_v1 = 0;
#declare Camera_Ortho_v2 = 0;
#declare Camera_Ortho_v3 = 0;
#declare Camera_Ortho_eq = 0;
#declare Camera_Persp = 1;
#if (Camera_Ortho_pl)
camera {
location <5, 0, 0>
look_at <0, 0, 0>
rotate <0, 0, 90>
angle 40
orthographic
}
#end
#if (Camera_Ortho_v1)
camera {
location <5, 0, 0>
look_at <0, 0, 0>
rotate <0, 0, 90>
rotate <0, 0, v1>
rotate <0, 0, 0>
angle 40
orthographic
}
#end
#if (Camera_Ortho_v2)
camera {
location <5, 0, 0>
look_at <0, 0, 0>
rotate <0, 0, 90>
rotate <0, 0, v2>
rotate <0, 36, 0>
angle 40
orthographic
}
#end
#if (Camera_Ortho_v3)
camera {
location <5, 0, 0>
look_at <0, 0, 0>
rotate <0, 0, 90>
rotate <0, 0, v3>
rotate <0, 0, 0>
angle 40
orthographic
}
#end
#if (Camera_Ortho_eq)
camera {
location <5, 0, 0>
look_at <0, 0, 0>
angle 40
orthographic
}
#end
#if (Camera_Persp)
camera {
location <5, 4, 3>
look_at <0, 0, 0>
angle 40
}
#end
object {
buckyball
}
#if (1)
plane {
<1, 0, 0>, -10
pigment {
checker color White*0.7, color White*0.5
}
}
plane {
<0, 1, 0>, -10
pigment {
checker color White*0.7, color White*0.5
}
}
plane {
<0, 0, 1>, -10
pigment {
checker color White*0.7, color White*0.5
}
}
#end

View File

@ -0,0 +1,27 @@
# what's where?
include GNUmakevars
all: \
menger.png \
%.png: %.pov
$(POVRAY) +L$(POVINC) +V -I$< +FN
%.pov: make%
$< > $@
menger.png: menger.pov
%.gif: %.ppm
ppmquant 256 $< | ppmtogif > $@
%.jpg: %.ppm
cjpeg -sample 1x1,1x1,1x1 $< > $@
www/%: %
cp $< $@

View File

@ -0,0 +1,85 @@
#include "colors.inc"
#include "glass.inc"
#declare Eps = 1E-6;
#macro menger_level(C1, C2, Lev)
#if (Lev > 0)
#local dx = 0;
#while (dx < 3)
#local dy = 0;
#while (dy < 3)
#local dz = 0;
#while (dz < 3)
#if ((dx = 1) + (dy = 1) + (dz = 1) < 2)
menger_level(<C1.x + (C2.x - C1.x)*dx/3,
C1.y + (C2.y - C1.y)*dy/3,
C1.z + (C2.z - C1.z)*dz/3>,
<C1.x + (C2.x - C1.x)*(dx+1)/3,
C1.y + (C2.y - C1.y)*(dy+1)/3,
C1.z + (C2.z - C1.z)*(dz+1)/3>,
Lev-1)
#end
#local dz = dz + 1;
#end
#local dy = dy + 1;
#end
#local dx = dx + 1;
#end
#else
box {
C1 + Eps, C2 - Eps
}
#end
#end
union {
menger_level(<-1, -1, -1>, <1, 1, 1>, 3)
// texture { pigment { color rgb <1, 1, 1> }}
texture {
finish { F_Glass4 }
pigment { color rgbf <0.8, 0.6, 0.6, 0.75> }
}
interior {
ior 1.5
caustics 1.0
}
}
global_settings {
assumed_gamma 1.0
ambient_light rgb<0.5, 0.5, 0.5>
max_trace_level 15
}
light_source {
<2000, 3000, 1000>
color White
}
camera {
location <5, 4, 3>
look_at <0, 0, 0>
angle 40
}
plane {
<0, 1, 0>, -1
pigment {
hexagon
pigment { color <1, 0.5, 0.5> }
pigment { color <0.5, 1, 0.5> }
pigment { color <0.5, 0.5, 1> }
scale 0.1
}
}

View File

@ -0,0 +1,5 @@
+A
+Q9
+HTP
+fp +w800 +h600
display_gamma = 2.2

27
glas/GNUmakefile Normal file
View File

@ -0,0 +1,27 @@
# what's where?
include GNUmakevars
all: \
test-glas.jpg \
%.ppm: %.pov
$(POVRAY) +L$(POVINC) +V -I$< +FP
%.pov: make%
$< > $@
test-glas.ppm: test-glas.pov glas.pov
%.gif: %.ppm
ppmquant 256 $< | ppmtogif > $@
%.jpg: %.ppm
cjpeg $< > $@
www/%: %
cp $< $@

44
glas/glas.pov Normal file
View File

@ -0,0 +1,44 @@
#include "glass.inc"
#declare glas =
union {
merge {
difference {
cylinder {
<0, 0, 0>, <0, 20, 0>, 3
}
cylinder {
<0, 1, 0>, <0, 21, 0>, 2.8
}
}
torus {
2.9, 0.1
translate <0, 20, 0>
}
//texture {T_Glass3 }
texture {T_Old_Glass }
interior {
ior 1.5
caustics 1.0
}
}
cylinder {
<0, 1, 0> <0, 10, 0>, 2.8
texture {
pigment {
rgbf <1, 1.0, 1.0, 0.0>
}
finish {
reflection 0.3
caustics 1.0
}
}
interior {
ior 1.33
}
}
}

5
glas/povray.ini Normal file
View File

@ -0,0 +1,5 @@
+A
+QR
+HTP
+fp +w400 +h300
display_gamma = 2.2

66
glas/test-glas.pov Normal file
View File

@ -0,0 +1,66 @@
#include "colors.inc"
global_settings {
assumed_gamma 1.0
ambient_light rgb<0.5, 0.5, 0.5>
}
light_source {
<2000, 2000, 2000>
color White
}
#declare Camera_Totale = 1;
//#declare Camera_Frosch = 1;
//#declare Camera_Triebwerk = 1;
//#declare Camera_Pol = 1;
#ifdef (Camera_Frosch)
camera {
location <0, 2, 40>
look_at <0, 8, 0>
angle 40
}
#end
#ifdef (Camera_Pol)
camera {
location <1, 4700, 0>
look_at <0, 1800, 0>
angle 40
}
#end
#ifdef (Camera_Triebwerk)
camera {
location <1650, 1700, 0>
look_at <650, 1500, 0>
}
#end
#ifdef (Camera_Totale)
camera {
location <20, 30, -40>
look_at <0, 10, 0>
angle 40
}
#end
#include "glas.pov"
object {
glas
}
#if (1)
background { color rgb<0.2, 0.4, 0.8> }
plane {
<0, 1, 0>, 0
pigment {
checker color White*0.7, color White*0.5
}
}
#end

19
mensch/GNUmakefile Normal file
View File

@ -0,0 +1,19 @@
include GNUmakevars
all: \
test-kopf.ppm \
test-hand.ppm \
test-torso.ppm \
test-mensch.ppm \
%.ppm: %.pov
$(POVRAY) +V -I$< +L$(POVINC) +FP
%.pov: make%
$< > $@
test-kopf.ppm: test-kopf.pov kopf.pov
test-hand.ppm: test-hand.pov hand.pov
test-torso.ppm: test-torso.pov torso.pov
test-mensch.ppm: test-mensch.pov mensch.pov bein.inc

113
mensch/bein.inc Normal file
View File

@ -0,0 +1,113 @@
// backen
sphere {
<0, 0, 0>
1/BR
BS
scale <R_AB_X, R_AB_Y, R_AB_Z>
translate <K_AB_X, K_AB_Y, K_AB_Z>
scale <LR, 1, 1>
}
// oberschenkel
cylinder {
<0, 0, 0>
<0, -L_OS, 0>
R_OK/BR
BS
rotate <A_OS_X, 0, 0>
rotate <0, A_OS_Y, 0>
rotate <0, 0, A_OS_Z>
translate <R_BECKEN, 0, 0>
scale <LR, 1, 1>
}
sphere {
<0, 0, 0>
1/BR
BS
scale <R_OS, -L_OS/2, R_OS>
translate <0, -L_OS/2, 0>
rotate <A_OS_X, 0, 0>
rotate <0, A_OS_Y, 0>
rotate <0, 0, A_OS_Z>
translate <R_BECKEN, 0, 0>
scale <LR, 1, 1>
}
// knie
sphere {
<0, 0, 0>
1/BR,
BS
scale <R_K_X, R_K_Y, R_K_Z>
translate <0, 0, -R_OK>
rotate <A_US_X/2, 0, 0>
rotate <0, A_US_Y/2, 0>
rotate <0, 0, A_US_Z/2>
translate <0, -L_OS, 0>
rotate <A_OS_X, 0, 0>
rotate <0, A_OS_Y, 0>
rotate <0, 0, A_OS_Z>
translate <R_BECKEN, 0, 0>
scale <LR, 1, 1>
}
// unterschenkel
cylinder {
<0, 0, 0>
<0, -L_US, 0>
R_UK/BR
BS
rotate <A_US_X, 0, 0>
rotate <0, A_US_Y, 0>
rotate <0, 0, A_US_Z>
translate <0, -L_OS, 0>
rotate <A_OS_X, 0, 0>
rotate <0, A_OS_Y, 0>
rotate <0, 0, A_OS_Z>
translate <R_BECKEN, 0, 0>
scale <LR, 1, 1>
}
sphere {
<0, 0, 0>
1/BR
BS
scale <0.070, 0.100, 0.050>
translate <0, -0.100, 0.030>
rotate <A_US_X, 0, 0>
rotate <0, A_US_Y, 0>
rotate <0, 0, A_US_Z>
translate <0, -L_OS, 0>
rotate <A_OS_X, 0, 0>
rotate <0, A_OS_Y, 0>
rotate <0, 0, A_OS_Z>
translate <R_BECKEN, 0, 0>
scale <LR, 1, 1>
}
// fuß
cylinder {
<0, H_FERSE, L_FERSE>
<0, H_MFUSS, -L_MFUSS>
R_FERSE/BR
BS
rotate <A_FUSS_X, 0, 0>
rotate <0, A_FUSS_Y, 0>
rotate <0, 0, A_FUSS_Z>
translate <0, -L_US, 0>
rotate <A_US_X, 0, 0>
rotate <0, A_US_Y, 0>
rotate <0, 0, A_US_Z>
translate <0, -L_OS, 0>
rotate <A_OS_X, 0, 0>
rotate <0, A_OS_Y, 0>
rotate <0, 0, A_OS_Z>
translate <R_BECKEN, 0, 0>
scale <LR, 1, 1>
}

164
mensch/mensch.pov Normal file
View File

@ -0,0 +1,164 @@
// Mensch
// Bounding-Box: <-0.50, 0, -0.20>, <0.50, 1.75, 0.20>
// Blickrichtung -z
#declare BR = .65
#declare BS = 3
#declare BD = BS*pow((1-pow(BR,2)),2)
#declare R_BECKEN = 0.100
#declare H_BECKEN = 0.800
#declare R_AB_X = 0.100
#declare R_AB_Y = 0.100
#declare R_AB_Z = 0.070
#declare K_AB_X = 0.080
#declare K_AB_Y = 0.030
#declare K_AB_Z = 0.020
#declare L_OS = 0.400
#declare R_OS = 0.080
#declare R_OK = 0.040
#declare A_OS_X = 0
#declare A_OS_Y = 0
#declare A_OS_Z = 0
#declare R_K_X = 0.020
#declare R_K_Y = 0.040
#declare R_K_Z = 0.020
#declare L_US = 0.320
#declare R_UK = 0.040
#declare A_US_X = -0 // always use negative values!
#declare A_US_Y = 0 // should be 0
#declare A_US_Z = 0 // should be 0
#declare L_FERSE = 0.030
#declare H_FERSE = -0.050
#declare R_FERSE = 0.030
#declare L_MFUSS = 0.140
#declare H_MFUSS = -0.060
#declare L_ZEHEN = 0.070
#declare A_FUSS_X = 0
#declare A_FUSS_Y = 0
#declare A_FUSS_Z = 0 // should be about 0
#declare K_WSU_Z = 0.050
#declare K_WSO_Z = 0.080
#declare K_WSO_Y = 0.350
#declare K_BU_Z = 0.000
#declare K_BO_Z = 0.000
#declare K_BO_Y = 0.350
#declare R_B_X = 0.100
#declare R_B_Z = 0.070
#declare K_RU_X = 0.050
#declare K_RU_Y = 0.100
#declare K_RU_Z = 0.000
#declare K_RO_X = 0.130
#declare K_RO_Y = 0.450
#declare K_RO_Z = 0.050
#declare R_R_X = 0.080
#declare R_R_Y = 0.020
#declare R_R_Z = 0.060
#declare A_R_X = -5
#declare A_R_Z = 10
#declare R_N_X = 0.200
#declare R_N_Y = 0.040
#declare R_N_Z = 0.050
#declare K_N_Y = 0.430
#declare K_N_Z = 0.040
#declare K_HU_X = 0.000
#declare K_HU_Y = 0.450
#declare K_HU_Z = 0.050
#declare K_HO_X = 0.000
#declare K_HO_Y = 0.550
#declare K_HO_Z = 0.050
#declare R_H_X = 0.050
#declare R_H_Y = 0.050
#declare R_H_Z = 0.060
#declare A_H_X = 0
#declare A_H_Z = 0
#declare mensch =
blob {
threshold BD
// linke seite
#declare LR = 1
#include "bein.inc"
// rechte seite
#declare LR = -1
#include "bein.inc"
/*
// wirbelsäule
cylinder {
<0, 0, K_WSU_Z>
<0, K_WSO_Y, K_WSO_Z>
0.02/BR
BS
}
*/
// bauch
cylinder {
<0, 0, K_BU_Z>
<0, K_BO_Y, K_BO_Z>
R_B_Z/BR
BS
scale <R_B_X/R_B_Z, 1, 1>
}
// rücken
cylinder {
<-0, K_RU_Y, 0>
<-0, K_RO_Y, 0>
R_R_Y/BR
BS
scale <R_R_X/R_R_Y, R_R_Y/R_R_Y, R_R_Z/R_R_Y>
rotate <-A_R_X, 0>
rotate <0, 0, -A_R_Z>
translate <+K_RU_X, 0, K_RU_Z>
}
cylinder {
<-0, K_RU_Y, 0>
<-0, K_RO_Y, 0>
R_R_Y/BR
BS
scale <R_R_X/R_R_Y, R_R_Y/R_R_Y, R_R_Z/R_R_Y>
rotate <-A_R_X, 0>
rotate <0, 0, A_R_Z>
translate <-K_RU_X, 0, K_RU_Z>
}
#if (1)
// nacken
sphere {
<0, 0, 0>
1/BR
BS
scale <R_N_X, R_N_Y, R_N_Z>
translate <0, K_N_Y, K_N_Z>
}
#end
// hals
cylinder {
<-0, K_HU_Y, 0>
<-0, K_HO_Y, 0>
R_H_Y/BR
BS
scale <R_H_X/R_H_Y, R_H_Y/R_H_Y, R_H_Z/R_H_Y>
rotate <-A_H_X, 0>
rotate <0, 0, A_H_Z>
translate <-K_HU_X, 0, K_HU_Z>
texture { pigment { color Red } }
}
texture { pigment { color White } }
translate <0, H_BECKEN, 0>
}

35
mensch/test-kopf.pov Normal file
View File

@ -0,0 +1,35 @@
#include "colors.inc"
#include "shapes.inc"
#include "textures.inc"
#include "metals.inc"
#include "stones.inc"
global_settings {
assumed_gamma 1.0
ambient_light rgb<0.5, 0.5, 0.5>
}
light_source {
<-200, 200, -200>
color White
}
light_source {
<200, 200, -200>
color Red
}
light_source {
<200, 200, 200>
color Green
}
light_source {
<-200, 200, 200>
color Blue
}
camera {
location <-0.5, 0, 0.0>
look_at <-0, 0, 0>
rotate <0, 30*clock, 0>
}
#include "kopf.pov"
object { kopf }

38
mensch/test-mensch.pov Normal file
View File

@ -0,0 +1,38 @@
#include "colors.inc"
#include "shapes.inc"
#include "textures.inc"
#include "metals.inc"
#include "stones.inc"
global_settings {
assumed_gamma 1.0
ambient_light rgb<0.5, 0.5, 0.5>
}
light_source {
<-200, 200, -200>
color White
}
camera {
location <-2, 1.7, 2>
look_at <-0, 0.9, 0>
rotate <0, 30*clock, 0>
angle 45
}
#include "mensch.pov"
object { mensch }
plane {
<0, 1, 0>
0
texture {
pigment {
checker
color <0.5, 0.5, 1>
color White
}
}
}

25
pr/ag-schacht/GNUmakefile Normal file
View File

@ -0,0 +1,25 @@
# what's where?
include GNUmakevars
all: \
test-ag-schacht.png \
%.ppm: %.pov
$(POVRAY) +W$(WIDTH) +H$(HEIGHT) +V -I$< +L$(POVINC) +L../../lib/ +D +FP
%.png: %.pov
$(POVRAY) +V -I$< +L$(POVINC) +L../../lib/ +D +FN
%.pov: make%
$< > $@
test-ag-schacht.png: test-ag-schacht.pov \
ag-schacht.pov
%.gif: %.ppm
ppmquant 256 $< | ppmtogif > $@

View File

@ -0,0 +1,26 @@
/*
$Id: T_arkonstahl.pov,v 1.1 2000/06/28 22:13:00 hjp Exp $
Textur für Arkonstahl.
Abgeleitet von Terkonit-Textur von
Harald Ottacher
ottacher@iwf.tu-graz.ac.at
http://www.hjp.at/pr/3d/kr100/
*/
#declare T_arkonstahl =
texture {
pigment { color red 0.4 green 0.4 blue 0.8}
finish {
metallic
ambient 0.0
diffuse 0.7
brilliance 1
reflection 0.1
specular 0.7
roughness 1/60
}
}

View File

@ -0,0 +1,141 @@
#include "T_arkonstahl.pov"
#include "section.povinc"
#declare RHA = 750;
#declare RHI = 745;
#declare RAG = 5;
#declare DAG = 0.2;
#declare D = 1;
#declare Eps = 1E-6;
#declare HLeucht = 3;
#declare HLeuchtKap = 0.2;
#declare RLeucht = 0.04;
#declare ag_schacht =
union {
difference {
sphere {
<0, 0, 0>, RHA
}
sphere {
<0, 0, 0>, RHI
}
texture { T_arkonstahl }
}
#local A = 0;
#while (A < 360)
object {
section (
difference {
cylinder {
<0, -RHA, 0>,
<0, RHA, 0>,
RAG + DAG
}
cylinder {
<0, -(RHA+Eps), 0>,
<0, RHA+Eps, 0>,
RAG
}
}
A-10, A+10
)
texture { T_arkonstahl }
}
#local A = A + 60;
#end
#local H = 700;
#while (H < RHA)
#local R = sqrt(RHA*RHA - H * H);
union {
difference {
cylinder {
<0, H - D/2, 0>,
<0, H + D/2, 0>,
R
}
cylinder {
<0, H - D/2 - Eps, 0>,
<0, H + D/2 + Eps, 0>,
RAG
}
texture { T_arkonstahl }
}
#local A = 0;
#while (A < 360)
union {
union {
cylinder {
<0, H - HLeucht/2, RAG - RLeucht * 1.5>,
<0, H - HLeucht/2 - (HLeuchtKap - RLeucht/2) , RAG - RLeucht * 1.5>,
RLeucht
}
cylinder {
<0, H - HLeucht/2, RAG - RLeucht * 1.5>,
<0, H - HLeucht/2 - HLeuchtKap , RAG - RLeucht * 1.5>,
RLeucht/2
}
torus {
RLeucht/2, RLeucht/2
translate <0, H - HLeucht/2 - (HLeuchtKap - RLeucht/2) , RAG - RLeucht * 1.5>
}
cylinder {
<0, HLeucht/2 - HLeuchtKap/2, RAG - RLeucht * 1.5>,
<0, HLeucht/2 - HLeuchtKap/2, RAG>,
RLeucht
}
texture { T_arkonstahl }
}
union {
cylinder {
<0, H + HLeucht/2, RAG - RLeucht * 1.5>,
<0, H + HLeucht/2 + (HLeuchtKap - RLeucht/2) , RAG - RLeucht * 1.5>,
RLeucht
}
cylinder {
<0, H + HLeucht/2, RAG - RLeucht * 1.5>,
<0, H + HLeucht/2 + HLeuchtKap , RAG - RLeucht * 1.5>,
RLeucht/2
}
torus {
RLeucht/2, RLeucht/2
translate <0, H + HLeucht/2 + (HLeuchtKap - RLeucht/2) , RAG - RLeucht * 1.5>
}
cylinder {
<0, HLeucht/2 + HLeuchtKap/2, RAG - RLeucht * 1.5>,
<0, HLeucht/2 + HLeuchtKap/2, RAG>,
RLeucht
}
texture { T_arkonstahl }
}
cylinder {
<0, H - HLeucht/2, RAG - RLeucht * 1.5>,
<0, H + HLeucht/2, RAG - RLeucht * 1.5>,
RLeucht
texture {
pigment {
color <1-sin(radians(A))*0.2,
1-sin(radians(A+120))*0.2,
1-sin(radians(A+240))*0.2>
}
finish {
ambient 16
}
}
}
rotate <0, A, 0>
}
#local A = A + 60;
#end
}
#local H = H + 5;
#end
}

BIN
pr/ag-schacht/histgram.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

6
pr/ag-schacht/povray.ini Normal file
View File

@ -0,0 +1,6 @@
+MB5
+QR
-A
+HTN
+fp +w640 +h480 +d1
display_gamma = 2.2

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

View File

@ -0,0 +1,39 @@
#version unofficial MegaPov 0.5;
#include "colors.inc"
#include "shapes.inc"
#include "textures.inc"
#include "metals.inc"
#include "stones.inc"
#include "ag-schacht.pov"
#default {finish {ambient 0.1 diffuse 0.3 brilliance 0}}
global_settings {
assumed_gamma 1.0
ambient_light rgb<0.1, 0.1, 0.1>
radiosity {
pretrace_start 0.04
pretrace_end 0.005
count 300
recursion_limit 3
nearest_count 10
error_bound 0.3
low_error_factor 1
//adc_bailout 1
}
}
#local CP = <0, 740+D+1.7, RAG*0.8>;
camera {
location CP
look_at <-0, 0, 0>
angle 32
}
object {
ag_schacht
}

18
pr/einparken/GNUmakefile Normal file
View File

@ -0,0 +1,18 @@
# what's where?
include GNUmakevars
all: \
einparken.png \
%.jpg: %.png
cjpeg $< > $@
%.png: %.pov
$(POVRAY) +L$(POVINC) +V -I$< +FN
%.pov: make%
$< > $@
einparken.png: einparken.pov ../sol/sz.pov

BIN
pr/einparken/einparken.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 KiB

View File

@ -0,0 +1,69 @@
#include "colors.inc"
#include "shapes.inc"
#include "textures.inc"
#include "metals.inc"
#include "stones.inc"
global_settings {
assumed_gamma 1.0
ambient_light rgb<0.5, 0.5, 0.5>
}
background { color rgb<0.2, 0.4, 0.8> }
light_source {
<200000, 200000, 200000>
color White
}
#declare Camera_Totale = 1;
#ifdef (Camera_Triebwerk)
camera {
location <1650, 1700, 0>
look_at <1250, 1300, 0>
}
#end
#ifdef (Camera_Totale)
camera {
angle 40
location <15000, 5000, 5000>
look_at <0, 1300, 0>
}
#end
#declare Landestuetzen_ausgefahren = 1;
#include "sz.pov"
object {
SZ
rotate <180, 0, 0>
translate <0, 1250, 0>
}
#local X = -5;
#while (X <= 5)
#local Z = -5;
#while (Z <= 5)
#if (X != 0 | Z != 0)
object {
SZ
translate <X*4000, 1280, Z*4000>
}
#end
#local Z = Z + 1;
#end
#local X = X + 1;
#end
plane {
<0, 1, 0>, 0.3
pigment {
checker color White*0.7, color White*0.5
}
}

BIN
pr/einparken/einparken.xcf Normal file

Binary file not shown.

BIN
pr/einparken/histgram.ppm Normal file

Binary file not shown.

9
pr/einparken/povray.ini Normal file
View File

@ -0,0 +1,9 @@
+HTP
+fp +w800 +h600
display_gamma = 2.2
+L../roboter
+L../../blbman40
+L../../galaxy
+L../sol
+D
+QR

2
pr/entdecker/.cvsignore Normal file
View File

@ -0,0 +1,2 @@
*.ppm
*.jpg

32
pr/entdecker/.vimrc Normal file
View File

@ -0,0 +1,32 @@
version 5.0
set nocompatible
let cpo_save=&cpo
set cpo=B
map! <xHome> <Home>
map! <xEnd> <End>
map! <S-xF4> <S-F4>
map! <S-xF3> <S-F3>
map! <S-xF2> <S-F2>
map! <S-xF1> <S-F1>
map! <xF4> <F4>
map! <xF3> <F3>
map! <xF2> <F2>
map! <xF1> <F1>
map <xHome> <Home>
map <xEnd> <End>
map <S-xF4> <S-F4>
map <S-xF3> <S-F3>
map <S-xF2> <S-F2>
map <S-xF1> <S-F1>
map <xF4> <F4>
map <xF3> <F3>
map <xF2> <F2>
map <xF1> <F1>
let &cpo=cpo_save
unlet cpo_save
set autoindent
set exrc
set number
set shiftwidth=4
set showmatch
set nowrap

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 B

Some files were not shown because too many files have changed in this diff Show More