diff options
Diffstat (limited to 'src/3rdparty/assimp/code/BlenderScene.h')
-rw-r--r-- | src/3rdparty/assimp/code/BlenderScene.h | 900 |
1 files changed, 0 insertions, 900 deletions
diff --git a/src/3rdparty/assimp/code/BlenderScene.h b/src/3rdparty/assimp/code/BlenderScene.h deleted file mode 100644 index 86ab1f30c..000000000 --- a/src/3rdparty/assimp/code/BlenderScene.h +++ /dev/null @@ -1,900 +0,0 @@ -/* -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 |