From 2ac2dd5b6128c78e6ecff0a27ee5a3b4aced70e7 Mon Sep 17 00:00:00 2001 From: gered Date: Wed, 27 Apr 2011 10:03:35 -0400 Subject: [PATCH] methods to determine if the loaded scene is animated or not --- AssimpToMesh/AssimpToMesh.vcxproj | 2 ++ AssimpToMesh/AssimpToMesh.vcxproj.filters | 6 +++++ .../src/assimputils/assimpsceneinfo.cpp | 25 +++++++++++++++++++ AssimpToMesh/src/assimputils/utils.h | 11 ++++++++ AssimpToMesh/src/main.cpp | 4 +++ 5 files changed, 48 insertions(+) create mode 100644 AssimpToMesh/src/assimputils/assimpsceneinfo.cpp create mode 100644 AssimpToMesh/src/assimputils/utils.h diff --git a/AssimpToMesh/AssimpToMesh.vcxproj b/AssimpToMesh/AssimpToMesh.vcxproj index dd52f56..ae4545e 100644 --- a/AssimpToMesh/AssimpToMesh.vcxproj +++ b/AssimpToMesh/AssimpToMesh.vcxproj @@ -80,10 +80,12 @@ + + diff --git a/AssimpToMesh/AssimpToMesh.vcxproj.filters b/AssimpToMesh/AssimpToMesh.vcxproj.filters index 5b5e15e..b0ec862 100644 --- a/AssimpToMesh/AssimpToMesh.vcxproj.filters +++ b/AssimpToMesh/AssimpToMesh.vcxproj.filters @@ -21,10 +21,16 @@ Source Files + + Source Files + Header Files + + Header Files + \ No newline at end of file diff --git a/AssimpToMesh/src/assimputils/assimpsceneinfo.cpp b/AssimpToMesh/src/assimputils/assimpsceneinfo.cpp new file mode 100644 index 0000000..211191b --- /dev/null +++ b/AssimpToMesh/src/assimputils/assimpsceneinfo.cpp @@ -0,0 +1,25 @@ +#include "utils.h" + +bool IsSceneAnimated(const aiScene *scene) +{ + return scene->HasAnimations(); +} + +bool IsSceneSkeletal(const aiScene *scene) +{ + for (unsigned int i = 0; i < scene->mNumMeshes; ++i) + { + if (scene->mMeshes[i]->HasBones()) + return true; + } + + return false; +} + +bool IsSceneStatic(const aiScene *scene) +{ + if (IsSceneAnimated(scene) || IsSceneSkeletal(scene)) + return false; + else + return true; +} diff --git a/AssimpToMesh/src/assimputils/utils.h b/AssimpToMesh/src/assimputils/utils.h new file mode 100644 index 0000000..525ec6c --- /dev/null +++ b/AssimpToMesh/src/assimputils/utils.h @@ -0,0 +1,11 @@ +#ifndef __ASSIMPUTILS_UTILS_H_INCLUDED__ +#define __ASSIMPUTILS_UTILS_H_INCLUDED__ + +#include +#include + +bool IsSceneAnimated(const aiScene *scene); +bool IsSceneSkeletal(const aiScene *scene); +bool IsSceneStatic(const aiScene *scene); + +#endif diff --git a/AssimpToMesh/src/main.cpp b/AssimpToMesh/src/main.cpp index 3b44270..23b41e8 100644 --- a/AssimpToMesh/src/main.cpp +++ b/AssimpToMesh/src/main.cpp @@ -7,6 +7,7 @@ #include #include "utils/utils.h" +#include "assimputils/utils.h" int main(int argc, char *argv[]) { @@ -46,5 +47,8 @@ int main(int argc, char *argv[]) return 1; } + printf("Scene loaded.\n"); + printf("Animated? %d\nSkeletal? %d\nStatic? %d\n", IsSceneAnimated(scene), IsSceneSkeletal(scene), IsSceneStatic(scene)); + return 0; }