/*********************************************************************** STRUCTURE D'UN FICHIER *.EBS : Fichier contenant une scŠne pour EB_EDPOV BARANGER Emmanuel 12/12/1994 ***********************************************************************/ /* Remarque importante Toutes les valeurs qui, dans P.O.V., sont comprises entre 0.0 et 1.0 sont ici cod‚es sur un octet. Il faut donc faire les conversions n‚cessaires. (0.0 … 1.0 devient 0 … 255) */ /*********************************************** D‚finition des termes utilis‚s : CHAR 8 bits non sign‚s (CaractŠres) BYTE 8 Bits non sign‚s INT 16 Bits sign‚s UINT 16 Bits non sign‚s LONG 32 Bits sign‚s ULONG 32 Bit non sign‚s ***********************************************/ /* Structure g‚n‚rale */ typedef struct { CHAR[4] EBPa OBJET 0 \ Le nombre d'objet ‚tant d‚finit avant ... \ la d‚finition des zones de m‚moire, il ... / et possible d'avoir un nombre d'objets OBJET N-1 / diff‚rent d'un fichier … l'autre. INT Camera_X INT Camera_Y INT Camera_Z INT Vers_X INT Vers_Y INT Vers_z SOURCE /* Num‚ro 0 */ SOURCE /* 1 */ SOURCE /* 2 */ SOURCE /* 3 */ SOURCE /* 4 */ SOURCE /* 5 */ SOURCE /* 6 */ SOURCE /* 7 */ SOURCE /* 8 */ SOURCE /* 9 */ BYTE Brouillard_Fond /* Bit 0 … 1 : Brouillard d‚finit /* Bit 1 … 1 : Background d‚finit DEF_CO /* D‚finition de la couleur du brouillard INT Distance DEF_CO } TOTAL; /* Structure DEF_CO. D‚finition des composantes de couleurs */ typedef struct { INT Numero_couleur BYTE Teinte BYTE Luminosite BYTE Saturation } DEF_CO; /* Structure DEF_COT. D‚finition des composantes de couleurs plus la transparence */ typedef struct { INT TNumero_couleur BYTE TTeinte BYTE TLuminosite BYTE TSaturation BYTE TTransparence } DEF_COT; /* Structure SOURCE. D‚finition d'une source de lumiŠre */ typedef struct { BYTE Flags INT Source_X INT Source_Y INT Source_Z BYTE Teinte_source BYTE Luminosite_source BYTE Saturation_source INT Svers_X INT Svers_Y INT Svers_Z INT Objet_lie } SOURCE; /* Structure OBJET. D‚finition d'un objet */ typedef struct { INT Numero_Primitive INT Position_X INT Position_Y INT Position_Z INT Largeur INT Hauteur INT Profondeur INT Couleur_Objet CHAR Nom_Objet[23] INT Relation_CSG TEXTURE } OBJET; /* Information sur les valeurs de "Numero_Primitive" 0 : Segment 1 : Boite 2 : SphŠre 3 : Prisme 4 : C“ne 5 : Tronc de c“ne 6 : H‚misphŠre 7 : Tube 8 : Disque 9 : Pyramide 10 : Colonne 11 : Plan 12 : Tor Si Numero_Primitive>12 alors v‚rifier les bits 11 … 14. Si bit 11 … 1 : Height_field bit 12 … 1 : Extruder bit 13 … 1 : tourner bit 14 … 1 : Bicubic_patch tout … 0 : Objet importer. */ /* Structure TEXTURE. D‚finition de la texture d'un objet. */ typedef struct { INT Texture_Numero ECHELLE PIGMENT /* Partie "pigment" */ NORMAL /* Partie "normal" */ FINISH /* Partie "finish" */ } TEXTURE; /* Structure ECHELLE. D‚finition des "scales" d'une textures */ typedef struct { INT Echelle_X INT Echelle_Y INT Echelle_Z } ECHELLE; /* Structure PIGMENT. D‚finition de la partie "pigment" d'une texture */ typedef { BYTE Motifs_p BYTE Aspect_p BYTE Divers_p BYTE Autres_p BYTE Gradient BYTE Turbulence_x_p BYTE Turbulence_Y_p BYTE Turbulence_Z_p ECHELLE /* valeurs de translate */ ECHELLE /* valeurs de rotate */ ECHELLE /* valeurs de scale */ BYTE Valeur_Octaves BYTE Valeur_Lambda BYTE Valeur_Omega BYTE Valeur_Frequency_p BYTE Valeur_Phase_p BYTE Valeur_Agate_turbulence DEF_COLT /* D‚finition de la couleur */ DEF_COLT /* Couleur 1 du premier color_map */ DEF_COLT /* Couleur 2 du premier color_map */ DEF_COLT /* Couleur 3 du premier color_map */ DEF_COLT /* Couleur 4 du premier color_map */ DEF_COLT /* Couleur 5 du premier color_map */ DEF_COLT /* Couleur 6 du premier color_map */ BYTE Premier_pourcentage_color_map_1 BYTE Premier_pourcentage_color_map_2 BYTE Premier_pourcentage_color_map_3 BYTE Premier_pourcentage_color_map_4 BYTE Premier_pourcentage_color_map_5 BYTE Premier_pourcentage_color_map_6 BYTE DeuxiŠme_pourcentage_color_map_1 BYTE DeuxiŠme_pourcentage_color_map_2 BYTE DeuxiŠme_pourcentage_color_map_3 BYTE DeuxiŠme_pourcentage_color_map_4 BYTE DeuxiŠme_pourcentage_color_map_5 BYTE DeuxiŠme_pourcentage_color_map_6 DEF_COLT /* Couleur 1 du checker_color */ DEF_COLT /* Couleur 2 du checker_color */ DEF_COLT /* Couleur 1 de l'hexagon_color */ DEF_COLT /* Couleur 2 de l'hexagon_color */ DEF_COLT /* Couleur 3 de l'hexagon_color */ DEF_COLT /* Couleur 1 du deuxiŠme color_map */ DEF_COLT /* Couleur 2 du deuxiŠme color_map */ DEF_COLT /* Couleur 3 du deuxiŠme color_map */ DEF_COLT /* Couleur 4 du deuxiŠme color_map */ DEF_COLT /* Couleur 5 du deuxiŠme color_map */ DEF_COLT /* Couleur 6 du deuxiŠme color_map */ CHAR Nom_image_map[8] /* Nom de l'image mapp‚e */ } PIGMENT; /* Explications : Motifs_p : Bit ON/OFF bit 0 : Marble bit 1 : Wood bit 2 : Onion bit 3 : Leopard bit 4 : Granite bit 5 : Bozo bit 6 : Spotted bit 7 : Agate Aspects_p : Bit ON/OFF bit 0 : Gradient bit 1 : Turbulence bit 2 : Octaves bit 3 : Lambda bit 4 : Omega bit 5 : Frequency bit 6 : Phase bit 7 : Color_map Divers_p : Bit ON/OFF bit 0 : Image_map bit 1 : Checker bit 2 : Hexagon bit 3 : Color bit 4 : Ombre bit 5 : Invisible Se bit ne sert pas dans les textures. il est la pour indiquer … EB_EDPOV si un objet doit ou non ˆtre affich‚. bit 7 et 6 : Type d'image_map 00 : GIF 01 : TGA 10 : IFF 11 : DIS Autres_p : Bit ON/OFF bit 0 : Translate bit 1 : Rotate bit 2 : Scale bit 3 : Once bit 4 : Interpolate (0=2, 1=4) bit 5 : Vide pour le moment bit 7 et 6 : Type de mapping 00 : Plan 01 : SphŠre 10 : Cylindre 11 : Tor Gradient : Bit 0 … 5 : vide pour le moment bit 7 et 6 : Type de gradient 00 : sur X 01 : sur Y 02 : sur Z */ /* Structure NORMAL. D‚finition de la partie "normal" d'une texture. */ typedef struct { BYTE Motifs_n BYTE Autres_n BYTE Divers_n BYTE Valeur_dump BYTE Valeur_dent BYTE Valeur_ripples BYTE Valeur_Waves BYTE Valeur_Wrinkles BYTE Turbulence_x_n BYTE Turbulence_Y_n BYTE Turbulence_Z_n BYTE Valeur_frequency_n BYTE Valeur_phase_n ECHELLE /* valeurs de translate */ ECHELLE /* valeurs de rotate */ ECHELLE /* valeurs de scale */ CHAR Nom_bump_map[8] /* Nom de l'image bumpp‚e */ } NORMAL; /* Explications : Motifs_n : Bit ON/OFF bit 0 : Bump bit 1 : Dents bit 2 : Ripples bit 3 : Waves bit 4 : Wrinkles bit 5 : Turbulence bit 6 : Frequency bit 7 : Phase Autres_p : Bit ON/OFF bit 0 : Translate bit 1 : Rotate bit 2 : Scale bit 3 : Once bit 4 : Interpolate (0=2, 1=4) bit 5 : Bump_map bit 7 et 6 : Type de bump_map 00 : GIF 01 : TGA 10 : IFF 11 : DIS Divers_p : Bit 0 … 5 vide pour le moment bit 7 et 6 : Type de mapping 00 : Plan 01 : SphŠre 10 : Cylindre 11 : Tor */ /* Structure FINISH. D‚finition de la partie "finish" d'une texture. typedef struct { BYTE Motifs_f BYTE Autres_f BYTE Divers_f BYTE Valeur_IOR BYTE Valeur_diffuse BYTE Valeur_reflection BYTE Valeur_brilliance BYTE Valeur_crand BYTE Valeur_ambient BYTE Valeur_specular BYTE Valeur_roughness BYTE Valeur_phong BYTE Valeur_phong_size } FINISH; /* Explications : Motifs_f : Bit ON/OFF bit 0 : Diffuse bit 1 : Reflection bit 2 : Brilliance bit 3 : Crand bit 4 : Ambient bit 5 : Specular bit 6 : Roughness bit 7 : Phong Autres_f : Bit ON/OFF bit 0 : Refraction bit 1 : Mettalic bit 2 et 4 : Sens du mapping dans partie "pigment" 000 : Dessous 001 : Dessus 010 : Gauche 011 : Droite 100 : Devant 101 : DerriŠre bit 5 … 7 : vide pour le moment Divers_f : lire la valeur : 0 : Rien 100 : Air 133 : Eau 150 : Verre 240 : Diamant Autre : Valeur libre */