home *** CD-ROM | disk | FTP | other *** search
/ M.u.C.S. Disc 2000 / MUCS2000.iso / falcon / eb_povra / ebs_stru.asc < prev    next >
Text File  |  1995-04-30  |  11KB  |  363 lines

  1. /***********************************************************************
  2. STRUCTURE D'UN FICHIER *.EBS : Fichier contenant une scène pour EB_EDPOV
  3. BARANGER Emmanuel                                             12/12/1994
  4. ***********************************************************************/
  5. /* Remarque importante
  6.    Toutes les valeurs qui, dans P.O.V., sont comprises entre 0.0 et 1.0 sont
  7.    ici codées sur un octet. Il faut donc faire les conversions nécessaires.
  8.    (0.0 à 1.0 devient 0 à 255)
  9. */
  10. /***********************************************
  11.    Définition des termes utilisés :
  12.  
  13.    CHAR           8 bits non signés (Caractères)
  14.    BYTE           8 Bits non signés
  15.    INT            16 Bits signés
  16.    UINT           16 Bits non signés
  17.    LONG           32 Bits signés
  18.    ULONG          32 Bit non signés
  19.  
  20. ***********************************************/
  21.  
  22. /* Structure générale */
  23.  
  24. typedef struct
  25. {
  26.  
  27.    CHAR[4]  EBPa
  28.    OBJET    0              \  Le nombre d'objet étant définit avant
  29.    ...                      \ la définition des zones de mémoire, il
  30.    ...                      / et possible d'avoir un nombre d'objets
  31.    OBJET    N-1            /  différent d'un fichier à l'autre.
  32.    INT      Camera_X
  33.    INT      Camera_Y
  34.    INT      Camera_Z
  35.    INT      Vers_X
  36.    INT      Vers_Y
  37.    INT      Vers_z
  38.    SOURCE                        /* Numéro 0 */
  39.    SOURCE                        /* 1 */
  40.    SOURCE                        /* 2 */
  41.    SOURCE                        /* 3 */
  42.    SOURCE                        /* 4 */
  43.    SOURCE                        /* 5 */
  44.    SOURCE                        /* 6 */
  45.    SOURCE                        /* 7 */
  46.    SOURCE                        /* 8 */
  47.    SOURCE                        /* 9 */
  48.    BYTE     Brouillard_Fond      /*  Bit 0 à 1 : Brouillard définit
  49.                                  /*  Bit 1 à 1 : Background définit
  50.    DEF_CO                        /* Définition de la couleur du brouillard
  51.    INT      Distance
  52.    DEF_CO
  53. } TOTAL;
  54.  
  55. /* Structure DEF_CO. Définition des composantes de couleurs */
  56.  
  57. typedef struct
  58. {
  59.    INT      Numero_couleur
  60.    BYTE     Teinte
  61.    BYTE     Luminosite
  62.    BYTE     Saturation
  63. } DEF_CO;
  64.  
  65. /* Structure DEF_COT. Définition des composantes de couleurs
  66.                       plus la transparence                     */
  67.  
  68. typedef struct
  69. {
  70.    INT      TNumero_couleur
  71.    BYTE     TTeinte
  72.    BYTE     TLuminosite
  73.    BYTE     TSaturation
  74.    BYTE     TTransparence
  75. } DEF_COT;
  76.  
  77. /* Structure SOURCE. Définition d'une source de lumière */
  78.  
  79. typedef struct
  80. {
  81.    BYTE     Flags
  82.    INT      Source_X
  83.    INT      Source_Y
  84.    INT      Source_Z
  85.    BYTE     Teinte_source
  86.    BYTE     Luminosite_source
  87.    BYTE     Saturation_source
  88.    INT      Svers_X
  89.    INT      Svers_Y
  90.    INT      Svers_Z
  91.    INT      Objet_lie
  92. }  SOURCE;
  93.  
  94. /* Structure OBJET. Définition d'un objet */
  95.  
  96. typedef struct
  97. {
  98.    INT      Numero_Primitive
  99.    INT      Position_X
  100.    INT      Position_Y
  101.    INT      Position_Z
  102.    INT      Largeur
  103.    INT      Hauteur
  104.    INT      Profondeur
  105.    INT      Couleur_Objet
  106.    CHAR     Nom_Objet[23]
  107.    INT      Relation_CSG
  108.    TEXTURE
  109. } OBJET;
  110.  
  111. /* Information sur les valeurs de "Numero_Primitive"
  112.     0 : Segment
  113.     1 : Boite
  114.     2 : Sphère
  115.     3 : Prisme
  116.     4 : Cône
  117.     5 : Tronc de cône
  118.     6 : Hémisphère
  119.     7 : Tube
  120.     8 : Disque
  121.     9 : Pyramide
  122.    10 : Colonne
  123.    11 : Plan
  124.    12 : Tor
  125.  
  126.    Si Numero_Primitive>12 alors vérifier les bits 11 à 14.
  127.       Si bit 11 à 1 : Height_field
  128.          bit 12 à 1 : Extruder
  129.          bit 13 à 1 : tourner
  130.          bit 14 à 1 : Bicubic_patch
  131.          tout à 0   : Objet importer.
  132. */
  133.  
  134. /* Structure TEXTURE. Définition de la texture d'un objet. */
  135.  
  136. typedef struct
  137. {
  138.    INT      Texture_Numero
  139.    ECHELLE
  140.    PIGMENT              /* Partie "pigment" */
  141.    NORMAL               /* Partie "normal" */
  142.    FINISH               /* Partie "finish" */
  143. }  TEXTURE;
  144.  
  145. /* Structure ECHELLE. Définition des "scales" d'une textures */
  146.  
  147. typedef struct
  148. {
  149.    INT      Echelle_X
  150.    INT      Echelle_Y
  151.    INT      Echelle_Z
  152. } ECHELLE;
  153.  
  154. /* Structure PIGMENT. Définition de la partie "pigment" d'une texture */
  155.  
  156. typedef
  157. {
  158.    BYTE     Motifs_p
  159.    BYTE     Aspect_p
  160.    BYTE     Divers_p
  161.    BYTE     Autres_p
  162.    BYTE     Gradient
  163.    BYTE     Turbulence_x_p
  164.    BYTE     Turbulence_Y_p
  165.    BYTE     Turbulence_Z_p
  166.    ECHELLE              /* valeurs de translate */
  167.    ECHELLE              /* valeurs de rotate */
  168.    ECHELLE              /* valeurs de scale */
  169.    BYTE     Valeur_Octaves
  170.    BYTE     Valeur_Lambda
  171.    BYTE     Valeur_Omega
  172.    BYTE     Valeur_Frequency_p
  173.    BYTE     Valeur_Phase_p
  174.    BYTE     Valeur_Agate_turbulence
  175.    DEF_COLT             /* Définition de la couleur */
  176.    DEF_COLT             /* Couleur 1 du premier color_map */
  177.    DEF_COLT             /* Couleur 2 du premier color_map */
  178.    DEF_COLT             /* Couleur 3 du premier color_map */
  179.    DEF_COLT             /* Couleur 4 du premier color_map */
  180.    DEF_COLT             /* Couleur 5 du premier color_map */
  181.    DEF_COLT             /* Couleur 6 du premier color_map */
  182.    BYTE     Premier_pourcentage_color_map_1
  183.    BYTE     Premier_pourcentage_color_map_2
  184.    BYTE     Premier_pourcentage_color_map_3
  185.    BYTE     Premier_pourcentage_color_map_4
  186.    BYTE     Premier_pourcentage_color_map_5
  187.    BYTE     Premier_pourcentage_color_map_6
  188.    BYTE     Deuxième_pourcentage_color_map_1
  189.    BYTE     Deuxième_pourcentage_color_map_2
  190.    BYTE     Deuxième_pourcentage_color_map_3
  191.    BYTE     Deuxième_pourcentage_color_map_4
  192.    BYTE     Deuxième_pourcentage_color_map_5
  193.    BYTE     Deuxième_pourcentage_color_map_6
  194.    DEF_COLT             /* Couleur 1 du checker_color */
  195.    DEF_COLT             /* Couleur 2 du checker_color */
  196.    DEF_COLT             /* Couleur 1 de l'hexagon_color */
  197.    DEF_COLT             /* Couleur 2 de l'hexagon_color */
  198.    DEF_COLT             /* Couleur 3 de l'hexagon_color */
  199.    DEF_COLT             /* Couleur 1 du deuxième color_map */
  200.    DEF_COLT             /* Couleur 2 du deuxième color_map */
  201.    DEF_COLT             /* Couleur 3 du deuxième color_map */
  202.    DEF_COLT             /* Couleur 4 du deuxième color_map */
  203.    DEF_COLT             /* Couleur 5 du deuxième color_map */
  204.    DEF_COLT             /* Couleur 6 du deuxième color_map */
  205.    CHAR     Nom_image_map[8]     /* Nom de l'image mappée */
  206. } PIGMENT;
  207.  
  208. /* Explications :
  209.       Motifs_p    : Bit ON/OFF
  210.                bit 0 : Marble
  211.                bit 1 : Wood
  212.                bit 2 : Onion
  213.                bit 3 : Leopard
  214.                bit 4 : Granite
  215.                bit 5 : Bozo
  216.                bit 6 : Spotted
  217.                bit 7 : Agate
  218.       Aspects_p   : Bit ON/OFF
  219.                bit 0 : Gradient
  220.                bit 1 : Turbulence
  221.                bit 2 : Octaves
  222.                bit 3 : Lambda
  223.                bit 4 : Omega
  224.                bit 5 : Frequency
  225.                bit 6 : Phase
  226.                bit 7 : Color_map
  227.       Divers_p    : Bit ON/OFF
  228.                bit 0 : Image_map
  229.                bit 1 : Checker
  230.                bit 2 : Hexagon
  231.                bit 3 : Color
  232.                bit 4 : Ombre
  233.                bit 5 : Invisible       Se bit ne sert pas dans les textures.
  234.                                     il est la pour indiquer à EB_EDPOV
  235.                                     si un objet doit ou non être affiché.
  236.                bit 7 et 6 : Type d'image_map
  237.                      00 : GIF
  238.                      01 : TGA
  239.                      10 : IFF
  240.                      11 : DIS
  241.       Autres_p    : Bit ON/OFF
  242.                bit 0 : Translate
  243.                bit 1 : Rotate
  244.                bit 2 : Scale
  245.                bit 3 : Once
  246.                bit 4 : Interpolate (0=2, 1=4)
  247.                bit 5 : Vide pour le moment
  248.                bit 7 et 6 : Type de mapping
  249.                      00 : Plan
  250.                      01 : Sphère
  251.                      10 : Cylindre
  252.                      11 : Tor
  253.       Gradient    : Bit 0 à 5 : vide pour le moment
  254.                bit 7 et 6 : Type de gradient
  255.                      00 : sur X
  256.                      01 : sur Y
  257.                      02 : sur Z
  258. */
  259.  
  260. /* Structure NORMAL. Définition de la partie "normal" d'une texture. */
  261.  
  262. typedef struct
  263. {
  264.    BYTE     Motifs_n
  265.    BYTE     Autres_n
  266.    BYTE     Divers_n
  267.    BYTE     Valeur_dump
  268.    BYTE     Valeur_dent
  269.    BYTE     Valeur_ripples
  270.    BYTE     Valeur_Waves
  271.    BYTE     Valeur_Wrinkles
  272.    BYTE     Turbulence_x_n
  273.    BYTE     Turbulence_Y_n
  274.    BYTE     Turbulence_Z_n
  275.    BYTE     Valeur_frequency_n
  276.    BYTE     Valeur_phase_n
  277.    ECHELLE              /* valeurs de translate */
  278.    ECHELLE              /* valeurs de rotate */
  279.    ECHELLE              /* valeurs de scale */
  280.    CHAR     Nom_bump_map[8]     /* Nom de l'image bumppée */
  281. } NORMAL;
  282.  
  283. /* Explications :
  284.       Motifs_n    : Bit ON/OFF
  285.                bit 0 : Bump
  286.                bit 1 : Dents
  287.                bit 2 : Ripples
  288.                bit 3 : Waves
  289.                bit 4 : Wrinkles
  290.                bit 5 : Turbulence
  291.                bit 6 : Frequency
  292.                bit 7 : Phase
  293.       Autres_p    : Bit ON/OFF
  294.                bit 0 : Translate
  295.                bit 1 : Rotate
  296.                bit 2 : Scale
  297.                bit 3 : Once
  298.                bit 4 : Interpolate (0=2, 1=4)
  299.                bit 5 : Bump_map
  300.                bit 7 et 6 : Type de bump_map
  301.                      00 : GIF
  302.                      01 : TGA
  303.                      10 : IFF
  304.                      11 : DIS
  305.       Divers_p    : Bit 0 à 5 vide pour le moment
  306.                bit 7 et 6 : Type de mapping
  307.                      00 : Plan
  308.                      01 : Sphère
  309.                      10 : Cylindre
  310.                      11 : Tor
  311.  
  312. */
  313.  
  314. /* Structure FINISH. Définition de la partie "finish" d'une texture.
  315.  
  316. typedef struct
  317. {
  318.    BYTE     Motifs_f
  319.    BYTE     Autres_f
  320.    BYTE     Divers_f
  321.    BYTE     Valeur_IOR
  322.    BYTE     Valeur_diffuse
  323.    BYTE     Valeur_reflection
  324.    BYTE     Valeur_brilliance
  325.    BYTE     Valeur_crand
  326.    BYTE     Valeur_ambient
  327.    BYTE     Valeur_specular
  328.    BYTE     Valeur_roughness
  329.    BYTE     Valeur_phong
  330.    BYTE     Valeur_phong_size
  331. } FINISH;
  332.  
  333. /* Explications :
  334.       Motifs_f    : Bit ON/OFF
  335.                bit 0 : Diffuse
  336.                bit 1 : Reflection
  337.                bit 2 : Brilliance
  338.                bit 3 : Crand
  339.                bit 4 : Ambient
  340.                bit 5 : Specular
  341.                bit 6 : Roughness
  342.                bit 7 : Phong
  343.       Autres_f    : Bit ON/OFF
  344.                bit 0 : Refraction
  345.                bit 1 : Mettalic
  346.                bit 2 et 4 : Sens du mapping dans partie "pigment"
  347.                     000 : Dessous
  348.                     001 : Dessus
  349.                     010 : Gauche
  350.                     011 : Droite
  351.                     100 : Devant
  352.                     101 : Derrière
  353.                bit 5 à 7 : vide pour le moment
  354.       Divers_f : lire la valeur :
  355.  
  356.                0 : Rien
  357.              100 : Air
  358.              133 : Eau
  359.              150 : Verre
  360.              240 : Diamant
  361.            Autre : Valeur libre
  362. */
  363.