123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975 |
- /*
- Open Asset Import Library (assimp)
- ----------------------------------------------------------------------
- Copyright (c) 2006-2025, 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;
- struct Collection;
- #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::weak_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 CollectionObject : ElemBase {
- //CollectionObject* prev;
- std::shared_ptr<CollectionObject> next;
- Object *ob;
- };
- // -------------------------------------------------------------------------------
- struct CollectionChild : ElemBase {
- std::shared_ptr<CollectionChild> next, prev;
- std::shared_ptr<Collection> collection;
- };
- // -------------------------------------------------------------------------------
- struct Collection : ElemBase {
- ID id FAIL;
- ListBase gobject; // CollectionObject
- ListBase children; // CollectionChild
- };
- // -------------------------------------------------------------------------------
- struct World : ElemBase {
- ID id FAIL;
- };
- // -------------------------------------------------------------------------------
- struct MVert : ElemBase {
- float co[3] FAIL;
- float no[3] FAIL; // read as short and divided through / 32767.f
- char flag;
- int mat_nr WARN;
- int bweight;
- MVert() :
- flag(0), mat_nr(0), bweight(0) {}
- };
- // -------------------------------------------------------------------------------
- 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];
- };
- /*
- CustomDataLayer 104
- int type 0 4
- int offset 4 4
- int flag 8 4
- int active 12 4
- int active_rnd 16 4
- int active_clone 20 4
- int active_mask 24 4
- int uid 28 4
- char name 32 64
- void *data 96 8
- */
- struct CustomDataLayer : ElemBase {
- int type;
- int offset;
- int flag;
- int active;
- int active_rnd;
- int active_clone;
- int active_mask;
- int uid;
- char name[64];
- std::shared_ptr<ElemBase> data; // must be converted to real type according type member
- CustomDataLayer() :
- type(0),
- offset(0),
- flag(0),
- active(0),
- active_rnd(0),
- active_clone(0),
- active_mask(0),
- uid(0),
- data(nullptr) {
- memset(name, 0, sizeof name);
- }
- };
- /*
- CustomData 208
- CustomDataLayer *layers 0 8
- int typemap 8 168
- int pad_i1 176 4
- int totlayer 180 4
- int maxlayer 184 4
- int totsize 188 4
- BLI_mempool *pool 192 8
- CustomDataExternal *external 200 8
- */
- struct CustomData : ElemBase {
- vector<std::shared_ptr<struct CustomDataLayer>> layers;
- int typemap[42]; // CD_NUMTYPES
- int totlayer;
- int maxlayer;
- int totsize;
- /*
- std::shared_ptr<BLI_mempool> pool;
- std::shared_ptr<CustomDataExternal> external;
- */
- };
- // -------------------------------------------------------------------------------
- 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 CustomData vdata;
- struct CustomData edata;
- struct CustomData fdata;
- struct CustomData pdata;
- struct CustomData ldata;
- };
- // -------------------------------------------------------------------------------
- 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 constant_coefficient;
- float linear_coefficient;
- float quadratic_coefficient;
- 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::weak_ptr<ElemBase> prev WARN;
- int type, mode;
- char name[32];
- };
- // ------------------------------------------------------------------------------------------------
- struct SharedModifierData : ElemBase {
- ModifierData modifier;
- };
- // -------------------------------------------------------------------------------
- struct SubsurfModifierData : SharedModifierData {
- enum Type {
- TYPE_CatmullClarke = 0x0,
- TYPE_Simple = 0x1
- };
- enum Flags {
- // some omitted
- FLAGS_SubsurfUV = 1 << 3
- };
- short subdivType WARN;
- short levels FAIL;
- short renderLevels;
- short flags;
- };
- // -------------------------------------------------------------------------------
- struct MirrorModifierData : SharedModifierData {
- 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
- };
- short axis, flag;
- float tolerance;
- std::weak_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() :
- type(Type_EMPTY), parent(nullptr) {
- // empty
- }
- };
- // -------------------------------------------------------------------------------
- struct Base : ElemBase {
- Base *prev WARN;
- std::shared_ptr<Base> next WARN;
- std::shared_ptr<Object> object WARN;
- Base() :
- prev(nullptr) {
- // 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;
- std::shared_ptr<Collection> master_collection WARN;
- ListBase base;
- Scene() = default;
- };
- // -------------------------------------------------------------------------------
- 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() = default;
- };
- // -------------------------------------------------------------------------------
- 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() :
- imaflag(ImageFlags_INTERPOL), type(Type_CLOUDS) {
- // 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() = default;
- };
- } // namespace Blender
- } // namespace Assimp
- #endif
|