PeriDyno 0.8.2
ofbx.h
Go to the documentation of this file.
1#pragma once
2
3
4namespace ofbx
5{
6
7
8typedef unsigned char u8;
9typedef unsigned short u16;
10typedef unsigned int u32;
11#ifdef _WIN32
12 typedef long long i64;
13 typedef unsigned long long u64;
14#else
15 typedef long i64;
16 typedef unsigned long u64;
17#endif
18
19static_assert(sizeof(u8) == 1, "u8 is not 1 byte");
20static_assert(sizeof(u32) == 4, "u32 is not 4 bytes");
21static_assert(sizeof(u64) == 8, "u64 is not 8 bytes");
22static_assert(sizeof(i64) == 8, "i64 is not 8 bytes");
23
24
25using JobFunction = void (*)(void*);
26using JobProcessor = void (*)(JobFunction, void*, void*, u32, u32);
27
28enum class LoadFlags : u64 {
29 TRIANGULATE = 1 << 0,
30 IGNORE_GEOMETRY = 1 << 1,
31 IGNORE_BLEND_SHAPES = 1 << 2,
32};
33
34
35struct Vec2
36{
37 double x, y;
38};
39
40
41struct Vec3
42{
43 double x, y, z;
44};
45
46
47struct Vec4
48{
49 double x, y, z, w;
50};
51
52
53struct Matrix
54{
55 double m[16]; // last 4 are translation
56};
57
58
59struct Quat
60{
61 double x, y, z, w;
62};
63
64
65struct Color
66{
67 float r, g, b;
68};
69
70
72{
73 const u8* begin = nullptr;
74 const u8* end = nullptr;
75 bool is_binary = true;
76
77 bool operator!=(const char* rhs) const { return !(*this == rhs); }
78 bool operator==(const char* rhs) const;
79
80 u64 toU64() const;
81 i64 toI64() const;
82 int toInt() const;
83 u32 toU32() const;
84 double toDouble() const;
85 float toFloat() const;
86
87 template <int N>
88 void toString(char(&out)[N]) const
89 {
90 char* cout = out;
91 const u8* cin = begin;
92 while (cin != end && cout - out < N - 1)
93 {
94 *cout = (char)*cin;
95 ++cin;
96 ++cout;
97 }
98 *cout = '\0';
99 }
100};
101
102
104{
105 enum Type : unsigned char
106 {
107 LONG = 'L',
108 INTEGER = 'I',
109 STRING = 'S',
110 FLOAT = 'F',
111 DOUBLE = 'D',
116 BINARY = 'R'
117 };
118 virtual ~IElementProperty() {}
119 virtual Type getType() const = 0;
120 virtual IElementProperty* getNext() const = 0;
121 virtual DataView getValue() const = 0;
122 virtual int getCount() const = 0;
123 virtual bool getValues(double* values, int max_size) const = 0;
124 virtual bool getValues(int* values, int max_size) const = 0;
125 virtual bool getValues(float* values, int max_size) const = 0;
126 virtual bool getValues(u64* values, int max_size) const = 0;
127 virtual bool getValues(i64* values, int max_size) const = 0;
128};
129
130
132{
133 virtual ~IElement() = default;
134 virtual IElement* getFirstChild() const = 0;
135 virtual IElement* getSibling() const = 0;
136 virtual DataView getID() const = 0;
137 virtual IElementProperty* getFirstProperty() const = 0;
138};
139
140
142{
143 EULER_XYZ,
144 EULER_XZY,
145 EULER_YZX,
146 EULER_YXZ,
147 EULER_ZXY,
148 EULER_ZYX,
149 SPHERIC_XYZ // Currently unsupported. Treated as EULER_XYZ.
150};
151
152
153struct AnimationCurveNode;
154struct AnimationLayer;
155struct Scene;
156struct IScene;
157
158
159struct Object
160{
161 enum class Type
162 {
163 ROOT,
164 GEOMETRY,
165 SHAPE,
166 MATERIAL,
167 MESH,
168 TEXTURE,
169 LIMB_NODE,
170 NULL_NODE,
171 NODE_ATTRIBUTE,
172 CLUSTER,
173 SKIN,
174 BLEND_SHAPE,
175 BLEND_SHAPE_CHANNEL,
176 ANIMATION_STACK,
177 ANIMATION_LAYER,
178 ANIMATION_CURVE,
179 ANIMATION_CURVE_NODE,
180 POSE
181 };
182
183 Object(const Scene& _scene, const IElement& _element);
184
185 virtual ~Object() {}
186 virtual Type getType() const = 0;
187
188 const IScene& getScene() const;
189 Object* resolveObjectLink(int idx) const;
190 Object* resolveObjectLink(Type type, const char* property, int idx) const;
192 Object* getParent() const;
193
195 Vec3 getRotationOffset() const;
196 Vec3 getRotationPivot() const;
197 Vec3 getPostRotation() const;
198 Vec3 getScalingOffset() const;
199 Vec3 getScalingPivot() const;
200 Vec3 getPreRotation() const;
202 Vec3 getLocalRotation() const;
203 Vec3 getLocalScaling() const;
206 Matrix evalLocal(const Vec3& translation, const Vec3& rotation) const;
207 Matrix evalLocal(const Vec3& translation, const Vec3& rotation, const Vec3& scaling) const;
208
209
210 bool isNode() const { return is_node; }
211
212
213 template <typename T> T* resolveObjectLink(int idx) const
214 {
215 return static_cast<T*>(resolveObjectLink(T::s_type, nullptr, idx));
216 }
217
219 char name[128];
222
223protected:
225 const Scene& scene;
226};
227
228
229struct Pose : Object {
230 static const Type s_type = Type::POSE;
231 Pose(const Scene& _scene, const IElement& _element);
232
233 virtual Matrix getMatrix() const = 0;
234 virtual const Object* getNode() const = 0;
235};
236
237
239{
241 {
249 COUNT
250 };
251
252 static const Type s_type = Type::TEXTURE;
253
254 Texture(const Scene& _scene, const IElement& _element);
255 virtual DataView getFileName() const = 0;
256 virtual DataView getRelativeFileName() const = 0;
257 virtual DataView getEmbeddedData() const = 0;
258};
259
260
262{
263 static const Type s_type = Type::MATERIAL;
264
265 Material(const Scene& _scene, const IElement& _element);
266
267 virtual Color getDiffuseColor() const = 0;
268 virtual Color getSpecularColor() const = 0;
269 virtual Color getReflectionColor() const = 0;
270 virtual Color getAmbientColor() const = 0;
271 virtual Color getEmissiveColor() const = 0;
272
273 virtual double getDiffuseFactor() const = 0;
274 virtual double getSpecularFactor() const = 0;
275 virtual double getReflectionFactor() const = 0;
276 virtual double getShininess() const = 0;
277 virtual double getShininessExponent() const = 0;
278 virtual double getAmbientFactor() const = 0;
279 virtual double getBumpFactor() const = 0;
280 virtual double getEmissiveFactor() const = 0;
281
282 virtual const Texture* getTexture(Texture::TextureType type) const = 0;
283};
284
285
287{
288 static const Type s_type = Type::CLUSTER;
289
290 Cluster(const Scene& _scene, const IElement& _element);
291
292 virtual const int* getIndices() const = 0;
293 virtual int getIndicesCount() const = 0;
294 virtual const double* getWeights() const = 0;
295 virtual int getWeightsCount() const = 0;
296 virtual Matrix getTransformMatrix() const = 0;
297 virtual Matrix getTransformLinkMatrix() const = 0;
298 virtual const Object* getLink() const = 0;
299};
300
301
302struct Skin : Object
303{
304 static const Type s_type = Type::SKIN;
305
306 Skin(const Scene& _scene, const IElement& _element);
307
308 virtual int getClusterCount() const = 0;
309 virtual const Cluster* getCluster(int idx) const = 0;
310};
311
312
314{
316
317 BlendShapeChannel(const Scene& _scene, const IElement& _element);
318
319 virtual double getDeformPercent() const = 0;
320 virtual int getShapeCount() const = 0;
321 virtual const struct Shape* getShape(int idx) const = 0;
322};
323
324
326{
328
329 BlendShape(const Scene& _scene, const IElement& _element);
330
331 virtual int getBlendShapeChannelCount() const = 0;
332 virtual const BlendShapeChannel* getBlendShapeChannel(int idx) const = 0;
333};
334
335
337{
339
340 NodeAttribute(const Scene& _scene, const IElement& _element);
341
342 virtual DataView getAttributeType() const = 0;
343};
344
345
347{
348 static const Type s_type = Type::GEOMETRY;
349 static const int s_uvs_max = 4;
350
351 Geometry(const Scene& _scene, const IElement& _element);
352
353 virtual const Vec3* getVertices() const = 0;
354 virtual int getVertexCount() const = 0;
355
356 virtual const int* getFaceIndices() const = 0;
357 virtual int getIndexCount() const = 0;
358
359 virtual const Vec3* getNormals() const = 0;
360 virtual const Vec2* getUVs(int index = 0) const = 0;
361 virtual const Vec4* getColors() const = 0;
362 virtual const Vec3* getTangents() const = 0;
363 virtual const Skin* getSkin() const = 0;
364 virtual const BlendShape* getBlendShape() const = 0;
365 virtual const int* getMaterials() const = 0;
366};
367
368
369struct Shape : Object
370{
371 static const Type s_type = Type::SHAPE;
372
373 Shape(const Scene& _scene, const IElement& _element);
374
375 virtual const Vec3* getVertices() const = 0;
376 virtual int getVertexCount() const = 0;
377
378 virtual const Vec3* getNormals() const = 0;
379};
380
381
382struct Mesh : Object
383{
384 static const Type s_type = Type::MESH;
385
386 Mesh(const Scene& _scene, const IElement& _element);
387
388 virtual const Pose* getPose() const = 0;
389 virtual const Geometry* getGeometry() const = 0;
390 virtual Matrix getGeometricMatrix() const = 0;
391 virtual const Material* getMaterial(int idx) const = 0;
392 virtual int getMaterialCount() const = 0;
393};
394
395
397{
399
400 AnimationStack(const Scene& _scene, const IElement& _element);
401 virtual const AnimationLayer* getLayer(int index) const = 0;
402};
403
404
406{
408
409 AnimationLayer(const Scene& _scene, const IElement& _element);
410
411 virtual const AnimationCurveNode* getCurveNode(int index) const = 0;
412 virtual const AnimationCurveNode* getCurveNode(const Object& bone, const char* property) const = 0;
413};
414
415
417{
419
420 AnimationCurve(const Scene& _scene, const IElement& _element);
421
422 virtual int getKeyCount() const = 0;
423 virtual const i64* getKeyTime() const = 0;
424 virtual const float* getKeyValue() const = 0;
425};
426
427
429{
431
432 AnimationCurveNode(const Scene& _scene, const IElement& _element);
433
434 virtual const ofbx::AnimationCurve* getCurve(int idx) const = 0;
435 virtual Vec3 getNodeLocalTransform(double time) const = 0;
436 virtual const Object* getBone() const = 0;
437 virtual float getAnimationDX() const = 0; // By "d|X"
438 virtual float getAnimationDY() const = 0;
439 virtual float getAnimationDZ() const = 0;
440};
441
442
444{
451};
452
453
454// Specifies which canonical axis represents up in the system (typically Y or Z).
456{
461
462
463// Specifies the third vector of the system.
465{
469
470
471// http://docs.autodesk.com/FBX/2014/ENU/FBX-SDK-Documentation/index.html?url=cpp_ref/class_fbx_time.html,topicNumber=cpp_ref_class_fbx_time_html29087af6-8c2c-4e9d-aede-7dc5a1c2436c,hash=a837590fd5310ff5df56ffcf7c394787e
473{
489};
490
491
493{
495 int UpAxisSign = 1;
496 // this seems to be 1-2 in Autodesk (odd/even parity), and 0-2 in Blender (axis as in UpAxis)
497 // I recommend to ignore FrontAxis and use just UpVector
498 int FrontAxis = 1;
506 double TimeSpanStart = 0L;
507 double TimeSpanStop = 0L;
509 float CustomFrameRate = -1.0f;
510};
511
512
513struct IScene
514{
515 virtual void destroy() = 0;
516 virtual const IElement* getRootElement() const = 0;
517 virtual const Object* getRoot() const = 0;
518 virtual const TakeInfo* getTakeInfo(const char* name) const = 0;
519 virtual int getGeometryCount() const = 0;
520 virtual int getMeshCount() const = 0;
521 virtual float getSceneFrameRate() const = 0;
522 virtual const GlobalSettings* getGlobalSettings() const = 0;
523 virtual const Mesh* getMesh(int index) const = 0;
524 virtual const Geometry* getGeometry(int index) const = 0;
525 virtual int getAnimationStackCount() const = 0;
526 virtual const AnimationStack* getAnimationStack(int index) const = 0;
527 virtual const Object* const* getAllObjects() const = 0;
528 virtual int getAllObjectCount() const = 0;
529 virtual int getEmbeddedDataCount() const = 0;
530 virtual DataView getEmbeddedData(int index) const = 0;
531 virtual DataView getEmbeddedFilename(int index) const = 0;
532
533protected:
534 virtual ~IScene() {}
535};
536
537
538IScene* load(const u8* data, int size, u64 flags, JobProcessor job_processor = nullptr, void* job_user_ptr = nullptr);
539const char* getError();
540double fbxTimeToSeconds(i64 value);
541i64 secondsToFbxTime(double value);
542
543
544} // namespace ofbx
#define T(t)
#define N(x, y, z)
Definition: ofbx.cpp:14
void(*)(JobFunction, void *, void *, u32, u32) JobProcessor
Definition: ofbx.h:26
CoordSystem
Definition: ofbx.h:465
@ CoordSystem_RightHanded
Definition: ofbx.h:466
@ CoordSystem_LeftHanded
Definition: ofbx.h:467
void(*)(void *) JobFunction
Definition: ofbx.h:25
long i64
Definition: ofbx.h:15
RotationOrder
Definition: ofbx.h:142
double fbxTimeToSeconds(i64 value)
Definition: ofbx.cpp:256
i64 secondsToFbxTime(double value)
Definition: ofbx.cpp:262
FrameRate
Definition: ofbx.h:473
@ FrameRate_PAL
Definition: ofbx.h:484
@ FrameRate_30
Definition: ofbx.h:480
@ FrameRate_NTSC_FULL_FRAME
Definition: ofbx.h:483
@ FrameRate_CINEMA_ND
Definition: ofbx.h:487
@ FrameRate_30_DROP
Definition: ofbx.h:481
@ FrameRate_48
Definition: ofbx.h:479
@ FrameRate_DEFAULT
Definition: ofbx.h:474
@ FrameRate_1000
Definition: ofbx.h:486
@ FrameRate_CUSTOM
Definition: ofbx.h:488
@ FrameRate_NTSC_DROP_FRAME
Definition: ofbx.h:482
@ FrameRate_CINEMA
Definition: ofbx.h:485
@ FrameRate_100
Definition: ofbx.h:476
@ FrameRate_120
Definition: ofbx.h:475
@ FrameRate_50
Definition: ofbx.h:478
@ FrameRate_60
Definition: ofbx.h:477
const char * getError()
Definition: ofbx.cpp:3637
unsigned char u8
Definition: ofbx.h:8
unsigned long u64
Definition: ofbx.h:16
unsigned short u16
Definition: ofbx.h:9
unsigned int u32
Definition: ofbx.h:10
IScene * load(const u8 *data, int size, u64 flags, JobProcessor job_processor, void *job_user_ptr)
Definition: ofbx.cpp:3597
UpVector
Definition: ofbx.h:456
@ UpVector_AxisY
Definition: ofbx.h:458
@ UpVector_AxisZ
Definition: ofbx.h:459
@ UpVector_AxisX
Definition: ofbx.h:457
LoadFlags
Definition: ofbx.h:28
AnimationCurve(const Scene &_scene, const IElement &_element)
Definition: ofbx.cpp:1342
virtual int getKeyCount() const =0
virtual const i64 * getKeyTime() const =0
static const Type s_type
Definition: ofbx.h:418
virtual const float * getKeyValue() const =0
static const Type s_type
Definition: ofbx.h:430
virtual float getAnimationDX() const =0
virtual const Object * getBone() const =0
virtual const ofbx::AnimationCurve * getCurve(int idx) const =0
virtual Vec3 getNodeLocalTransform(double time) const =0
AnimationCurveNode(const Scene &_scene, const IElement &_element)
Definition: ofbx.cpp:1348
virtual float getAnimationDZ() const =0
virtual float getAnimationDY() const =0
virtual const AnimationCurveNode * getCurveNode(const Object &bone, const char *property) const =0
static const Type s_type
Definition: ofbx.h:407
AnimationLayer(const Scene &_scene, const IElement &_element)
Definition: ofbx.cpp:1336
virtual const AnimationCurveNode * getCurveNode(int index) const =0
virtual const AnimationLayer * getLayer(int index) const =0
AnimationStack(const Scene &_scene, const IElement &_element)
Definition: ofbx.cpp:1330
static const Type s_type
Definition: ofbx.h:398
static const Type s_type
Definition: ofbx.h:315
virtual double getDeformPercent() const =0
virtual int getShapeCount() const =0
virtual const struct Shape * getShape(int idx) const =0
BlendShapeChannel(const Scene &_scene, const IElement &_element)
Definition: ofbx.cpp:1411
BlendShape(const Scene &_scene, const IElement &_element)
Definition: ofbx.cpp:1466
static const Type s_type
Definition: ofbx.h:327
virtual const BlendShapeChannel * getBlendShapeChannel(int idx) const =0
virtual int getBlendShapeChannelCount() const =0
virtual Matrix getTransformLinkMatrix() const =0
virtual Matrix getTransformMatrix() const =0
virtual int getIndicesCount() const =0
virtual int getWeightsCount() const =0
Cluster(const Scene &_scene, const IElement &_element)
Definition: ofbx.cpp:1253
virtual const Object * getLink() const =0
virtual const int * getIndices() const =0
virtual const double * getWeights() const =0
static const Type s_type
Definition: ofbx.h:288
float b
Definition: ofbx.h:67
float r
Definition: ofbx.h:67
float g
Definition: ofbx.h:67
bool operator==(const char *rhs) const
Definition: ofbx.cpp:379
const u8 * begin
Definition: ofbx.h:73
int toInt() const
Definition: ofbx.cpp:327
u64 toU64() const
Definition: ofbx.cpp:299
bool is_binary
Definition: ofbx.h:75
i64 toI64() const
Definition: ofbx.cpp:313
void toString(char(&out)[N]) const
Definition: ofbx.h:88
float toFloat() const
Definition: ofbx.cpp:366
double toDouble() const
Definition: ofbx.cpp:353
bool operator!=(const char *rhs) const
Definition: ofbx.h:77
u32 toU32() const
Definition: ofbx.cpp:340
const u8 * end
Definition: ofbx.h:74
virtual int getIndexCount() const =0
virtual const Vec3 * getNormals() const =0
virtual const Vec4 * getColors() const =0
static const int s_uvs_max
Definition: ofbx.h:349
virtual const Vec2 * getUVs(int index=0) const =0
virtual const int * getMaterials() const =0
virtual int getVertexCount() const =0
virtual const Vec3 * getTangents() const =0
virtual const Vec3 * getVertices() const =0
virtual const BlendShape * getBlendShape() const =0
virtual const Skin * getSkin() const =0
static const Type s_type
Definition: ofbx.h:348
Geometry(const Scene &_scene, const IElement &_element)
Definition: ofbx.cpp:1168
virtual const int * getFaceIndices() const =0
float UnitScaleFactor
Definition: ofbx.h:504
float OriginalUnitScaleFactor
Definition: ofbx.h:505
float CustomFrameRate
Definition: ofbx.h:509
double TimeSpanStop
Definition: ofbx.h:507
FrameRate TimeMode
Definition: ofbx.h:508
int OriginalUpAxisSign
Definition: ofbx.h:503
UpVector UpAxis
Definition: ofbx.h:494
CoordSystem CoordAxis
Definition: ofbx.h:500
double TimeSpanStart
Definition: ofbx.h:506
virtual IElement * getSibling() const =0
virtual IElement * getFirstChild() const =0
virtual IElementProperty * getFirstProperty() const =0
virtual ~IElement()=default
virtual DataView getID() const =0
virtual ~IElementProperty()
Definition: ofbx.h:118
virtual bool getValues(u64 *values, int max_size) const =0
virtual bool getValues(int *values, int max_size) const =0
virtual bool getValues(double *values, int max_size) const =0
virtual IElementProperty * getNext() const =0
virtual bool getValues(i64 *values, int max_size) const =0
virtual bool getValues(float *values, int max_size) const =0
virtual int getCount() const =0
virtual Type getType() const =0
virtual DataView getValue() const =0
virtual int getEmbeddedDataCount() const =0
virtual int getAllObjectCount() const =0
virtual int getGeometryCount() const =0
virtual const GlobalSettings * getGlobalSettings() const =0
virtual const Object * getRoot() const =0
virtual const Object *const * getAllObjects() const =0
virtual void destroy()=0
virtual const IElement * getRootElement() const =0
virtual const TakeInfo * getTakeInfo(const char *name) const =0
virtual int getMeshCount() const =0
virtual const Mesh * getMesh(int index) const =0
virtual int getAnimationStackCount() const =0
virtual const AnimationStack * getAnimationStack(int index) const =0
virtual DataView getEmbeddedFilename(int index) const =0
virtual float getSceneFrameRate() const =0
virtual ~IScene()
Definition: ofbx.h:534
virtual DataView getEmbeddedData(int index) const =0
virtual const Geometry * getGeometry(int index) const =0
virtual double getAmbientFactor() const =0
virtual Color getDiffuseColor() const =0
virtual double getSpecularFactor() const =0
Material(const Scene &_scene, const IElement &_element)
Definition: ofbx.cpp:1076
virtual Color getSpecularColor() const =0
virtual double getReflectionFactor() const =0
virtual double getDiffuseFactor() const =0
virtual Color getEmissiveColor() const =0
virtual double getBumpFactor() const =0
virtual Color getAmbientColor() const =0
virtual double getShininessExponent() const =0
static const Type s_type
Definition: ofbx.h:263
virtual const Texture * getTexture(Texture::TextureType type) const =0
virtual Color getReflectionColor() const =0
virtual double getShininess() const =0
virtual double getEmissiveFactor() const =0
double m[16]
Definition: ofbx.h:55
virtual const Material * getMaterial(int idx) const =0
Mesh(const Scene &_scene, const IElement &_element)
Definition: ofbx.cpp:1029
static const Type s_type
Definition: ofbx.h:384
virtual int getMaterialCount() const =0
virtual Matrix getGeometricMatrix() const =0
virtual const Pose * getPose() const =0
virtual const Geometry * getGeometry() const =0
static const Type s_type
Definition: ofbx.h:338
virtual DataView getAttributeType() const =0
NodeAttribute(const Scene &_scene, const IElement &_element)
Definition: ofbx.cpp:1148
Matrix getLocalTransform() const
Definition: ofbx.cpp:3509
Vec3 getScalingOffset() const
Definition: ofbx.cpp:3416
Vec3 getRotationPivot() const
Definition: ofbx.cpp:3404
virtual Type getType() const =0
const IElement & element
Definition: ofbx.h:220
Matrix evalLocal(const Vec3 &translation, const Vec3 &rotation) const
Definition: ofbx.cpp:3428
Vec3 getLocalScaling() const
Definition: ofbx.cpp:3494
bool isNode() const
Definition: ofbx.h:210
Vec3 getScalingPivot() const
Definition: ofbx.cpp:3422
Object * resolveObjectLinkReverse(Type type) const
Definition: ofbx.cpp:3515
const IScene & getScene() const
Definition: ofbx.cpp:3531
Object * resolveObjectLink(int idx) const
Definition: ofbx.cpp:3537
char name[128]
Definition: ofbx.h:219
RotationOrder getRotationOrder() const
Definition: ofbx.cpp:3391
Vec3 getLocalTranslation() const
Definition: ofbx.cpp:3476
Vec3 getPostRotation() const
Definition: ofbx.cpp:3410
Vec3 getRotationOffset() const
Definition: ofbx.cpp:3398
Matrix getGlobalTransform() const
Definition: ofbx.cpp:3500
const Object * node_attribute
Definition: ofbx.h:221
const Scene & scene
Definition: ofbx.h:225
u64 id
Definition: ofbx.h:218
T * resolveObjectLink(int idx) const
Definition: ofbx.h:213
Vec3 getPreRotation() const
Definition: ofbx.cpp:3482
bool is_node
Definition: ofbx.h:224
Object(const Scene &_scene, const IElement &_element)
Definition: ofbx.cpp:509
Object * getParent() const
Definition: ofbx.cpp:3578
virtual ~Object()
Definition: ofbx.h:185
Vec3 getLocalRotation() const
Definition: ofbx.cpp:3488
Pose(const Scene &_scene, const IElement &_element)
Definition: ofbx.cpp:1494
virtual Matrix getMatrix() const =0
static const Type s_type
Definition: ofbx.h:230
virtual const Object * getNode() const =0
double y
Definition: ofbx.h:61
double z
Definition: ofbx.h:61
double w
Definition: ofbx.h:61
double x
Definition: ofbx.h:61
virtual const Vec3 * getNormals() const =0
static const Type s_type
Definition: ofbx.h:371
virtual int getVertexCount() const =0
virtual const Vec3 * getVertices() const =0
Shape(const Scene &_scene, const IElement &_element)
Definition: ofbx.cpp:1226
virtual const Cluster * getCluster(int idx) const =0
static const Type s_type
Definition: ofbx.h:304
Skin(const Scene &_scene, const IElement &_element)
Definition: ofbx.cpp:1389
virtual int getClusterCount() const =0
double reference_time_from
Definition: ofbx.h:449
DataView name
Definition: ofbx.h:445
DataView filename
Definition: ofbx.h:446
double reference_time_to
Definition: ofbx.h:450
double local_time_to
Definition: ofbx.h:448
double local_time_from
Definition: ofbx.h:447
Texture(const Scene &_scene, const IElement &_element)
Definition: ofbx.cpp:1488
virtual DataView getFileName() const =0
virtual DataView getRelativeFileName() const =0
@ SPECULAR
Definition: ofbx.h:244
@ EMISSIVE
Definition: ofbx.h:247
@ REFLECTION
Definition: ofbx.h:248
@ SHININESS
Definition: ofbx.h:245
virtual DataView getEmbeddedData() const =0
static const Type s_type
Definition: ofbx.h:252
double x
Definition: ofbx.h:37
double y
Definition: ofbx.h:37
double y
Definition: ofbx.h:43
double z
Definition: ofbx.h:43
double x
Definition: ofbx.h:43
double w
Definition: ofbx.h:49
double x
Definition: ofbx.h:49
double z
Definition: ofbx.h:49
double y
Definition: ofbx.h:49