1 /* 2 Open Asset Import Library (assimp) 3 ---------------------------------------------------------------------- 4 5 Copyright (c) 2006-2017, assimp team 6 7 All rights reserved. 8 9 Redistribution and use of this software in source and binary forms, 10 with or without modification, are permitted provided that the 11 following conditions are met: 12 13 * Redistributions of source code must retain the above 14 copyright notice, this list of conditions and the 15 following disclaimer. 16 17 * Redistributions in binary form must reproduce the above 18 copyright notice, this list of conditions and the 19 following disclaimer in the documentation and/or other 20 materials provided with the distribution. 21 22 * Neither the name of the assimp team, nor the names of its 23 contributors may be used to endorse or promote products 24 derived from this software without specific prior 25 written permission of the assimp team. 26 27 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 28 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 29 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 30 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 31 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 32 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 33 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 34 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 35 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 36 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 37 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 38 39 ---------------------------------------------------------------------- 40 */ 41 42 /** @file BlenderScene.h 43 * @brief Intermediate representation of a BLEND scene. 44 */ 45 #ifndef INCLUDED_AI_BLEND_SCENE_H 46 #define INCLUDED_AI_BLEND_SCENE_H 47 48 #include "BlenderDNA.h" 49 50 namespace Assimp { 51 namespace Blender { 52 53 // Minor parts of this file are extracts from blender data structures, 54 // declared in the ./source/blender/makesdna directory. 55 // Stuff that is not used by Assimp is commented. 56 57 58 // NOTE 59 // this file serves as input data to the `./scripts/genblenddna.py` 60 // script. This script generates the actual binding code to read a 61 // blender file with a possibly different DNA into our structures. 62 // Only `struct` declarations are considered and the following 63 // rules must be obeyed in order for the script to work properly: 64 // 65 // * C++ style comments only 66 // 67 // * Structures may include the primitive types char, int, short, 68 // float, double. Signed specifiers are not allowed on 69 // integers. Enum types are allowed, but they must have been 70 // defined in this header. 71 // 72 // * Structures may aggregate other structures, unless not defined 73 // in this header. 74 // 75 // * Pointers to other structures or primitive types are allowed. 76 // No references or double pointers or arrays of pointers. 77 // A pointer to a T is normally written as std::shared_ptr, while a 78 // pointer to an array of elements is written as boost:: 79 // shared_array. To avoid cyclic pointers, use raw pointers in 80 // one direction. 81 // 82 // * Arrays can have maximally two-dimensions. Any non-pointer 83 // type can form them. 84 // 85 // * Multiple fields can be declare in a single line (i.e `int a,b;`) 86 // provided they are neither pointers nor arrays. 87 // 88 // * One of WARN, FAIL can be appended to the declaration ( 89 // prior to the semicolon to specify the error handling policy if 90 // this field is missing in the input DNA). If none of those 91 // is specified the default policy is to substitute a default 92 // value for the field. 93 // 94 95 // warn if field is missing, substitute default value 96 #ifdef WARN 97 # undef WARN 98 #endif 99 #define WARN 100 101 // fail the import if the field does not exist 102 #ifdef FAIL 103 # undef FAIL 104 #endif 105 #define FAIL 106 107 struct Object; 108 struct MTex; 109 struct Image; 110 111 #include <memory> 112 113 #define AI_BLEND_MESH_MAX_VERTS 2000000000L 114 115 static const size_t MaxNameLen = 1024; 116 117 // ------------------------------------------------------------------------------- 118 struct ID : ElemBase { 119 char name[ MaxNameLen ] WARN; 120 short flag; 121 }; 122 123 // ------------------------------------------------------------------------------- 124 struct ListBase : ElemBase { 125 std::shared_ptr<ElemBase> first; 126 std::shared_ptr<ElemBase> last; 127 }; 128 129 130 // ------------------------------------------------------------------------------- 131 struct PackedFile : ElemBase { 132 int size WARN; 133 int seek WARN; 134 std::shared_ptr< FileOffset > data WARN; 135 }; 136 137 // ------------------------------------------------------------------------------- 138 struct GroupObject : ElemBase { 139 std::shared_ptr<GroupObject> prev,next FAIL; 140 std::shared_ptr<Object> ob; 141 }; 142 143 // ------------------------------------------------------------------------------- 144 struct Group : ElemBase { 145 ID id FAIL; 146 int layer; 147 148 std::shared_ptr<GroupObject> gobject; 149 }; 150 151 // ------------------------------------------------------------------------------- 152 struct World : ElemBase { 153 ID id FAIL; 154 }; 155 156 // ------------------------------------------------------------------------------- 157 struct MVert : ElemBase { 158 float co[3] FAIL; 159 float no[3] FAIL; 160 char flag; 161 int mat_nr WARN; 162 int bweight; 163 }; 164 165 // ------------------------------------------------------------------------------- 166 struct MEdge : ElemBase { 167 int v1, v2 FAIL; 168 char crease, bweight; 169 short flag; 170 }; 171 172 // ------------------------------------------------------------------------------- 173 struct MLoop : ElemBase { 174 int v, e; 175 }; 176 177 // ------------------------------------------------------------------------------- 178 struct MLoopUV : ElemBase { 179 float uv[2]; 180 int flag; 181 }; 182 183 // ------------------------------------------------------------------------------- 184 // Note that red and blue are not swapped, as with MCol 185 struct MLoopCol : ElemBase { 186 unsigned char r, g, b, a; 187 }; 188 189 // ------------------------------------------------------------------------------- 190 struct MPoly : ElemBase { 191 int loopstart; 192 int totloop; 193 short mat_nr; 194 char flag; 195 }; 196 197 // ------------------------------------------------------------------------------- 198 struct MTexPoly : ElemBase { 199 Image* tpage; 200 char flag, transp; 201 short mode, tile, pad; 202 }; 203 204 // ------------------------------------------------------------------------------- 205 struct MCol : ElemBase { 206 char r,g,b,a FAIL; 207 }; 208 209 // ------------------------------------------------------------------------------- 210 struct MFace : ElemBase { 211 int v1,v2,v3,v4 FAIL; 212 int mat_nr FAIL; 213 char flag; 214 }; 215 216 // ------------------------------------------------------------------------------- 217 struct TFace : ElemBase { 218 float uv[4][2] FAIL; 219 int col[4] FAIL; 220 char flag; 221 short mode; 222 short tile; 223 short unwrap; 224 }; 225 226 // ------------------------------------------------------------------------------- 227 struct MTFace : ElemBase { MTFaceMTFace228 MTFace() 229 : flag(0) 230 , mode(0) 231 , tile(0) 232 , unwrap(0) 233 { 234 } 235 236 float uv[4][2] FAIL; 237 char flag; 238 short mode; 239 short tile; 240 short unwrap; 241 242 // std::shared_ptr<Image> tpage; 243 }; 244 245 // ------------------------------------------------------------------------------- 246 struct MDeformWeight : ElemBase { 247 int def_nr FAIL; 248 float weight FAIL; 249 }; 250 251 // ------------------------------------------------------------------------------- 252 struct MDeformVert : ElemBase { 253 vector<MDeformWeight> dw WARN; 254 int totweight; 255 }; 256 257 // ------------------------------------------------------------------------------- 258 #define MA_RAYMIRROR 0x40000 259 #define MA_TRANSPARENCY 0x10000 260 #define MA_RAYTRANSP 0x20000 261 #define MA_ZTRANSP 0x00040 262 263 struct Material : ElemBase { 264 ID id FAIL; 265 266 float r,g,b WARN; 267 float specr,specg,specb WARN; 268 short har; 269 float ambr,ambg,ambb WARN; 270 float mirr,mirg,mirb; 271 float emit WARN; 272 float ray_mirror; 273 float alpha WARN; 274 float ref; 275 float translucency; 276 int mode; 277 float roughness; 278 float darkness; 279 float refrac; 280 281 float amb; 282 float ang; 283 float spectra; 284 float spec; 285 float zoffs; 286 float add; 287 float fresnel_mir; 288 float fresnel_mir_i; 289 float fresnel_tra; 290 float fresnel_tra_i; 291 float filter; 292 float tx_limit; 293 float tx_falloff; 294 float gloss_mir; 295 float gloss_tra; 296 float adapt_thresh_mir; 297 float adapt_thresh_tra; 298 float aniso_gloss_mir; 299 float dist_mir; 300 float hasize; 301 float flaresize; 302 float subsize; 303 float flareboost; 304 float strand_sta; 305 float strand_end; 306 float strand_ease; 307 float strand_surfnor; 308 float strand_min; 309 float strand_widthfade; 310 float sbias; 311 float lbias; 312 float shad_alpha; 313 float param; 314 float rms; 315 float rampfac_col; 316 float rampfac_spec; 317 float friction; 318 float fh; 319 float reflect; 320 float fhdist; 321 float xyfrict; 322 float sss_radius; 323 float sss_col; 324 float sss_error; 325 float sss_scale; 326 float sss_ior; 327 float sss_colfac; 328 float sss_texfac; 329 float sss_front; 330 float sss_back; 331 332 short material_type; 333 short flag; 334 short ray_depth; 335 short ray_depth_tra; 336 short samp_gloss_mir; 337 short samp_gloss_tra; 338 short fadeto_mir; 339 short shade_flag; 340 short flarec; 341 short starc; 342 short linec; 343 short ringc; 344 short pr_lamp; 345 short pr_texture; 346 short ml_flag; 347 short texco; 348 short mapto; 349 short ramp_show; 350 short pad3; 351 short dynamode; 352 short pad2; 353 short sss_flag; 354 short sss_preset; 355 short shadowonly_flag; 356 short index; 357 short vcol_alpha; 358 short pad4; 359 360 char seed1; 361 char seed2; 362 363 std::shared_ptr<Group> group; 364 365 short diff_shader WARN; 366 short spec_shader WARN; 367 368 std::shared_ptr<MTex> mtex[18]; 369 }; 370 371 // ------------------------------------------------------------------------------- 372 struct Mesh : ElemBase { 373 ID id FAIL; 374 375 int totface FAIL; 376 int totedge FAIL; 377 int totvert FAIL; 378 int totloop; 379 int totpoly; 380 381 short subdiv; 382 short subdivr; 383 short subsurftype; 384 short smoothresh; 385 386 vector<MFace> mface FAIL; 387 vector<MTFace> mtface; 388 vector<TFace> tface; 389 vector<MVert> mvert FAIL; 390 vector<MEdge> medge WARN; 391 vector<MLoop> mloop; 392 vector<MLoopUV> mloopuv; 393 vector<MLoopCol> mloopcol; 394 vector<MPoly> mpoly; 395 vector<MTexPoly> mtpoly; 396 vector<MDeformVert> dvert; 397 vector<MCol> mcol; 398 399 vector< std::shared_ptr<Material> > mat FAIL; 400 }; 401 402 // ------------------------------------------------------------------------------- 403 struct Library : ElemBase { 404 ID id FAIL; 405 406 char name[240] WARN; 407 char filename[240] FAIL; 408 std::shared_ptr<Library> parent WARN; 409 }; 410 411 // ------------------------------------------------------------------------------- 412 struct Camera : ElemBase { 413 enum Type { 414 Type_PERSP = 0 415 ,Type_ORTHO = 1 416 }; 417 418 ID id FAIL; 419 420 Type type,flag WARN; 421 float lens WARN; 422 float sensor_x WARN; 423 float clipsta, clipend; 424 }; 425 426 427 // ------------------------------------------------------------------------------- 428 struct Lamp : ElemBase { 429 430 enum FalloffType { 431 FalloffType_Constant = 0x0 432 ,FalloffType_InvLinear = 0x1 433 ,FalloffType_InvSquare = 0x2 434 //,FalloffType_Curve = 0x3 435 //,FalloffType_Sliders = 0x4 436 }; 437 438 enum Type { 439 Type_Local = 0x0 440 ,Type_Sun = 0x1 441 ,Type_Spot = 0x2 442 ,Type_Hemi = 0x3 443 ,Type_Area = 0x4 444 //,Type_YFPhoton = 0x5 445 }; 446 447 ID id FAIL; 448 //AnimData *adt; 449 450 Type type FAIL; 451 short flags; 452 453 //int mode; 454 455 short colormodel, totex; 456 float r,g,b,k WARN; 457 //float shdwr, shdwg, shdwb; 458 459 float energy, dist, spotsize, spotblend; 460 //float haint; 461 462 float att1, att2; 463 //struct CurveMapping *curfalloff; 464 FalloffType falloff_type; 465 466 //float clipsta, clipend, shadspotsize; 467 //float bias, soft, compressthresh; 468 //short bufsize, samp, buffers, filtertype; 469 //char bufflag, buftype; 470 471 //short ray_samp, ray_sampy, ray_sampz; 472 //short ray_samp_type; 473 short area_shape; 474 float area_size, area_sizey, area_sizez; 475 //float adapt_thresh; 476 //short ray_samp_method; 477 478 //short texact, shadhalostep; 479 480 //short sun_effect_type; 481 //short skyblendtype; 482 //float horizon_brightness; 483 //float spread; 484 float sun_brightness; 485 //float sun_size; 486 //float backscattered_light; 487 //float sun_intensity; 488 //float atm_turbidity; 489 //float atm_inscattering_factor; 490 //float atm_extinction_factor; 491 //float atm_distance_factor; 492 //float skyblendfac; 493 //float sky_exposure; 494 //short sky_colorspace; 495 496 // int YF_numphotons, YF_numsearch; 497 // short YF_phdepth, YF_useqmc, YF_bufsize, YF_pad; 498 // float YF_causticblur, YF_ltradius; 499 500 // float YF_glowint, YF_glowofs; 501 // short YF_glowtype, YF_pad2; 502 503 //struct Ipo *ipo; 504 //struct MTex *mtex[18]; 505 // short pr_texture; 506 507 //struct PreviewImage *preview; 508 }; 509 510 // ------------------------------------------------------------------------------- 511 struct ModifierData : ElemBase { 512 enum ModifierType { 513 eModifierType_None = 0, 514 eModifierType_Subsurf, 515 eModifierType_Lattice, 516 eModifierType_Curve, 517 eModifierType_Build, 518 eModifierType_Mirror, 519 eModifierType_Decimate, 520 eModifierType_Wave, 521 eModifierType_Armature, 522 eModifierType_Hook, 523 eModifierType_Softbody, 524 eModifierType_Boolean, 525 eModifierType_Array, 526 eModifierType_EdgeSplit, 527 eModifierType_Displace, 528 eModifierType_UVProject, 529 eModifierType_Smooth, 530 eModifierType_Cast, 531 eModifierType_MeshDeform, 532 eModifierType_ParticleSystem, 533 eModifierType_ParticleInstance, 534 eModifierType_Explode, 535 eModifierType_Cloth, 536 eModifierType_Collision, 537 eModifierType_Bevel, 538 eModifierType_Shrinkwrap, 539 eModifierType_Fluidsim, 540 eModifierType_Mask, 541 eModifierType_SimpleDeform, 542 eModifierType_Multires, 543 eModifierType_Surface, 544 eModifierType_Smoke, 545 eModifierType_ShapeKey 546 }; 547 548 std::shared_ptr<ElemBase> next WARN; 549 std::shared_ptr<ElemBase> prev WARN; 550 551 int type, mode; 552 char name[32]; 553 }; 554 555 // ------------------------------------------------------------------------------- 556 struct SubsurfModifierData : ElemBase { 557 558 enum Type { 559 560 TYPE_CatmullClarke = 0x0, 561 TYPE_Simple = 0x1 562 }; 563 564 enum Flags { 565 // some omitted 566 FLAGS_SubsurfUV =1<<3 567 }; 568 569 ModifierData modifier FAIL; 570 short subdivType WARN; 571 short levels FAIL; 572 short renderLevels ; 573 short flags; 574 }; 575 576 // ------------------------------------------------------------------------------- 577 struct MirrorModifierData : ElemBase { 578 579 enum Flags { 580 Flags_CLIPPING =1<<0, 581 Flags_MIRROR_U =1<<1, 582 Flags_MIRROR_V =1<<2, 583 Flags_AXIS_X =1<<3, 584 Flags_AXIS_Y =1<<4, 585 Flags_AXIS_Z =1<<5, 586 Flags_VGROUP =1<<6 587 }; 588 589 ModifierData modifier FAIL; 590 591 short axis, flag; 592 float tolerance; 593 std::shared_ptr<Object> mirror_ob; 594 }; 595 596 // ------------------------------------------------------------------------------- 597 struct Object : ElemBase { 598 ID id FAIL; 599 600 enum Type { 601 Type_EMPTY = 0 602 ,Type_MESH = 1 603 ,Type_CURVE = 2 604 ,Type_SURF = 3 605 ,Type_FONT = 4 606 ,Type_MBALL = 5 607 608 ,Type_LAMP = 10 609 ,Type_CAMERA = 11 610 611 ,Type_WAVE = 21 612 ,Type_LATTICE = 22 613 }; 614 615 Type type FAIL; 616 float obmat[4][4] WARN; 617 float parentinv[4][4] WARN; 618 char parsubstr[32] WARN; 619 620 Object* parent WARN; 621 std::shared_ptr<Object> track WARN; 622 623 std::shared_ptr<Object> proxy,proxy_from,proxy_group WARN; 624 std::shared_ptr<Group> dup_group WARN; 625 std::shared_ptr<ElemBase> data FAIL; 626 627 ListBase modifiers; 628 ObjectObject629 Object() 630 : ElemBase() 631 , type( Type_EMPTY ) 632 , parent( nullptr ) 633 , track() 634 , proxy() 635 , proxy_from() 636 , data() { 637 // empty 638 } 639 }; 640 641 642 // ------------------------------------------------------------------------------- 643 struct Base : ElemBase { 644 Base* prev WARN; 645 std::shared_ptr<Base> next WARN; 646 std::shared_ptr<Object> object WARN; 647 BaseBase648 Base() 649 : ElemBase() 650 , prev( nullptr ) 651 , next() 652 , object() { 653 // empty 654 // empty 655 } 656 }; 657 658 // ------------------------------------------------------------------------------- 659 struct Scene : ElemBase { 660 ID id FAIL; 661 662 std::shared_ptr<Object> camera WARN; 663 std::shared_ptr<World> world WARN; 664 std::shared_ptr<Base> basact WARN; 665 666 ListBase base; 667 SceneScene668 Scene() 669 : ElemBase() 670 , camera() 671 , world() 672 , basact() { 673 // empty 674 } 675 }; 676 677 // ------------------------------------------------------------------------------- 678 struct Image : ElemBase { 679 ID id FAIL; 680 681 char name[240] WARN; 682 683 //struct anim *anim; 684 685 short ok, flag; 686 short source, type, pad, pad1; 687 int lastframe; 688 689 short tpageflag, totbind; 690 short xrep, yrep; 691 short twsta, twend; 692 //unsigned int bindcode; 693 //unsigned int *repbind; 694 695 std::shared_ptr<PackedFile> packedfile; 696 //struct PreviewImage * preview; 697 698 float lastupdate; 699 int lastused; 700 short animspeed; 701 702 short gen_x, gen_y, gen_type; 703 ImageImage704 Image() 705 : ElemBase() { 706 // empty 707 } 708 }; 709 710 // ------------------------------------------------------------------------------- 711 struct Tex : ElemBase { 712 713 // actually, the only texture type we support is Type_IMAGE 714 enum Type { 715 Type_CLOUDS = 1 716 ,Type_WOOD = 2 717 ,Type_MARBLE = 3 718 ,Type_MAGIC = 4 719 ,Type_BLEND = 5 720 ,Type_STUCCI = 6 721 ,Type_NOISE = 7 722 ,Type_IMAGE = 8 723 ,Type_PLUGIN = 9 724 ,Type_ENVMAP = 10 725 ,Type_MUSGRAVE = 11 726 ,Type_VORONOI = 12 727 ,Type_DISTNOISE = 13 728 ,Type_POINTDENSITY = 14 729 ,Type_VOXELDATA = 15 730 }; 731 732 enum ImageFlags { 733 ImageFlags_INTERPOL = 1 734 ,ImageFlags_USEALPHA = 2 735 ,ImageFlags_MIPMAP = 4 736 ,ImageFlags_IMAROT = 16 737 ,ImageFlags_CALCALPHA = 32 738 ,ImageFlags_NORMALMAP = 2048 739 ,ImageFlags_GAUSS_MIP = 4096 740 ,ImageFlags_FILTER_MIN = 8192 741 ,ImageFlags_DERIVATIVEMAP = 16384 742 }; 743 744 ID id FAIL; 745 // AnimData *adt; 746 747 //float noisesize, turbul; 748 //float bright, contrast, rfac, gfac, bfac; 749 //float filtersize; 750 751 //float mg_H, mg_lacunarity, mg_octaves, mg_offset, mg_gain; 752 //float dist_amount, ns_outscale; 753 754 //float vn_w1; 755 //float vn_w2; 756 //float vn_w3; 757 //float vn_w4; 758 //float vn_mexp; 759 //short vn_distm, vn_coltype; 760 761 //short noisedepth, noisetype; 762 //short noisebasis, noisebasis2; 763 764 //short flag; 765 ImageFlags imaflag; 766 Type type FAIL; 767 //short stype; 768 769 //float cropxmin, cropymin, cropxmax, cropymax; 770 //int texfilter; 771 //int afmax; 772 //short xrepeat, yrepeat; 773 //short extend; 774 775 //short fie_ima; 776 //int len; 777 //int frames, offset, sfra; 778 779 //float checkerdist, nabla; 780 //float norfac; 781 782 //ImageUser iuser; 783 784 //bNodeTree *nodetree; 785 //Ipo *ipo; 786 std::shared_ptr<Image> ima WARN; 787 //PluginTex *plugin; 788 //ColorBand *coba; 789 //EnvMap *env; 790 //PreviewImage * preview; 791 //PointDensity *pd; 792 //VoxelData *vd; 793 794 //char use_nodes; 795 TexTex796 Tex() 797 : ElemBase() 798 , imaflag( ImageFlags_INTERPOL ) 799 , type( Type_CLOUDS ) 800 , ima() { 801 // empty 802 } 803 }; 804 805 // ------------------------------------------------------------------------------- 806 struct MTex : ElemBase { 807 808 enum Projection { 809 Proj_N = 0 810 ,Proj_X = 1 811 ,Proj_Y = 2 812 ,Proj_Z = 3 813 }; 814 815 enum Flag { 816 Flag_RGBTOINT = 0x1 817 ,Flag_STENCIL = 0x2 818 ,Flag_NEGATIVE = 0x4 819 ,Flag_ALPHAMIX = 0x8 820 ,Flag_VIEWSPACE = 0x10 821 }; 822 823 enum BlendType { 824 BlendType_BLEND = 0 825 ,BlendType_MUL = 1 826 ,BlendType_ADD = 2 827 ,BlendType_SUB = 3 828 ,BlendType_DIV = 4 829 ,BlendType_DARK = 5 830 ,BlendType_DIFF = 6 831 ,BlendType_LIGHT = 7 832 ,BlendType_SCREEN = 8 833 ,BlendType_OVERLAY = 9 834 ,BlendType_BLEND_HUE = 10 835 ,BlendType_BLEND_SAT = 11 836 ,BlendType_BLEND_VAL = 12 837 ,BlendType_BLEND_COLOR = 13 838 }; 839 840 enum MapType { 841 MapType_COL = 1 842 ,MapType_NORM = 2 843 ,MapType_COLSPEC = 4 844 ,MapType_COLMIR = 8 845 ,MapType_REF = 16 846 ,MapType_SPEC = 32 847 ,MapType_EMIT = 64 848 ,MapType_ALPHA = 128 849 ,MapType_HAR = 256 850 ,MapType_RAYMIRR = 512 851 ,MapType_TRANSLU = 1024 852 ,MapType_AMB = 2048 853 ,MapType_DISPLACE = 4096 854 ,MapType_WARP = 8192 855 }; 856 857 // short texco, maptoneg; 858 MapType mapto; 859 860 BlendType blendtype; 861 std::shared_ptr<Object> object; 862 std::shared_ptr<Tex> tex; 863 char uvname[32]; 864 865 Projection projx,projy,projz; 866 char mapping; 867 float ofs[3], size[3], rot; 868 869 int texflag; 870 short colormodel, pmapto, pmaptoneg; 871 //short normapspace, which_output; 872 //char brush_map_mode; 873 float r,g,b,k WARN; 874 //float def_var, rt; 875 876 //float colfac, varfac; 877 878 float norfac; 879 //float dispfac, warpfac; 880 float colspecfac, mirrfac, alphafac; 881 float difffac, specfac, emitfac, hardfac; 882 //float raymirrfac, translfac, ambfac; 883 //float colemitfac, colreflfac, coltransfac; 884 //float densfac, scatterfac, reflfac; 885 886 //float timefac, lengthfac, clumpfac; 887 //float kinkfac, roughfac, padensfac; 888 //float lifefac, sizefac, ivelfac, pvelfac; 889 //float shadowfac; 890 //float zenupfac, zendownfac, blendfac; 891 MTexMTex892 MTex() 893 : ElemBase() { 894 // empty 895 } 896 }; 897 898 } 899 } 900 #endif 901