Maya IFF
 
 
 

Platforms

Windows

Alias for Windows can read Maya IFF files and save them as TIFF or Alias pix files.

Description

How to Read Maya IFF files in Alias

The Maya IFF file format is not recognized inside file lister as a usable format. You can use the commands file->show->pix or try to use an IFF file as a texture. Maya IFF files can be brought in as images planes for Cameras.

To use IFF files as a texture you must enter the absolute path for the texture and not use the browse button to open file lister.

Basic file structure

The structure is based on the use of tags to identify blocks of data called chunks or structures of chunks called groups. Each tag is made up of four characters and is immediately followed by the size of the chunk or group that it describes coded on 4 bytes. Tags are handled as pseudo-character strings and all other data is written in big-endian format.

Block type tags

The main tag types are FORM, CAT, LIST and PROP.

They come in several flavors, such as FOR4, FOR8, CAT4 and CAT8 to specify 4-byte or 8-byte alignment boundaries.

Groups

Four tags are used to arrange blocks into groups: FORM, CAT, LIST, 
and PROP. The first four characters following the size are used to 
identify the type of the group. 

The FORM defines a structure that is like a C struct.

  FORM 38 TEXT           
										CHAR 6 "Times"           
										CHAR 12 "Hello World"   
		EOF

is like

  struct Text t = {
           char *f = "Times";
           char *c = "Hello World";
  };

The size of the group (38) equals the size of the data it contains (6 plus 12) plus the size of the headers (4 for TEXT, 8 for CHAR 6 and 8 for CHAR 12). In this case, the result is 6+12+4+8+8 = 38.

As in C structures you can nest groups; for example:

  FORM 52 TEXT
           FORM 8 FONT
                   CHAR 6 "Times"
                   LONG 4 <12>
                   LONG 4 <0>
           CHAR 12 "Hello World"
   EOF

or in C terms:

  struct Text t = {
           struct Font f = {
                   char *n = "Times";
                   int s = 12;
                   int d = 0;
           };
           char *string = "Hello World";
   };

This example may not show that blocks are not constrained to use a unique data type and may contain the equivalent of a complete C structure.

The FORM tag separates independent blocks of data that can be handled separately and specifies the meaning of each subunit.

In the example above, the CHAR chunk in the FONT FORM does not mean the same thing as the CHAR chunk in the TEXT FORM. The FORM tag determines how you interpret an ordered set of data types.

The CAT tag defines a concatenation of independent objects with no order relation between them. Two typical uses of CATs are for libraries of objects (pictures in Example 1) or clipboards (Example 2).

Example 1:

  CAT 3632 PICT
           FORM 1234 PICT ...
           FORM 2378 PICT ...
  EOF

Example 2:

CAT 2130 CLIP
           FORM 1234 PICT ...
           FORM 876  DRAW ...
   EOF

Searching through a structured file is generally greatly accelerated, even in a CAT that has no order amongst its members, through the knowledge of the size of every group or chunk specified in the header.

The LIST tag is used to group objects with similar properties, avoiding redundancy. For example, a sequence of equal-sized images might be represented in the following way. One image would have a structure like:

  FORM .... PICT
           IHDR 32 (image size info)
           BODY ... (image data)
   EOF

then a sequence of like sized images could be done as follows, sharing the common header information:

  LIST ... ANIM
           PROP 44 PICT
                   IHDR 32 (common size info)
           FORM ... PICT
                   BODY .... (data)
           FORM ... PICT
                   BODY .... (data)
           FORM ... PICT
                   BODY .... (data)
   EOF

The information in a PROP construct is valid until the end of the LIST. It can be redefined locally in a FORM stastement. (In the above example the common IHDR is valid in all PICTs that don’t include an IHDR block of their own.)

Alignment

IFF blocks align to 2-byte boundaries. The size specified in the header does not take padding into account. Many computers typically align their memory on 4-byte or 8-byte boundaries. Flib uses eight extra TAGs to let you specify alignment information: