2008年2月13日星期三

maya fluid cache笔记1



FOR4 CACH <------------ This exists for all disk cache
. STIM startTime (TanimTime)
. ETIM endTime (TanimTime)
. TYPE isOverSampling (Tboolean)
. RATE samplingRate (TuInt32)
// block #1
FOR4 FLUD
.TIME currentTime (TanimTime)
.WRES widthRes (Tint32)
.HRES heightRes (Tint32)
.DRES depthRes (Tint32)
.NUMD numDensVal (Tint32)
.DENS densities (Tfloats)
.NMVX numVelX (Tint32)
.NMVY numVelY (Tint32)
.NMVZ numVelZ (Tint32)
.VELX xVelocities (Tfloats)
.VELY yVelocities (Tfloats)
.VELZ zVelocities (Tfloats)
.NUMT numTemperature (Tinit32)
.TEMP temperatures (Tfloats)
.NUMR numReaction (Tinit32)
.REAC reactions (Tfloats)
.NUMC numColors (Tint32)
.COLR RedColors (Tfloats)
.COLB BlueColors (Tfloats)
.COLG GreenColors (Tfloats)
.NUMU numTexCoord (Tint32)
.TEXU uCoords (Tfloats)
.TEXV vCoords (Tfloats)
.TEXW wCoords (Tfloats)
// block #2
FOR4 FLUD
........
Note:
TanimTime: an unsigned int, units are 1/6000 second
Tfloats: an array of floats, the count is specified by the
preceding "num" tag.

以上引用自maya文档。

下面是一个4x4的2d流体的cache,只有density部分。


用STIM作为例子来说明,53 54 49 4D 00 00 00 04,是STIM段的标识,而后面的00 00 00 FA才是SITM段的数据。00 00 00 FA是一个无符号整数,作为一个整数读入之后,是FA 00 00 00的顺序,这与本意是相反的(开始我以为是mac才这样,后来发现在linux上也是如此)。在读入之后,需要直接通过内存地址修改数据的顺序。
后面的DENS数据段里的42 C8 00 00,在内存中,应该是(低地址)00 00 C8 42(高地址)的顺序。