-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathreadme.txt
1851 lines (1254 loc) · 79.2 KB
/
readme.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
================================================================================
README
Autodesk FBX SDK 2019
-----------------------
Welcome to the FBX SDK readme! This document includes the latest changes since
the previous release version of the Autodesk FBX SDK, such as new features, bug
fixes, known issues, deprecated functions/classes and previous releases notes.
For more information, please visit us at http://www.autodesk.com/fbx/
To join the FBX Beta Program, please visit the Autodesk Feedback Community site
at http://beta.autodesk.com
Sincerely,
the Autodesk FBX team
================================================================================
TABLE OF CONTENTS
-----------------
1. Features, Improvements And Changes
2. Fixed And Known Issues
3. Release Notes From Previous Releases
4. Legal Disclaimer
1. FEATURES, IMPROVEMENTS AND CHANGES
-------------------------------------
1.1 Improvements and New Features
* Constant FBXSDK_TC_MILLISECOND have been changed from 46186158 to 141120 to accurately support
frame rates like ~23.976, ~29.97, 72 and 96 fps.
* The enum value eFrames119dot88 has been added to the FbxTime::EMode enum. In the same vein, the
FbxTCSetMNTSC_4Xnd and FbxTCGetMNTSC_4Xnd helper functions have been added to deal with this new
~119.88 frame rate.
* The class FbxAxysSystem has been extended and provides the new function "DeepConvertScene" that
modifies transforms, vertex positions, animation curves and so on throughout the hierarchy.
Consequently, it is able to accurately support handedness changes.
1.2 Changes and Deprecated Features
* The improvement of the FBXSDK_TC_MILLISECOND is big enough to break the compatibility with
version 7.5. To minimize adoption issues, the change in this version of the FBX SDK can be
triggered by calling FbxTCSetDefinition(FBXSDK_TC_STANDARD_DEFINITION). By default, we keep
using the old value (FBXSDK_TC_LEGACY_DEFINITION) and you "opt in" for the new one.
Over time, the "opt in" will become the default and the file version will be bumped to 8.0
(so previous versions of the FBX SDK can detect that the new file is incompatible).
In the meantime, it is expected that 7.7 files saved with the new precision, will still be
readable by previous FBX SDKs (2016,2017 and 2018) BUT with totally bad timings.
* custom defined ALEMBIC_VERSION_NS to avoid possible conflict with third partly Alembic library.
* removed the forced pack to 8 (the statements #pragma pack(push, 8) / pop() were enclosing all
the FBX SDK includes in fbxsdk.h)
2. FIXED AND KNOWN ISSUES
-------------------------
2.1 Fixed Issues
[FBXX-1513] Fix crash in MergeMeshes when user data is defined.
[FBXX-1510] Mixed folder separator character (\ & /) breaks extraction of embedded textures.
2.2 Known Issues
3. RELEASE NOTES FROM PREVIOUS RELEASES
---------------------------------------
2019.2
* Re-enabled the Alembic caches support for Ogawa archives. HDF5 is not supported anymore inside the
FBX SDK. Note that all the WindowStore and IOs architectures do not provide Alembic support.
* Consider animation corrupted if keys times are not ordered by increase value
(i.e: T(i) must be less or equal to T(i+1))
[FBXX-1499] Fix potential crash when writing Acclaim file.
[FBXX-1483] Security Improvements.
[FBXX-1481] Fix potential crash in FbxGeometryConverter::ComputeEdgeSmoothingFromNormals
[FBXX-1480] 3DS Reader returns a false positive error.
[FBXX-1479] FBXCollada improve write time of mesh data.
[FBXX-1476] FbxIO::GetTmpProjectName and FbxIO::SwapFromTmpProject bad execution.
[FBXX-1474] Password protected files status is overwritten.
[FBXX-1433] Update Alembic to version 1.7.5.
2019.1
* Added the FBX standardized renaming strategy to the Collada file read/write. This renaming
strategy will replace every character in the object names/ids, which does not comply with
the XML NCName scheme, with a string in the form "FBXASC###" were ### is the decimal value
of the ASCII character.
* Added extra parameter to GenerateTangentsData() family functions to skip testing for the tangent flip
* moved the static functions FbxRenamingStrategy::NoPrefixName to FbxRenamingStrategyUtils::NoPrefixName
and it now returns an FbxString instead of a char*
* Starting with this version of the FBX SDK your programs must explicitly link with the zlib and
libxml2 libraries. On Linux and MacOS, these libraries should already be part of the system. If
not, you must install them.
* disabled Alembic support
[FBXX-1438] Fixed EvaluateGlobalBoundingBoxMinMaxCenter so it correctly returns the 3D volume bounding box.
[FBXX-1417] Fixed Wgettimeofday and Wgetlogin already define linker error.
[FBXX-1383] Fixed stack overflow when importing Collada files defining external references.
2018.1.1
* [FBXX-1384] Regression issue introduced by the Audio transport feature.
* [FBXX-1386] Copying FbxSkin object into another does not copy all data.
2018.1
* [FBXX-1258] Add Audio transport support.
* [FBXX-1279] Added more options to the FbxSceneCheck utility class.
2018.0
* [FBXX-1303] Crash when deleting NURBS created with FbxGeometryConverter::ConvertPatchToNurbsSurface()
* [FBXX-1280] Invalid pointer access
* [FBXX-1257] Invalid value for a malloc
* [FBXX-1143] Collada reader
* [FBXX-1140] Crash in FbxGeometryConverter::Triangulate with huge poly count (60 millions +)
2017.1.1
Fixed some global HDF5 symbols that were missed during the previous namespacing. These
symbols only caused an issue on Linux builds when an application links with both the
FBX SDK and its own version of Alembic/HDF5 libraries static libraries.
2017.1
* [FBXX-1225] Security Improvements.
* Alembic code has been fully namespaced to avoid duplicated function conflicts when applications
link the FBX SDK and other Alembic libraries.
2017.0.2
* [FBXX-1207] FBX SDK library for VS2015 builds with the Target Platform Version 10.0.10586.0
2017.0.1
* [FBXX-999] Added the new eRelativeRepetition flag to the animation curves extrapolation flags.
* [FBXX-1023] Refactored FbxUtils to minimize possible buffer under/overflows.
* [FBXX-1031] Added new roll bones to the FbxCharacter definition.
* [FBXX-1066] The SDK version is still reported as an "Alpha" release
* [FBXX-1019] Loading a .3ds file with a texture is very slow when using Python bindings
* [FBXX-1026] Crash when triangulating NURBS surfaces
* [FBXX-1051] In some cases shape normals are written beyond array boundaries
Removed deprecated functions
FbxObject::Is(const FbxClassId& pClassId)
FbxObject::DisconnectAllSrcObject(FbxClassId pClassId)
FbxObject::GetSrcObjectCount(FbxClassId pClassId)
FbxObject::GetSrcObject(FbxClassId pClassId, int pIndex=0)
FbxObject::FindSrcObject(FbxClassId pClassId, const char* pName, int pStartIndex=0)
FbxObject::DisconnectAllDstObject(FbxClassId pClassId)
FbxObject::GetDstObjectCount(FbxClassId pClassId)
FbxObject::GetDstObject(FbxClassId pClassId, int pIndex=0)
FbxObject::FindDstObject(FbxClassId pClassId, const char* pName,int pStartIndex=0)
FbxProperty::DisconnectAllSrcObject(const FbxClassId& pClassId)
FbxProperty::GetSrcObjectCount(const FbxClassId& pClassId)
FbxProperty::GetSrcObject(const FbxClassId& pClassId, const int pIndex=0)
FbxProperty::FindSrcObject(const FbxClassId& pClassId, const char* pName, const int pStartIndex=0)
FbxProperty::DisconnectAllDstObject(const FbxClassId& pClassId)
FbxProperty::GetDstObjectCount(const FbxClassId& pClassId)
FbxProperty::GetDstObject(const FbxClassId& pClassId, const int pIndex=0)
FbxProperty::FindDstObject(const FbxClassId& pClassId, const char* pName, const int pStartIndex=0)
2016.1.2
* [FBXX-1009] StringList default values not correctly initialized (regression in 2016.1).
Properties created with the FbxStringListDT data type were failing to initialize their default
value since the implementation of [FBXX-946]
2016.1.1
* Added the GetMatrix(FbxAMAtrix& pMatrix) function to the FbxAxisSystem class that retrieves
the axis definition in the 4x4 matrix form.
* [FBXX-997] FBX SDK Sample ExportScene05 uses a "reserved" (ABC) file extension.
the ABC extension being also used by the Alembic reader, the sample was selecting
the wrong reader when trying to load the custom file. Changed the extension of the
sample so no more conflict can occur. Note that the ABC extension can still be used
but a manual detection of the readerID, by calling FindReaderIDByDescription(),
is mandatory.
* [FBXX-988] Resolved use of arbitrary up vector on cameras driven by a target.
The FbxAnimEvalClassic::ComputeGlobalTransform() was implicitly assuming in its calculations,
when the pApplyTarget is true, that the global up vector of cameras constrained by an aim
target is always (0,1,0). This was a false assumption if a different FbxSystemAxis had been
applied to the scene and, at best, produced an arbitrary rotation of these cameras when the
aim vector was parallel to the (0,1,0) vector.
* [FBXX-986] Fixed potential security issue when reading certain legacy FBX files
2016.1
* [FBXX-967] Improved the LodGroup object to allow it to store thresholds
as percentage values or distance from camera.
* [FBXX-946] Properties with the FbxEnumDT data type now perform a strict
validation to forbid duplicates when items are added, inserted or replaced
in the enumeration list. The new eFbxEnumM type identifier is available for
users who want to create their own runtime enumeration data type that can
accept duplicated entries.
* [FBXX-963] In the Collada reader, replaced xmlParseFile() function call with
xmlReadFile() so we can set XML_PARSE_HUGE flag, which relaxes any hard-coded
limit from the parser. This affects limits like maximum depth of a document or
the entity recursion, as well as limits of the size of text nodes.
* [FBXX-952] Fixed an issue with the Animation Curve Pre/Post Extrapolation
data. In the very particular case of a program creating an animation curve
directly in memory that set the extrapolation flags and then tries to evaluate
the curve outside the animation range, the extrapolation flags were not
considered until the curve was saved to disk.
* [MAYA-54538] An overlooked condition from the fix above introduced a regression
in the FBX SDK 2016.1 alpha.
* [MAXX-23051] An update to the FbxAMatrix::GetROnly() caused a regression when
detecting the Euler gimbal locks while extracting the rotation vector value.
The default threshold value used for this detection can be to small for a
correct detection if the matrix is constructed with very low precision single
floating point values.
The FBX SDK now provides a method (FbxEuler::SetDegenerateThreshold()) to allow
the client application to change the threshold value at runtime.
2016.0
* Visual Studio 2008 builds are no longer supported. Visual Studio 2010,
2012 and 2013 are supported.
* Updated file format to 7.5 (compatible with 2016+ products) which now
uses 64bit integers in the binary block headers to allow for large file
support (>2GB). These new FBX files will NOT import in older products
(2015 or less), so make sure you set the right export format if you need
to target these older products.
* iPhone Simulator build is now a universal binary that contain both 32 and
64bit architectures.
* Starting in this release, the FBX SDK name space will no longer contain
version indications.
* Improved the camera manipulator speed when very close to camera interest
position.
* Added RemoveBadPolygonsFromMeshes to FbxGeometryConverter class to allow
clean-up whole scene (typically, this function must be called before
Triangulate or any other utility functions that are manipulating meshes).
* Default export file format is now 7.5 (compatible with 2016+ products).
* Removed deprecated functions
- FbxProperty::SetParent
- FbxProperty::SetArraySize
- FbxProperty::GetArraySize
- FbxProperty::GetArrayItem
- FbxProperty::operator[]
* If user code retrieves the transform values directly from the LclTranslation,
LclRotation and LclScaling properties, the fixes made to the ConvertPivotAnimation
may require to change how these property values are retrieved.
Now, when ConvertPivotAnimation is called, the computed value may be stored on
the CurveNode channel instead of overwriting the property value. To correctly retrieve
the computed values, we encourage using the function FbxProperty::EvaluateValue() with the
time argument value different than FBXSDK_TIME_INFINITE.
Alternatively, users can test for the presence of the CurveNode and retrieve the value
directly from this object:
ex: if (LclTranslation.GetCurveNode())
x = LclTranslation.GetCurveNode()->GetChannelValue(0L);
* Fixed a compilation error when attempting to use FbxAutoDeletePtr on Unix
based systems.
* Fixed an issue with bounding box calculations.
* Fixed FbxPathUtils::Exist that was failing on MacOS for Sandboxed
applications.
* Fixed an issue with ConvertPivotAnimation that wasn't properly
de-activating Rotation pivots/limits after conversion.
* Fixed FbxMesh::RemoveBadPolygons() so that polygons with less than three
vertices are properly considered invalid.
* Improved CloneManager to avoid duplicating already cloned objects.
* Fix rare crash in FbxScene::ForceKill caused by FbxCharacterPose.
* Fixed an issue with GenerateTangentsDataForAllUVSets that was processing
tangents for each polygon instead of each mesh when calling
FbxGeometryConverter::SplitMeshPerMaterial.
* Fixed an issue with ConvertPivotAnimation when processing multiple takes.
* Fixed a crash with ReadUserElementData that was referencing invalid
pointers.
* Fixed a BVH import rotation issue on joints related to constant key
reducer.
* Fixed circular dependency in fbxsdk_nsbegin.h.
* Fixed missing template instantiation for FbxSimpleMap and FbxObjectMap.
* FbxAMatrix only works with XYZ rotation order.
* Skew and Stretch matrices are not supported.
* The FBX SDK is *NOT* thread safe.
* Deformers do not support instancing. This causes point cache deforming to
not be re-usable.
* While assigned material can change on the node, material layers on the
mesh cannot be instanced.
* When exporting various file format, sometimes the scene gets modified
permanently, resulting in data loss.
2015.1
* Added support for Visual Studio 2013 compiler.
* iOS build changes: minimum iOS version is now 7.0 and now supports 3 main
architectures (armv7, armv7s and arm64).
* MacOS build changes: GCC build support dropped. MacOS minimum version is
now 10.8, and is built with XCode 5.0 default Clang compiler.
* Native Alembic support added: now .abc files can be directly opened,
which will create the appropriate nodes and mesh in the FBX scene.
Afterwards, users can access FbxCache data in order to read cache data.
NOTE: Alembic support is currently only enabled for desktop operating
systems (i.e. disabled on iOS/WinStore).
* FbxCache now has a newer function, Read, which works regardless of cache
type.
* Add .zip read support: files and their dependencies, such as textures,
can now be packaged into a .zip file, which can be directly read by the
FBX SDK without unpacking. This is useful for file formats that don't
support embedding textures. Only one scene per .zip file is supported.
* FbxObject now has a virtual function Compact that can be overloaded, to
implement object compacting. Calling Compact on FbxScene or FbxDocument
will compact every objects connected as source.
* FbxArray now provides a AddCompact and Compact function to reduce memory
used by arrays.
* Added operator equality and inequality to FbxPair.
* Added new class FbxSharedPtr.
* Improved the FbxCameraManipulator behavior:
- Upon Frame-All, camera rotation is preserved
- Upon Frame-All, take into account deformations on meshes
- Make minimum distance to LookAt more robust
- Improved minimum speed when camera is at minimum distance to LookAt
* Added a new FBX_TRACE macro for debugging.
* Added a new parameter to FbxCamera::ComputeProjectionMatrix to specify if
the FOV should be preserved even if the viewport height is larger than
the viewport width.
* FbxGeometryConverter function ResetMeshesCenterToWorld renamed to
RecenterSceneToWorldCenter because it doesn't change the vertices data.
* Recent endianness changes were reverted because they are not necessary.
* Fixed an issue with the matrix converter filter that wasn't resetting all
members properly.
* Made path utility functions more robust: files are no longer mistaken for
folders, and trying to write in read-only folders should not crash any
more.
* The geometry converter Triangulate and SplitMeshesPerMaterials now
properly handles blend shapes.
* Fixed an issue with left over shape data upon reading FBX files.
* Fixed a major corruption problem when trying to save files in iOS builds.
* FBXSDK_ENV_IOS should no longer be defined on MacOS builds.
* FbxThumbnails are now properly shared between document and importer's
scene info.
* Converting a scene's axis system with the FbxAxisSystem will now ignore
pre/post rotation and rotation order values on node if RotationActive
property is set to false.
* Cleaned-up many warnings when compiling using XCode 5.0.
* Fix a crash with layer element material cloning that was still pointing
to an not-cloned FbxSurfaceMaterial object.
* Fixed an issue with local time span not always written to FBX file.
* Now when using FbxGeometryConverter::SplitMeshesPerMaterial, all layer
elements will be copied to the new meshes instead of only the first one.
* Fixed a rare crash upon loading corrupted FBX files.
* Fixed multiple crashes upon loading Collada and OBJ files.
2015.0
* Added 4 new functions in FbxMatrix to generate LookTo and LookAt
matrices.
* Class FbxVertexCacheDeformer now has a type property to define the type
of data it uses in the cache file channel.
* Added a new generic read function to FbxCache, which returns an array of
float managed internally. This function now works regardless of the cache
file type.
* FbxArray now use reference to elements rather than copies for greater
memory performance.
* Added a new function overload FbxMatrix::GetElements which now can return
a rotation vector instead of a quaternion.
* Matrix converter curve filter now supports TRS limits.
* Cleaned and standardized comparison functors across the SDK.
* Added operator += and -= to FbxRedBlackTree. FbxMap use this model.
* Added new function FbxArray::RemoveRange that allows removing multiple
items.
* Renamed FbxSet to FbxMultiMap to clearly describe what it does.
* Renamed FbxSet2 to FbxSet, since this is the actual set class in FBX SDK.
* Polished the interface of FbxVertexCacheDeformer class to use the FBX SDK
standard property model.
* FbxArray will now use reference values for most of its functions.
* FbxPropertyAttr members have been merged into FbxPropertyFlags for
consistency.
* Fix a regression with edge smoothing.
* Fixed multiple memory alignment issues for iOS builds.
* FbxProperty map in evaluate state now properly use an FbxProperty
reference instead of a pointer.
* Fixed issue with the evaluation state not properly clearing itself when
the scene changes. This was causing memory corruption.
* Fixed a crash when freeing the FbxManager in some circumstances.
* Fixed a crash when importing some Collada files.
* Fixed a crash when trying to create a folder in read-only locations on
Linux/Mac.
* Fixed an issue with tangents smoothing not considering flip.
2014.2.1
* The change to have the animation evaluator per manager instead of per
scene has been reverted because it was causing a loss of functionality
for some applications.
* Now to retrieve the current animation stack, please use
FbxScene::GetCurrentAnimationStack instead of
FbxAnimEvaluator::GetContext.
* FbxProperty::GetCurveNode should once again return the right curve node.
This caused animation to be completely wrong in some cases.
* Fixed an issue with camera node's LclTranslation property being
incorrectly overwritten by the camera Position property.
2014.2
* Added new FBX SDK library targets: Windows Store, Mac Clang and iOS.
* Major improvement to animation evaluation functions:
- Now, the FbxAnimEvaluator instance is stored in the manager rather than
the scene.
- Add evaluation state to animation stacks to allow simultaneous
evaluation of takes.
- One evaluation state remains in the evaluator to be able to evaluate
scene-less objects.
- Remove the necessity to provide an index to evaluation functions of the
evaluator. All 'fast' versions of these functions are no longer
necessary so they have been removed.
- Added a new function in FbxProperty to evaluate their value.
- Greatly improve performance of FbxProperty::GetCurveNode by caching
results in a map inside evaluation state.
- Greatly reduce the size of a node and property evaluation states.
* Greatly reduced the amount of memory allocations/free that were caused by
FbxCriteria and FbxQuery. Should improve performance in most cases.
* Added new global function FbxTypeComponentCount to retrieve a type's
component count.
* Added new functions FbxMapDelete, FbxMapFree and FbxMapDestroy to ease
the process of deleting map content.
* New function in FbxTime to retrieve the time string, which allow to
specify which 'start' and 'end' element it can returns.
* Added a new property to the camera manipulator to allow inverting
controls.
* FbxGeometry::ComputeBBox will no longer compute or change the bounding
box value if the content is unloaded.
* FbxString is now using a char pointer allocation again rather than an
opaque std::string implementation, for easier debugging and better
performance/memory footprint. It is no longer necessary to modify the
autoexp.dat file of Visual Studio to see string content with debuggers.
* More work has been put in to make it possible to clone a character and
its dependencies. Please see fbxclonemanager.h comments for more info.
* FbxGeometryConverter::SplitMeshesPerMaterial now correctly handles
skinning on splitted meshes.
* Exposed bounding box calculation function scene and nodes. Please check
out FbxScene::ComputeBoundingBoxMinMaxCenter and
FbxNode::EvaluateGlobalBoundingBoxMinMaxCenter.
* Added new function in FbxGeometryConverter to re-center the scene meshes,
please check out FbxGeometryConverter::ResetMeshesCenterToWorld.
* Added new function in mesh to generate normals, working the same way
generating tangents, which replace the old function
FbxMesh::ComputeVertexNormals which only supported smooth normals. Please
see FbxMesh::GenerateNormals.
* Implemented FbxScene::Clone to properly duplicate scenes.
* Added two new functions to FbxTime: SetFramePrecise and
GetFrameCountPrecise, which use double values instead of longlong.
* Added FbxMod to fbxmath.h.
* Added a sample code to demonstrate FbxStream class usage.
* FbxString no longer use std::string implementation.
* FBXSDK_sprintf, FBXSDK_snprintf, FBXSDK_vsprintf and FBXSDK_vsnprintf now
always take a single size parameter instead of being variant on different
platforms.
* Removed thumbnails in animation stack. Now only one thumbnail can be
saved per FBX file, found in the FbxSceneInfo class.
* Removed GetCurveNode in FbxProperty that used an animation stack name for
performance reasons.
* Changed ConvertPivot functions in FbxNode to use an animation stack
pointer instead of animation stack for performance reasons.
* Renamed class FbxPropertyFlagsExt to FbxPropertyFlags.
* Moved class FbxPropertyValue to a more global locations because it is now
also used by evaluation state.
* When using the camera manipulator, and the camera got flipped vertically,
the horizontal orbit was inversed. This has been fixed.
* Fixed an issue with matrix conversion to euler angles; degenerate case
(gimbal lock) detection was too sensitive.
* ContentUnload will now properly unload layers on geometry.
* When performing a 'frame-all' using the camera manipulator, if the mesh
content is unloaded, it will use the pre-computed bounding box, if it
exist, otherwise it will skip it.
* When performing a 'frame-all' using the camera manipulator, the camera
will now correctly center itself on the global bounding box center rather
than its centroid.
* Fixed many compilation warnings with clang compiler on Mac.
* Fixed camera orthogonal projection matrix generation issue.
* When manipulating camera, it shall no longer go through the interest
position.
* Fixed crash when writing encrypted FBX file.
* Fixed crash when opening OBJ files.
* Fixed typo with return value of FbxExporter::GetCurrentWritableVersions.
* FbxCameraManipulator Frame-All now works on orthographic cameras.
* Fixed edge detection to be more accurate. Previous code only stored one
edge from a single point. Now save all edges from one point and detect
duplicated edges in all situation.
* Fixed various warnings in macros generated when compiling with C++11.
* Fixed an issue when reading textures for OBJ files.
* Fixed an issue when reading material transparent properties in MTL files.
* Fix rare crash when reading 3DS files.
* Fixed rare memory leaks in specific situations.
* Fixed reversed normals when reading DXF files.
* Fixed a crash when writing collada files containing shapes.
* Fix function to generate tangents/binormals incorrectly sets W component
to greater values than -1 or 1.
* Cameras with a target up node or a look at node will now be able to be
moved around properly using the camera manipulator.
2014.1
* Introduced FBXSDK_ENV_WINRT preprocessor define (previously known as
FBXSDK_ENV_WINMETRO) which disable unsupported functions when targeting
Microsoft Windows Store applications. This define will automatically be
defined if you set Windows Store App Support to Yes in your Visual Studio
project settings.
* A number of changes to the architecture defines in fbxarch.h were changed
to add support for ARM processor:
Added FBXSDK_ARCH_IX86, only defined on Intel x86 targets.
Added FBXSDK_ARCH_AMD64, only defined on AMD64 targets.
Added FBXSDK_ARCH_ARM, only defined on ARM targets.
Renamed FBXSDK_ARCH_32 to FBXSDK_CPU_32, only defined for 32bit targets.
Renamed FBXSDK_ARCH_64 to FBXSDK_CPU_64, only defined for 64bit targets.
Also, please see deprecated details below.
* Added version information to the FBX SDK dll on Windows platform.
* Updated ViewScene sample to show how to support in-between blendshape
(progressive morph).
* Added support for the new Maya 2014 Cache files (*.mcx).
* Improved the tangents/binormals calculation functions to properly handle
mirrored faces by flipping the binormal when the face is inverted. It
also sets the fourth component of the tangent to -1 if it is flipped, 1
otherwise.
* FbxReference is now defined as FbxObject* rather than void*. This will
allow properties of FbxReference type to correctly respond to FbxCast and
other FBX SDK API, as well as restraining the assignment to FbxObject*
types.
* Improved the FbxCameraManipulator by adding a new action type: eFreePan.
It combines dollying and panning into a single action. For example, this
is very useful for manipulating the camera using a touch screen.
* Added a new object flag: FbxObject::eInitialized. This flag is
automatically set on all object after they are done with the Construct
stage. This is also used to prevent PropertyNotify to be called during
ConstructProperties stage.
* Now the class FbxCameraManipulator does not use an hidden class
internally anymore, and use the PropertyNotify event to re-initialize
when changing its affected camera.
* Added a new IOSetting flag (IMP_FBX_EXTRACT_EMBEDDED_DATA) to completely
disable embedded files extraction, which is set to true by default.
* Added a new function (FbxObject::ResetProperties) to reset all properties
to their default value.
* The parameter pForceSet of function StaticInit on FbxProperty is not
optional anymore. When calling it in ConstructProperties, the value of
pForceSet must be correctly passed to StaticInit for all properties to
ensure properties are not initialized more than once.
* Added new function FbxGeometryConverter::Triangulate which now replace
the old TriangulateMesh, TriangulateMeshAdvanced and TriangulateInPlace.
The new function can either take a node attribute, or a scene in
parameter. It can also replace original nodes with new ones and make sure
the scene stays clean.
* Added new function FbxGeometryConverter::SplitMeshesPerMaterial which can
take a scene in parameter, and can replace original meshes and make sure
the scene stays clean.
* Added a new constructor to FbxArray class, which takes an integer in
parameter to reserve the memory for that specific size.
* Added a new parameter to FbxMesh::GetPolygonVertexUV to allow it to return
an array of unmapped polygons. This is extremely useful to determine which
vertex has no UV associated.
* Removed the version number in library names on disk for all platforms.
Also, debug and release versions are now named the same, but in different
subfolders.
* FBXSDK_ARCH_32 and FBXSDK_ARCH_64 got renamed to FBXSDK_CPU_32 and
FBXSDK_CPU_64 respectively to dissociate them from the architecture.
* Cannot set void* types to FbxReference properties anymore to improve
robustness.
* Changed the signature of FbxObject::PropertyNotify to pass a reference to
the property instead of a pointer.
* Old triangulation functions are now deprecated. Please use
FbxGeometryConverter::Triangulate instead.
* Improve manipulation of free cameras by preventing nasty flips when view
axis reaches vertical.
* A regression with ConvertPivotAnimationRecursive that was introduced in
FBX 2013.3 has been fixed. It was causing some scenes to become resampled
and key-reduced wrongly.
* When including fbxsdk.h in your project, the define WIN32_LEAN_AND_MEAN
will not be automatically defined anymore.
* Fixed an issue with FbxPathUtils::GetRelativePath that wasn't working
properly with localized paths.
* Fixed a crash when exporting to 2010/2011 compatible files (FBX 6.1/7.1).
* Fixed a performance issue with Quaternion FCurve evaluation.
* All properties of FbxReference type now use the Source connection. Only a
handful of them weren't complying, in various FbxConstraint classes. In
FBX 2014 (7.4) or lower files, this will not change anything, but in
memory these objects are now always connected to the source of the
property.
* Blend Shape animation was missing when a take other than first is
imported, this has been corrected.
* FbxObject::PropertyNotify callback will not be called anymore during
ConstructProperties object creation stage.
* FbxPropertyT<FbxReference> now correctly receive the PropertyNotify event.
* Fixed an issue with FbxTime::SetTimeString when passing spaces between
elements.
* Fixed an issue with the FbxCamera Position property synchronization with
its node's local translation.
* Fixed FbxMarker class to not return property pointers.
* For all FbxMesh::GenerateTangentsData function: When the tangents data
already exist on the mesh, and that pOverwrite is set to false, the
function will now return true so that it is not considered as an error.
* Added a notification in the doxygen documentation of FbxStream that it
does not support other formats than FBX.
* Fixed a crash in FbxCache evaluation under Linux/Mac platforms.
* Fixed a rotation order issue with ASF motion files.
* Fixed a candidate value initialization with ASF motion files.
* Fixed a crash on Mac/Linux version in FbxPathUtils::Create.
* Made FbxGeoemetryConverter::SplitMeshPerMaterial much more robust; now
meshes that have material indexes that points to invalid materials will
not be assigned any materials, and they will be regrouped together.
* Fixed a crash when exporting blend shapes to an old FBX 6.x file format.
* Fixed an issue with tangents/binormals generation when some vertices
didn't have an UV mapped.
2014.0
* Visual Studio 2012 is now officially supported.
* FbxCamera::EvaluateUpDirection now support the Roll property.
* Added FBX 2014 file version, and his now the default target.
* The 4th vector element of normals, binormals and tangents are now
properly exported to FBX files in FBX 2014 file format.
* A new status reporting class has been introduced to replace the old
FbxError class. Please refer to the FbxStatus class. More usage of this
new class will be added over time.
* Added new functions for the default IK Pull value on markers.
* A default IK Pull value is now stored on markers.
* TimeMarkers functionality has been re-introduced in FBX 2014 file format.
The API to access them has been placed in FbxGlobalSettings class.
* Updated Python 3.1 support to Python 3.2 in the FBX Python SDK.
* MotionFiles readers/writers are now registered in the public FBX SDK.
This means the FBX SDK can now import and export the following motion
file formats: Biovision (BVH), MotionAnalysis (HTR/TRC), Acclaim (ASF/AMC),
Vicon (C3D), Adaptive Optics (AOA) and Superfluo (MCD).
* The FBX SDK libraries on Mac and Linux are now compiled with default
visibility set to hidden. Only symbols marked with FBXSDK_DLL are exported,
which makes it equal to the Windows version.
* FbxProperty flags have been clean-up. The flag ePublished as been renamed
to eAnimated, and eUser to eUserDefined, for clarity. The flag eStatic
now works, and will be turned on for all static properties by default.
Introduced the flag eImported, for properties that are created upon
import.
* New environment define FBXSDK_ENV_WINRT for Windows Metro support. Also
added FBXSDK_ARCH_ARM for ARM processor support, under work.
* FbxFolder has been re-worked. FbxFolder::Create, FbxFolder::Delete and
FbxFolder::Exist has been moved in FbxPathUtils, and now work pass the
Microsoft Certification Validation Kit for Windows Store applications.
Other functions of FbxFolder have been renamed for consistency. Please
see fbxfolder.h.
* New function FbxPathUtils::Exist now works on relative paths.
* New function FbxPathUtils::Create can take multiple paths as argument,
and they will all be created (if possible), just like mkdir on Unix.
* Improved FbxMesh::GetPolygonVertexCount to simply return the array size.
* Updated FbxProgress class to be simpler, and allow an additional argument
to be passed to the single-thread callback.
* The file fbxsdk_compatibility.h has been removed from the FBX SDK
distribution, so now it is required to use the latest API. Defining
FBXSDK_NEW_API is not necessary anymore and should be removed from your
projects.
* The support for Visual Studio 2005 has been discontinued.
* The support for MacOS/X SDK 10.5 has been discontinued. The minimum
requirement is now MacOS/X SDK 10.6.
* FbxString::Empty was renamed for FbxString::Clear to avoid confusion with
FbxString::IsEmpty.
* FbxError has been removed from all classes. Instead, functions that needs
to return an error string now use an optional parameter of type FbxStatus
similar to the MStatus in Maya API.
* FbxFolder::Create has been removed, please use FbxPathUtils::Create
instead.
* FbxFolder::Delete has been removed, please use FbxPathUtils::Delete
instead.
* FbxFolder::Exist has been removed, please use FbxPathUtils::Exist instead.
* FbxFolder::Remove has been removed from the FBX SDK API. Please now use
FbxPathUtils::Delete, which is now always recursive.
* Fixed a small issue with FbxCamera::EvaluateUpDirection that was
incorrectly using the TargetUp object.
* Updated various doxygen comments for clarity.
* Fixed a buffer overrun crash issue when importing specific 3DS files.
* Fixed a crash issue when trying to destroy the FbxManager at application
exit.
* Some samples were erroneously calling FbxString::Empty instead of
FbxString::IsEmpty.
* Fixed a buffer overflow in FbxStream::ReadString.
* Importing an OBJ file will not un-weld UV anymore.
* Fixed curve key comment in ASCII version; the code was not distinguishing
between the GenericTimeIndependent only and GenericClampProgressive.
* Improved the TranslationActive, RotationActive and ScalingActive
properties doxygen documentation.
* Fixed a crash when exporting to Collada when the scene was containing
other kinds of deformers than skins.
* The default value of FbxMarker::DrawLink is now set to true.
* Fixed a small issue with FbxCamera::EvaluateLookAtPosition that wasn't
returning the expected value.
* Fixed an issue when writing Collada files that was resulting in the
Effect field being written for each polygon, wrongly increasing the file
size.
* Various functions, such as FbxMin, that were returning a const reference
type value were fixed to return a copy of the value instead.
* Various function parameters that were asking for const reference intrinsic
type were changed to ask a copy of the intrinsic type (which is faster
than a const reference in this case).
* Fixed a small typo error in the Transform sample code.
* Small optimization on connection management for large scenes.
* Fixed a crash when calling FbxScene::ForceKill on a scene imported which
contained thumbnails.
* Made fbxiosettingspath.h header file compatible with C++x11 standard.
2013.3
* The class FbxCameraManipulator has been improved so that the FrameAll and
FrameSelected functions now take deformations into account, and also
properly adjust the camera distance for a better framing.
* Removed the FbxNode_internal class. Now all attributes of FbxNode are
visible within the FbxNode class declaration itself. This caused some
changes to the Pivot informations.
* Now the FbxCache using IFF component can scale to 64bit, allowing for
much larger cache files to be used.
* The dynamic library version of the FBX SDK library on the Windows
platform now use the static MSVCRT (/mt) rather than the dynamic MSVCRT
(/MD). This allows to distribute applications using the FBX SDK dll
without having to install the Microsoft Visual Studio Redist.
* From now on, all classes that previously overloaded Clone will now only
clone itself, and not its sources. For instance, cloning an FbxNode will
NOT clone its FbxNodeAttribute anymore. Instead, to reproduce this
behavior, one must use the FbxCloneManager which handles cloning object
networks. This now holds true for most objects of the FBX SDK. However,
objects such as meshes with their skins and clusters remain considered as
one entity.
* The class FbxScene now overload the Clone function, and uses the
FbxCloneManager to successfully clone the entire scene network.
* The FBX SDK now use default memory allocation functions when they are
called without being initialized. This only happens when static variables
are initialized before main. If you need to change the FBX SDK memory
allocation functions, make sure you are not using static FBX SDK objects
that could potentially be initialized before your main call.
* Added new functions to retrieve the memory allocation function currently
set, as well as the default ones. Please see fbxalloc.h file.
* Added support for 'locked' flags on properties. This won't prevent FBX
SDK users from changing property values, but it will allow applications
to store/retrieve the flags across. Since properties can have up to 4
members, we're using 4 bits to differenciate them.
* Fixed an issue when importing files with bump textures using foreign
languages.
* Added a bit more details to the installers detail pane on Windows.
* Fixed a crash with the Geometry Converter; duplicated edges are now
correctly detected.
* Fixed a minor issue in the ViewScene sample, concerning holes in the
mSubMeshes table.
* A lot of classes using direct pointers to objects have been corrected to
use reference properties, which makes the SDK more robust.
* Properties that have the NotSavable flag now do not write their
connections, thus making FBX files smaller.
* The ShadingModel property on FbxSurfaceMaterial inherited classes will
only be overwritten for unknown types.