| /* |
| Open Asset Import Library (assimp) |
| ---------------------------------------------------------------------- |
| |
| Copyright (c) 2006-2017, assimp team |
| |
| All rights reserved. |
| |
| Redistribution and use of this software in source and binary forms, |
| with or without modification, are permitted provided that the |
| following conditions are met: |
| |
| * Redistributions of source code must retain the above |
| copyright notice, this list of conditions and the |
| following disclaimer. |
| |
| * Redistributions in binary form must reproduce the above |
| copyright notice, this list of conditions and the |
| following disclaimer in the documentation and/or other |
| materials provided with the distribution. |
| |
| * Neither the name of the assimp team, nor the names of its |
| contributors may be used to endorse or promote products |
| derived from this software without specific prior |
| written permission of the assimp team. |
| |
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| |
| ---------------------------------------------------------------------- |
| */ |
| |
| /** @file BlenderScene.h |
| * @brief Intermediate representation of a BLEND scene. |
| */ |
| #ifndef INCLUDED_AI_BLEND_SCENE_H |
| #define INCLUDED_AI_BLEND_SCENE_H |
| |
| #include "BlenderDNA.h" |
| |
| namespace Assimp { |
| namespace Blender { |
| |
| // Minor parts of this file are extracts from blender data structures, |
| // declared in the ./source/blender/makesdna directory. |
| // Stuff that is not used by Assimp is commented. |
| |
| |
| // NOTE |
| // this file serves as input data to the `./scripts/genblenddna.py` |
| // script. This script generates the actual binding code to read a |
| // blender file with a possibly different DNA into our structures. |
| // Only `struct` declarations are considered and the following |
| // rules must be obeyed in order for the script to work properly: |
| // |
| // * C++ style comments only |
| // |
| // * Structures may include the primitive types char, int, short, |
| // float, double. Signed specifiers are not allowed on |
| // integers. Enum types are allowed, but they must have been |
| // defined in this header. |
| // |
| // * Structures may aggregate other structures, unless not defined |
| // in this header. |
| // |
| // * Pointers to other structures or primitive types are allowed. |
| // No references or double pointers or arrays of pointers. |
| // A pointer to a T is normally written as std::shared_ptr, while a |
| // pointer to an array of elements is written as boost:: |
| // shared_array. To avoid cyclic pointers, use raw pointers in |
| // one direction. |
| // |
| // * Arrays can have maximally two-dimensions. Any non-pointer |
| // type can form them. |
| // |
| // * Multiple fields can be declare in a single line (i.e `int a,b;`) |
| // provided they are neither pointers nor arrays. |
| // |
| // * One of WARN, FAIL can be appended to the declaration ( |
| // prior to the semicolon to specify the error handling policy if |
| // this field is missing in the input DNA). If none of those |
| // is specified the default policy is to substitute a default |
| // value for the field. |
| // |
| |
| // warn if field is missing, substitute default value |
| #ifdef WARN |
| # undef WARN |
| #endif |
| #define WARN |
| |
| // fail the import if the field does not exist |
| #ifdef FAIL |
| # undef FAIL |
| #endif |
| #define FAIL |
| |
| struct Object; |
| struct MTex; |
| struct Image; |
| |
| #include <memory> |
| |
| #define AI_BLEND_MESH_MAX_VERTS 2000000000L |
| |
| static const size_t MaxNameLen = 1024; |
| |
| // ------------------------------------------------------------------------------- |
| struct ID : ElemBase { |
| char name[ MaxNameLen ] WARN; |
| short flag; |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| struct ListBase : ElemBase { |
| std::shared_ptr<ElemBase> first; |
| std::shared_ptr<ElemBase> last; |
| }; |
| |
| |
| // ------------------------------------------------------------------------------- |
| struct PackedFile : ElemBase { |
| int size WARN; |
| int seek WARN; |
| std::shared_ptr< FileOffset > data WARN; |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| struct GroupObject : ElemBase { |
| std::shared_ptr<GroupObject> prev,next FAIL; |
| std::shared_ptr<Object> ob; |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| struct Group : ElemBase { |
| ID id FAIL; |
| int layer; |
| |
| std::shared_ptr<GroupObject> gobject; |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| struct World : ElemBase { |
| ID id FAIL; |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| struct MVert : ElemBase { |
| float co[3] FAIL; |
| float no[3] FAIL; |
| char flag; |
| int mat_nr WARN; |
| int bweight; |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| struct MEdge : ElemBase { |
| int v1, v2 FAIL; |
| char crease, bweight; |
| short flag; |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| struct MLoop : ElemBase { |
| int v, e; |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| struct MLoopUV : ElemBase { |
| float uv[2]; |
| int flag; |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| // Note that red and blue are not swapped, as with MCol |
| struct MLoopCol : ElemBase { |
| unsigned char r, g, b, a; |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| struct MPoly : ElemBase { |
| int loopstart; |
| int totloop; |
| short mat_nr; |
| char flag; |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| struct MTexPoly : ElemBase { |
| Image* tpage; |
| char flag, transp; |
| short mode, tile, pad; |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| struct MCol : ElemBase { |
| char r,g,b,a FAIL; |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| struct MFace : ElemBase { |
| int v1,v2,v3,v4 FAIL; |
| int mat_nr FAIL; |
| char flag; |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| struct TFace : ElemBase { |
| float uv[4][2] FAIL; |
| int col[4] FAIL; |
| char flag; |
| short mode; |
| short tile; |
| short unwrap; |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| struct MTFace : ElemBase { |
| MTFace() |
| : flag(0) |
| , mode(0) |
| , tile(0) |
| , unwrap(0) |
| { |
| } |
| |
| float uv[4][2] FAIL; |
| char flag; |
| short mode; |
| short tile; |
| short unwrap; |
| |
| // std::shared_ptr<Image> tpage; |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| struct MDeformWeight : ElemBase { |
| int def_nr FAIL; |
| float weight FAIL; |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| struct MDeformVert : ElemBase { |
| vector<MDeformWeight> dw WARN; |
| int totweight; |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| #define MA_RAYMIRROR 0x40000 |
| #define MA_TRANSPARENCY 0x10000 |
| #define MA_RAYTRANSP 0x20000 |
| #define MA_ZTRANSP 0x00040 |
| |
| struct Material : ElemBase { |
| ID id FAIL; |
| |
| float r,g,b WARN; |
| float specr,specg,specb WARN; |
| short har; |
| float ambr,ambg,ambb WARN; |
| float mirr,mirg,mirb; |
| float emit WARN; |
| float ray_mirror; |
| float alpha WARN; |
| float ref; |
| float translucency; |
| int mode; |
| float roughness; |
| float darkness; |
| float refrac; |
| |
| float amb; |
| float ang; |
| float spectra; |
| float spec; |
| float zoffs; |
| float add; |
| float fresnel_mir; |
| float fresnel_mir_i; |
| float fresnel_tra; |
| float fresnel_tra_i; |
| float filter; |
| float tx_limit; |
| float tx_falloff; |
| float gloss_mir; |
| float gloss_tra; |
| float adapt_thresh_mir; |
| float adapt_thresh_tra; |
| float aniso_gloss_mir; |
| float dist_mir; |
| float hasize; |
| float flaresize; |
| float subsize; |
| float flareboost; |
| float strand_sta; |
| float strand_end; |
| float strand_ease; |
| float strand_surfnor; |
| float strand_min; |
| float strand_widthfade; |
| float sbias; |
| float lbias; |
| float shad_alpha; |
| float param; |
| float rms; |
| float rampfac_col; |
| float rampfac_spec; |
| float friction; |
| float fh; |
| float reflect; |
| float fhdist; |
| float xyfrict; |
| float sss_radius; |
| float sss_col; |
| float sss_error; |
| float sss_scale; |
| float sss_ior; |
| float sss_colfac; |
| float sss_texfac; |
| float sss_front; |
| float sss_back; |
| |
| short material_type; |
| short flag; |
| short ray_depth; |
| short ray_depth_tra; |
| short samp_gloss_mir; |
| short samp_gloss_tra; |
| short fadeto_mir; |
| short shade_flag; |
| short flarec; |
| short starc; |
| short linec; |
| short ringc; |
| short pr_lamp; |
| short pr_texture; |
| short ml_flag; |
| short texco; |
| short mapto; |
| short ramp_show; |
| short pad3; |
| short dynamode; |
| short pad2; |
| short sss_flag; |
| short sss_preset; |
| short shadowonly_flag; |
| short index; |
| short vcol_alpha; |
| short pad4; |
| |
| char seed1; |
| char seed2; |
| |
| std::shared_ptr<Group> group; |
| |
| short diff_shader WARN; |
| short spec_shader WARN; |
| |
| std::shared_ptr<MTex> mtex[18]; |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| struct Mesh : ElemBase { |
| ID id FAIL; |
| |
| int totface FAIL; |
| int totedge FAIL; |
| int totvert FAIL; |
| int totloop; |
| int totpoly; |
| |
| short subdiv; |
| short subdivr; |
| short subsurftype; |
| short smoothresh; |
| |
| vector<MFace> mface FAIL; |
| vector<MTFace> mtface; |
| vector<TFace> tface; |
| vector<MVert> mvert FAIL; |
| vector<MEdge> medge WARN; |
| vector<MLoop> mloop; |
| vector<MLoopUV> mloopuv; |
| vector<MLoopCol> mloopcol; |
| vector<MPoly> mpoly; |
| vector<MTexPoly> mtpoly; |
| vector<MDeformVert> dvert; |
| vector<MCol> mcol; |
| |
| vector< std::shared_ptr<Material> > mat FAIL; |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| struct Library : ElemBase { |
| ID id FAIL; |
| |
| char name[240] WARN; |
| char filename[240] FAIL; |
| std::shared_ptr<Library> parent WARN; |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| struct Camera : ElemBase { |
| enum Type { |
| Type_PERSP = 0 |
| ,Type_ORTHO = 1 |
| }; |
| |
| ID id FAIL; |
| |
| Type type,flag WARN; |
| float lens WARN; |
| float sensor_x WARN; |
| float clipsta, clipend; |
| }; |
| |
| |
| // ------------------------------------------------------------------------------- |
| struct Lamp : ElemBase { |
| |
| enum FalloffType { |
| FalloffType_Constant = 0x0 |
| ,FalloffType_InvLinear = 0x1 |
| ,FalloffType_InvSquare = 0x2 |
| //,FalloffType_Curve = 0x3 |
| //,FalloffType_Sliders = 0x4 |
| }; |
| |
| enum Type { |
| Type_Local = 0x0 |
| ,Type_Sun = 0x1 |
| ,Type_Spot = 0x2 |
| ,Type_Hemi = 0x3 |
| ,Type_Area = 0x4 |
| //,Type_YFPhoton = 0x5 |
| }; |
| |
| ID id FAIL; |
| //AnimData *adt; |
| |
| Type type FAIL; |
| short flags; |
| |
| //int mode; |
| |
| short colormodel, totex; |
| float r,g,b,k WARN; |
| //float shdwr, shdwg, shdwb; |
| |
| float energy, dist, spotsize, spotblend; |
| //float haint; |
| |
| float att1, att2; |
| //struct CurveMapping *curfalloff; |
| FalloffType falloff_type; |
| |
| //float clipsta, clipend, shadspotsize; |
| //float bias, soft, compressthresh; |
| //short bufsize, samp, buffers, filtertype; |
| //char bufflag, buftype; |
| |
| //short ray_samp, ray_sampy, ray_sampz; |
| //short ray_samp_type; |
| short area_shape; |
| float area_size, area_sizey, area_sizez; |
| //float adapt_thresh; |
| //short ray_samp_method; |
| |
| //short texact, shadhalostep; |
| |
| //short sun_effect_type; |
| //short skyblendtype; |
| //float horizon_brightness; |
| //float spread; |
| float sun_brightness; |
| //float sun_size; |
| //float backscattered_light; |
| //float sun_intensity; |
| //float atm_turbidity; |
| //float atm_inscattering_factor; |
| //float atm_extinction_factor; |
| //float atm_distance_factor; |
| //float skyblendfac; |
| //float sky_exposure; |
| //short sky_colorspace; |
| |
| // int YF_numphotons, YF_numsearch; |
| // short YF_phdepth, YF_useqmc, YF_bufsize, YF_pad; |
| // float YF_causticblur, YF_ltradius; |
| |
| // float YF_glowint, YF_glowofs; |
| // short YF_glowtype, YF_pad2; |
| |
| //struct Ipo *ipo; |
| //struct MTex *mtex[18]; |
| // short pr_texture; |
| |
| //struct PreviewImage *preview; |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| struct ModifierData : ElemBase { |
| enum ModifierType { |
| eModifierType_None = 0, |
| eModifierType_Subsurf, |
| eModifierType_Lattice, |
| eModifierType_Curve, |
| eModifierType_Build, |
| eModifierType_Mirror, |
| eModifierType_Decimate, |
| eModifierType_Wave, |
| eModifierType_Armature, |
| eModifierType_Hook, |
| eModifierType_Softbody, |
| eModifierType_Boolean, |
| eModifierType_Array, |
| eModifierType_EdgeSplit, |
| eModifierType_Displace, |
| eModifierType_UVProject, |
| eModifierType_Smooth, |
| eModifierType_Cast, |
| eModifierType_MeshDeform, |
| eModifierType_ParticleSystem, |
| eModifierType_ParticleInstance, |
| eModifierType_Explode, |
| eModifierType_Cloth, |
| eModifierType_Collision, |
| eModifierType_Bevel, |
| eModifierType_Shrinkwrap, |
| eModifierType_Fluidsim, |
| eModifierType_Mask, |
| eModifierType_SimpleDeform, |
| eModifierType_Multires, |
| eModifierType_Surface, |
| eModifierType_Smoke, |
| eModifierType_ShapeKey |
| }; |
| |
| std::shared_ptr<ElemBase> next WARN; |
| std::shared_ptr<ElemBase> prev WARN; |
| |
| int type, mode; |
| char name[32]; |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| struct SubsurfModifierData : ElemBase { |
| |
| enum Type { |
| |
| TYPE_CatmullClarke = 0x0, |
| TYPE_Simple = 0x1 |
| }; |
| |
| enum Flags { |
| // some omitted |
| FLAGS_SubsurfUV =1<<3 |
| }; |
| |
| ModifierData modifier FAIL; |
| short subdivType WARN; |
| short levels FAIL; |
| short renderLevels ; |
| short flags; |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| struct MirrorModifierData : ElemBase { |
| |
| enum Flags { |
| Flags_CLIPPING =1<<0, |
| Flags_MIRROR_U =1<<1, |
| Flags_MIRROR_V =1<<2, |
| Flags_AXIS_X =1<<3, |
| Flags_AXIS_Y =1<<4, |
| Flags_AXIS_Z =1<<5, |
| Flags_VGROUP =1<<6 |
| }; |
| |
| ModifierData modifier FAIL; |
| |
| short axis, flag; |
| float tolerance; |
| std::shared_ptr<Object> mirror_ob; |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| struct Object : ElemBase { |
| ID id FAIL; |
| |
| enum Type { |
| Type_EMPTY = 0 |
| ,Type_MESH = 1 |
| ,Type_CURVE = 2 |
| ,Type_SURF = 3 |
| ,Type_FONT = 4 |
| ,Type_MBALL = 5 |
| |
| ,Type_LAMP = 10 |
| ,Type_CAMERA = 11 |
| |
| ,Type_WAVE = 21 |
| ,Type_LATTICE = 22 |
| }; |
| |
| Type type FAIL; |
| float obmat[4][4] WARN; |
| float parentinv[4][4] WARN; |
| char parsubstr[32] WARN; |
| |
| Object* parent WARN; |
| std::shared_ptr<Object> track WARN; |
| |
| std::shared_ptr<Object> proxy,proxy_from,proxy_group WARN; |
| std::shared_ptr<Group> dup_group WARN; |
| std::shared_ptr<ElemBase> data FAIL; |
| |
| ListBase modifiers; |
| |
| Object() |
| : ElemBase() |
| , type( Type_EMPTY ) |
| , parent( nullptr ) |
| , track() |
| , proxy() |
| , proxy_from() |
| , data() { |
| // empty |
| } |
| }; |
| |
| |
| // ------------------------------------------------------------------------------- |
| struct Base : ElemBase { |
| Base* prev WARN; |
| std::shared_ptr<Base> next WARN; |
| std::shared_ptr<Object> object WARN; |
| |
| Base() |
| : ElemBase() |
| , prev( nullptr ) |
| , next() |
| , object() { |
| // empty |
| // empty |
| } |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| struct Scene : ElemBase { |
| ID id FAIL; |
| |
| std::shared_ptr<Object> camera WARN; |
| std::shared_ptr<World> world WARN; |
| std::shared_ptr<Base> basact WARN; |
| |
| ListBase base; |
| |
| Scene() |
| : ElemBase() |
| , camera() |
| , world() |
| , basact() { |
| // empty |
| } |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| struct Image : ElemBase { |
| ID id FAIL; |
| |
| char name[240] WARN; |
| |
| //struct anim *anim; |
| |
| short ok, flag; |
| short source, type, pad, pad1; |
| int lastframe; |
| |
| short tpageflag, totbind; |
| short xrep, yrep; |
| short twsta, twend; |
| //unsigned int bindcode; |
| //unsigned int *repbind; |
| |
| std::shared_ptr<PackedFile> packedfile; |
| //struct PreviewImage * preview; |
| |
| float lastupdate; |
| int lastused; |
| short animspeed; |
| |
| short gen_x, gen_y, gen_type; |
| |
| Image() |
| : ElemBase() { |
| // empty |
| } |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| struct Tex : ElemBase { |
| |
| // actually, the only texture type we support is Type_IMAGE |
| enum Type { |
| Type_CLOUDS = 1 |
| ,Type_WOOD = 2 |
| ,Type_MARBLE = 3 |
| ,Type_MAGIC = 4 |
| ,Type_BLEND = 5 |
| ,Type_STUCCI = 6 |
| ,Type_NOISE = 7 |
| ,Type_IMAGE = 8 |
| ,Type_PLUGIN = 9 |
| ,Type_ENVMAP = 10 |
| ,Type_MUSGRAVE = 11 |
| ,Type_VORONOI = 12 |
| ,Type_DISTNOISE = 13 |
| ,Type_POINTDENSITY = 14 |
| ,Type_VOXELDATA = 15 |
| }; |
| |
| enum ImageFlags { |
| ImageFlags_INTERPOL = 1 |
| ,ImageFlags_USEALPHA = 2 |
| ,ImageFlags_MIPMAP = 4 |
| ,ImageFlags_IMAROT = 16 |
| ,ImageFlags_CALCALPHA = 32 |
| ,ImageFlags_NORMALMAP = 2048 |
| ,ImageFlags_GAUSS_MIP = 4096 |
| ,ImageFlags_FILTER_MIN = 8192 |
| ,ImageFlags_DERIVATIVEMAP = 16384 |
| }; |
| |
| ID id FAIL; |
| // AnimData *adt; |
| |
| //float noisesize, turbul; |
| //float bright, contrast, rfac, gfac, bfac; |
| //float filtersize; |
| |
| //float mg_H, mg_lacunarity, mg_octaves, mg_offset, mg_gain; |
| //float dist_amount, ns_outscale; |
| |
| //float vn_w1; |
| //float vn_w2; |
| //float vn_w3; |
| //float vn_w4; |
| //float vn_mexp; |
| //short vn_distm, vn_coltype; |
| |
| //short noisedepth, noisetype; |
| //short noisebasis, noisebasis2; |
| |
| //short flag; |
| ImageFlags imaflag; |
| Type type FAIL; |
| //short stype; |
| |
| //float cropxmin, cropymin, cropxmax, cropymax; |
| //int texfilter; |
| //int afmax; |
| //short xrepeat, yrepeat; |
| //short extend; |
| |
| //short fie_ima; |
| //int len; |
| //int frames, offset, sfra; |
| |
| //float checkerdist, nabla; |
| //float norfac; |
| |
| //ImageUser iuser; |
| |
| //bNodeTree *nodetree; |
| //Ipo *ipo; |
| std::shared_ptr<Image> ima WARN; |
| //PluginTex *plugin; |
| //ColorBand *coba; |
| //EnvMap *env; |
| //PreviewImage * preview; |
| //PointDensity *pd; |
| //VoxelData *vd; |
| |
| //char use_nodes; |
| |
| Tex() |
| : ElemBase() |
| , imaflag( ImageFlags_INTERPOL ) |
| , type( Type_CLOUDS ) |
| , ima() { |
| // empty |
| } |
| }; |
| |
| // ------------------------------------------------------------------------------- |
| struct MTex : ElemBase { |
| |
| enum Projection { |
| Proj_N = 0 |
| ,Proj_X = 1 |
| ,Proj_Y = 2 |
| ,Proj_Z = 3 |
| }; |
| |
| enum Flag { |
| Flag_RGBTOINT = 0x1 |
| ,Flag_STENCIL = 0x2 |
| ,Flag_NEGATIVE = 0x4 |
| ,Flag_ALPHAMIX = 0x8 |
| ,Flag_VIEWSPACE = 0x10 |
| }; |
| |
| enum BlendType { |
| BlendType_BLEND = 0 |
| ,BlendType_MUL = 1 |
| ,BlendType_ADD = 2 |
| ,BlendType_SUB = 3 |
| ,BlendType_DIV = 4 |
| ,BlendType_DARK = 5 |
| ,BlendType_DIFF = 6 |
| ,BlendType_LIGHT = 7 |
| ,BlendType_SCREEN = 8 |
| ,BlendType_OVERLAY = 9 |
| ,BlendType_BLEND_HUE = 10 |
| ,BlendType_BLEND_SAT = 11 |
| ,BlendType_BLEND_VAL = 12 |
| ,BlendType_BLEND_COLOR = 13 |
| }; |
| |
| enum MapType { |
| MapType_COL = 1 |
| ,MapType_NORM = 2 |
| ,MapType_COLSPEC = 4 |
| ,MapType_COLMIR = 8 |
| ,MapType_REF = 16 |
| ,MapType_SPEC = 32 |
| ,MapType_EMIT = 64 |
| ,MapType_ALPHA = 128 |
| ,MapType_HAR = 256 |
| ,MapType_RAYMIRR = 512 |
| ,MapType_TRANSLU = 1024 |
| ,MapType_AMB = 2048 |
| ,MapType_DISPLACE = 4096 |
| ,MapType_WARP = 8192 |
| }; |
| |
| // short texco, maptoneg; |
| MapType mapto; |
| |
| BlendType blendtype; |
| std::shared_ptr<Object> object; |
| std::shared_ptr<Tex> tex; |
| char uvname[32]; |
| |
| Projection projx,projy,projz; |
| char mapping; |
| float ofs[3], size[3], rot; |
| |
| int texflag; |
| short colormodel, pmapto, pmaptoneg; |
| //short normapspace, which_output; |
| //char brush_map_mode; |
| float r,g,b,k WARN; |
| //float def_var, rt; |
| |
| //float colfac, varfac; |
| |
| float norfac; |
| //float dispfac, warpfac; |
| float colspecfac, mirrfac, alphafac; |
| float difffac, specfac, emitfac, hardfac; |
| //float raymirrfac, translfac, ambfac; |
| //float colemitfac, colreflfac, coltransfac; |
| //float densfac, scatterfac, reflfac; |
| |
| //float timefac, lengthfac, clumpfac; |
| //float kinkfac, roughfac, padensfac; |
| //float lifefac, sizefac, ivelfac, pvelfac; |
| //float shadowfac; |
| //float zenupfac, zendownfac, blendfac; |
| |
| MTex() |
| : ElemBase() { |
| // empty |
| } |
| }; |
| |
| } |
| } |
| #endif |