diff --git a/src/MagnumPlugins/AnySceneImporter/AnySceneImporter.cpp b/src/MagnumPlugins/AnySceneImporter/AnySceneImporter.cpp index 301cc8f34..f213671ce 100644 --- a/src/MagnumPlugins/AnySceneImporter/AnySceneImporter.cpp +++ b/src/MagnumPlugins/AnySceneImporter/AnySceneImporter.cpp @@ -185,6 +185,18 @@ Int AnySceneImporter::doAnimationForName(const Containers::StringView name) { re Containers::String AnySceneImporter::doAnimationName(const UnsignedInt id) { return _in->animationName(id); } Containers::Optional AnySceneImporter::doAnimation(const UnsignedInt id) { return _in->animation(id); } +AnimationTrackTarget AnySceneImporter::doAnimationTrackTargetForName(const Containers::StringView name) { + /* This API can be called even if no file is opened, in that case return + an invalid ID */ + return _in ? _in->animationTrackTargetForName(name) : AnimationTrackTarget{}; + +} +Containers::String AnySceneImporter::doAnimationTrackTargetName(const AnimationTrackTarget name) { + /* This API can be called even if no file is opened, in that case return + an empty name */ + return _in ? _in->animationTrackTargetName(name) : Containers::String{}; +} + Int AnySceneImporter::doDefaultScene() const { return _in->defaultScene(); } UnsignedInt AnySceneImporter::doSceneCount() const { return _in->sceneCount(); } diff --git a/src/MagnumPlugins/AnySceneImporter/AnySceneImporter.h b/src/MagnumPlugins/AnySceneImporter/AnySceneImporter.h index ef81c14e6..5c22d8b05 100644 --- a/src/MagnumPlugins/AnySceneImporter/AnySceneImporter.h +++ b/src/MagnumPlugins/AnySceneImporter/AnySceneImporter.h @@ -183,6 +183,8 @@ class MAGNUM_ANYSCENEIMPORTER_EXPORT AnySceneImporter: public AbstractImporter { MAGNUM_ANYSCENEIMPORTER_LOCAL Containers::String doAnimationName(UnsignedInt id) override; MAGNUM_ANYSCENEIMPORTER_LOCAL Int doAnimationForName(Containers::StringView name) override; MAGNUM_ANYSCENEIMPORTER_LOCAL Containers::Optional doAnimation(UnsignedInt id) override; + MAGNUM_ANYSCENEIMPORTER_LOCAL AnimationTrackTarget doAnimationTrackTargetForName(Containers::StringView name) override; + MAGNUM_ANYSCENEIMPORTER_LOCAL Containers::String doAnimationTrackTargetName(AnimationTrackTarget name) override; MAGNUM_ANYSCENEIMPORTER_LOCAL Int doDefaultScene() const override; diff --git a/src/MagnumPlugins/AnySceneImporter/Test/AnySceneImporterTest.cpp b/src/MagnumPlugins/AnySceneImporter/Test/AnySceneImporterTest.cpp index 2eec969d3..7d734a7f3 100644 --- a/src/MagnumPlugins/AnySceneImporter/Test/AnySceneImporterTest.cpp +++ b/src/MagnumPlugins/AnySceneImporter/Test/AnySceneImporterTest.cpp @@ -37,6 +37,7 @@ #include "Magnum/Math/Vector3.h" #include "Magnum/Trade/AbstractImporter.h" +#include "Magnum/Trade/AnimationData.h" #include "Magnum/Trade/MeshData.h" #include "Magnum/Trade/SceneData.h" @@ -67,6 +68,8 @@ struct AnySceneImporterTest: TestSuite::Tester { void propagateConfigurationUnknownInEmptySubgroup(); void propagateFileCallback(); + void animationTrackTargetName(); + void animationTrackTargetNameNoFileOpened(); void sceneFieldName(); void sceneFieldNameNoFileOpened(); void meshAttributeName(); @@ -132,6 +135,8 @@ AnySceneImporterTest::AnySceneImporterTest() { addTests({&AnySceneImporterTest::propagateConfigurationUnknownInEmptySubgroup, &AnySceneImporterTest::propagateFileCallback, + &AnySceneImporterTest::animationTrackTargetName, + &AnySceneImporterTest::animationTrackTargetNameNoFileOpened, &AnySceneImporterTest::sceneFieldName, &AnySceneImporterTest::sceneFieldNameNoFileOpened, &AnySceneImporterTest::meshAttributeName, @@ -369,6 +374,34 @@ void AnySceneImporterTest::propagateFileCallback() { CORRADE_VERIFY(!importer->isOpened()); } +void AnySceneImporterTest::animationTrackTargetName() { + PluginManager::Manager manager{MAGNUM_PLUGINS_IMPORTER_INSTALL_DIR}; + #ifdef ANYSCENEIMPORTER_PLUGIN_FILENAME + CORRADE_VERIFY(manager.load(ANYSCENEIMPORTER_PLUGIN_FILENAME) & PluginManager::LoadState::Loaded); + #endif + + if(manager.load("UfbxImporter") < PluginManager::LoadState::Loaded) + CORRADE_SKIP("UfbxImporter plugin can't be loaded."); + + /* Make sure UfbxImporter is preferred over Assimp */ + manager.setPreferredPlugins("FbxImporter", {"UfbxImporter"}); + + Containers::Pointer importer = manager.instantiate("AnySceneImporter"); + + CORRADE_VERIFY(importer->openFile(Utility::Path::join(ANYSCENEIMPORTER_TEST_DIR, "animation-visibility.fbx"))); + CORRADE_COMPARE(importer->animationTrackTargetForName("visibility"), animationTrackTargetCustom(0)); + CORRADE_COMPARE(importer->animationTrackTargetForName("nonexistent"), AnimationTrackTarget{}); + CORRADE_COMPARE(importer->animationTrackTargetName(animationTrackTargetCustom(0)), "visibility"); + CORRADE_COMPARE(importer->animationTrackTargetName(animationTrackTargetCustom(3)), ""); +} + +void AnySceneImporterTest::animationTrackTargetNameNoFileOpened() { + Containers::Pointer importer = _manager.instantiate("AnySceneImporter"); + + CORRADE_COMPARE(importer->animationTrackTargetForName(""), AnimationTrackTarget{}); + CORRADE_COMPARE(importer->animationTrackTargetName(animationTrackTargetCustom(0)), ""); +} + void AnySceneImporterTest::sceneFieldName() { PluginManager::Manager manager{MAGNUM_PLUGINS_IMPORTER_INSTALL_DIR}; #ifdef ANYSCENEIMPORTER_PLUGIN_FILENAME diff --git a/src/MagnumPlugins/AnySceneImporter/Test/CMakeLists.txt b/src/MagnumPlugins/AnySceneImporter/Test/CMakeLists.txt index 6db15a903..24ebaefc7 100644 --- a/src/MagnumPlugins/AnySceneImporter/Test/CMakeLists.txt +++ b/src/MagnumPlugins/AnySceneImporter/Test/CMakeLists.txt @@ -52,6 +52,7 @@ corrade_add_test(AnySceneImporterTest AnySceneImporterTest.cpp LIBRARIES MagnumTrade FILES ${PROJECT_SOURCE_DIR}/src/MagnumPlugins/ObjImporter/Test/mesh-primitive-points.obj + animation-visibility.fbx empty.gltf mesh-custom-attribute.gltf scene-custom-field.gltf diff --git a/src/MagnumPlugins/AnySceneImporter/Test/animation-visibility.fbx b/src/MagnumPlugins/AnySceneImporter/Test/animation-visibility.fbx new file mode 100644 index 000000000..a459de8b0 --- /dev/null +++ b/src/MagnumPlugins/AnySceneImporter/Test/animation-visibility.fbx @@ -0,0 +1,864 @@ +; FBX 7.7.0 project file +; ---------------------------------------------------- + +FBXHeaderExtension: { + FBXHeaderVersion: 1004 + FBXVersion: 7700 + CreationTimeStamp: { + Version: 1000 + Year: 2023 + Month: 2 + Day: 12 + Hour: 1 + Minute: 27 + Second: 21 + Millisecond: 573 + } + Creator: "FBX SDK/FBX Plugins version 2020.3" + OtherFlags: { + TCDefinition: 127 + } + SceneInfo: "SceneInfo::GlobalInfo", "UserData" { + Type: "UserData" + Version: 100 + MetaData: { + Version: 100 + Title: "" + Subject: "" + Author: "" + Keywords: "" + Revision: "" + Comment: "" + } + Properties70: { + P: "DocumentUrl", "KString", "Url", "", "D:\Dev\wonder\bootstrap\magnum-plugins\src\MagnumPlugins\UfbxImporter\Test\animation-visibility.fbx" + P: "SrcDocumentUrl", "KString", "Url", "", "D:\Dev\wonder\bootstrap\magnum-plugins\src\MagnumPlugins\UfbxImporter\Test\animation-visibility.fbx" + P: "Original", "Compound", "", "" + P: "Original|ApplicationVendor", "KString", "", "", "Autodesk" + P: "Original|ApplicationName", "KString", "", "", "Maya" + P: "Original|ApplicationVersion", "KString", "", "", "2023" + P: "Original|DateTime_GMT", "DateTime", "", "", "11/02/2023 23:27:21.571" + P: "Original|FileName", "KString", "", "", "D:\Dev\wonder\bootstrap\magnum-plugins\src\MagnumPlugins\UfbxImporter\Test\animation-visibility.fbx" + P: "LastSaved", "Compound", "", "" + P: "LastSaved|ApplicationVendor", "KString", "", "", "Autodesk" + P: "LastSaved|ApplicationName", "KString", "", "", "Maya" + P: "LastSaved|ApplicationVersion", "KString", "", "", "2023" + P: "LastSaved|DateTime_GMT", "DateTime", "", "", "11/02/2023 23:27:21.571" + P: "Original|ApplicationActiveProject", "KString", "", "", "D:\Dev\wonder\bootstrap\magnum-plugins\src\MagnumPlugins\UfbxImporter\Test" + } + } +} +GlobalSettings: { + Version: 1000 + Properties70: { + P: "UpAxis", "int", "Integer", "",1 + P: "UpAxisSign", "int", "Integer", "",1 + P: "FrontAxis", "int", "Integer", "",2 + P: "FrontAxisSign", "int", "Integer", "",1 + P: "CoordAxis", "int", "Integer", "",0 + P: "CoordAxisSign", "int", "Integer", "",1 + P: "OriginalUpAxis", "int", "Integer", "",1 + P: "OriginalUpAxisSign", "int", "Integer", "",1 + P: "UnitScaleFactor", "double", "Number", "",1 + P: "OriginalUnitScaleFactor", "double", "Number", "",1 + P: "AmbientColor", "ColorRGB", "Color", "",0,0,0 + P: "DefaultCamera", "KString", "", "", "Producer Perspective" + P: "TimeMode", "enum", "", "",11 + P: "TimeProtocol", "enum", "", "",2 + P: "SnapOnFrameMode", "enum", "", "",0 + P: "TimeSpanStart", "KTime", "Time", "",0 + P: "TimeSpanStop", "KTime", "Time", "",192442325000 + P: "CustomFrameRate", "double", "Number", "",-1 + P: "TimeMarker", "Compound", "", "" + P: "CurrentTimeMarker", "int", "Integer", "",-1 + } +} + +; Documents Description +;------------------------------------------------------------------ + +Documents: { + Count: 1 + Document: 1296161361616, "", "Scene" { + Properties70: { + P: "SourceObject", "object", "", "" + P: "ActiveAnimStackName", "KString", "", "", "Take 001" + } + RootNode: 0 + } +} + +; Document References +;------------------------------------------------------------------ + +References: { +} + +; Object definitions +;------------------------------------------------------------------ + +Definitions: { + Version: 100 + Count: 24 + ObjectType: "GlobalSettings" { + Count: 1 + } + ObjectType: "AnimationStack" { + Count: 1 + PropertyTemplate: "FbxAnimStack" { + Properties70: { + P: "Description", "KString", "", "", "" + P: "LocalStart", "KTime", "Time", "",0 + P: "LocalStop", "KTime", "Time", "",0 + P: "ReferenceStart", "KTime", "Time", "",0 + P: "ReferenceStop", "KTime", "Time", "",0 + } + } + } + ObjectType: "AnimationLayer" { + Count: 1 + PropertyTemplate: "FbxAnimLayer" { + Properties70: { + P: "Weight", "Number", "", "A",100 + P: "Mute", "bool", "", "",0 + P: "Solo", "bool", "", "",0 + P: "Lock", "bool", "", "",0 + P: "Color", "ColorRGB", "Color", "",0.8,0.8,0.8 + P: "BlendMode", "enum", "", "",0 + P: "RotationAccumulationMode", "enum", "", "",0 + P: "ScaleAccumulationMode", "enum", "", "",0 + P: "BlendModeBypass", "ULongLong", "", "",0 + } + } + } + ObjectType: "Geometry" { + Count: 2 + PropertyTemplate: "FbxMesh" { + Properties70: { + P: "Color", "ColorRGB", "Color", "",0.8,0.8,0.8 + P: "BBoxMin", "Vector3D", "Vector", "",0,0,0 + P: "BBoxMax", "Vector3D", "Vector", "",0,0,0 + P: "Primary Visibility", "bool", "", "",1 + P: "Casts Shadows", "bool", "", "",1 + P: "Receive Shadows", "bool", "", "",1 + } + } + } + ObjectType: "Material" { + Count: 1 + PropertyTemplate: "FbxSurfaceLambert" { + Properties70: { + P: "ShadingModel", "KString", "", "", "Lambert" + P: "MultiLayer", "bool", "", "",0 + P: "EmissiveColor", "Color", "", "A",0,0,0 + P: "EmissiveFactor", "Number", "", "A",1 + P: "AmbientColor", "Color", "", "A",0.2,0.2,0.2 + P: "AmbientFactor", "Number", "", "A",1 + P: "DiffuseColor", "Color", "", "A",0.8,0.8,0.8 + P: "DiffuseFactor", "Number", "", "A",1 + P: "Bump", "Vector3D", "Vector", "",0,0,0 + P: "NormalMap", "Vector3D", "Vector", "",0,0,0 + P: "BumpFactor", "double", "Number", "",1 + P: "TransparentColor", "Color", "", "A",0,0,0 + P: "TransparencyFactor", "Number", "", "A",0 + P: "DisplacementColor", "ColorRGB", "Color", "",0,0,0 + P: "DisplacementFactor", "double", "Number", "",1 + P: "VectorDisplacementColor", "ColorRGB", "Color", "",0,0,0 + P: "VectorDisplacementFactor", "double", "Number", "",1 + } + } + } + ObjectType: "Model" { + Count: 2 + PropertyTemplate: "FbxNode" { + Properties70: { + P: "QuaternionInterpolate", "enum", "", "",0 + P: "RotationOffset", "Vector3D", "Vector", "",0,0,0 + P: "RotationPivot", "Vector3D", "Vector", "",0,0,0 + P: "ScalingOffset", "Vector3D", "Vector", "",0,0,0 + P: "ScalingPivot", "Vector3D", "Vector", "",0,0,0 + P: "TranslationActive", "bool", "", "",0 + P: "TranslationMin", "Vector3D", "Vector", "",0,0,0 + P: "TranslationMax", "Vector3D", "Vector", "",0,0,0 + P: "TranslationMinX", "bool", "", "",0 + P: "TranslationMinY", "bool", "", "",0 + P: "TranslationMinZ", "bool", "", "",0 + P: "TranslationMaxX", "bool", "", "",0 + P: "TranslationMaxY", "bool", "", "",0 + P: "TranslationMaxZ", "bool", "", "",0 + P: "RotationOrder", "enum", "", "",0 + P: "RotationSpaceForLimitOnly", "bool", "", "",0 + P: "RotationStiffnessX", "double", "Number", "",0 + P: "RotationStiffnessY", "double", "Number", "",0 + P: "RotationStiffnessZ", "double", "Number", "",0 + P: "AxisLen", "double", "Number", "",10 + P: "PreRotation", "Vector3D", "Vector", "",0,0,0 + P: "PostRotation", "Vector3D", "Vector", "",0,0,0 + P: "RotationActive", "bool", "", "",0 + P: "RotationMin", "Vector3D", "Vector", "",0,0,0 + P: "RotationMax", "Vector3D", "Vector", "",0,0,0 + P: "RotationMinX", "bool", "", "",0 + P: "RotationMinY", "bool", "", "",0 + P: "RotationMinZ", "bool", "", "",0 + P: "RotationMaxX", "bool", "", "",0 + P: "RotationMaxY", "bool", "", "",0 + P: "RotationMaxZ", "bool", "", "",0 + P: "InheritType", "enum", "", "",0 + P: "ScalingActive", "bool", "", "",0 + P: "ScalingMin", "Vector3D", "Vector", "",0,0,0 + P: "ScalingMax", "Vector3D", "Vector", "",1,1,1 + P: "ScalingMinX", "bool", "", "",0 + P: "ScalingMinY", "bool", "", "",0 + P: "ScalingMinZ", "bool", "", "",0 + P: "ScalingMaxX", "bool", "", "",0 + P: "ScalingMaxY", "bool", "", "",0 + P: "ScalingMaxZ", "bool", "", "",0 + P: "GeometricTranslation", "Vector3D", "Vector", "",0,0,0 + P: "GeometricRotation", "Vector3D", "Vector", "",0,0,0 + P: "GeometricScaling", "Vector3D", "Vector", "",1,1,1 + P: "MinDampRangeX", "double", "Number", "",0 + P: "MinDampRangeY", "double", "Number", "",0 + P: "MinDampRangeZ", "double", "Number", "",0 + P: "MaxDampRangeX", "double", "Number", "",0 + P: "MaxDampRangeY", "double", "Number", "",0 + P: "MaxDampRangeZ", "double", "Number", "",0 + P: "MinDampStrengthX", "double", "Number", "",0 + P: "MinDampStrengthY", "double", "Number", "",0 + P: "MinDampStrengthZ", "double", "Number", "",0 + P: "MaxDampStrengthX", "double", "Number", "",0 + P: "MaxDampStrengthY", "double", "Number", "",0 + P: "MaxDampStrengthZ", "double", "Number", "",0 + P: "PreferedAngleX", "double", "Number", "",0 + P: "PreferedAngleY", "double", "Number", "",0 + P: "PreferedAngleZ", "double", "Number", "",0 + P: "LookAtProperty", "object", "", "" + P: "UpVectorProperty", "object", "", "" + P: "Show", "bool", "", "",1 + P: "NegativePercentShapeSupport", "bool", "", "",1 + P: "DefaultAttributeIndex", "int", "Integer", "",-1 + P: "Freeze", "bool", "", "",0 + P: "LODBox", "bool", "", "",0 + P: "Lcl Translation", "Lcl Translation", "", "A",0,0,0 + P: "Lcl Rotation", "Lcl Rotation", "", "A",0,0,0 + P: "Lcl Scaling", "Lcl Scaling", "", "A",1,1,1 + P: "Visibility", "Visibility", "", "A",1 + P: "Visibility Inheritance", "Visibility Inheritance", "", "",1 + } + } + } + ObjectType: "AnimationCurveNode" { + Count: 5 + PropertyTemplate: "FbxAnimCurveNode" { + Properties70: { + P: "d", "Compound", "", "" + } + } + } + ObjectType: "AnimationCurve" { + Count: 11 + } +} + +; Object properties +;------------------------------------------------------------------ + +Objects: { + Geometry: 1296155868688, "Geometry::", "Mesh" { + Vertices: *24 { + a: -0.5,-0.5,0.5,0.5,-0.5,0.5,-0.5,0.5,0.5,0.5,0.5,0.5,-0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,-0.5,-0.5,0.5,-0.5,-0.5 + } + PolygonVertexIndex: *24 { + a: 0,1,3,-3,2,3,5,-5,4,5,7,-7,6,7,1,-1,1,7,5,-4,6,0,2,-5 + } + Edges: *12 { + a: 0,2,6,10,3,1,7,5,11,9,15,13 + } + GeometryVersion: 124 + LayerElementNormal: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Normals: *72 { + a: 0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0 + } + NormalsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementBinormal: 0 { + Version: 102 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Binormals: *72 { + a: 0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,-0,1,0,-0,1,0,0,1,-0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0 + } + BinormalsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + + } + LayerElementTangent: 0 { + Version: 102 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Tangents: *72 { + a: 1,-0,-0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,0,0,-1,0,0,-1,0,-0,-1,0,0,-1,0,-0,1,0,-0,1,0,-0,1,0,-0,1 + } + TangentsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementUV: 0 { + Version: 101 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "IndexToDirect" + UV: *28 { + a: 0.375,0,0.625,0,0.375,0.25,0.625,0.25,0.375,0.5,0.625,0.5,0.375,0.75,0.625,0.75,0.375,1,0.625,1,0.875,0,0.875,0.25,0.125,0,0.125,0.25 + } + UVIndex: *24 { + a: 0,1,3,2,2,3,5,4,4,5,7,6,6,7,9,8,1,10,11,3,12,0,2,13 + } + } + LayerElementMaterial: 0 { + Version: 101 + Name: "" + MappingInformationType: "AllSame" + ReferenceInformationType: "IndexToDirect" + Materials: *1 { + a: 0 + } + } + Layer: 0 { + Version: 100 + LayerElement: { + Type: "LayerElementNormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementBinormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementTangent" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementMaterial" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementUV" + TypedIndex: 0 + } + } + } + Geometry: 1296155854352, "Geometry::", "Mesh" { + Vertices: *24 { + a: -0.5,-0.5,0.5,0.5,-0.5,0.5,-0.5,0.5,0.5,0.5,0.5,0.5,-0.5,0.5,-0.5,0.5,0.5,-0.5,-0.5,-0.5,-0.5,0.5,-0.5,-0.5 + } + PolygonVertexIndex: *24 { + a: 0,1,3,-3,2,3,5,-5,4,5,7,-7,6,7,1,-1,1,7,5,-4,6,0,2,-5 + } + Edges: *12 { + a: 0,2,6,10,3,1,7,5,11,9,15,13 + } + GeometryVersion: 124 + LayerElementNormal: 0 { + Version: 102 + Name: "" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Normals: *72 { + a: 0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0 + } + NormalsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementBinormal: 0 { + Version: 102 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Binormals: *72 { + a: 0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,-0,1,0,-0,1,0,0,1,-0,-0,1,0,0,1,0,0,1,0,0,1,0,0,1,0 + } + BinormalsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + + } + LayerElementTangent: 0 { + Version: 102 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "Direct" + Tangents: *72 { + a: 1,-0,-0,1,-0,0,1,-0,0,1,-0,0,1,-0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,-0,1,0,-0,1,0,-0,1,0,-0,0,0,-1,0,0,-1,0,-0,-1,0,0,-1,0,-0,1,0,-0,1,0,-0,1,0,-0,1 + } + TangentsW: *24 { + a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + } + } + LayerElementUV: 0 { + Version: 101 + Name: "map1" + MappingInformationType: "ByPolygonVertex" + ReferenceInformationType: "IndexToDirect" + UV: *28 { + a: 0.375,0,0.625,0,0.375,0.25,0.625,0.25,0.375,0.5,0.625,0.5,0.375,0.75,0.625,0.75,0.375,1,0.625,1,0.875,0,0.875,0.25,0.125,0,0.125,0.25 + } + UVIndex: *24 { + a: 0,1,3,2,2,3,5,4,4,5,7,6,6,7,9,8,1,10,11,3,12,0,2,13 + } + } + LayerElementMaterial: 0 { + Version: 101 + Name: "" + MappingInformationType: "AllSame" + ReferenceInformationType: "IndexToDirect" + Materials: *1 { + a: 0 + } + } + Layer: 0 { + Version: 100 + LayerElement: { + Type: "LayerElementNormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementBinormal" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementTangent" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementMaterial" + TypedIndex: 0 + } + LayerElement: { + Type: "LayerElementUV" + TypedIndex: 0 + } + } + } + Model: 1295483016736, "Model::pCube1", "Mesh" { + Version: 232 + Properties70: { + P: "RotationActive", "bool", "", "",1 + P: "InheritType", "enum", "", "",1 + P: "ScalingMax", "Vector3D", "Vector", "",0,0,0 + P: "DefaultAttributeIndex", "int", "Integer", "",0 + P: "Lcl Translation", "Lcl Translation", "", "A",1,0,0 + P: "currentUVSet", "KString", "", "U", "map1" + } + Shading: T + Culling: "CullingOff" + } + Model: 1295483067776, "Model::pCube2", "Mesh" { + Version: 232 + Properties70: { + P: "RotationActive", "bool", "", "",1 + P: "InheritType", "enum", "", "",1 + P: "ScalingMax", "Vector3D", "Vector", "",0,0,0 + P: "DefaultAttributeIndex", "int", "Integer", "",0 + P: "Lcl Translation", "Lcl Translation", "", "A+",-1,0,0 + P: "currentUVSet", "KString", "", "U", "map1" + } + Shading: T + Culling: "CullingOff" + } + Material: 1296219602528, "Material::lambert1", "" { + Version: 102 + ShadingModel: "lambert" + MultiLayer: 0 + Properties70: { + P: "AmbientColor", "Color", "", "A",0,0,0 + P: "DiffuseColor", "Color", "", "A",0.5,0.5,0.5 + P: "DiffuseFactor", "Number", "", "A",0.800000011920929 + P: "TransparencyFactor", "Number", "", "A",1 + P: "Emissive", "Vector3D", "Vector", "",0,0,0 + P: "Ambient", "Vector3D", "Vector", "",0,0,0 + P: "Diffuse", "Vector3D", "Vector", "",0.400000005960464,0.400000005960464,0.400000005960464 + P: "Opacity", "double", "Number", "",1 + } + } + AnimationStack: 1296154110608, "AnimStack::Take 001", "" { + Properties70: { + P: "LocalStop", "KTime", "Time", "",38488465000 + P: "ReferenceStop", "KTime", "Time", "",38488465000 + } + } + AnimationCurve: 1296165965632, "AnimCurve::", "" { + Default: 0 + KeyVer: 4009 + KeyTime: *4 { + a: 0,7697693000,15395386000,23093079000 + } + KeyValueFloat: *4 { + a: 0,1,0,1 + } + ;KeyAttrFlags: Constant|ConstantStandard, Constant|ConstantStandard, Constant|ConstantStandard, Constant|ConstantStandard + KeyAttrFlags: *4 { + a: 2,2,2,2 + } + ;KeyAttrDataFloat: RightSlope:0, NextLeftSlope:0, RightWeight:0.333333, NextLeftWeight:0.333333, RightVelocity:0, NextLeftVelocity:0; RightSlope:0, NextLeftSlope:0, RightWeight:0.333333, NextLeftWeight:0.333333, RightVelocity:0, NextLeftVelocity:0; RightSlope:0, NextLeftSlope:6, RightWeight:0.333333, NextLeftWeight:0.333333, RightVelocity:0, NextLeftVelocity:0; RightSlope:0, NextLeftSlope:0, RightWeight:0.333333, NextLeftWeight:0.333333, RightVelocity:0, NextLeftVelocity:0 + KeyAttrDataFloat: *16 { + a: 0,0,218434821,0,0,0,218434821,0,0,1086324736,218434821,0,0,0,218434821,0 + } + KeyAttrRefCount: *4 { + a: 1,1,1,1 + } + } + AnimationCurve: 1296165962272, "AnimCurve::", "" { + Default: 0 + KeyVer: 4009 + KeyTime: *3 { + a: 0,11546539500,23093079000 + } + KeyValueFloat: *3 { + a: 1,0,1 + } + ;KeyAttrFlags: Constant|ConstantStandard, Constant|ConstantStandard, Constant|ConstantStandard + KeyAttrFlags: *3 { + a: 2,2,2 + } + ;KeyAttrDataFloat: RightSlope:0, NextLeftSlope:0, RightWeight:0.333333, NextLeftWeight:0.333333, RightVelocity:0, NextLeftVelocity:0; RightSlope:0, NextLeftSlope:4, RightWeight:0.333333, NextLeftWeight:0.333333, RightVelocity:0, NextLeftVelocity:0; RightSlope:0, NextLeftSlope:0, RightWeight:0.333333, NextLeftWeight:0.333333, RightVelocity:0, NextLeftVelocity:0 + KeyAttrDataFloat: *12 { + a: 0,0,218434821,0,0,1082130432,218434821,0,0,0,218434821,0 + } + KeyAttrRefCount: *3 { + a: 1,1,1 + } + } + AnimationCurve: 1296165965952, "AnimCurve::", "" { + Default: 0 + KeyVer: 4009 + KeyTime: *2 { + a: 0,23093079000 + } + KeyValueFloat: *2 { + a: -1,-1 + } + ;KeyAttrFlags: Cubic|TangeantAuto|GenericTimeIndependent|GenericClampProgressive, Cubic|TangeantAuto|GenericTimeIndependent|GenericClampProgressive + KeyAttrFlags: *2 { + a: 24840,24840 + } + ;KeyAttrDataFloat: RightAuto:0, NextLeftAuto:0; RightAuto:0, NextLeftAuto:0 + KeyAttrDataFloat: *8 { + a: 0,0,218434821,0,0,0,218434821,0 + } + KeyAttrRefCount: *2 { + a: 1,1 + } + } + AnimationCurve: 1296165964352, "AnimCurve::", "" { + Default: 0 + KeyVer: 4009 + KeyTime: *2 { + a: 0,23093079000 + } + KeyValueFloat: *2 { + a: 0,1 + } + ;KeyAttrFlags: Cubic|TangeantAuto|GenericTimeIndependent|GenericClampProgressive, Cubic|TangeantAuto|GenericTimeIndependent|GenericClampProgressive + KeyAttrFlags: *2 { + a: 24840,24840 + } + ;KeyAttrDataFloat: RightAuto:0, NextLeftAuto:0; RightAuto:0, NextLeftAuto:0 + KeyAttrDataFloat: *8 { + a: 0,0,218434821,0,0,0,218434821,0 + } + KeyAttrRefCount: *2 { + a: 1,1 + } + } + AnimationCurve: 1296165959712, "AnimCurve::", "" { + Default: 0 + KeyVer: 4009 + KeyTime: *2 { + a: 0,23093079000 + } + KeyValueFloat: *2 { + a: 0,0 + } + ;KeyAttrFlags: Cubic|TangeantAuto|GenericTimeIndependent|GenericClampProgressive, Cubic|TangeantAuto|GenericTimeIndependent|GenericClampProgressive + KeyAttrFlags: *2 { + a: 24840,24840 + } + ;KeyAttrDataFloat: RightAuto:0, NextLeftAuto:0; RightAuto:0, NextLeftAuto:0 + KeyAttrDataFloat: *8 { + a: 0,0,218434821,0,0,0,218434821,0 + } + KeyAttrRefCount: *2 { + a: 1,1 + } + } + AnimationCurve: 1296165958592, "AnimCurve::", "" { + Default: 0 + KeyVer: 4009 + KeyTime: *2 { + a: 0,23093079000 + } + KeyValueFloat: *2 { + a: 1,1 + } + ;KeyAttrFlags: Cubic|TangeantAuto|GenericTimeIndependent|GenericClampProgressive, Cubic|TangeantAuto|GenericTimeIndependent|GenericClampProgressive + KeyAttrFlags: *2 { + a: 24840,24840 + } + ;KeyAttrDataFloat: RightAuto:0, NextLeftAuto:0; RightAuto:0, NextLeftAuto:0 + KeyAttrDataFloat: *8 { + a: 0,0,218434821,0,0,0,218434821,0 + } + KeyAttrRefCount: *2 { + a: 1,1 + } + } + AnimationCurve: 1296165963072, "AnimCurve::", "" { + Default: 0 + KeyVer: 4009 + KeyTime: *2 { + a: 0,23093079000 + } + KeyValueFloat: *2 { + a: 1,1 + } + ;KeyAttrFlags: Cubic|TangeantAuto|GenericTimeIndependent|GenericClampProgressive, Cubic|TangeantAuto|GenericTimeIndependent|GenericClampProgressive + KeyAttrFlags: *2 { + a: 24840,24840 + } + ;KeyAttrDataFloat: RightAuto:0, NextLeftAuto:0; RightAuto:0, NextLeftAuto:0 + KeyAttrDataFloat: *8 { + a: 0,0,218434821,0,0,0,218434821,0 + } + KeyAttrRefCount: *2 { + a: 1,1 + } + } + AnimationCurve: 1296165959072, "AnimCurve::", "" { + Default: 0 + KeyVer: 4009 + KeyTime: *2 { + a: 0,23093079000 + } + KeyValueFloat: *2 { + a: 1,1 + } + ;KeyAttrFlags: Cubic|TangeantAuto|GenericTimeIndependent|GenericClampProgressive, Cubic|TangeantAuto|GenericTimeIndependent|GenericClampProgressive + KeyAttrFlags: *2 { + a: 24840,24840 + } + ;KeyAttrDataFloat: RightAuto:0, NextLeftAuto:0; RightAuto:0, NextLeftAuto:0 + KeyAttrDataFloat: *8 { + a: 0,0,218434821,0,0,0,218434821,0 + } + KeyAttrRefCount: *2 { + a: 1,1 + } + } + AnimationCurve: 1296165965792, "AnimCurve::", "" { + Default: 0 + KeyVer: 4009 + KeyTime: *2 { + a: 0,23093079000 + } + KeyValueFloat: *2 { + a: 0,0 + } + ;KeyAttrFlags: Cubic|TangeantAuto|GenericTimeIndependent|GenericClampProgressive, Cubic|TangeantAuto|GenericTimeIndependent|GenericClampProgressive + KeyAttrFlags: *2 { + a: 24840,24840 + } + ;KeyAttrDataFloat: RightAuto:0, NextLeftAuto:0; RightAuto:0, NextLeftAuto:0 + KeyAttrDataFloat: *8 { + a: 0,0,218434821,0,0,0,218434821,0 + } + KeyAttrRefCount: *2 { + a: 1,1 + } + } + AnimationCurve: 1296165958752, "AnimCurve::", "" { + Default: 0 + KeyVer: 4009 + KeyTime: *2 { + a: 0,23093079000 + } + KeyValueFloat: *2 { + a: 0,0 + } + ;KeyAttrFlags: Cubic|TangeantAuto|GenericTimeIndependent|GenericClampProgressive, Cubic|TangeantAuto|GenericTimeIndependent|GenericClampProgressive + KeyAttrFlags: *2 { + a: 24840,24840 + } + ;KeyAttrDataFloat: RightAuto:0, NextLeftAuto:0; RightAuto:0, NextLeftAuto:0 + KeyAttrDataFloat: *8 { + a: 0,0,218434821,0,0,0,218434821,0 + } + KeyAttrRefCount: *2 { + a: 1,1 + } + } + AnimationCurve: 1296165966272, "AnimCurve::", "" { + Default: 0 + KeyVer: 4009 + KeyTime: *2 { + a: 0,23093079000 + } + KeyValueFloat: *2 { + a: 0,0 + } + ;KeyAttrFlags: Cubic|TangeantAuto|GenericTimeIndependent|GenericClampProgressive, Cubic|TangeantAuto|GenericTimeIndependent|GenericClampProgressive + KeyAttrFlags: *2 { + a: 24840,24840 + } + ;KeyAttrDataFloat: RightAuto:0, NextLeftAuto:0; RightAuto:0, NextLeftAuto:0 + KeyAttrDataFloat: *8 { + a: 0,0,218434821,0,0,0,218434821,0 + } + KeyAttrRefCount: *2 { + a: 1,1 + } + } + AnimationCurveNode: 1296154112480, "AnimCurveNode::Visibility", "" { + Properties70: { + P: "d|Visibility", "Visibility", "", "A",0 + } + } + AnimationCurveNode: 1296154115184, "AnimCurveNode::Visibility", "" { + Properties70: { + P: "d|Visibility", "Visibility", "", "A",1 + } + } + AnimationCurveNode: 1296154111648, "AnimCurveNode::T", "" { + Properties70: { + P: "d|X", "Number", "", "A",-1 + P: "d|Y", "Number", "", "A",0 + P: "d|Z", "Number", "", "A",0 + } + } + AnimationCurveNode: 1296154112688, "AnimCurveNode::S", "" { + Properties70: { + P: "d|X", "Number", "", "A",1 + P: "d|Y", "Number", "", "A",1 + P: "d|Z", "Number", "", "A",1 + } + } + AnimationCurveNode: 1296154120592, "AnimCurveNode::R", "" { + Properties70: { + P: "d|X", "Number", "", "A",0 + P: "d|Y", "Number", "", "A",0 + P: "d|Z", "Number", "", "A",0 + } + } + AnimationLayer: 1296220654944, "AnimLayer::BaseLayer", "" { + } +} + +; Object connections +;------------------------------------------------------------------ + +Connections: { + + ;Model::pCube1, Model::RootNode + C: "OO",1295483016736,0 + + ;Model::pCube2, Model::RootNode + C: "OO",1295483067776,0 + + ;AnimLayer::BaseLayer, AnimStack::Take 001 + C: "OO",1296220654944,1296154110608 + + ;AnimCurveNode::Visibility, AnimLayer::BaseLayer + C: "OO",1296154112480,1296220654944 + + ;AnimCurveNode::Visibility, AnimLayer::BaseLayer + C: "OO",1296154115184,1296220654944 + + ;AnimCurveNode::T, AnimLayer::BaseLayer + C: "OO",1296154111648,1296220654944 + + ;AnimCurveNode::S, AnimLayer::BaseLayer + C: "OO",1296154112688,1296220654944 + + ;AnimCurveNode::R, AnimLayer::BaseLayer + C: "OO",1296154120592,1296220654944 + + ;Geometry::, Model::pCube1 + C: "OO",1296155868688,1295483016736 + + ;Material::lambert1, Model::pCube1 + C: "OO",1296219602528,1295483016736 + + ;AnimCurveNode::Visibility, Model::pCube1 + C: "OP",1296154112480,1295483016736, "Visibility" + + ;Geometry::, Model::pCube2 + C: "OO",1296155854352,1295483067776 + + ;Material::lambert1, Model::pCube2 + C: "OO",1296219602528,1295483067776 + + ;AnimCurveNode::T, Model::pCube2 + C: "OP",1296154111648,1295483067776, "Lcl Translation" + + ;AnimCurveNode::R, Model::pCube2 + C: "OP",1296154120592,1295483067776, "Lcl Rotation" + + ;AnimCurveNode::S, Model::pCube2 + C: "OP",1296154112688,1295483067776, "Lcl Scaling" + + ;AnimCurveNode::Visibility, Model::pCube2 + C: "OP",1296154115184,1295483067776, "Visibility" + + ;AnimCurve::, AnimCurveNode::Visibility + C: "OP",1296165965632,1296154112480, "d|Visibility" + + ;AnimCurve::, AnimCurveNode::Visibility + C: "OP",1296165962272,1296154115184, "d|Visibility" + + ;AnimCurve::, AnimCurveNode::T + C: "OP",1296165965952,1296154111648, "d|X" + + ;AnimCurve::, AnimCurveNode::T + C: "OP",1296165964352,1296154111648, "d|Y" + + ;AnimCurve::, AnimCurveNode::T + C: "OP",1296165959712,1296154111648, "d|Z" + + ;AnimCurve::, AnimCurveNode::S + C: "OP",1296165958592,1296154112688, "d|X" + + ;AnimCurve::, AnimCurveNode::S + C: "OP",1296165963072,1296154112688, "d|Y" + + ;AnimCurve::, AnimCurveNode::S + C: "OP",1296165959072,1296154112688, "d|Z" + + ;AnimCurve::, AnimCurveNode::R + C: "OP",1296165965792,1296154120592, "d|X" + + ;AnimCurve::, AnimCurveNode::R + C: "OP",1296165958752,1296154120592, "d|Y" + + ;AnimCurve::, AnimCurveNode::R + C: "OP",1296165966272,1296154120592, "d|Z" +} +;Takes section +;---------------------------------------------------- + +Takes: { + Current: "Take 001" + Take: "Take 001" { + FileName: "Take_001.tak" + LocalTime: 0,38488465000 + ReferenceTime: 0,38488465000 + } +}