Formatx.m3DSConst.pas 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981
  1. //
  2. // The graphics engine GXScene
  3. //
  4. unit Formatx.m3DSConst;
  5. (*
  6. All 3DS constant definitions used by the various routines (mainly in Utils3DS.pas). About one thousand
  7. defined constants herein. The guys at Autodesk must be crazy...
  8. Last Change - 03. October 1999
  9. (c) Copyright 1999, Dipl. Ing. Mike Lischke ([email protected])
  10. *)
  11. interface
  12. uses
  13. Formatx.m3DSTypes;
  14. // ---------------- Constants for commonly used structures --------------------
  15. const // Flags used by the flag field of the Mesh3DS structure
  16. FaceCAVisable3DS = $0001; // flags the CA edge as visible
  17. FaceBCVisable3DS = $0002; // flags the BC edge as visible
  18. FaceABVisable3DS = $0004; // flags the AB edge as visible
  19. FaceUWrap3DS = $0008; // flags the face as being at
  20. // a texture coord u wrap seam
  21. FaceVWrap3DS = $0010; // flags the face as being at
  22. // a texture coord v wrap seam
  23. // flags used by the rflags field of the keyheader3DS structure
  24. KeyUsesTension3DS = $01;
  25. KeyUsesCont3DS = $02;
  26. KeyUsesBias3DS = $04;
  27. KeyUsesEaseTo3DS = $08;
  28. KeyUsesEaseFrom3DS = $10;
  29. // flags used by the track flags field
  30. TrackSingle3DS = $0000;
  31. TrackLoops3DS = $0003;
  32. TrackRepeats3DS = $0002;
  33. TrackLockX3DS = $0008;
  34. TrackLockY3DS = $0010;
  35. TrackLockZ3DS = $0020;
  36. TrackNoLinkX3DS = $0100;
  37. TrackNoLinkY3DS = $0200;
  38. TrackNoLinkZ3DS = $0400;
  39. // Basic structure default contents for ease of initialization
  40. DefPoint3DS : TPoint3DS = (X: 0; Y: 0; Z: 0);
  41. DefTextVert3DS : TTexVert3DS = (U: 0; V: 0);
  42. DefFace3DS : TFace3DS = (v1: 0; v2: 1; v3: 2; Flag: 0);
  43. DefTrackHeader3DS : TTrackHeader3DS = (Flags: 0; nu1: 0; nu2: 0; KeyCount: 1);
  44. DefKeyHeader3DS : TKeyHeader3DS = (Time: 0; RFlags: 0; Tension: 0; Continuity: 0; Bias: 0; EaseTo: 0; EaseFrom: 0);
  45. DefObjMat3DS : TObjMat3DS = (NameStr: ''; NFaces: 0; FaceIndex: nil);
  46. DefKFRotKey3DS : TKFRotKey3DS = (Angle: 0; X: 0; Y: 0; Z: 1);
  47. // Fog Flags
  48. LayerFogBgnd = $100000;
  49. NoFalloff = $0;
  50. TopFalloff = $2;
  51. BottomFalloff = $1;
  52. // Flags for initflags parameter
  53. InitNoExtras3DS = $0000;
  54. InitVertexArray3DS = $0001;
  55. InitTextArray3DS = $0002;
  56. InitFaceArray3DS = $0004;
  57. InitMatArray3DS = $0008;
  58. InitSmoothArray3DS = $0010;
  59. InitProcData3DS = $0020;
  60. InitVFlagArray3DS = $0040;
  61. // field codes for RelMeshObjField3ds
  62. RelVertexArray3ds = $0001;
  63. RelTextArray3ds = $0002;
  64. RelFaceArray3ds = $0004;
  65. RelMatArray3ds = $0008;
  66. RelSmoothArray3ds = $0010;
  67. RelProcData3ds = $0020;
  68. RelVFlagArray3ds = $0040;
  69. RelAll3DS = $FFFF;
  70. // Smoothing group Flags used in the smootharray field of the TMesh3DS structure
  71. Smooth01Group3DS = $00000001;
  72. Smooth02Group3DS = $00000002;
  73. Smooth03Group3DS = $00000004;
  74. Smooth04Group3DS = $00000008;
  75. Smooth05Group3DS = $00000010;
  76. Smooth06Group3DS = $00000020;
  77. Smooth07Group3DS = $00000030;
  78. Smooth08Group3DS = $00000080;
  79. Smooth09Group3DS = $00000100;
  80. Smooth10Group3DS = $00000200;
  81. Smooth11Group3DS = $00000400;
  82. Smooth12Group3DS = $00000800;
  83. Smooth13Group3DS = $00001000;
  84. Smooth14Group3DS = $00002000;
  85. Smooth15Group3DS = $00004000;
  86. Smooth16Group3DS = $00008000;
  87. Smooth17Group3DS = $00010000;
  88. Smooth18Group3DS = $00020000;
  89. Smooth19Group3DS = $00040000;
  90. Smooth20Group3DS = $00080000;
  91. Smooth21Group3DS = $00100000;
  92. Smooth22Group3DS = $00200000;
  93. Smooth23Group3DS = $00400000;
  94. Smooth24Group3DS = $00800000;
  95. Smooth25Group3DS = $01000000;
  96. Smooth26Group3DS = $02000000;
  97. Smooth27Group3DS = $04000000;
  98. Smooth28Group3DS = $08000000;
  99. Smooth29Group3DS = $10000000;
  100. Smooth30Group3DS = $20000000;
  101. Smooth31Group3DS = $40000000;
  102. Smooth32Group3DS = $80000000;
  103. DummyName3DS = '$$$DUMMY';
  104. // flag settings for TKFMesh3DS, TKFOmni3DS, TKFCamera3DS, TKFAmbient and TKFSpot3DS
  105. // ml: these flags correspond directly to NODE_RENDOB_HIDE etc. (see below), I don't know
  106. // what these duplications are for...
  107. // for the flags field
  108. KfNodeOff3DS = 1 shl 3;
  109. KfHideNode3DS = 1 shl 11;
  110. KfFastNode3DS = 1 shl 12;
  111. // For the flags2 field
  112. KfNodeHasPath3DS = 1;
  113. KfNodeAutoSmooth3DS = 1 shl 1;
  114. KfNodeFrozen3DS = 1 shl 2;
  115. KfMotionBlur3DS = 1 shl 4;
  116. KfBlurBranch3DS = 1 shl 5;
  117. KfMorphMtl3DS = 1 shl 6;
  118. KfMorphOb3DS = 1 shl 7;
  119. //-------------- constants that define various value ranges for specific chunks
  120. // 3DS filename
  121. FileNameStrMax3DS = 512;
  122. // 3DS file attributes
  123. FileAttrStrMax3DS = 128;
  124. // MASTER_SCALE chunk
  125. MasterScaleMin3DS = 0; // noninclusive minimum value for master scale
  126. // LO_SHADOW_BIAS chunk
  127. LoShadowBiasMin3DS = 0; // noninclusive minimum value for low shadow bias setting
  128. // HI_SHADOW_BIAS chunk
  129. HiShadowBiasMin3DS = 0; // noninclusive minimum value for high shadow bias setting
  130. // SHADOW_MAP_SIZE chunk
  131. ShadowMapSizeMin3DS = 0; // noninclusive minimum value for shadow map size
  132. // SHADOW_SAMPLES chunk
  133. ShadowSamplesMin3DS = 0; // noninclusive minimum value for shadow samples
  134. // SHADOW_RANGE chunk
  135. ShadowRangeMin3DS = 0; // noninclusive minimum value for shadow range
  136. // SHADOW_FILTER chunk
  137. ShadowFilterMin3DS = 1; // inclusive minimum value for shadow filter
  138. ShadowFilterMax3DS = 10; // inclusive maximum value for shadow filter
  139. // BITMAP chunk
  140. BitMapStrMax3DS = 12; // maximum string length for filename
  141. // V_GRADIENT chunk
  142. VGradientMin3DS = 0; // minimum value for gradient midpoint
  143. VGradientMax3DS = 1; // maximum value for gradient midpoint
  144. // FOG chunk
  145. FogMin3DS = 0; // minimum value for fogging plane density
  146. FogMax3DS = 1; // maximum value for fogging plane density
  147. // DISTANCE_CUE
  148. DistanceCueMin3DS = 0; // minimum value for dimming factor
  149. DistanceCueMax3DS = 1; // maximum value for dimming factor
  150. // VIEW_CAMERA
  151. ViewCameraStrMax3DS = 10; // maximum string length for filename
  152. // MAT_NAME
  153. MatNameStrMax3DS = 16; // maximum string length for material name
  154. // MAT_SHADING
  155. MatShadingMin3DS = 0; // minimum shading value
  156. MatShadingMax3DS = 3; // maximum shading value
  157. // MAT_ACUBIC_FMIN
  158. MatACubicFMin3DS = 1; // minimum frame skip count
  159. MatACubicAMin3DS = 0; // minimum reflection map aliasing
  160. MatACubicAMax3DS = 3; // maximum reflection map aliasing
  161. // used with TAcubic3DS structure
  162. ACubicFirst3DS = $09;
  163. ACubicFlat3DS = $11;
  164. // POINT_ARRAY
  165. PointArrayMin3DS = 3; // minimum number of vertices
  166. // FACE_ARRAY
  167. FaceArrayMin3DS = 1; // minimum number of faces
  168. // MshMatGroup3DS
  169. MshMatGroupMin3DS = 1; // minimum number of faces per material
  170. MshMatGroupStrMax3DS = 16; // maximim string length for MshMatGroup
  171. // PROC_NAME
  172. ProcNameStrMax3DS = 12; // maximum string length for axp process
  173. // DL_SPOTLIGHT
  174. DLSpotlightMin3DS = 0; // minimum for hotspot and falloff cones
  175. DLSpotlightMax3DS = 160; // maximum for hotspot and falloff cones
  176. // DL_LOCAL_SHADOW2
  177. DLLocalShadow2SMin3DS = 10; // minimum shadow map size
  178. DLLocalShadow2SMax3DS = 4096; // maximum shadow map size
  179. DLLocalShadow2FMin3DS = 1; // minimum shadow map size
  180. DLLocalShadow2FMax3DS = 10; // maximum shadow map size
  181. // COLOR_F
  182. ColorFMin3DS = 0; // minimum color value in a channel
  183. ColorFMax3DS = 1; // maximum color value in a channel
  184. // INT_PERCENTAGE
  185. IntPercentageMax3DS = 100; // Maximum integer percentage
  186. // FLOAT_PERCENTAGE
  187. FloatPercentageMax3DS = 1; // Maximum floating point percentage
  188. // MAT_MAPNAME
  189. MatMapNameStrMax3DS = 12; // Maximum map name string size
  190. // NAMED_OBJECT
  191. NamedObjectStrMax3DS = 10; // Maximum named object string size
  192. // N_CAMERA
  193. NCameraFOVMin3DS = 0.00025; // Minimum field of view for camera
  194. NCameraFOVMax3DS = 160; // Maximum field of view for camera
  195. NCameraFocMin3DS = 10.7813; // Minimum lens size for camera
  196. NCameraFocMax3DS = 10000000; // Maximum lens size for camera
  197. // KFHDR
  198. KFHdrStrMax3DS = 12; // Maximum keyframe header name string size
  199. // NODE_HDR
  200. NodeHdrStrMax3DS = 10; // Maximum node name string size
  201. // INSTANCE_NAME
  202. InstanceNameStrMax3DS = 10; // Maximum instance name string size
  203. // MORPH_TRACK
  204. MorphTrackStrMax3DS = 10; // Maximum morph object name string size
  205. // MORPH_SMOOTH
  206. MorphSmoothMin3DS = 0; // Minimum morph smoothing angle
  207. MorphSmoothMax3DS = 360; // Maximum morph smoothing angle
  208. // Keyframe Spline Limits
  209. KFTensionMin3DS = -1; // Minimum key spline tension
  210. KFTensionMax3DS = 1; // Maximum key spline tension
  211. KFContinuityMin3DS = -1; // Minimum key spline continuity
  212. KFContinuityMax3DS = 1; // Maximum key spline continuity
  213. KFBiasMin3DS = -1; // Minimum key spline bias
  214. KFBiasMax3DS = 1; // Maximum key spline bias
  215. KFEaseToMin3DS = 0; // Minimum key spline ease to
  216. KFEaseToMax3DS = 1; // Maximum key spline ease to
  217. KFEaseFromMin3DS = 0; // Minimum key spline ease from
  218. KFEaseFromMax3DS = 1; // Maximum key spline ease from
  219. // Track header Limits
  220. TrackHeaderKeysMin3DS = 1; // Minimum number of keys in a track
  221. // COL_TRACK_TAG_KEY
  222. ColTrackTagMin3DS = 0; // Minimum color value
  223. ColTrackTagMax3DS = 1; // Maximum color value
  224. // FOV_TRACK_TAG_KEY
  225. FOVTrackTagMin3DS = NCameraFOVMin3DS; // Minimum camera FOV
  226. FOVTrackTagMax3DS = NCameraFOVMax3DS; // Maximum camera FOV
  227. // HOT_TRACK_TAG_KEY
  228. HotTrackTagMin3DS = 0; // Minimum hot spot angle
  229. HotTrackTagMax3DS = 160; // Maximum hot spot angle
  230. // FALL_TRACK_TAG_KEY
  231. FallTrackTagMin3DS = 0; // Minimum fall off angle
  232. FallTrackTagMax3DS = 160; // Maximum fall off angle
  233. KNoID = -1;
  234. // MAT_TILING
  235. TEX_DECAL = 1;
  236. TEX_MIRROR = 1 shl 1;
  237. TEX_UNUSED1 = 1 shl 2;
  238. TEX_INVERT = 1 shl 3;
  239. TEX_NOWRAP = 1 shl 4;
  240. TEX_SAT = 1 shl 5; // summed area table
  241. TEX_ALPHA_SOURCE = 1 shl 6; // use ALPHA instead of RGB of map
  242. TEX_TINT = 1 shl 7; // tint for color
  243. TEX_DONT_USE_ALPHA = 1 shl 8; // don't use map alpha
  244. TEX_RGB_TINT = 1 shl 9; // do RGB color transform
  245. // Values for keyframer flags1
  246. NODE_RENDOB_HIDE = 1 shl 2;
  247. NODE_OFF = 1 shl 3;
  248. ATKEY1 = 1 shl 4;
  249. ATKEY2 = 1 shl 5;
  250. ATKEY3 = 1 shl 6;
  251. ATKEY4 = 1 shl 7;
  252. ATKEY5 = 1 shl 8;
  253. ATKEYFLAGS = ATKEY1 or ATKEY2 or ATKEY3 or ATKEY4 or ATKEY5;
  254. MARK_NODE = 1 shl 9;
  255. DISABLE_NODE = 1 shl 10;
  256. HIDE_NODE = 1 shl 11;
  257. FAST_NODE = 1 shl 12; // draw node quickdraw style
  258. PRIMARY_NODE = 1 shl 14; // corresponds to mesh
  259. NODE_CALC_PATH = 1 shl 15;
  260. // Values for keyframer flags2
  261. NODE_HAS_PATH = 1;
  262. NODE_AUTO_SMOOTH = 1 shl 1;
  263. NODE_FROZEN = 1 shl 2;
  264. NODE_ANI_HIDDEN = 1 shl 3;
  265. NODE_MOTION_BLUR = 1 shl 4;
  266. NODE_BLUR_BRANCH = 1 shl 5;
  267. NODE_MORPH_MTL = 1 shl 6;
  268. NODE_MORPH_OB = 1 shl 7;
  269. //----------------- List of all chunk IDs -------------------------------------
  270. NULL_CHUNK = $0000;
  271. // Trick Chunk Flags For ChunkSyntax function
  272. ChunkType = $0995;
  273. ChunkUnique = $0996;
  274. NotChunk = $0997;
  275. Container = $0998;
  276. IsChunk = $0999;
  277. // Dummy Chunk that sometimes appears in 3DS files created by prerelease 3D Studio R2
  278. DUMMY = $FFFF;
  279. // Trick Chunk Types For Open, Write, Close functions
  280. POINT_ARRAY_ENTRY = $F110;
  281. POINT_FLAG_ARRAY_ENTRY = $F111;
  282. FACE_ARRAY_ENTRY = $F120;
  283. MSH_MAT_GROUP_ENTRY = $F130;
  284. TEX_VERTS_ENTRY = $F140;
  285. SMOOTH_GROUP_ENTRY = $F150;
  286. POS_TRACK_TAG_KEY = $F020;
  287. ROT_TRACK_TAG_KEY = $F021;
  288. SCL_TRACK_TAG_KEY = $F022;
  289. FOV_TRACK_TAG_KEY = $F023;
  290. ROLL_TRACK_TAG_KEY = $F024;
  291. COL_TRACK_TAG_KEY = $F025;
  292. MORPH_TRACK_TAG_KEY = $F026;
  293. HOT_TRACK_TAG_KEY = $F027;
  294. FALL_TRACK_TAG_KEY = $F028;
  295. // 3DS file Chunk IDs
  296. M3DMAGIC = $4D4D;
  297. SMAGIC = $2D2D;
  298. LMAGIC = $2D3D;
  299. MLIBMAGIC = $3DAA;
  300. MATMAGIC = $3DFF;
  301. M3D_VERSION = $0002;
  302. M3D_KFVERSION = $0005;
  303. // Mesh Chunk Ids
  304. MDATA = $3D3D;
  305. MESH_VERSION = $3D3E;
  306. COLOR_F = $0010;
  307. COLOR_24 = $0011;
  308. LIN_COLOR_24 = $0012;
  309. LIN_COLOR_F = $0013;
  310. INT_PERCENTAGE = $0030;
  311. FLOAT_PERCENTAGE = $0031;
  312. MASTER_SCALE = $0100;
  313. BIT_MAP = $1100;
  314. USE_BIT_MAP = $1101;
  315. SOLID_BGND = $1200;
  316. USE_SOLID_BGND = $1201;
  317. V_GRADIENT = $1300;
  318. USE_V_GRADIENT = $1301;
  319. LO_SHADOW_BIAS = $1400;
  320. HI_SHADOW_BIAS = $1410;
  321. SHADOW_MAP_SIZE = $1420;
  322. SHADOW_SAMPLES = $1430;
  323. SHADOW_RANGE = $1440;
  324. SHADOW_FILTER = $1450;
  325. RAY_BIAS = $1460;
  326. O_CONSTS = $1500;
  327. AMBIENT_LIGHT = $2100;
  328. FOG = $2200;
  329. USE_FOG = $2201;
  330. FOG_BGND = $2210;
  331. DISTANCE_CUE = $2300;
  332. USE_DISTANCE_CUE = $2301;
  333. LAYER_FOG = $2302;
  334. USE_LAYER_FOG = $2303;
  335. DCUE_BGND = $2310;
  336. DEFAULT_VIEW = $3000;
  337. VIEW_TOP = $3010;
  338. VIEW_BOTTOM = $3020;
  339. VIEW_LEFT = $3030;
  340. VIEW_RIGHT = $3040;
  341. VIEW_FRONT = $3050;
  342. VIEW_BACK = $3060;
  343. VIEW_USER = $3070;
  344. VIEW_CAMERA = $3080;
  345. VIEW_WINDOW = $3090;
  346. NAMED_OBJECT = $4000;
  347. OBJ_HIDDEN = $4010;
  348. OBJ_VIS_LOFTER = $4011;
  349. OBJ_DOESNT_CAST = $4012;
  350. OBJ_MATTE = $4013;
  351. OBJ_FAST = $4014;
  352. OBJ_PROCEDURAL = $4015;
  353. OBJ_FROZEN = $4016;
  354. OBJ_DONT_RCVSHADOW = $4017;
  355. N_TRI_OBJECT = $4100;
  356. POINT_ARRAY = $4110;
  357. POINT_FLAG_ARRAY = $4111;
  358. FACE_ARRAY = $4120;
  359. MSH_MAT_GROUP = $4130;
  360. OLD_MAT_GROUP = $4131;
  361. TEX_VERTS = $4140;
  362. SMOOTH_GROUP = $4150;
  363. MESH_MATRIX = $4160;
  364. MESH_COLOR = $4165;
  365. MESH_TEXTURE_INFO = $4170;
  366. PROC_NAME = $4181;
  367. PROC_DATA = $4182;
  368. MSH_BOXMAP = $4190;
  369. N_D_L_OLD = $4400;
  370. N_CAM_OLD = $4500;
  371. N_DIRECT_LIGHT = $4600;
  372. DL_SPOTLIGHT = $4610;
  373. DL_OFF = $4620;
  374. DL_ATTENUATE = $4625;
  375. DL_RAYSHAD = $4627;
  376. DL_SHADOWED = $4630;
  377. DL_LOCAL_SHADOW = $4640;
  378. DL_LOCAL_SHADOW2 = $4641;
  379. DL_SEE_CONE = $4650;
  380. DL_SPOT_RECTANGULAR = $4651;
  381. DL_SPOT_OVERSHOOT = $4652;
  382. DL_SPOT_PROJECTOR = $4653;
  383. DL_EXCLUDE = $4654;
  384. DL_RANGE = $4655;
  385. // Not used in R3
  386. DL_SPOT_ROLL = $4656;
  387. DL_SPOT_ASPECT = $4657;
  388. DL_RAY_BIAS = $4658;
  389. DL_INNER_RANGE = $4659;
  390. DL_OUTER_RANGE = $465A;
  391. DL_MULTIPLIER = $465B;
  392. N_AMBIENT_LIGHT = $4680;
  393. N_CAMERA = $4700;
  394. CAM_SEE_CONE = $4710;
  395. CAM_RANGES = $4720;
  396. HIERARCHY = $4F00;
  397. PARENT_OBJECT = $4F10;
  398. PIVOT_OBJECT = $4F20;
  399. PIVOT_LIMITS = $4F30;
  400. PIVOT_ORDER = $4F40;
  401. XLATE_RANGE = $4F50;
  402. POLY_2D = $5000;
  403. // Flags in shaper AFile that tell whether polys make up an ok shape
  404. SHAPE_OK = $5010;
  405. SHAPE_NOT_OK = $5011;
  406. SHAPE_HOOK = $5020;
  407. PATH_3D = $6000;
  408. PATH_MATRIX = $6005;
  409. SHAPE_2D = $6010;
  410. M_SCALE = $6020;
  411. M_TWIST = $6030;
  412. M_TEETER = $6040;
  413. M_FIT = $6050;
  414. M_BEVEL = $6060;
  415. XZ_CURVE = $6070;
  416. YZ_CURVE = $6080;
  417. INTERPCT = $6090;
  418. DEFORM_LIMIT = $60A0;
  419. // Flags for Modeler options
  420. USE_CONTOUR = $6100;
  421. USE_TWEEN = $6110;
  422. USE_SCALE = $6120;
  423. USE_TWIST = $6130;
  424. USE_TEETER = $6140;
  425. USE_FIT = $6150;
  426. USE_BEVEL = $6160;
  427. // Viewport description chunks
  428. VIEWPORT_LAYOUT_OLD = $7000;
  429. VIEWPORT_DATA_OLD = $7010;
  430. VIEWPORT_LAYOUT = $7001;
  431. VIEWPORT_DATA = $7011;
  432. VIEWPORT_DATA_3 = $7012;
  433. VIEWPORT_SIZE = $7020;
  434. NETWORK_VIEW = $7030;
  435. // External Application Data
  436. XDATA_SECTION = $8000;
  437. XDATA_ENTRY = $8001;
  438. XDATA_APPNAME = $8002;
  439. XDATA_STRING = $8003;
  440. XDATA_FLOAT = $8004;
  441. XDATA_DOUBLE = $8005;
  442. XDATA_SHORT = $8006;
  443. XDATA_LONG = $8007;
  444. XDATA_VOID = $8008;
  445. XDATA_GROUP = $8009;
  446. XDATA_RFU6 = $800A;
  447. XDATA_RFU5 = $800B;
  448. XDATA_RFU4 = $800C;
  449. XDATA_RFU3 = $800D;
  450. XDATA_RFU2 = $800E;
  451. XDATA_RFU1 = $800F;
  452. PARENT_NAME = $80F0;
  453. // Material Chunk IDs
  454. MAT_ENTRY = $AFFF;
  455. MAT_NAME = $A000;
  456. MAT_AMBIENT = $A010;
  457. MAT_DIFFUSE = $A020;
  458. MAT_SPECULAR = $A030;
  459. MAT_SHININESS = $A040;
  460. MAT_SHIN2PCT = $A041;
  461. MAT_SHIN3PCT = $A042;
  462. MAT_TRANSPARENCY = $A050;
  463. MAT_XPFALL = $A052;
  464. MAT_REFBLUR = $A053;
  465. MAT_SELF_ILLUM = $A080;
  466. MAT_TWO_SIDE = $A081;
  467. MAT_DECAL = $A082;
  468. MAT_ADDITIVE = $A083;
  469. MAT_SELF_ILPCT = $A084;
  470. MAT_WIRE = $A085;
  471. MAT_SUPERSMP = $A086;
  472. MAT_WIRESIZE = $A087;
  473. MAT_FACEMAP = $A088;
  474. MAT_XPFALLIN = $A08A;
  475. MAT_PHONGSOFT = $A08C;
  476. MAT_WIREABS = $A08E;
  477. MAT_SHADING = $A100;
  478. MAT_TEXMAP = $A200;
  479. MAT_OPACMAP = $A210;
  480. MAT_REFLMAP = $A220;
  481. MAT_BUMPMAP = $A230;
  482. MAT_SPECMAP = $A204;
  483. MAT_USE_XPFALL = $A240;
  484. MAT_USE_REFBLUR = $A250;
  485. MAT_BUMP_PERCENT = $A252;
  486. MAT_MAPNAME = $A300;
  487. MAT_ACUBIC = $A310;
  488. MAT_SXP_TEXT_DATA = $A320;
  489. MAT_SXP_TEXT2_DATA = $A321;
  490. MAT_SXP_OPAC_DATA = $A322;
  491. MAT_SXP_BUMP_DATA = $A324;
  492. MAT_SXP_SPEC_DATA = $A325;
  493. MAT_SXP_SHIN_DATA = $A326;
  494. MAT_SXP_SELFI_DATA = $A328;
  495. MAT_SXP_TEXT_MASKDATA = $A32A;
  496. MAT_SXP_TEXT2_MASKDATA = $A32C;
  497. MAT_SXP_OPAC_MASKDATA = $A32E;
  498. MAT_SXP_BUMP_MASKDATA = $A330;
  499. MAT_SXP_SPEC_MASKDATA = $A332;
  500. MAT_SXP_SHIN_MASKDATA = $A334;
  501. MAT_SXP_SELFI_MASKDATA = $A336;
  502. MAT_SXP_REFL_MASKDATA = $A338;
  503. MAT_TEX2MAP = $A33A;
  504. MAT_SHINMAP = $A33C;
  505. MAT_SELFIMAP = $A33D;
  506. MAT_TEXMASK = $A33E;
  507. MAT_TEX2MASK = $A340;
  508. MAT_OPACMASK = $A342;
  509. MAT_BUMPMASK = $A344;
  510. MAT_SHINMASK = $A346;
  511. MAT_SPECMASK = $A348;
  512. MAT_SELFIMASK = $A34A;
  513. MAT_REFLMASK = $A34C;
  514. MAT_MAP_TILINGOLD = $A350;
  515. MAT_MAP_TILING = $A351;
  516. MAT_MAP_TEXBLUR_OLD = $A352;
  517. MAT_MAP_TEXBLUR = $A353;
  518. MAT_MAP_USCALE = $A354;
  519. MAT_MAP_VSCALE = $A356;
  520. MAT_MAP_UOFFSET = $A358;
  521. MAT_MAP_VOFFSET = $A35A;
  522. MAT_MAP_ANG = $A35C;
  523. MAT_MAP_COL1 = $A360;
  524. MAT_MAP_COL2 = $A362;
  525. MAT_MAP_RCOL = $A364;
  526. MAT_MAP_GCOL = $A366;
  527. MAT_MAP_BCOL = $A368;
  528. // Keyframe Chunk IDs
  529. KFDATA = $B000;
  530. KFHDR = $B00A;
  531. AMBIENT_NODE_TAG = $B001;
  532. OBJECT_NODE_TAG = $B002;
  533. CAMERA_NODE_TAG = $B003;
  534. TARGET_NODE_TAG = $B004;
  535. LIGHT_NODE_TAG = $B005;
  536. L_TARGET_NODE_TAG = $B006;
  537. SPOTLIGHT_NODE_TAG = $B007;
  538. KFSEG = $B008;
  539. KFCURTIME = $B009;
  540. NODE_HDR = $B010;
  541. INSTANCE_NAME = $B011;
  542. PRESCALE = $B012;
  543. PIVOT = $B013;
  544. BOUNDBOX = $B014;
  545. MORPH_SMOOTH = $B015;
  546. POS_TRACK_TAG = $B020;
  547. ROT_TRACK_TAG = $B021;
  548. SCL_TRACK_TAG = $B022;
  549. FOV_TRACK_TAG = $B023;
  550. ROLL_TRACK_TAG = $B024;
  551. COL_TRACK_TAG = $B025;
  552. MORPH_TRACK_TAG = $B026;
  553. HOT_TRACK_TAG = $B027;
  554. FALL_TRACK_TAG = $B028;
  555. HIDE_TRACK_TAG = $B029;
  556. NODE_ID = $B030;
  557. CMAGIC = $C23D;
  558. C_MDRAWER = $C010;
  559. C_TDRAWER = $C020;
  560. C_SHPDRAWER = $C030;
  561. C_MODDRAWER = $C040;
  562. C_RIPDRAWER = $C050;
  563. C_TXDRAWER = $C060;
  564. C_PDRAWER = $C062;
  565. C_MTLDRAWER = $C064;
  566. C_FLIDRAWER = $C066;
  567. C_CUBDRAWER = $C067;
  568. C_MFILE = $C070;
  569. C_SHPFILE = $C080;
  570. C_MODFILE = $C090;
  571. C_RIPFILE = $C0A0;
  572. C_TXFILE = $C0B0;
  573. C_PFILE = $C0B2;
  574. C_MTLFILE = $C0B4;
  575. C_FLIFILE = $C0B6;
  576. C_PALFILE = $C0B8;
  577. C_TX_STRING = $C0C0;
  578. C_CONSTS = $C0D0;
  579. C_SNAPS = $C0E0;
  580. C_GRIDS = $C0F0;
  581. C_ASNAPS = $C100;
  582. C_GRID_RANGE = $C110;
  583. C_RENDTYPE = $C120;
  584. C_PROGMODE = $C130;
  585. C_PREVMODE = $C140;
  586. C_MODWMODE = $C150;
  587. C_MODMODEL = $C160;
  588. C_ALL_LINES = $C170;
  589. C_BACK_TYPE = $C180;
  590. C_MD_CS = $C190;
  591. C_MD_CE = $C1A0;
  592. C_MD_SML = $C1B0;
  593. C_MD_SMW = $C1C0;
  594. C_LOFT_WITH_TEXTURE = $C1C3;
  595. C_LOFT_L_REPEAT = $C1C4;
  596. C_LOFT_W_REPEAT = $C1C5;
  597. C_LOFT_UV_NORMALIZE = $C1C6;
  598. C_WELD_LOFT = $C1C7;
  599. C_MD_PDET = $C1D0;
  600. C_MD_SDET = $C1E0;
  601. C_RGB_RMODE = $C1F0;
  602. C_RGB_HIDE = $C200;
  603. C_RGB_MAPSW = $C202;
  604. C_RGB_TWOSIDE = $C204;
  605. C_RGB_SHADOW = $C208;
  606. C_RGB_AA = $C210;
  607. C_RGB_OVW = $C220;
  608. C_RGB_OVH = $C230;
  609. C_RGB_PICTYPE = $C240;
  610. C_RGB_OUTPUT = $C250;
  611. C_RGB_TODISK = $C253;
  612. C_RGB_COMPRESS = $C254;
  613. C_JPEG_COMPRESSION = $C255;
  614. C_RGB_DISPDEV = $C256;
  615. C_RGB_HARDDEV = $C259;
  616. C_RGB_PATH = $C25A;
  617. C_BITMAP_DRAWER = $C25B;
  618. C_RGB_FILE = $C260;
  619. C_RGB_OVASPECT = $C270;
  620. C_RGB_ANIMTYPE = $C271;
  621. C_RENDER_ALL = $C272;
  622. C_REND_FROM = $C273;
  623. C_REND_TO = $C274;
  624. C_REND_NTH = $C275;
  625. C_PAL_TYPE = $C276;
  626. C_RND_TURBO = $C277;
  627. C_RND_MIP = $C278;
  628. C_BGND_METHOD = $C279;
  629. C_AUTO_REFLECT = $C27A;
  630. C_VP_FROM = $C27B;
  631. C_VP_TO = $C27C;
  632. C_VP_NTH = $C27D;
  633. C_REND_TSTEP = $C27E;
  634. C_VP_TSTEP = $C27F;
  635. C_SRDIAM = $C280;
  636. C_SRDEG = $C290;
  637. C_SRSEG = $C2A0;
  638. C_SRDIR = $C2B0;
  639. C_HETOP = $C2C0;
  640. C_HEBOT = $C2D0;
  641. C_HEHT = $C2E0;
  642. C_HETURNS = $C2F0;
  643. C_HEDEG = $C300;
  644. C_HESEG = $C310;
  645. C_HEDIR = $C320;
  646. C_QUIKSTUFF = $C330;
  647. C_SEE_LIGHTS = $C340;
  648. C_SEE_CAMERAS = $C350;
  649. C_SEE_3D = $C360;
  650. C_MESHSEL = $C370;
  651. C_MESHUNSEL = $C380;
  652. C_POLYSEL = $C390;
  653. C_POLYUNSEL = $C3A0;
  654. C_SHPLOCAL = $C3A2;
  655. C_MSHLOCAL = $C3A4;
  656. C_NUM_FORMAT = $C3B0;
  657. C_ARCH_DENOM = $C3C0;
  658. C_IN_DEVICE = $C3D0;
  659. C_MSCALE = $C3E0;
  660. C_COMM_PORT = $C3F0;
  661. C_TAB_BASES = $C400;
  662. C_TAB_DIVS = $C410;
  663. C_MASTER_SCALES = $C420;
  664. C_SHOW_1STVERT = $C430;
  665. C_SHAPER_OK = $C440;
  666. C_LOFTER_OK = $C450;
  667. C_EDITOR_OK = $C460;
  668. C_KEYFRAMER_OK = $C470;
  669. C_PICKSIZE = $C480;
  670. C_MAPTYPE = $C490;
  671. C_MAP_DISPLAY = $C4A0;
  672. C_TILE_XY = $C4B0;
  673. C_MAP_XYZ = $C4C0;
  674. C_MAP_SCALE = $C4D0;
  675. C_MAP_MATRIX_OLD = $C4E0;
  676. C_MAP_MATRIX = $C4E1;
  677. C_MAP_WID_HT = $C4F0;
  678. C_OBNAME = $C500;
  679. C_CAMNAME = $C510;
  680. C_LTNAME = $C520;
  681. C_CUR_MNAME = $C525;
  682. C_CURMTL_FROM_MESH = $C526;
  683. C_GET_SHAPE_MAKE_FACES = $C527;
  684. C_DETAIL = $C530;
  685. C_VERTMARK = $C540;
  686. C_MSHAX = $C550;
  687. C_MSHCP = $C560;
  688. C_USERAX = $C570;
  689. C_SHOOK = $C580;
  690. C_RAX = $C590;
  691. C_STAPE = $C5A0;
  692. C_LTAPE = $C5B0;
  693. C_ETAPE = $C5C0;
  694. C_KTAPE = $C5C8;
  695. C_SPHSEGS = $C5D0;
  696. C_GEOSMOOTH = $C5E0;
  697. C_HEMISEGS = $C5F0;
  698. C_PRISMSEGS = $C600;
  699. C_PRISMSIDES = $C610;
  700. C_TUBESEGS = $C620;
  701. C_TUBESIDES = $C630;
  702. C_TORSEGS = $C640;
  703. C_TORSIDES = $C650;
  704. C_CONESIDES = $C660;
  705. C_CONESEGS = $C661;
  706. C_NGPARMS = $C670;
  707. C_PTHLEVEL = $C680;
  708. C_MSCSYM = $C690;
  709. C_MFTSYM = $C6A0;
  710. C_MTTSYM = $C6B0;
  711. C_SMOOTHING = $C6C0;
  712. C_MODICOUNT = $C6D0;
  713. C_FONTSEL = $C6E0;
  714. C_TESS_TYPE = $C6f0;
  715. C_TESS_TENSION = $C6f1;
  716. C_SEG_START = $C700;
  717. C_SEG_END = $C705;
  718. C_CURTIME = $C710;
  719. C_ANIMLENGTH = $C715;
  720. C_PV_FROM = $C720;
  721. C_PV_TO = $C725;
  722. C_PV_DOFNUM = $C730;
  723. C_PV_RNG = $C735;
  724. C_PV_NTH = $C740;
  725. C_PV_TYPE = $C745;
  726. C_PV_METHOD = $C750;
  727. C_PV_FPS = $C755;
  728. C_VTR_FRAMES = $C765;
  729. C_VTR_HDTL = $C770;
  730. C_VTR_HD = $C771;
  731. C_VTR_TL = $C772;
  732. C_VTR_IN = $C775;
  733. C_VTR_PK = $C780;
  734. C_VTR_SH = $C785;
  735. // Material chunks
  736. C_WORK_MTLS = $C790; // Old-style -- now ignored
  737. C_WORK_MTLS_2 = $C792; // Old-style -- now ignored
  738. C_WORK_MTLS_3 = $C793; // Old-style -- now ignored
  739. C_WORK_MTLS_4 = $C794; // Old-style -- now ignored
  740. C_WORK_MTLS_5 = $CB00; // Old-style -- now ignored
  741. C_WORK_MTLS_6 = $CB01; // Old-style -- now ignored
  742. C_WORK_MTLS_7 = $CB02; // Old-style -- now ignored
  743. C_WORK_MTLS_8 = $CB03; // Old-style -- now ignored
  744. C_WORKMTL = $CB04;
  745. C_SXP_TEXT_DATA = $CB10;
  746. C_SXP_TEXT2_DATA = $CB20;
  747. C_SXP_OPAC_DATA = $CB11;
  748. C_SXP_BUMP_DATA = $CB12;
  749. C_SXP_SPEC_DATA = $CB24;
  750. C_SXP_SHIN_DATA = $CB13;
  751. C_SXP_SELFI_DATA = $CB28;
  752. C_SXP_TEXT_MASKDATA = $CB30;
  753. C_SXP_TEXT2_MASKDATA = $CB32;
  754. C_SXP_OPAC_MASKDATA = $CB34;
  755. C_SXP_BUMP_MASKDATA = $CB36;
  756. C_SXP_SPEC_MASKDATA = $CB38;
  757. C_SXP_SHIN_MASKDATA = $CB3A;
  758. C_SXP_SELFI_MASKDATA = $C3CB;
  759. C_SXP_REFL_MASKDATA = $CB3E;
  760. C_BGTYPE = $C7A1;
  761. C_MEDTILE = $C7B0;
  762. // Contrast
  763. C_LO_CONTRAST = $C7D0;
  764. C_HI_CONTRAST = $C7D1;
  765. // 3d frozen display
  766. C_FROZ_DISPLAY = $C7E0;
  767. // Booleans
  768. C_BOOLWELD = $C7f0;
  769. C_BOOLTYPE = $C7f1;
  770. C_ANG_THRESH = $C900;
  771. C_SS_THRESH = $C901;
  772. C_TEXTURE_BLUR_DEFAULT = $C903;
  773. C_MAPDRAWER = $CA00;
  774. C_MAPDRAWER1 = $CA01;
  775. C_MAPDRAWER2 = $CA02;
  776. C_MAPDRAWER3 = $CA03;
  777. C_MAPDRAWER4 = $CA04;
  778. C_MAPDRAWER5 = $CA05;
  779. C_MAPDRAWER6 = $CA06;
  780. C_MAPDRAWER7 = $CA07;
  781. C_MAPDRAWER8 = $CA08;
  782. C_MAPDRAWER9 = $CA09;
  783. C_MAPDRAWER_ENTRY = $CA10;
  784. // system options
  785. C_BACKUP_FILE = $CA20;
  786. C_DITHER_256 = $CA21;
  787. C_SAVE_LAST = $CA22;
  788. C_USE_ALPHA = $CA23;
  789. C_TGA_DEPTH = $CA24;
  790. C_REND_FIELDS = $CA25;
  791. C_REFLIP = $CA26;
  792. C_SEL_ITEMTOG = $CA27;
  793. C_SEL_RESET = $CA28;
  794. C_STICKY_KEYINF = $CA29;
  795. C_WELD_THRESHOLD = $CA2A;
  796. C_ZCLIP_POINT = $CA2B;
  797. C_ALPHA_SPLIT = $CA2C;
  798. C_KF_SHOW_BACKFACE = $CA30;
  799. C_OPTIMIZE_LOFT = $CA40;
  800. C_TENS_DEFAULT = $CA42;
  801. C_CONT_DEFAULT = $CA44;
  802. C_BIAS_DEFAULT = $CA46;
  803. C_DXFNAME_SRC = $CA50;
  804. C_AUTO_WELD = $CA60;
  805. C_AUTO_UNIFY = $CA70;
  806. C_AUTO_SMOOTH = $CA80;
  807. C_DXF_SMOOTH_ANG = $CA90;
  808. C_SMOOTH_ANG = $CAA0;
  809. // Special network-use chunks
  810. C_NET_USE_VPOST = $CC00;
  811. C_NET_USE_GAMMA = $CC10;
  812. C_NET_FIELD_ORDER = $CC20;
  813. C_BLUR_FRAMES = $CD00;
  814. C_BLUR_SAMPLES = $CD10;
  815. C_BLUR_DUR = $CD20;
  816. C_HOT_METHOD = $CD30;
  817. C_HOT_CHECK = $CD40;
  818. C_PIXEL_SIZE = $CD50;
  819. C_DISP_GAMMA = $CD60;
  820. C_FBUF_GAMMA = $CD70;
  821. C_FILE_OUT_GAMMA = $CD80;
  822. C_FILE_IN_GAMMA = $CD82;
  823. C_GAMMA_CORRECT = $CD84;
  824. C_APPLY_DISP_GAMMA = $CD90; // OBSOLETE
  825. C_APPLY_FBUF_GAMMA = $CDA0; // OBSOLETE
  826. C_APPLY_FILE_GAMMA = $CDB0; // OBSOLETE
  827. C_FORCE_WIRE = $CDC0;
  828. C_RAY_SHADOWS = $CDD0;
  829. C_MASTER_AMBIENT = $CDE0;
  830. C_SUPER_SAMPLE = $CDF0;
  831. C_OBJECT_MBLUR = $CE00;
  832. C_MBLUR_DITHER = $CE10;
  833. C_DITHER_24 = $CE20;
  834. C_SUPER_BLACK = $CE30;
  835. C_SAFE_FRAME = $CE40;
  836. C_VIEW_PRES_RATIO = $CE50;
  837. C_BGND_PRES_RATIO = $CE60;
  838. C_NTH_SERIAL_NUM = $CE70;
  839. // Video Post
  840. VPDATA = $D000;
  841. P_QUEUE_ENTRY = $D100;
  842. P_QUEUE_IMAGE = $D110;
  843. P_QUEUE_USEIGAMMA = $D114;
  844. P_QUEUE_PROC = $D120;
  845. P_QUEUE_SOLID = $D130;
  846. P_QUEUE_GRADIENT = $D140;
  847. P_QUEUE_KF = $D150;
  848. P_QUEUE_MOTBLUR = $D152;
  849. P_QUEUE_MB_REPEAT = $D153;
  850. P_QUEUE_NONE = $D160;
  851. P_QUEUE_RESIZE = $D180;
  852. P_QUEUE_OFFSET = $D185;
  853. P_QUEUE_ALIGN = $D190;
  854. P_CUSTOM_SIZE = $D1a0;
  855. P_ALPH_NONE = $D210;
  856. P_ALPH_PSEUDO = $D220; // Old Chunk
  857. P_ALPH_OP_PSEUDO = $D221; // Old Chunk
  858. P_ALPH_BLUR = $D222; // Replaces pseudo
  859. P_ALPH_PCOL = $D225;
  860. P_ALPH_C0 = $D230;
  861. P_ALPH_OP_KEY = $D231;
  862. P_ALPH_KCOL = $D235;
  863. P_ALPH_OP_NOCONV = $D238;
  864. P_ALPH_IMAGE = $D240;
  865. P_ALPH_ALPHA = $D250;
  866. P_ALPH_QUES = $D260;
  867. P_ALPH_QUEIMG = $D265;
  868. P_ALPH_CUTOFF = $D270;
  869. P_ALPHANEG = $D280;
  870. P_TRAN_NONE = $D300;
  871. P_TRAN_IMAGE = $D310;
  872. P_TRAN_FRAMES = $D312;
  873. P_TRAN_FADEIN = $D320;
  874. P_TRAN_FADEOUT = $D330;
  875. P_TRANNEG = $D340;
  876. P_RANGES = $D400;
  877. P_PROC_DATA = $D500;
  878. NodeTagCount = 6; // number of entries in node tag list
  879. NodeTags: array[1..NodeTagCount] of Word =
  880. (TARGET_NODE_TAG,
  881. OBJECT_NODE_TAG,
  882. CAMERA_NODE_TAG,
  883. LIGHT_NODE_TAG,
  884. L_TARGET_NODE_TAG,
  885. SPOTLIGHT_NODE_TAG
  886. );
  887. //---------------------------------------------------------------------------------------------------------------------
  888. implementation
  889. //---------------------------------------------------------------------------------------------------------------------
  890. end.