commit
71ae322e7b
|
@ -54,3 +54,8 @@ tools/assimp_view/assimp_viewer.vcxproj.user
|
||||||
|
|
||||||
# Unix editor backups
|
# Unix editor backups
|
||||||
*~
|
*~
|
||||||
|
test/gtest/src/gtest-stamp/gtest-gitinfo.txt
|
||||||
|
test/gtest/src/gtest-stamp/gtest-gitclone-lastrun.txt
|
||||||
|
Assimp.opensdf
|
||||||
|
contrib/zlib/CTestTestfile.cmake
|
||||||
|
ipch/assimp_viewer-44bbbcd1/assimp_viewerd-ccc45335.ipch
|
||||||
|
|
47
.travis.yml
47
.travis.yml
|
@ -1,20 +1,22 @@
|
||||||
before_install:
|
before_install:
|
||||||
|
- sudo apt-get update -qq
|
||||||
- sudo apt-get install cmake python3
|
- sudo apt-get install cmake python3
|
||||||
|
- if [ $LINUX ]; then sudo apt-get install -qq freeglut3-dev libxmu-dev libxi-dev ; fi
|
||||||
|
- echo -e "#ifndef A_R_H_INC\n#define A_R_H_INC\n#define GitVersion ${TRAVIS_JOB_ID}\n#define GitBranch \"${TRAVIS_BRANCH}\"\n#endif // A_R_H_INC" > revision.h
|
||||||
|
|
||||||
branches:
|
branches:
|
||||||
only:
|
only:
|
||||||
- master
|
- master
|
||||||
|
|
||||||
env:
|
env:
|
||||||
matrix:
|
global:
|
||||||
|
- PV=r8e PLATF=linux-x86_64 NDK_HOME=${TRAVIS_BUILD_DIR}/android-ndk-${PV} PATH=${PATH}:${NDK_HOME}
|
||||||
|
matrix:
|
||||||
- LINUX=1 TRAVIS_NO_EXPORT=YES
|
- LINUX=1 TRAVIS_NO_EXPORT=YES
|
||||||
- LINUX=1 TRAVIS_NO_EXPORT=NO
|
- LINUX=1 TRAVIS_NO_EXPORT=NO
|
||||||
- LINUX=1 TRAVIS_STATIC_BUILD=ON
|
- LINUX=1 SHARED_BUILD=ON
|
||||||
- LINUX=1 TRAVIS_STATIC_BUILD=OFF
|
- LINUX=1 SHARED_BUILD=OFF
|
||||||
- WINDOWS=1 TRAVIS_NO_EXPORT=YES
|
- ANDROID=1
|
||||||
- WINDOWS=1 TRAVIS_NO_EXPORT=NO
|
|
||||||
- WINDOWS=1 TRAVIS_STATIC_BUILD=ON
|
|
||||||
- WINDOWS=1 TRAVIS_STATIC_BUILD=OFF
|
|
||||||
|
|
||||||
language: cpp
|
language: cpp
|
||||||
|
|
||||||
|
@ -23,19 +25,22 @@ compiler:
|
||||||
- clang
|
- clang
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- if [ $WINDOWS ]; then travis_retry sudo apt-get install -q -y gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 binutils-mingw-w64-x86-64; fi
|
- if [ $ANDROID ]; then wget -c http://dl.google.com/android/ndk/android-ndk-${PV}-${PLATF}.tar.bz2 && tar xf android-ndk-${PV}-${PLATF}.tar.bz2 ; fi
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- cmake -G "Unix Makefiles" -DASSIMP_ENABLE_BOOST_WORKAROUND=YES -DASSIMP_NO_EXPORT=$TRAVIS_NO_EXPORT -STATIC_BUILD=$TRAVIS_STATIC_BUILD
|
- if [ $ANDROID ]; then
|
||||||
- make
|
ant -v -Dmy.dir=${TRAVIS_BUILD_DIR} -f ${TRAVIS_BUILD_DIR}/port/jassimp/build.xml ndk-jni ;
|
||||||
- sudo make install
|
else
|
||||||
- sudo ldconfig
|
cmake -G "Unix Makefiles" -DASSIMP_ENABLE_BOOST_WORKAROUND=YES -DASSIMP_NO_EXPORT=$TRAVIS_NO_EXPORT -DBUILD_SHARED_LIBS=$SHARED_BUILD ;
|
||||||
- cd test/unit
|
make ;
|
||||||
- ../../bin/unit
|
sudo make install ;
|
||||||
- cd ../regression
|
sudo ldconfig ;
|
||||||
- chmod 755 run.py
|
cd test/unit ;
|
||||||
- ./run.py
|
../../bin/unit ;
|
||||||
- echo "=========================================================="
|
cd ../regression ;
|
||||||
- echo "REGRESSION TEST FAILS (results/run_regression_suite_failures.csv)"
|
chmod 755 run.py ;
|
||||||
- cat ../results/run_regression_suite_failures.csv
|
./run.py ;
|
||||||
|
echo "==========================================================" ;
|
||||||
|
echo "REGRESSION TEST FAILURES (results/run_regression_suite_failures.csv)" ;
|
||||||
|
cat ../results/run_regression_suite_failures.csv;
|
||||||
|
fi
|
||||||
|
|
|
@ -1,6 +1,13 @@
|
||||||
|
set(CMAKE_LEGACY_CYGWIN_WIN32 0) # Remove when CMake >= 2.8.4 is required
|
||||||
cmake_minimum_required( VERSION 2.8 )
|
cmake_minimum_required( VERSION 2.8 )
|
||||||
PROJECT( Assimp )
|
PROJECT( Assimp )
|
||||||
|
|
||||||
|
option(BUILD_SHARED_LIBS "Build package with shared libraries." ON)
|
||||||
|
if(NOT BUILD_SHARED_LIBS)
|
||||||
|
#set(CMAKE_EXE_LINKER_FLAGS "-static")
|
||||||
|
set(LINK_SEARCH_START_STATIC TRUE)
|
||||||
|
endif(NOT BUILD_SHARED_LIBS)
|
||||||
|
|
||||||
# Define here the needed parameters
|
# Define here the needed parameters
|
||||||
set (ASSIMP_VERSION_MAJOR 3)
|
set (ASSIMP_VERSION_MAJOR 3)
|
||||||
set (ASSIMP_VERSION_MINOR 1)
|
set (ASSIMP_VERSION_MINOR 1)
|
||||||
|
@ -55,9 +62,9 @@ if( CMAKE_COMPILER_IS_MINGW )
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if((CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) AND NOT CMAKE_COMPILER_IS_MINGW)
|
if((CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) AND NOT CMAKE_COMPILER_IS_MINGW)
|
||||||
add_definitions(-fPIC) # this is a very important switch and some libraries seem now to have it....
|
set(CMAKE_CXX_FLAGS "-fPIC") # this is a very important switch and some libraries seem now to have it....
|
||||||
# hide all not-exported symbols
|
# hide all not-exported symbols
|
||||||
add_definitions( -fvisibility=hidden -Wall )
|
set(CMAKE_CXX_FLAGS "-fvisibility=hidden -Wall" )
|
||||||
elseif(MSVC)
|
elseif(MSVC)
|
||||||
# enable multi-core compilation with MSVC
|
# enable multi-core compilation with MSVC
|
||||||
add_definitions(/MP)
|
add_definitions(/MP)
|
||||||
|
@ -88,9 +95,6 @@ SET( ASSIMP_BIN_INSTALL_DIR "bin" CACHE PATH
|
||||||
|
|
||||||
SET(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "Debug Postfitx for lib, samples and tools")
|
SET(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "Debug Postfitx for lib, samples and tools")
|
||||||
|
|
||||||
# Allow the user to build a shared or static library
|
|
||||||
option ( BUILD_SHARED_LIBS "Build a shared version of the library" ON )
|
|
||||||
|
|
||||||
# Only generate this target if no higher-level project already has
|
# Only generate this target if no higher-level project already has
|
||||||
IF (NOT TARGET uninstall)
|
IF (NOT TARGET uninstall)
|
||||||
# add make uninstall capability
|
# add make uninstall capability
|
||||||
|
|
49
Readme.md
49
Readme.md
|
@ -1,18 +1,25 @@
|
||||||
Open Asset Import Library (assimp)
|
Open Asset Import Library (assimp)
|
||||||
========
|
========
|
||||||
|
|
||||||
Open Asset Import Library is a Open Source library designed to load various __3d file formats and convert them into a shared, in-memory format__. It supports more than __40 file formats__ for import and a growing selection of file formats for export. Additionally, assimp features various __post processing tools__ to refine the imported data: _normals and tangent space generation, triangulation, vertex cache locality optimization, removal of degenerate primitives and duplicate vertices, sorting by primitive type, merging of redundant materials_ and many more.
|
Open Asset Import Library is a library to load various 3d file formats into a shared, in-memory format. It supports more than __40 file formats__ for import and a growing selection of file formats for export.
|
||||||
|
|
||||||
This is the development trunk of assimp containing the latest features and bugfixes. For productive use though, we recommend one of the stable releases available from [assimp.sf.net](http://assimp.sf.net) or from *nix package repositories. According to [Travis-CI] (https://travis-ci.org/), the current build status of the trunk is [![Build Status](https://travis-ci.org/assimp/assimp.png)](https://travis-ci.org/assimp/assimp)
|
APIs are provided for C and C++. There are various bindings to other languages (C#, Java, Python, Delphi, D). Assimp also runs on Android and iOS.
|
||||||
|
|
||||||
[open3mod](https://github.com/acgessler/open3mod) is an Open Source 3D model viewer based off Assimp's import and export abilities.
|
Additionally, assimp features various __mesh post processing tools__: normals and tangent space generation, triangulation, vertex cache locality optimization, removal of degenerate primitives and duplicate vertices, sorting by primitive type, merging of redundant materials and many more.
|
||||||
|
|
||||||
|
This is the development trunk containing the latest features and bugfixes. For productive use though, we recommend one of the stable releases available from [assimp.sf.net](http://assimp.sf.net) or from *nix package repositories. According to [Travis-CI] (https://travis-ci.org/), the current build status is:
|
||||||
|
|
||||||
|
[![Build Status](https://travis-ci.org/assimp/assimp.png)](https://travis-ci.org/assimp/assimp)
|
||||||
|
|
||||||
|
__[open3mod](https://github.com/acgessler/open3mod) is a powerful 3D model viewer based on Assimp's import and export abilities.__
|
||||||
|
|
||||||
#### Supported file formats ####
|
#### Supported file formats ####
|
||||||
|
|
||||||
The library provides importers for a lot of file formats, including:
|
A full list [is here](http://assimp.sourceforge.net/main_features_formats.html).
|
||||||
|
__Importers__:
|
||||||
|
|
||||||
- 3DS
|
- 3DS
|
||||||
- BLEND (Blender 3D)
|
- BLEND (Blender)
|
||||||
- DAE/Collada
|
- DAE/Collada
|
||||||
- FBX
|
- FBX
|
||||||
- IFC-STEP
|
- IFC-STEP
|
||||||
|
@ -46,13 +53,13 @@ The library provides importers for a lot of file formats, including:
|
||||||
- Ogre Binary
|
- Ogre Binary
|
||||||
- Ogre XML
|
- Ogre XML
|
||||||
- Q3D
|
- Q3D
|
||||||
- ASSBIN (Assimp scene serialization)
|
- ASSBIN (Assimp custom format)
|
||||||
|
|
||||||
Additionally, the following formats are also supported, but not part of the core library as they depend on proprietary libraries.
|
Additionally, some formats are supported by dependency on non-free code or external SDKs (not built by default):
|
||||||
|
|
||||||
- C4D (https://github.com/acgessler/assimp-cinema4d)
|
- C4D (https://github.com/acgessler/assimp-cinema4d)
|
||||||
|
|
||||||
Exporters include:
|
__Exporters__:
|
||||||
|
|
||||||
- DAE (Collada)
|
- DAE (Collada)
|
||||||
- STL
|
- STL
|
||||||
|
@ -63,23 +70,21 @@ Exporters include:
|
||||||
- JSON (for WebGl, via https://github.com/acgessler/assimp2json)
|
- JSON (for WebGl, via https://github.com/acgessler/assimp2json)
|
||||||
- ASSBIN
|
- ASSBIN
|
||||||
|
|
||||||
See [the full list here](http://assimp.sourceforge.net/main_features_formats.html).
|
### Building ###
|
||||||
|
|
||||||
|
|
||||||
|
Take a look into the `INSTALL` file. Our build system is CMake, if you used CMake before there is a good chance you know what to do.
|
||||||
|
|
||||||
|
|
||||||
#### Repository structure ####
|
#### Repository structure ####
|
||||||
|
|
||||||
|
|
||||||
Open Asset Import Library is implemented in C++ (but provides both a C and a
|
Open Asset Import Library is implemented in C++. The directory structure is:
|
||||||
C++ish interface). The directory structure is:
|
|
||||||
|
|
||||||
/bin Folder for binaries, only used on Windows
|
|
||||||
/code Source code
|
/code Source code
|
||||||
/contrib Third-party libraries
|
/contrib Third-party libraries
|
||||||
/doc Documentation (doxysource and pre-compiled docs)
|
/doc Documentation (doxysource and pre-compiled docs)
|
||||||
/include Public header C and C++ header files
|
/include Public header C and C++ header files
|
||||||
/lib Static library location for Windows
|
|
||||||
/obj Object file location for Windows
|
|
||||||
/scripts Scripts used to generate the loading code for some formats
|
/scripts Scripts used to generate the loading code for some formats
|
||||||
/port Ports to other languages and scripts to maintain those.
|
/port Ports to other languages and scripts to maintain those.
|
||||||
/test Unit- and regression tests, test suite of models
|
/test Unit- and regression tests, test suite of models
|
||||||
|
@ -90,24 +95,15 @@ C++ish interface). The directory structure is:
|
||||||
CMake has superseeded all legacy build options!)
|
CMake has superseeded all legacy build options!)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Building ###
|
|
||||||
|
|
||||||
|
|
||||||
Take a look into the `INSTALL` file. Our build system is CMake, if you already used CMake before there is a good chance you know what to do.
|
|
||||||
|
|
||||||
|
|
||||||
### Where to get help ###
|
### Where to get help ###
|
||||||
|
|
||||||
|
|
||||||
For more information, visit [our website](http://assimp.sourceforge.net/). Or check out the `./doc`- folder, which contains the official documentation in HTML format.
|
For more information, visit [our website](http://assimp.sourceforge.net/). Or check out the `./doc`- folder, which contains the official documentation in HTML format.
|
||||||
(CHMs for Windows are included in some release packages and should be located right here in the root folder).
|
(CHMs for Windows are included in some release packages and should be located right here in the root folder).
|
||||||
|
|
||||||
If the documentation doesn't solve your problems,
|
If the docs don't solve your problem, ask on [StackOverflow](http://stackoverflow.com/questions/tagged/assimp?sort=newest). If you think you found a bug, please open an issue on Github.
|
||||||
[try our forums at SF.net](http://sourceforge.net/p/assimp/discussion/817654) or ask on
|
|
||||||
[StackOverflow](http://stackoverflow.com/questions/tagged/assimp?sort=newest).
|
|
||||||
|
|
||||||
For development discussions, there is also a mailing list, _assimp-discussions_
|
For development discussions, there is also a (very low-volume) mailing list, _assimp-discussions_
|
||||||
[(subscribe here)]( https://lists.sourceforge.net/lists/listinfo/assimp-discussions)
|
[(subscribe here)]( https://lists.sourceforge.net/lists/listinfo/assimp-discussions)
|
||||||
|
|
||||||
### Contributing ###
|
### Contributing ###
|
||||||
|
@ -115,10 +111,9 @@ For development discussions, there is also a mailing list, _assimp-discussions_
|
||||||
Contributions to assimp are highly appreciated. The easiest way to get involved is to submit
|
Contributions to assimp are highly appreciated. The easiest way to get involved is to submit
|
||||||
a pull request with your changes against the main repository's `master` branch.
|
a pull request with your changes against the main repository's `master` branch.
|
||||||
|
|
||||||
|
|
||||||
### License ###
|
### License ###
|
||||||
|
|
||||||
Our license is based on the modified, __3-clause BSD__-License, which is very liberal.
|
Our license is based on the modified, __3-clause BSD__-License.
|
||||||
|
|
||||||
An _informal_ summary is: do whatever you want, but include Assimp's license text with your product -
|
An _informal_ summary is: do whatever you want, but include Assimp's license text with your product -
|
||||||
and don't sue us if our code doesn't work. Note that, unlike LGPLed code, you may link statically to Assimp.
|
and don't sue us if our code doesn't work. Note that, unlike LGPLed code, you may link statically to Assimp.
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
# this one sets internal to crosscompile (in theory)
|
||||||
|
SET(CMAKE_SYSTEM_NAME Windows)
|
||||||
|
|
||||||
|
# the minimalistic settings
|
||||||
|
SET(CMAKE_C_COMPILER "/usr/bin/x86_64-w64-mingw32-gcc")
|
||||||
|
SET(CMAKE_CXX_COMPILER "/usr/bin/x86_64-w64-mingw32-g++")
|
||||||
|
SET(CMAKE_RC_COMPILER "/usr/bin/x86_64-w64-mingw32-windres")
|
||||||
|
|
||||||
|
# where is the target (so called staging) environment
|
||||||
|
SET(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32)
|
||||||
|
|
||||||
|
# search for programs in the build host directories (default BOTH)
|
||||||
|
#SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||||
|
# for libraries and headers in the target directories
|
||||||
|
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||||
|
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
@ -41,12 +41,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
/** @file Implementation of the 3ds importer class */
|
/** @file Implementation of the 3ds importer class */
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
|
||||||
#ifndef ASSIMP_BUILD_NO_3DS_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_3DS_IMPORTER
|
||||||
|
|
||||||
// internal headers
|
// internal headers
|
||||||
#include "3DSLoader.h"
|
#include "3DSLoader.h"
|
||||||
#include "TargetAnimation.h"
|
#include "TargetAnimation.h"
|
||||||
|
#include "../include/assimp/scene.h"
|
||||||
|
#include "../include/assimp/DefaultLogger.hpp"
|
||||||
|
#include "StringComparison.h"
|
||||||
|
#include <boost/scoped_array.hpp>
|
||||||
|
#include <cctype>
|
||||||
|
|
||||||
using namespace Assimp;
|
using namespace Assimp;
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_EXPORT
|
#ifndef ASSIMP_BUILD_NO_EXPORT
|
||||||
#ifndef ASSIMP_BUILD_NO_3DS_EXPORTER
|
#ifndef ASSIMP_BUILD_NO_3DS_EXPORTER
|
||||||
|
@ -47,6 +46,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "3DSLoader.h"
|
#include "3DSLoader.h"
|
||||||
#include "SceneCombiner.h"
|
#include "SceneCombiner.h"
|
||||||
#include "SplitLargeMeshes.h"
|
#include "SplitLargeMeshes.h"
|
||||||
|
#include "StringComparison.h"
|
||||||
|
#include "../include/assimp/IOSystem.hpp"
|
||||||
|
#include "../include/assimp/DefaultLogger.hpp"
|
||||||
|
#include "../include/assimp/Exporter.hpp"
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
using namespace Assimp;
|
using namespace Assimp;
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
|
|
|
@ -45,11 +45,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#define AI_3DSEXPORTER_H_INC
|
#define AI_3DSEXPORTER_H_INC
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
|
#include <boost/shared_ptr.hpp>
|
||||||
|
|
||||||
#include "StreamWriter.h"
|
#include "StreamWriter.h"
|
||||||
|
#include "./../include/assimp/material.h"
|
||||||
|
|
||||||
struct aiScene;
|
struct aiScene;
|
||||||
struct aiNode;
|
struct aiNode;
|
||||||
|
struct aiMaterial;
|
||||||
|
struct aiMesh;
|
||||||
|
|
||||||
namespace Assimp
|
namespace Assimp
|
||||||
{
|
{
|
||||||
|
|
|
@ -46,6 +46,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#include "SpatialSort.h"
|
#include "SpatialSort.h"
|
||||||
#include "SmoothingGroups.h"
|
#include "SmoothingGroups.h"
|
||||||
|
#include "qnan.h"
|
||||||
|
#include "./../include/assimp/material.h"
|
||||||
|
#include "./../include/assimp/camera.h"
|
||||||
|
#include "./../include/assimp/light.h"
|
||||||
|
#include "./../include/assimp/anim.h"
|
||||||
|
#include <stdio.h> //sprintf
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
namespace D3DS {
|
namespace D3DS {
|
||||||
|
|
|
@ -45,11 +45,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
* http://www.the-labs.com/Blender/3DS-details.html
|
* http://www.the-labs.com/Blender/3DS-details.html
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
|
||||||
#ifndef ASSIMP_BUILD_NO_3DS_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_3DS_IMPORTER
|
||||||
|
|
||||||
// internal headers
|
// internal headers
|
||||||
#include "3DSLoader.h"
|
#include "3DSLoader.h"
|
||||||
|
#include "Macros.h"
|
||||||
|
#include "../include/assimp/IOSystem.hpp"
|
||||||
|
#include "../include/assimp/scene.h"
|
||||||
|
#include "../include/assimp/DefaultLogger.hpp"
|
||||||
|
#include "StringComparison.h"
|
||||||
|
|
||||||
using namespace Assimp;
|
using namespace Assimp;
|
||||||
|
|
||||||
|
|
|
@ -50,8 +50,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_3DS_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_3DS_IMPORTER
|
||||||
|
|
||||||
struct aiNode;
|
|
||||||
#include "3DSHelper.h"
|
#include "3DSHelper.h"
|
||||||
|
#include "StreamReader.h"
|
||||||
|
|
||||||
|
struct aiNode;
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
/** @file Implementation of the AC3D importer class */
|
/** @file Implementation of the AC3D importer class */
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_AC_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_AC_IMPORTER
|
||||||
|
|
||||||
|
@ -50,7 +50,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "ACLoader.h"
|
#include "ACLoader.h"
|
||||||
#include "ParsingUtils.h"
|
#include "ParsingUtils.h"
|
||||||
#include "fast_atof.h"
|
#include "fast_atof.h"
|
||||||
#include "Subdivision.h"
|
#include "Subdivision.h"
|
||||||
|
#include "Importer.h"
|
||||||
|
#include "BaseImporter.h"
|
||||||
|
#include "../include/assimp/Importer.hpp"
|
||||||
|
#include "../include/assimp/light.h"
|
||||||
|
#include "../include/assimp/DefaultLogger.hpp"
|
||||||
|
#include "../include/assimp/material.h"
|
||||||
|
#include "../include/assimp/scene.h"
|
||||||
|
#include "../include/assimp/config.h"
|
||||||
|
#include "../include/assimp/IOSystem.hpp"
|
||||||
|
#include <boost/scoped_ptr.hpp>
|
||||||
|
|
||||||
using namespace Assimp;
|
using namespace Assimp;
|
||||||
|
|
||||||
|
|
|
@ -49,6 +49,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "BaseImporter.h"
|
#include "BaseImporter.h"
|
||||||
#include "../include/assimp/types.h"
|
#include "../include/assimp/types.h"
|
||||||
|
|
||||||
|
struct aiNode;
|
||||||
|
struct aiMesh;
|
||||||
|
struct aiMaterial;
|
||||||
|
struct aiLight;
|
||||||
|
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
|
@ -43,7 +43,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
* @brief Implementation of the ASE importer class
|
* @brief Implementation of the ASE importer class
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
|
||||||
#ifndef ASSIMP_BUILD_NO_ASE_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_ASE_IMPORTER
|
||||||
|
|
||||||
// internal headers
|
// internal headers
|
||||||
|
@ -51,6 +50,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "StringComparison.h"
|
#include "StringComparison.h"
|
||||||
#include "SkeletonMeshBuilder.h"
|
#include "SkeletonMeshBuilder.h"
|
||||||
#include "TargetAnimation.h"
|
#include "TargetAnimation.h"
|
||||||
|
#include "../include/assimp/Importer.hpp"
|
||||||
|
#include <boost/scoped_ptr.hpp>
|
||||||
|
#include "../include/assimp/IOSystem.hpp"
|
||||||
|
#include "../include/assimp/DefaultLogger.hpp"
|
||||||
|
#include "../include/assimp/scene.h"
|
||||||
|
|
||||||
|
|
||||||
// utilities
|
// utilities
|
||||||
#include "fast_atof.h"
|
#include "fast_atof.h"
|
||||||
|
|
|
@ -43,7 +43,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
* @brief Implementation of the ASE parser class
|
* @brief Implementation of the ASE parser class
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
|
||||||
#ifndef ASSIMP_BUILD_NO_ASE_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_ASE_IMPORTER
|
||||||
|
|
||||||
// internal headers
|
// internal headers
|
||||||
|
@ -51,6 +51,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "ASELoader.h"
|
#include "ASELoader.h"
|
||||||
#include "MaterialSystem.h"
|
#include "MaterialSystem.h"
|
||||||
#include "fast_atof.h"
|
#include "fast_atof.h"
|
||||||
|
#include "../include/assimp/DefaultLogger.hpp"
|
||||||
|
|
||||||
using namespace Assimp;
|
using namespace Assimp;
|
||||||
using namespace Assimp::ASE;
|
using namespace Assimp::ASE;
|
||||||
|
|
|
@ -40,10 +40,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
/** @file AssbinExporter.cpp
|
/** @file AssbinExporter.cpp
|
||||||
* ASSBIN exporter main code
|
* ASSBIN exporter main code
|
||||||
*/
|
*/
|
||||||
#include "AssimpPCH.h"
|
|
||||||
#include "assbin_chunks.h"
|
#include "assbin_chunks.h"
|
||||||
#include "./../include/assimp/version.h"
|
#include "../include/assimp/version.h"
|
||||||
|
#include "../include/assimp/IOStream.hpp"
|
||||||
|
#include "../include/assimp/IOSystem.hpp"
|
||||||
|
#include "../include/assimp/Exporter.hpp"
|
||||||
#include "ProcessHelper.h"
|
#include "ProcessHelper.h"
|
||||||
|
#include "Exceptional.h"
|
||||||
|
#include <boost/static_assert.hpp>
|
||||||
|
|
||||||
#ifdef ASSIMP_BUILD_NO_OWN_ZLIB
|
#ifdef ASSIMP_BUILD_NO_OWN_ZLIB
|
||||||
# include <zlib.h>
|
# include <zlib.h>
|
||||||
|
|
|
@ -45,13 +45,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
* see assbin_chunks.h
|
* see assbin_chunks.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
|
||||||
#ifndef ASSIMP_BUILD_NO_ASSBIN_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_ASSBIN_IMPORTER
|
||||||
|
|
||||||
// internal headers
|
// internal headers
|
||||||
#include "AssbinLoader.h"
|
#include "AssbinLoader.h"
|
||||||
#include "assbin_chunks.h"
|
#include "assbin_chunks.h"
|
||||||
#include "MemoryIOWrapper.h"
|
#include "MemoryIOWrapper.h"
|
||||||
|
#include "../include/assimp/mesh.h"
|
||||||
|
#include "../include/assimp/anim.h"
|
||||||
|
#include "../include/assimp/scene.h"
|
||||||
|
#include <boost/static_assert.hpp>
|
||||||
|
|
||||||
#ifdef ASSIMP_BUILD_NO_OWN_ZLIB
|
#ifdef ASSIMP_BUILD_NO_OWN_ZLIB
|
||||||
# include <zlib.h>
|
# include <zlib.h>
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -48,6 +48,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "BaseImporter.h"
|
#include "BaseImporter.h"
|
||||||
#include "../include/assimp/types.h"
|
#include "../include/assimp/types.h"
|
||||||
|
|
||||||
|
struct aiMesh;
|
||||||
|
struct aiNode;
|
||||||
|
struct aiBone;
|
||||||
|
struct aiMaterial;
|
||||||
|
struct aiMaterialProperty;
|
||||||
|
struct aiNodeAnim;
|
||||||
|
struct aiAnimation;
|
||||||
|
struct aiTexture;
|
||||||
|
struct aiLight;
|
||||||
|
struct aiCamera;
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_ASSBIN_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_ASSBIN_IMPORTER
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
|
|
|
@ -42,13 +42,20 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
* @brief Implementation of the Plain-C API
|
* @brief Implementation of the Plain-C API
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
#include <assimp/cimport.h>
|
||||||
#include "../include/assimp/cimport.h"
|
#include <assimp/LogStream.hpp>
|
||||||
|
#include <assimp/DefaultLogger.hpp>
|
||||||
|
#include <assimp/Importer.hpp>
|
||||||
|
#include <assimp/importerdesc.h>
|
||||||
|
#include <assimp/scene.h>
|
||||||
|
|
||||||
#include "GenericProperty.h"
|
#include "GenericProperty.h"
|
||||||
#include "CInterfaceIOWrapper.h"
|
#include "CInterfaceIOWrapper.h"
|
||||||
#include "../include/assimp/importerdesc.h"
|
|
||||||
#include "Importer.h"
|
#include "Importer.h"
|
||||||
|
#include "Exceptional.h"
|
||||||
|
#include "ScenePrivate.h"
|
||||||
|
#include "BaseImporter.h"
|
||||||
|
#include <list>
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
#ifndef ASSIMP_BUILD_SINGLETHREADED
|
#ifndef ASSIMP_BUILD_SINGLETHREADED
|
||||||
|
@ -483,7 +490,7 @@ ASSIMP_API void aiSetImportPropertyInteger(aiPropertyStore* p, const char* szNam
|
||||||
{
|
{
|
||||||
ASSIMP_BEGIN_EXCEPTION_REGION();
|
ASSIMP_BEGIN_EXCEPTION_REGION();
|
||||||
PropertyMap* pp = reinterpret_cast<PropertyMap*>(p);
|
PropertyMap* pp = reinterpret_cast<PropertyMap*>(p);
|
||||||
SetGenericProperty<int>(pp->ints,szName,value,NULL);
|
SetGenericProperty<int>(pp->ints,szName,value);
|
||||||
ASSIMP_END_EXCEPTION_REGION(void);
|
ASSIMP_END_EXCEPTION_REGION(void);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -493,7 +500,7 @@ ASSIMP_API void aiSetImportPropertyFloat(aiPropertyStore* p, const char* szName,
|
||||||
{
|
{
|
||||||
ASSIMP_BEGIN_EXCEPTION_REGION();
|
ASSIMP_BEGIN_EXCEPTION_REGION();
|
||||||
PropertyMap* pp = reinterpret_cast<PropertyMap*>(p);
|
PropertyMap* pp = reinterpret_cast<PropertyMap*>(p);
|
||||||
SetGenericProperty<float>(pp->floats,szName,value,NULL);
|
SetGenericProperty<float>(pp->floats,szName,value);
|
||||||
ASSIMP_END_EXCEPTION_REGION(void);
|
ASSIMP_END_EXCEPTION_REGION(void);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -507,7 +514,7 @@ ASSIMP_API void aiSetImportPropertyString(aiPropertyStore* p, const char* szName
|
||||||
}
|
}
|
||||||
ASSIMP_BEGIN_EXCEPTION_REGION();
|
ASSIMP_BEGIN_EXCEPTION_REGION();
|
||||||
PropertyMap* pp = reinterpret_cast<PropertyMap*>(p);
|
PropertyMap* pp = reinterpret_cast<PropertyMap*>(p);
|
||||||
SetGenericProperty<std::string>(pp->strings,szName,std::string(st->C_Str()),NULL);
|
SetGenericProperty<std::string>(pp->strings,szName,std::string(st->C_Str()));
|
||||||
ASSIMP_END_EXCEPTION_REGION(void);
|
ASSIMP_END_EXCEPTION_REGION(void);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -521,7 +528,7 @@ ASSIMP_API void aiSetImportPropertyMatrix(aiPropertyStore* p, const char* szName
|
||||||
}
|
}
|
||||||
ASSIMP_BEGIN_EXCEPTION_REGION();
|
ASSIMP_BEGIN_EXCEPTION_REGION();
|
||||||
PropertyMap* pp = reinterpret_cast<PropertyMap*>(p);
|
PropertyMap* pp = reinterpret_cast<PropertyMap*>(p);
|
||||||
SetGenericProperty<aiMatrix4x4>(pp->matrices,szName,*mat,NULL);
|
SetGenericProperty<aiMatrix4x4>(pp->matrices,szName,*mat);
|
||||||
ASSIMP_END_EXCEPTION_REGION(void);
|
ASSIMP_END_EXCEPTION_REGION(void);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,11 +43,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
Assimp C export interface. See Exporter.cpp for some notes.
|
Assimp C export interface. See Exporter.cpp for some notes.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_EXPORT
|
#ifndef ASSIMP_BUILD_NO_EXPORT
|
||||||
#include "CInterfaceIOWrapper.h"
|
#include "CInterfaceIOWrapper.h"
|
||||||
#include "SceneCombiner.h"
|
#include "SceneCombiner.h"
|
||||||
|
#include "ScenePrivate.h"
|
||||||
|
#include "../include/assimp/Exporter.hpp"
|
||||||
|
|
||||||
using namespace Assimp;
|
using namespace Assimp;
|
||||||
|
|
||||||
|
|
162
code/AssimpPCH.h
162
code/AssimpPCH.h
|
@ -1,162 +0,0 @@
|
||||||
/*
|
|
||||||
---------------------------------------------------------------------------
|
|
||||||
Open Asset Import Library (assimp)
|
|
||||||
---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
Copyright (c) 2006-2012, assimp team
|
|
||||||
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use of this software in source and binary forms,
|
|
||||||
with or without modification, are permitted provided that the following
|
|
||||||
conditions are met:
|
|
||||||
|
|
||||||
* Redistributions of source code must retain the above
|
|
||||||
copyright notice, this list of conditions and the
|
|
||||||
following disclaimer.
|
|
||||||
|
|
||||||
* Redistributions in binary form must reproduce the above
|
|
||||||
copyright notice, this list of conditions and the
|
|
||||||
following disclaimer in the documentation and/or other
|
|
||||||
materials provided with the distribution.
|
|
||||||
|
|
||||||
* Neither the name of the assimp team, nor the names of its
|
|
||||||
contributors may be used to endorse or promote products
|
|
||||||
derived from this software without specific prior
|
|
||||||
written permission of the assimp team.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
---------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** @file AssimpPCH.h
|
|
||||||
* PCH master include. Every unit in Assimp has to include it.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef ASSIMP_PCH_INCLUDED
|
|
||||||
#define ASSIMP_PCH_INCLUDED
|
|
||||||
#define ASSIMP_INTERNAL_BUILD
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------------------
|
|
||||||
/* General compile config taken from defs.h. It is important that the user compiles
|
|
||||||
* using exactly the same settings in defs.h. Settings in AssimpPCH.h may differ,
|
|
||||||
* they won't affect the public API.
|
|
||||||
*/
|
|
||||||
#include "../include/assimp/defs.h"
|
|
||||||
|
|
||||||
// Include our stdint.h replacement header for MSVC, take the global header for gcc/mingw
|
|
||||||
#if defined( _MSC_VER) && (_MSC_VER < 1600)
|
|
||||||
# include "../include/assimp/Compiler/pstdint.h"
|
|
||||||
#else
|
|
||||||
# include <stdint.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Undefine the min/max macros defined by some platform headers (namely Windows.h) to
|
|
||||||
* avoid obvious conflicts with std::min() and std::max().
|
|
||||||
*/
|
|
||||||
#undef min
|
|
||||||
#undef max
|
|
||||||
|
|
||||||
/* Concatenate two tokens after evaluating them
|
|
||||||
*/
|
|
||||||
#define _AI_CONCAT(a,b) a ## b
|
|
||||||
#define AI_CONCAT(a,b) _AI_CONCAT(a,b)
|
|
||||||
|
|
||||||
/* Helper macro to set a pointer to NULL in debug builds
|
|
||||||
*/
|
|
||||||
#if (defined ASSIMP_BUILD_DEBUG)
|
|
||||||
# define AI_DEBUG_INVALIDATE_PTR(x) x = NULL;
|
|
||||||
#else
|
|
||||||
# define AI_DEBUG_INVALIDATE_PTR(x)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Beginning with MSVC8 some C string manipulation functions are mapped to their _safe_
|
|
||||||
* counterparts (e.g. _itoa_s). This avoids a lot of trouble with deprecation warnings.
|
|
||||||
*/
|
|
||||||
#if _MSC_VER >= 1400 && !(defined _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES)
|
|
||||||
# define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* size_t to unsigned int, possible loss of data. The compiler is right with his warning
|
|
||||||
* but this loss of data won't be a problem for us. So shut up, little boy.
|
|
||||||
*/
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
# pragma warning (disable : 4267)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------------------
|
|
||||||
/* Actually that's not required for MSVC. It is included somewhere in the deeper parts of
|
|
||||||
* the MSVC STL but it's necessary for proper build with STLport.
|
|
||||||
*/
|
|
||||||
#include <ctype.h>
|
|
||||||
|
|
||||||
// Runtime/STL headers
|
|
||||||
#include <vector>
|
|
||||||
#include <list>
|
|
||||||
#include <map>
|
|
||||||
#include <set>
|
|
||||||
#include <string>
|
|
||||||
#include <sstream>
|
|
||||||
#include <iomanip>
|
|
||||||
#include <cassert>
|
|
||||||
#include <stack>
|
|
||||||
#include <queue>
|
|
||||||
#include <iostream>
|
|
||||||
#include <algorithm>
|
|
||||||
#include <numeric>
|
|
||||||
#include <new>
|
|
||||||
#include <cstdio>
|
|
||||||
#include <limits.h>
|
|
||||||
#include <memory>
|
|
||||||
|
|
||||||
// Boost headers
|
|
||||||
#include <boost/pointer_cast.hpp>
|
|
||||||
#include <boost/scoped_ptr.hpp>
|
|
||||||
#include <boost/scoped_array.hpp>
|
|
||||||
#include <boost/shared_ptr.hpp>
|
|
||||||
#include <boost/shared_array.hpp>
|
|
||||||
#include <boost/make_shared.hpp>
|
|
||||||
#include <boost/format.hpp>
|
|
||||||
#include <boost/foreach.hpp>
|
|
||||||
#include <boost/static_assert.hpp>
|
|
||||||
#include <boost/lexical_cast.hpp>
|
|
||||||
|
|
||||||
// Public ASSIMP headers
|
|
||||||
#include "../include/assimp/DefaultLogger.hpp"
|
|
||||||
#include "../include/assimp/IOStream.hpp"
|
|
||||||
#include "../include/assimp/IOSystem.hpp"
|
|
||||||
#include "../include/assimp/scene.h"
|
|
||||||
#include "../include/assimp/importerdesc.h"
|
|
||||||
#include "../include/assimp/postprocess.h"
|
|
||||||
#include "../include/assimp/Importer.hpp"
|
|
||||||
#include "../include/assimp/Exporter.hpp"
|
|
||||||
|
|
||||||
// Internal utility headers
|
|
||||||
#include "BaseImporter.h"
|
|
||||||
#include "StringComparison.h"
|
|
||||||
#include "StreamReader.h"
|
|
||||||
#include "qnan.h"
|
|
||||||
#include "ScenePrivate.h"
|
|
||||||
|
|
||||||
|
|
||||||
// We need those constants, workaround for any platforms where nobody defined them yet
|
|
||||||
#if (!defined SIZE_MAX)
|
|
||||||
# define SIZE_MAX (~((size_t)0))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if (!defined UINT_MAX)
|
|
||||||
# define UINT_MAX (~((unsigned int)0))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#endif // !! ASSIMP_PCH_INCLUDED
|
|
|
@ -41,9 +41,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
* ASSXML exporter main code
|
* ASSXML exporter main code
|
||||||
*/
|
*/
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include "AssimpPCH.h"
|
|
||||||
#include "./../include/assimp/version.h"
|
#include "./../include/assimp/version.h"
|
||||||
#include "ProcessHelper.h"
|
#include "ProcessHelper.h"
|
||||||
|
#include "../include/assimp/IOStream.hpp"
|
||||||
|
#include "../include/assimp/IOSystem.hpp"
|
||||||
|
#include "../include/assimp/Exporter.hpp"
|
||||||
|
|
||||||
#ifdef ASSIMP_BUILD_NO_OWN_ZLIB
|
#ifdef ASSIMP_BUILD_NO_OWN_ZLIB
|
||||||
# include <zlib.h>
|
# include <zlib.h>
|
||||||
|
@ -52,6 +54,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_EXPORT
|
#ifndef ASSIMP_BUILD_NO_EXPORT
|
||||||
#ifndef ASSIMP_BUILD_NO_ASSXML_EXPORTER
|
#ifndef ASSIMP_BUILD_NO_ASSXML_EXPORTER
|
||||||
|
|
|
@ -43,13 +43,19 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
* @brief Implementation of the b3d importer class
|
* @brief Implementation of the b3d importer class
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
|
||||||
#ifndef ASSIMP_BUILD_NO_B3D_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_B3D_IMPORTER
|
||||||
|
|
||||||
// internal headers
|
// internal headers
|
||||||
#include "B3DImporter.h"
|
#include "B3DImporter.h"
|
||||||
#include "TextureTransform.h"
|
#include "TextureTransform.h"
|
||||||
#include "ConvertToLHProcess.h"
|
#include "ConvertToLHProcess.h"
|
||||||
|
#include <boost/scoped_ptr.hpp>
|
||||||
|
#include "../include/assimp/IOSystem.hpp"
|
||||||
|
#include "../include/assimp/anim.h"
|
||||||
|
#include "../include/assimp/scene.h"
|
||||||
|
#include "../include/assimp/DefaultLogger.hpp"
|
||||||
|
|
||||||
|
|
||||||
using namespace Assimp;
|
using namespace Assimp;
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
|
@ -47,10 +47,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "../include/assimp/types.h"
|
#include "../include/assimp/types.h"
|
||||||
#include "../include/assimp/mesh.h"
|
#include "../include/assimp/mesh.h"
|
||||||
#include "../include/assimp/material.h"
|
#include "../include/assimp/material.h"
|
||||||
|
#include "BaseImporter.h"
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
struct aiNodeAnim;
|
||||||
|
struct aiNode;
|
||||||
|
struct aiAnimation;
|
||||||
|
|
||||||
namespace Assimp{
|
namespace Assimp{
|
||||||
|
|
||||||
class B3DImporter : public BaseImporter{
|
class B3DImporter : public BaseImporter{
|
||||||
|
|
|
@ -40,12 +40,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
---------------------------------------------------------------------------
|
---------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
|
||||||
#ifndef ASSIMP_BUILD_NO_BVH_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_BVH_IMPORTER
|
||||||
|
|
||||||
#include "BVHLoader.h"
|
#include "BVHLoader.h"
|
||||||
#include "fast_atof.h"
|
#include "fast_atof.h"
|
||||||
#include "SkeletonMeshBuilder.h"
|
#include "SkeletonMeshBuilder.h"
|
||||||
|
#include "../include/assimp/Importer.hpp"
|
||||||
|
#include <boost/scoped_ptr.hpp>
|
||||||
|
#include <boost/format.hpp>
|
||||||
|
#include "../include/assimp/IOSystem.hpp"
|
||||||
|
#include "../include/assimp/scene.h"
|
||||||
|
|
||||||
using namespace Assimp;
|
using namespace Assimp;
|
||||||
|
|
||||||
|
|
|
@ -49,6 +49,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#include "BaseImporter.h"
|
#include "BaseImporter.h"
|
||||||
|
|
||||||
|
struct aiNode;
|
||||||
|
|
||||||
namespace Assimp
|
namespace Assimp
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
|
@ -43,11 +43,20 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
* @brief Implementation of BaseImporter
|
* @brief Implementation of BaseImporter
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
|
||||||
#include "BaseImporter.h"
|
#include "BaseImporter.h"
|
||||||
#include "FileSystemFilter.h"
|
#include "FileSystemFilter.h"
|
||||||
|
#include "Importer.h"
|
||||||
#include "Importer.h"
|
#include "ByteSwapper.h"
|
||||||
|
#include "../include/assimp/scene.h"
|
||||||
|
#include "../include/assimp/Importer.hpp"
|
||||||
|
#include "../include/assimp/postprocess.h"
|
||||||
|
#include <ios>
|
||||||
|
#include <list>
|
||||||
|
#include <boost/scoped_ptr.hpp>
|
||||||
|
#include <boost/scoped_array.hpp>
|
||||||
|
#include <sstream>
|
||||||
|
#include <cctype>
|
||||||
|
|
||||||
|
|
||||||
using namespace Assimp;
|
using namespace Assimp;
|
||||||
|
|
||||||
|
|
|
@ -47,19 +47,21 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include "./../include/assimp/types.h"
|
#include <set>
|
||||||
|
#include "../include/assimp/types.h"
|
||||||
|
#include "../include/assimp/ProgressHandler.hpp"
|
||||||
|
|
||||||
struct aiScene;
|
struct aiScene;
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
|
|
||||||
class IOSystem;
|
|
||||||
class Importer;
|
class Importer;
|
||||||
class BaseImporter;
|
class IOSystem;
|
||||||
class BaseProcess;
|
class BaseProcess;
|
||||||
class SharedPostProcessInfo;
|
class SharedPostProcessInfo;
|
||||||
class IOStream;
|
class IOStream;
|
||||||
|
|
||||||
|
|
||||||
// utility to do char4 to uint32 in a portable manner
|
// utility to do char4 to uint32 in a portable manner
|
||||||
#define AI_MAKE_MAGIC(string) ((uint32_t)((string[0] << 24) + \
|
#define AI_MAKE_MAGIC(string) ((uint32_t)((string[0] << 24) + \
|
||||||
(string[1] << 16) + (string[2] << 8) + string[3]))
|
(string[1] << 16) + (string[2] << 8) + string[3]))
|
||||||
|
|
|
@ -41,10 +41,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
/** @file Implementation of BaseProcess */
|
/** @file Implementation of BaseProcess */
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
|
||||||
#include "BaseImporter.h"
|
#include "BaseImporter.h"
|
||||||
#include "BaseProcess.h"
|
#include "BaseProcess.h"
|
||||||
|
#include "../include/assimp/DefaultLogger.hpp"
|
||||||
|
#include "../include/assimp/scene.h"
|
||||||
#include "Importer.h"
|
#include "Importer.h"
|
||||||
|
|
||||||
using namespace Assimp;
|
using namespace Assimp;
|
||||||
|
|
|
@ -45,9 +45,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
* Used for file formats which embed their textures into the model file.
|
* Used for file formats which embed their textures into the model file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
#include "Bitmap.h"
|
#include "Bitmap.h"
|
||||||
|
#include "../include/assimp/texture.h"
|
||||||
|
#include "../include/assimp/IOStream.hpp"
|
||||||
|
#include "ByteSwapper.h"
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
|
|
||||||
|
|
|
@ -48,8 +48,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#ifndef AI_BITMAP_H_INC
|
#ifndef AI_BITMAP_H_INC
|
||||||
#define AI_BITMAP_H_INC
|
#define AI_BITMAP_H_INC
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <cstddef>
|
||||||
|
struct aiTexture;
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
|
|
||||||
|
class IOStream;
|
||||||
class Bitmap {
|
class Bitmap {
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
|
@ -42,7 +42,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
* @brief Conversion of Blender's new BMesh stuff
|
* @brief Conversion of Blender's new BMesh stuff
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_BLEND_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_BLEND_IMPORTER
|
||||||
|
|
||||||
|
|
|
@ -42,12 +42,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
* @brief Implementation of the Blender `DNA`, that is its own
|
* @brief Implementation of the Blender `DNA`, that is its own
|
||||||
* serialized set of data structures.
|
* serialized set of data structures.
|
||||||
*/
|
*/
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_BLEND_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_BLEND_IMPORTER
|
||||||
#include "BlenderDNA.h"
|
#include "BlenderDNA.h"
|
||||||
#include "StreamReader.h"
|
#include "StreamReader.h"
|
||||||
#include "fast_atof.h"
|
#include "fast_atof.h"
|
||||||
|
#include <boost/foreach.hpp>
|
||||||
|
|
||||||
using namespace Assimp;
|
using namespace Assimp;
|
||||||
using namespace Assimp::Blender;
|
using namespace Assimp::Blender;
|
||||||
|
|
|
@ -47,6 +47,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#include "BaseImporter.h"
|
#include "BaseImporter.h"
|
||||||
#include "TinyFormatter.h"
|
#include "TinyFormatter.h"
|
||||||
|
#include "StreamReader.h"
|
||||||
|
#include "../include/assimp/DefaultLogger.hpp"
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <boost/shared_ptr.hpp>
|
||||||
|
|
||||||
|
|
||||||
// enable verbose log output. really verbose, so be careful.
|
// enable verbose log output. really verbose, so be careful.
|
||||||
#ifdef ASSIMP_BUILD_DEBUG
|
#ifdef ASSIMP_BUILD_DEBUG
|
||||||
|
|
|
@ -45,6 +45,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#ifndef INCLUDED_AI_BLEND_DNA_INL
|
#ifndef INCLUDED_AI_BLEND_DNA_INL
|
||||||
#define INCLUDED_AI_BLEND_DNA_INL
|
#define INCLUDED_AI_BLEND_DNA_INL
|
||||||
|
|
||||||
|
#include <boost/shared_ptr.hpp>
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
namespace Blender {
|
namespace Blender {
|
||||||
|
|
||||||
|
|
|
@ -49,6 +49,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "BlenderDNA.h"
|
#include "BlenderDNA.h"
|
||||||
#include "BlenderScene.h"
|
#include "BlenderScene.h"
|
||||||
#include "BlenderSceneGen.h"
|
#include "BlenderSceneGen.h"
|
||||||
|
#include <boost/foreach.hpp>
|
||||||
|
#include <deque>
|
||||||
|
#include "./../include/assimp/material.h"
|
||||||
|
|
||||||
|
struct aiTexture;
|
||||||
|
|
||||||
#define for_each(x,y) BOOST_FOREACH(x,y)
|
#define for_each(x,y) BOOST_FOREACH(x,y)
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
/** @file BlenderLoader.cpp
|
/** @file BlenderLoader.cpp
|
||||||
* @brief Implementation of the Blender3D importer class.
|
* @brief Implementation of the Blender3D importer class.
|
||||||
*/
|
*/
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
//#define ASSIMP_BUILD_NO_COMPRESSED_BLEND
|
//#define ASSIMP_BUILD_NO_COMPRESSED_BLEND
|
||||||
// Uncomment this to disable support for (gzip)compressed .BLEND files
|
// Uncomment this to disable support for (gzip)compressed .BLEND files
|
||||||
|
@ -52,9 +52,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "BlenderIntermediate.h"
|
#include "BlenderIntermediate.h"
|
||||||
#include "BlenderModifier.h"
|
#include "BlenderModifier.h"
|
||||||
#include "BlenderBMesh.h"
|
#include "BlenderBMesh.h"
|
||||||
|
#include "../include/assimp/scene.h"
|
||||||
|
#include "StringComparison.h"
|
||||||
|
|
||||||
#include "StreamReader.h"
|
#include "StreamReader.h"
|
||||||
#include "MemoryIOWrapper.h"
|
#include "MemoryIOWrapper.h"
|
||||||
|
#include <cctype>
|
||||||
|
|
||||||
|
|
||||||
// zlib is needed for compressed blend files
|
// zlib is needed for compressed blend files
|
||||||
#ifndef ASSIMP_BUILD_NO_COMPRESSED_BLEND
|
#ifndef ASSIMP_BUILD_NO_COMPRESSED_BLEND
|
||||||
|
|
|
@ -46,6 +46,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#include "BaseImporter.h"
|
#include "BaseImporter.h"
|
||||||
#include "LogAux.h"
|
#include "LogAux.h"
|
||||||
|
#include <boost/shared_ptr.hpp>
|
||||||
|
|
||||||
|
struct aiNode;
|
||||||
|
struct aiMesh;
|
||||||
|
struct aiLight;
|
||||||
|
struct aiCamera;
|
||||||
|
struct aiMaterial;
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
|
|
||||||
|
|
|
@ -41,12 +41,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
/** @file BlenderModifier.cpp
|
/** @file BlenderModifier.cpp
|
||||||
* @brief Implementation of some blender modifiers (i.e subdivision, mirror).
|
* @brief Implementation of some blender modifiers (i.e subdivision, mirror).
|
||||||
*/
|
*/
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_BLEND_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_BLEND_IMPORTER
|
||||||
#include "BlenderModifier.h"
|
#include "BlenderModifier.h"
|
||||||
#include "SceneCombiner.h"
|
#include "SceneCombiner.h"
|
||||||
#include "Subdivision.h"
|
#include "Subdivision.h"
|
||||||
|
#include "../include/assimp/scene.h"
|
||||||
|
#include <boost/scoped_ptr.hpp>
|
||||||
|
#include <boost/scoped_array.hpp>
|
||||||
|
#include <boost/pointer_cast.hpp>
|
||||||
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
/** @file BlenderScene.cpp
|
/** @file BlenderScene.cpp
|
||||||
* @brief MACHINE GENERATED BY ./scripts/BlenderImporter/genblenddna.py
|
* @brief MACHINE GENERATED BY ./scripts/BlenderImporter/genblenddna.py
|
||||||
*/
|
*/
|
||||||
#include "AssimpPCH.h"
|
|
||||||
#ifndef ASSIMP_BUILD_NO_BLEND_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_BLEND_IMPORTER
|
||||||
|
|
||||||
#include "BlenderDNA.h"
|
#include "BlenderDNA.h"
|
||||||
|
|
|
@ -44,6 +44,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#ifndef INCLUDED_AI_BLEND_SCENE_H
|
#ifndef INCLUDED_AI_BLEND_SCENE_H
|
||||||
#define INCLUDED_AI_BLEND_SCENE_H
|
#define INCLUDED_AI_BLEND_SCENE_H
|
||||||
|
|
||||||
|
#include "BlenderDNA.h"
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
namespace Blender {
|
namespace Blender {
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#ifndef INCLUDED_AI_BLEND_SCENEGEN_H
|
#ifndef INCLUDED_AI_BLEND_SCENEGEN_H
|
||||||
#define INCLUDED_AI_BLEND_SCENEGEN_H
|
#define INCLUDED_AI_BLEND_SCENEGEN_H
|
||||||
|
|
||||||
|
#include "BlenderDNA.h"
|
||||||
|
#include "BlenderScene.h"
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
namespace Blender {
|
namespace Blender {
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
* @brief A simple tessellation wrapper
|
* @brief A simple tessellation wrapper
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_BLEND_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_BLEND_IMPORTER
|
||||||
|
|
||||||
|
|
|
@ -45,6 +45,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#ifndef AI_BLOBIOSYSTEM_H_INCLUDED
|
#ifndef AI_BLOBIOSYSTEM_H_INCLUDED
|
||||||
#define AI_BLOBIOSYSTEM_H_INCLUDED
|
#define AI_BLOBIOSYSTEM_H_INCLUDED
|
||||||
|
|
||||||
|
#include "./../include/assimp/IOStream.hpp"
|
||||||
|
#include "./../include/assimp/cexport.h"
|
||||||
|
#include "./../include/assimp/IOSystem.hpp"
|
||||||
|
#include "./../include/assimp/DefaultLogger.hpp"
|
||||||
|
#include <boost/foreach.hpp>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <set>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
class BlobIOSystem;
|
class BlobIOSystem;
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
namespace boost
|
namespace boost
|
||||||
{
|
{
|
||||||
|
|
|
@ -6,6 +6,9 @@
|
||||||
|
|
||||||
// ------------------------------
|
// ------------------------------
|
||||||
// Internal stub
|
// Internal stub
|
||||||
|
|
||||||
|
#include <stddef.h> //NULL
|
||||||
|
#include <algorithm> //std::swap
|
||||||
namespace boost {
|
namespace boost {
|
||||||
namespace detail {
|
namespace detail {
|
||||||
class controller {
|
class controller {
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
|
|
||||||
//#include <boost/config.hpp>
|
//#include <boost/config.hpp>
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
|
#include <limits>
|
||||||
//#include <boost/limits.hpp>
|
//#include <boost/limits.hpp>
|
||||||
|
|
||||||
# ifdef BOOST_NO_STDC_NAMESPACE
|
# ifdef BOOST_NO_STDC_NAMESPACE
|
||||||
|
@ -69,4 +70,4 @@ class timer
|
||||||
|
|
||||||
} // namespace boost
|
} // namespace boost
|
||||||
|
|
||||||
#endif // BOOST_TIMER_HPP
|
#endif // BOOST_TIMER_HPP
|
||||||
|
|
|
@ -5,8 +5,8 @@ Open Asset Import Library (assimp)
|
||||||
Copyright (c) 2006-2012, assimp team
|
Copyright (c) 2006-2012, assimp team
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use of this software in source and binary forms,
|
Redistribution and use of this software in source and binary forms,
|
||||||
with or without modification, are permitted provided that the
|
with or without modification, are permitted provided that the
|
||||||
following conditions are met:
|
following conditions are met:
|
||||||
|
|
||||||
* Redistributions of source code must retain the above
|
* Redistributions of source code must retain the above
|
||||||
|
@ -23,37 +23,38 @@ following conditions are met:
|
||||||
derived from this software without specific prior
|
derived from this software without specific prior
|
||||||
written permission of the assimp team.
|
written permission of the assimp team.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @file Helper class tp perform various byte oder swappings
|
/** @file Helper class tp perform various byte oder swappings
|
||||||
(e.g. little to big endian) */
|
(e.g. little to big endian) */
|
||||||
#ifndef AI_BYTESWAP_H_INC
|
#ifndef AI_BYTESWAPPER_H_INC
|
||||||
#define AI_BYTESWAP_H_INC
|
#define AI_BYTESWAPPER_H_INC
|
||||||
|
|
||||||
#include "../include/assimp/ai_assert.h"
|
#include "../include/assimp/ai_assert.h"
|
||||||
#include "../include/assimp/types.h"
|
#include "../include/assimp/types.h"
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
#if _MSC_VER >= 1400
|
#if _MSC_VER >= 1400
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
// --------------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------------
|
||||||
/** Defines some useful byte order swap routines.
|
/** Defines some useful byte order swap routines.
|
||||||
*
|
*
|
||||||
* This is required to read big-endian model formats on little-endian machines,
|
* This is required to read big-endian model formats on little-endian machines,
|
||||||
* and vice versa. Direct use of this class is DEPRECATED. Use #StreamReader instead. */
|
* and vice versa. Direct use of this class is DEPRECATED. Use #StreamReader instead. */
|
||||||
// --------------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------------
|
||||||
|
@ -166,7 +167,7 @@ public:
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
//! Templatized ByteSwap
|
//! Templatized ByteSwap
|
||||||
//! \returns param tOut as swapped
|
//! \returns param tOut as swapped
|
||||||
template<typename Type>
|
template<typename Type>
|
||||||
static inline Type Swapped(Type tOut)
|
static inline Type Swapped(Type tOut)
|
||||||
{
|
{
|
||||||
return _swapper<Type,sizeof(Type)>()(tOut);
|
return _swapper<Type,sizeof(Type)>()(tOut);
|
||||||
|
@ -179,28 +180,28 @@ private:
|
||||||
|
|
||||||
template <typename T> struct ByteSwap::_swapper<T,2> {
|
template <typename T> struct ByteSwap::_swapper<T,2> {
|
||||||
T operator() (T tOut) {
|
T operator() (T tOut) {
|
||||||
Swap2(&tOut);
|
Swap2(&tOut);
|
||||||
return tOut;
|
return tOut;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename T> struct ByteSwap::_swapper<T,4> {
|
template <typename T> struct ByteSwap::_swapper<T,4> {
|
||||||
T operator() (T tOut) {
|
T operator() (T tOut) {
|
||||||
Swap4(&tOut);
|
Swap4(&tOut);
|
||||||
return tOut;
|
return tOut;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename T> struct ByteSwap::_swapper<T,8> {
|
template <typename T> struct ByteSwap::_swapper<T,8> {
|
||||||
T operator() (T tOut) {
|
T operator() (T tOut) {
|
||||||
Swap8(&tOut);
|
Swap8(&tOut);
|
||||||
return tOut;
|
return tOut;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// --------------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------------
|
||||||
// ByteSwap macros for BigEndian/LittleEndian support
|
// ByteSwap macros for BigEndian/LittleEndian support
|
||||||
// --------------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------------
|
||||||
#if (defined AI_BUILD_BIG_ENDIAN)
|
#if (defined AI_BUILD_BIG_ENDIAN)
|
||||||
# define AI_LE(t) (t)
|
# define AI_LE(t) (t)
|
||||||
|
@ -249,7 +250,7 @@ struct ByteSwapper {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
struct ByteSwapper<T,false> {
|
struct ByteSwapper<T,false> {
|
||||||
void operator() (T*) {
|
void operator() (T*) {
|
||||||
}
|
}
|
||||||
|
@ -271,7 +272,7 @@ struct Getter {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
template <bool SwapEndianess, typename T>
|
template <bool SwapEndianess, typename T>
|
||||||
struct Getter<SwapEndianess,T,false> {
|
struct Getter<SwapEndianess,T,false> {
|
||||||
|
|
||||||
void operator() (T* inout, bool /*le*/) {
|
void operator() (T* inout, bool /*le*/) {
|
||||||
|
@ -282,4 +283,4 @@ struct Getter<SwapEndianess,T,false> {
|
||||||
} // end Intern
|
} // end Intern
|
||||||
} // end Assimp
|
} // end Assimp
|
||||||
|
|
||||||
#endif //!! AI_BYTESWAP_H_INC
|
#endif //!! AI_BYTESWAPPER_H_INC
|
|
@ -41,7 +41,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
/** @file C4DImporter.cpp
|
/** @file C4DImporter.cpp
|
||||||
* @brief Implementation of the Cinema4D importer class.
|
* @brief Implementation of the Cinema4D importer class.
|
||||||
*/
|
*/
|
||||||
#include "AssimpPCH.h"
|
#ifndef ASSIMP_BUILD_NO_C4D_IMPORTER
|
||||||
|
|
||||||
// no #ifdefing here, Cinema4D support is carried out in a branch of assimp
|
// no #ifdefing here, Cinema4D support is carried out in a branch of assimp
|
||||||
// where it is turned on in the CMake settings.
|
// where it is turned on in the CMake settings.
|
||||||
|
@ -639,3 +639,6 @@ unsigned int C4DImporter::ResolveMaterial(PolygonObject* obj)
|
||||||
ai_assert((*it).second < mat_count);
|
ai_assert((*it).second < mat_count);
|
||||||
return (*it).second;
|
return (*it).second;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif // ASSIMP_BUILD_NO_C4D_IMPORTER
|
||||||
|
|
||||||
|
|
|
@ -48,6 +48,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "LogAux.h"
|
#include "LogAux.h"
|
||||||
|
|
||||||
#include <set>
|
#include <set>
|
||||||
|
struct aiNode;
|
||||||
|
struct aiMesh;
|
||||||
|
struct aiMaterial;
|
||||||
|
|
||||||
struct aiImporterDesc;
|
struct aiImporterDesc;
|
||||||
|
|
||||||
|
|
|
@ -45,6 +45,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#define AI_CIOSYSTEM_H_INCLUDED
|
#define AI_CIOSYSTEM_H_INCLUDED
|
||||||
|
|
||||||
#include "../include/assimp/cfileio.h"
|
#include "../include/assimp/cfileio.h"
|
||||||
|
#include "../include/assimp/IOStream.hpp"
|
||||||
|
#include "../include/assimp/IOSystem.hpp"
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
|
|
||||||
|
|
|
@ -98,7 +98,7 @@ SET( Common_SRCS
|
||||||
ScenePrivate.h
|
ScenePrivate.h
|
||||||
PostStepRegistry.cpp
|
PostStepRegistry.cpp
|
||||||
ImporterRegistry.cpp
|
ImporterRegistry.cpp
|
||||||
ByteSwap.h
|
ByteSwapper.h
|
||||||
DefaultProgressHandler.h
|
DefaultProgressHandler.h
|
||||||
DefaultIOStream.cpp
|
DefaultIOStream.cpp
|
||||||
DefaultIOStream.h
|
DefaultIOStream.h
|
||||||
|
@ -145,6 +145,7 @@ SET( Common_SRCS
|
||||||
Bitmap.cpp
|
Bitmap.cpp
|
||||||
Bitmap.h
|
Bitmap.h
|
||||||
XMLTools.h
|
XMLTools.h
|
||||||
|
Version.cpp
|
||||||
)
|
)
|
||||||
SOURCE_GROUP(Common FILES ${Common_SRCS})
|
SOURCE_GROUP(Common FILES ${Common_SRCS})
|
||||||
|
|
||||||
|
@ -745,10 +746,6 @@ SET( assimp_src
|
||||||
${PUBLIC_HEADERS}
|
${PUBLIC_HEADERS}
|
||||||
${COMPILER_HEADERS}
|
${COMPILER_HEADERS}
|
||||||
|
|
||||||
# Old precompiled header
|
|
||||||
# (removed because the precompiled header is not updated when visual studio switch configuration which leads to failed compilation.
|
|
||||||
# Moreover it's a drag to recompile assimp entirely each time a modification is made to one of the included header, which is definitely counter-productive.)
|
|
||||||
AssimpPCH.cpp
|
|
||||||
)
|
)
|
||||||
add_definitions( -DOPENDDLPARSER_BUILD )
|
add_definitions( -DOPENDDLPARSER_BUILD )
|
||||||
|
|
||||||
|
@ -761,8 +758,6 @@ IF (ASSIMP_BUILD_NONFREE_C4D_IMPORTER)
|
||||||
INCLUDE_DIRECTORIES(${C4D_INCLUDES})
|
INCLUDE_DIRECTORIES(${C4D_INCLUDES})
|
||||||
ENDIF (ASSIMP_BUILD_NONFREE_C4D_IMPORTER)
|
ENDIF (ASSIMP_BUILD_NONFREE_C4D_IMPORTER)
|
||||||
|
|
||||||
#ADD_MSVC_PRECOMPILED_HEADER("AssimpPCH.h" "AssimpPCH.cpp" assimp_src)
|
|
||||||
|
|
||||||
ADD_LIBRARY( assimp ${assimp_src} )
|
ADD_LIBRARY( assimp ${assimp_src} )
|
||||||
|
|
||||||
TARGET_LINK_LIBRARIES(assimp ${ZLIB_LIBRARIES} ${OPENDDL_PARSER_LIBRARIES} )
|
TARGET_LINK_LIBRARIES(assimp ${ZLIB_LIBRARIES} ${OPENDDL_PARSER_LIBRARIES} )
|
||||||
|
@ -796,7 +791,7 @@ if( MSVC )
|
||||||
else()
|
else()
|
||||||
set(MSVC_PREFIX "vc130")
|
set(MSVC_PREFIX "vc130")
|
||||||
endif()
|
endif()
|
||||||
set(LIBRARY_SUFFIX "${ASSIMP_LIBRARY_SUFFIX}-${MSVC_PREFIX}-mt" CACHE STRING "the suffix for the assimp windows library" FORCE)
|
set(LIBRARY_SUFFIX "${ASSIMP_LIBRARY_SUFFIX}-${MSVC_PREFIX}-mt" CACHE STRING "the suffix for the assimp windows library")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
SET_TARGET_PROPERTIES( assimp PROPERTIES
|
SET_TARGET_PROPERTIES( assimp PROPERTIES
|
||||||
|
|
|
@ -41,7 +41,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
/** @file COBLoader.cpp
|
/** @file COBLoader.cpp
|
||||||
* @brief Implementation of the TrueSpace COB/SCN importer class.
|
* @brief Implementation of the TrueSpace COB/SCN importer class.
|
||||||
*/
|
*/
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_COB_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_COB_IMPORTER
|
||||||
#include "COBLoader.h"
|
#include "COBLoader.h"
|
||||||
|
@ -52,7 +52,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "fast_atof.h"
|
#include "fast_atof.h"
|
||||||
|
|
||||||
#include "LineSplitter.h"
|
#include "LineSplitter.h"
|
||||||
#include "TinyFormatter.h"
|
#include "TinyFormatter.h"
|
||||||
|
#include <boost/scoped_ptr.hpp>
|
||||||
|
#include <boost/foreach.hpp>
|
||||||
|
#include "../include/assimp/IOSystem.hpp"
|
||||||
|
#include "../include/assimp/DefaultLogger.hpp"
|
||||||
|
#include "../include/assimp/scene.h"
|
||||||
|
|
||||||
|
|
||||||
using namespace Assimp;
|
using namespace Assimp;
|
||||||
using namespace Assimp::COB;
|
using namespace Assimp::COB;
|
||||||
|
@ -148,13 +154,17 @@ void COBImporter::InternReadFile( const std::string& pFile,
|
||||||
}
|
}
|
||||||
|
|
||||||
DefaultLogger::get()->info("File format tag: "+std::string(head+9,6));
|
DefaultLogger::get()->info("File format tag: "+std::string(head+9,6));
|
||||||
void (COBImporter::* load)(Scene&,StreamReaderLE*)= head[15]=='A'?&COBImporter::ReadAsciiFile:&COBImporter::ReadBinaryFile;
|
|
||||||
if (head[16]!='L') {
|
if (head[16]!='L') {
|
||||||
ThrowException("File is big-endian, which is not supported");
|
ThrowException("File is big-endian, which is not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
// load data into intermediate structures
|
// load data into intermediate structures
|
||||||
(this->*load)(scene,stream.get());
|
if (head[15]=='A') {
|
||||||
|
ReadAsciiFile(scene, stream.get());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ReadBinaryFile(scene, stream.get());
|
||||||
|
}
|
||||||
if(scene.nodes.empty()) {
|
if(scene.nodes.empty()) {
|
||||||
ThrowException("No nodes loaded");
|
ThrowException("No nodes loaded");
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,6 +45,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#define INCLUDED_AI_COB_LOADER_H
|
#define INCLUDED_AI_COB_LOADER_H
|
||||||
|
|
||||||
#include "BaseImporter.h"
|
#include "BaseImporter.h"
|
||||||
|
#include "StreamReader.h"
|
||||||
|
|
||||||
|
struct aiNode;
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
class LineSplitter;
|
class LineSplitter;
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#define INCLUDED_AI_COB_SCENE_H
|
#define INCLUDED_AI_COB_SCENE_H
|
||||||
|
|
||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
|
#include <deque>
|
||||||
|
|
||||||
#include "BaseImporter.h"
|
#include "BaseImporter.h"
|
||||||
|
#include "./../include/assimp/material.h"
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
namespace COB {
|
namespace COB {
|
||||||
|
|
|
@ -43,14 +43,21 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
* Implementation of the CSM importer class.
|
* Implementation of the CSM importer class.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_CSM_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_CSM_IMPORTER
|
||||||
|
|
||||||
#include "CSMLoader.h"
|
#include "CSMLoader.h"
|
||||||
#include "SkeletonMeshBuilder.h"
|
#include "SkeletonMeshBuilder.h"
|
||||||
#include "ParsingUtils.h"
|
#include "ParsingUtils.h"
|
||||||
#include "fast_atof.h"
|
#include "fast_atof.h"
|
||||||
|
#include "../include/assimp/Importer.hpp"
|
||||||
|
#include <boost/scoped_ptr.hpp>
|
||||||
|
#include "../include/assimp/IOSystem.hpp"
|
||||||
|
#include "../include/assimp/anim.h"
|
||||||
|
#include "../include/assimp/DefaultLogger.hpp"
|
||||||
|
#include "../include/assimp/scene.h"
|
||||||
|
|
||||||
|
|
||||||
using namespace Assimp;
|
using namespace Assimp;
|
||||||
|
|
||||||
|
|
|
@ -43,6 +43,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
#ifndef INCLUDED_AI_CSM_LOADER_H
|
#ifndef INCLUDED_AI_CSM_LOADER_H
|
||||||
#define INCLUDED_AI_CSM_LOADER_H
|
#define INCLUDED_AI_CSM_LOADER_H
|
||||||
|
|
||||||
|
#include "BaseImporter.h"
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
|
@ -43,12 +43,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
* tangents and bitangents for all imported meshes
|
* tangents and bitangents for all imported meshes
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
// internal headers
|
// internal headers
|
||||||
#include "CalcTangentsProcess.h"
|
#include "CalcTangentsProcess.h"
|
||||||
#include "ProcessHelper.h"
|
#include "ProcessHelper.h"
|
||||||
#include "TinyFormatter.h"
|
#include "TinyFormatter.h"
|
||||||
|
#include "qnan.h"
|
||||||
|
|
||||||
using namespace Assimp;
|
using namespace Assimp;
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_EXPORT
|
#ifndef ASSIMP_BUILD_NO_EXPORT
|
||||||
#ifndef ASSIMP_BUILD_NO_COLLADA_EXPORTER
|
#ifndef ASSIMP_BUILD_NO_COLLADA_EXPORTER
|
||||||
|
@ -46,9 +46,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#include "Bitmap.h"
|
#include "Bitmap.h"
|
||||||
#include "fast_atof.h"
|
#include "fast_atof.h"
|
||||||
#include "SceneCombiner.h"
|
#include "SceneCombiner.h"
|
||||||
#include "XMLTools.h"
|
#include "XMLTools.h"
|
||||||
|
#include "../include/assimp/IOSystem.hpp"
|
||||||
|
#include "../include/assimp/Exporter.hpp"
|
||||||
|
#include "../include/assimp/scene.h"
|
||||||
|
|
||||||
|
#include "Exceptional.h"
|
||||||
|
|
||||||
|
#include <boost/scoped_ptr.hpp>
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
#include <set>
|
#include <set>
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#define AI_COLLADAEXPORTER_H_INC
|
#define AI_COLLADAEXPORTER_H_INC
|
||||||
|
|
||||||
#include "../include/assimp/ai_assert.h"
|
#include "../include/assimp/ai_assert.h"
|
||||||
|
#include "../include/assimp/material.h"
|
||||||
|
#include "../include/assimp/mesh.h"
|
||||||
|
#include "../include/assimp/Exporter.hpp"
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
#include <vector>
|
||||||
|
#include <map>
|
||||||
|
#include <boost/lexical_cast.hpp>
|
||||||
|
|
||||||
struct aiScene;
|
struct aiScene;
|
||||||
struct aiNode;
|
struct aiNode;
|
||||||
|
|
|
@ -43,6 +43,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#ifndef AI_COLLADAHELPER_H_INC
|
#ifndef AI_COLLADAHELPER_H_INC
|
||||||
#define AI_COLLADAHELPER_H_INC
|
#define AI_COLLADAHELPER_H_INC
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <map>
|
||||||
|
#include <vector>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include "../include/assimp/types.h"
|
||||||
|
#include "../include/assimp/mesh.h"
|
||||||
|
#include "../include/assimp/material.h"
|
||||||
|
|
||||||
|
struct aiMaterial;
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
namespace Collada {
|
namespace Collada {
|
||||||
|
|
||||||
|
@ -503,6 +513,8 @@ struct Effect
|
||||||
// Scalar factory
|
// Scalar factory
|
||||||
float mShininess, mRefractIndex, mReflectivity;
|
float mShininess, mRefractIndex, mReflectivity;
|
||||||
float mTransparency;
|
float mTransparency;
|
||||||
|
bool mHasTransparency;
|
||||||
|
bool mRGBTransparency;
|
||||||
|
|
||||||
// local params referring to each other by their SID
|
// local params referring to each other by their SID
|
||||||
typedef std::map<std::string, Collada::EffectParam> ParamLibrary;
|
typedef std::map<std::string, Collada::EffectParam> ParamLibrary;
|
||||||
|
@ -523,7 +535,9 @@ struct Effect
|
||||||
, mShininess (10.0f)
|
, mShininess (10.0f)
|
||||||
, mRefractIndex (1.f)
|
, mRefractIndex (1.f)
|
||||||
, mReflectivity (1.f)
|
, mReflectivity (1.f)
|
||||||
, mTransparency (0.f)
|
, mTransparency (1.f)
|
||||||
|
, mHasTransparency (false)
|
||||||
|
, mRGBTransparency(false)
|
||||||
, mDoubleSided (false)
|
, mDoubleSided (false)
|
||||||
, mWireframe (false)
|
, mWireframe (false)
|
||||||
, mFaceted (false)
|
, mFaceted (false)
|
||||||
|
|
|
@ -41,18 +41,26 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
/** @file Implementation of the Collada loader */
|
/** @file Implementation of the Collada loader */
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
|
||||||
#ifndef ASSIMP_BUILD_NO_COLLADA_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_COLLADA_IMPORTER
|
||||||
|
|
||||||
#include "../include/assimp/anim.h"
|
#include "../include/assimp/anim.h"
|
||||||
|
#include "../include/assimp/scene.h"
|
||||||
#include "ColladaLoader.h"
|
#include "ColladaLoader.h"
|
||||||
#include "ColladaParser.h"
|
#include "ColladaParser.h"
|
||||||
|
|
||||||
#include "fast_atof.h"
|
#include "fast_atof.h"
|
||||||
#include "ParsingUtils.h"
|
#include "ParsingUtils.h"
|
||||||
#include "SkeletonMeshBuilder.h"
|
#include "SkeletonMeshBuilder.h"
|
||||||
|
#include "Defines.h"
|
||||||
|
|
||||||
|
#include "time.h"
|
||||||
|
#include <boost/foreach.hpp>
|
||||||
|
#include "../include/assimp/DefaultLogger.hpp"
|
||||||
|
#include "../include/assimp/Importer.hpp"
|
||||||
|
#include <numeric>
|
||||||
|
#include "Defines.h"
|
||||||
|
|
||||||
#include "time.h"
|
|
||||||
|
|
||||||
using namespace Assimp;
|
using namespace Assimp;
|
||||||
|
|
||||||
|
@ -109,6 +117,7 @@ void ColladaLoader::SetupProperties(const Importer* pImp)
|
||||||
{
|
{
|
||||||
noSkeletonMesh = pImp->GetPropertyInteger(AI_CONFIG_IMPORT_NO_SKELETON_MESHES,0) != 0;
|
noSkeletonMesh = pImp->GetPropertyInteger(AI_CONFIG_IMPORT_NO_SKELETON_MESHES,0) != 0;
|
||||||
ignoreUpDirection = pImp->GetPropertyInteger(AI_CONFIG_IMPORT_COLLADA_IGNORE_UP_DIRECTION,0) != 0;
|
ignoreUpDirection = pImp->GetPropertyInteger(AI_CONFIG_IMPORT_COLLADA_IGNORE_UP_DIRECTION,0) != 0;
|
||||||
|
invertTransparency = pImp->GetPropertyInteger(AI_CONFIG_IMPORT_COLLADA_INVERT_TRANSPARENCY,0) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1330,11 +1339,25 @@ void ColladaLoader::FillMaterials( const ColladaParser& pParser, aiScene* /*pSce
|
||||||
mat.AddProperty( &effect.mRefractIndex, 1, AI_MATKEY_REFRACTI);
|
mat.AddProperty( &effect.mRefractIndex, 1, AI_MATKEY_REFRACTI);
|
||||||
|
|
||||||
// transparency, a very hard one. seemingly not all files are following the
|
// transparency, a very hard one. seemingly not all files are following the
|
||||||
// specification here .. but we can trick.
|
// specification here (1.0 transparency => completly opaque)...
|
||||||
if (effect.mTransparency >= 0.f && effect.mTransparency < 1.f) {
|
// therefore, we let the opportunity for the user to manually invert
|
||||||
effect.mTransparency = 1.f- effect.mTransparency;
|
// the transparency if necessary and we add preliminary support for RGB_ZERO mode
|
||||||
mat.AddProperty( &effect.mTransparency, 1, AI_MATKEY_OPACITY );
|
if(effect.mTransparency >= 0.f && effect.mTransparency <= 1.f) {
|
||||||
mat.AddProperty( &effect.mTransparent, 1, AI_MATKEY_COLOR_TRANSPARENT );
|
// Trying some support for RGB_ZERO mode
|
||||||
|
if(effect.mRGBTransparency) {
|
||||||
|
effect.mTransparency = 1.f - effect.mTransparent.a;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Global option
|
||||||
|
if(invertTransparency) {
|
||||||
|
effect.mTransparency = 1.f - effect.mTransparency;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Is the material finally transparent ?
|
||||||
|
if (effect.mHasTransparency || effect.mTransparency < 1.f) {
|
||||||
|
mat.AddProperty( &effect.mTransparency, 1, AI_MATKEY_OPACITY );
|
||||||
|
mat.AddProperty( &effect.mTransparent, 1, AI_MATKEY_COLOR_TRANSPARENT );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// add textures, if given
|
// add textures, if given
|
||||||
|
|
|
@ -46,6 +46,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "BaseImporter.h"
|
#include "BaseImporter.h"
|
||||||
#include "ColladaParser.h"
|
#include "ColladaParser.h"
|
||||||
|
|
||||||
|
struct aiNode;
|
||||||
|
struct aiCamera;
|
||||||
|
struct aiLight;
|
||||||
|
struct aiTexture;
|
||||||
|
struct aiAnimation;
|
||||||
|
|
||||||
namespace Assimp
|
namespace Assimp
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -235,6 +241,7 @@ protected:
|
||||||
|
|
||||||
bool noSkeletonMesh;
|
bool noSkeletonMesh;
|
||||||
bool ignoreUpDirection;
|
bool ignoreUpDirection;
|
||||||
|
bool invertTransparency;
|
||||||
|
|
||||||
/** Used by FindNameForNode() to generate unique node names */
|
/** Used by FindNameForNode() to generate unique node names */
|
||||||
unsigned int mNodeNameCounter;
|
unsigned int mNodeNameCounter;
|
||||||
|
|
|
@ -43,12 +43,19 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
* @brief Implementation of the Collada parser helper
|
* @brief Implementation of the Collada parser helper
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
|
||||||
#ifndef ASSIMP_BUILD_NO_COLLADA_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_COLLADA_IMPORTER
|
||||||
|
|
||||||
|
#include <sstream>
|
||||||
#include "ColladaParser.h"
|
#include "ColladaParser.h"
|
||||||
#include "fast_atof.h"
|
#include "fast_atof.h"
|
||||||
#include "ParsingUtils.h"
|
#include "ParsingUtils.h"
|
||||||
|
#include <boost/scoped_ptr.hpp>
|
||||||
|
#include <boost/foreach.hpp>
|
||||||
|
#include "../include/assimp/DefaultLogger.hpp"
|
||||||
|
#include "../include/assimp/IOSystem.hpp"
|
||||||
|
#include "../include/assimp/light.h"
|
||||||
|
|
||||||
|
|
||||||
using namespace Assimp;
|
using namespace Assimp;
|
||||||
using namespace Assimp::Collada;
|
using namespace Assimp::Collada;
|
||||||
|
@ -1224,6 +1231,14 @@ void ColladaParser::ReadEffectProfileCommon( Collada::Effect& pEffect)
|
||||||
ReadEffectColor( pEffect.mReflective, pEffect.mTexReflective);
|
ReadEffectColor( pEffect.mReflective, pEffect.mTexReflective);
|
||||||
}
|
}
|
||||||
else if( IsElement( "transparent")) {
|
else if( IsElement( "transparent")) {
|
||||||
|
pEffect.mHasTransparency = true;
|
||||||
|
|
||||||
|
// In RGB_ZERO mode, the transparency is interpreted in reverse, go figure...
|
||||||
|
if(::strcmp(mReader->getAttributeValueSafe("opaque"), "RGB_ZERO") == 0) {
|
||||||
|
// TODO: handle RGB_ZERO mode completely
|
||||||
|
pEffect.mRGBTransparency = true;
|
||||||
|
}
|
||||||
|
|
||||||
ReadEffectColor( pEffect.mTransparent,pEffect.mTexTransparent);
|
ReadEffectColor( pEffect.mTransparent,pEffect.mTexTransparent);
|
||||||
}
|
}
|
||||||
else if( IsElement( "shininess"))
|
else if( IsElement( "shininess"))
|
||||||
|
@ -1981,12 +1996,12 @@ void ColladaParser::ReadIndexData( Mesh* pMesh)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef ASSIMP_BUILD_DEBUG
|
#ifdef ASSIMP_BUILD_DEBUG
|
||||||
if (primType != Prim_TriFans && primType != Prim_TriStrips) {
|
if (primType != Prim_TriFans && primType != Prim_TriStrips) {
|
||||||
ai_assert(actualPrimitives == numPrimitives);
|
ai_assert(actualPrimitives == numPrimitives);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// only when we're done reading all <p> tags (and thus know the final vertex count) can we commit the submesh
|
// only when we're done reading all <p> tags (and thus know the final vertex count) can we commit the submesh
|
||||||
subgroup.mNumFaces = actualPrimitives;
|
subgroup.mNumFaces = actualPrimitives;
|
||||||
|
|
|
@ -47,6 +47,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#include "irrXMLWrapper.h"
|
#include "irrXMLWrapper.h"
|
||||||
#include "ColladaHelper.h"
|
#include "ColladaHelper.h"
|
||||||
|
#include "../include/assimp/ai_assert.h"
|
||||||
|
#include <boost/format.hpp>
|
||||||
|
|
||||||
namespace Assimp
|
namespace Assimp
|
||||||
{
|
{
|
||||||
|
|
|
@ -41,9 +41,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
/** @file GenUVCoords step */
|
/** @file GenUVCoords step */
|
||||||
|
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
|
||||||
#include "ComputeUVMappingProcess.h"
|
#include "ComputeUVMappingProcess.h"
|
||||||
#include "ProcessHelper.h"
|
#include "ProcessHelper.h"
|
||||||
|
#include "Exceptional.h"
|
||||||
|
|
||||||
using namespace Assimp;
|
using namespace Assimp;
|
||||||
|
|
||||||
|
|
|
@ -45,8 +45,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#include "BaseProcess.h"
|
#include "BaseProcess.h"
|
||||||
#include "../include/assimp/mesh.h"
|
#include "../include/assimp/mesh.h"
|
||||||
|
#include "../include/assimp/material.h"
|
||||||
|
#include "../include/assimp/types.h"
|
||||||
|
|
||||||
class ComputeUVMappingTest;
|
class ComputeUVMappingTest;
|
||||||
|
|
||||||
namespace Assimp
|
namespace Assimp
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
|
@ -47,8 +47,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
* better location.
|
* better location.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
|
||||||
#include "ConvertToLHProcess.h"
|
#include "ConvertToLHProcess.h"
|
||||||
|
#include "../include/assimp/scene.h"
|
||||||
|
#include "../include/assimp/postprocess.h"
|
||||||
|
#include "../include/assimp/DefaultLogger.hpp"
|
||||||
|
|
||||||
using namespace Assimp;
|
using namespace Assimp;
|
||||||
|
|
||||||
|
|
|
@ -54,6 +54,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
struct aiMesh;
|
struct aiMesh;
|
||||||
struct aiNodeAnim;
|
struct aiNodeAnim;
|
||||||
|
struct aiNode;
|
||||||
|
struct aiMaterial;
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
|
|
||||||
|
|
|
@ -48,6 +48,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "LineSplitter.h"
|
#include "LineSplitter.h"
|
||||||
#include "TinyFormatter.h"
|
#include "TinyFormatter.h"
|
||||||
#include "StreamReader.h"
|
#include "StreamReader.h"
|
||||||
|
#include "fast_atof.h"
|
||||||
|
#include <vector>
|
||||||
|
#include "../include/assimp/DefaultLogger.hpp"
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
namespace DXF {
|
namespace DXF {
|
||||||
|
|
|
@ -43,7 +43,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
* @brief Implementation of the DXF importer class
|
* @brief Implementation of the DXF importer class
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
|
||||||
#ifndef ASSIMP_BUILD_NO_DXF_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_DXF_IMPORTER
|
||||||
|
|
||||||
#include "DXFLoader.h"
|
#include "DXFLoader.h"
|
||||||
|
@ -52,6 +52,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "fast_atof.h"
|
#include "fast_atof.h"
|
||||||
|
|
||||||
#include "DXFHelper.h"
|
#include "DXFHelper.h"
|
||||||
|
#include "../include/assimp/IOSystem.hpp"
|
||||||
|
#include "../include/assimp/scene.h"
|
||||||
|
#include <boost/foreach.hpp>
|
||||||
|
#include <numeric>
|
||||||
|
|
||||||
using namespace Assimp;
|
using namespace Assimp;
|
||||||
|
|
||||||
|
|
|
@ -41,11 +41,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
/// @file DeboneProcess.cpp
|
/// @file DeboneProcess.cpp
|
||||||
/** Implementation of the DeboneProcess post processing step */
|
/** Implementation of the DeboneProcess post processing step */
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
// internal headers of the post-processing framework
|
// internal headers of the post-processing framework
|
||||||
#include "ProcessHelper.h"
|
#include "ProcessHelper.h"
|
||||||
#include "DeboneProcess.h"
|
#include "DeboneProcess.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
|
||||||
using namespace Assimp;
|
using namespace Assimp;
|
||||||
|
|
|
@ -42,11 +42,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
* @brief Default File I/O implementation for #Importer
|
* @brief Default File I/O implementation for #Importer
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
#include "../include/assimp/ai_assert.h"
|
||||||
#include "DefaultIOStream.h"
|
#include "DefaultIOStream.h"
|
||||||
#include <sys/types.h>
|
#include <boost/static_assert.hpp>
|
||||||
#include <sys/stat.h>
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
|
||||||
using namespace Assimp;
|
using namespace Assimp;
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "../include/assimp/IOStream.hpp"
|
#include "../include/assimp/IOStream.hpp"
|
||||||
|
#include "../include/assimp/importerdesc.h"
|
||||||
|
#include "Defines.h"
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
|
|
||||||
|
|
|
@ -39,12 +39,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
---------------------------------------------------------------------------
|
---------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
/** @file Default implementation of IOSystem using the standard C file functions */
|
/** @file Default implementation of IOSystem using the standard C file functions */
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include "DefaultIOSystem.h"
|
#include "DefaultIOSystem.h"
|
||||||
#include "DefaultIOStream.h"
|
#include "DefaultIOStream.h"
|
||||||
|
#include "StringComparison.h"
|
||||||
|
|
||||||
|
#include "../include/assimp/DefaultLogger.hpp"
|
||||||
|
#include "../include/assimp/ai_assert.h"
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
|
||||||
#ifdef __unix__
|
#ifdef __unix__
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
|
|
|
@ -43,13 +43,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
* @brief Implementation of DefaultLogger (and Logger)
|
* @brief Implementation of DefaultLogger (and Logger)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
|
||||||
#include "DefaultIOSystem.h"
|
#include "DefaultIOSystem.h"
|
||||||
|
|
||||||
// Default log streams
|
// Default log streams
|
||||||
#include "Win32DebugLogStream.h"
|
#include "Win32DebugLogStream.h"
|
||||||
#include "StdOStreamLogStream.h"
|
#include "StdOStreamLogStream.h"
|
||||||
#include "FileLogStream.h"
|
#include "FileLogStream.h"
|
||||||
|
#include "../include/assimp/NullLogger.hpp"
|
||||||
|
#include "../include/assimp/DefaultLogger.hpp"
|
||||||
|
#include "../include/assimp/ai_assert.h"
|
||||||
|
#include <iostream>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_SINGLETHREADED
|
#ifndef ASSIMP_BUILD_SINGLETHREADED
|
||||||
# include <boost/thread/thread.hpp>
|
# include <boost/thread/thread.hpp>
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
/*
|
||||||
|
Open Asset Import Library (assimp)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
Copyright (c) 2006-2012, assimp team
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use of this software in source and binary forms,
|
||||||
|
with or without modification, are permitted provided that the
|
||||||
|
following conditions are met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above
|
||||||
|
copyright notice, this list of conditions and the
|
||||||
|
following disclaimer.
|
||||||
|
|
||||||
|
* Redistributions in binary form must reproduce the above
|
||||||
|
copyright notice, this list of conditions and the
|
||||||
|
following disclaimer in the documentation and/or other
|
||||||
|
materials provided with the distribution.
|
||||||
|
|
||||||
|
* Neither the name of the assimp team, nor the names of its
|
||||||
|
contributors may be used to endorse or promote products
|
||||||
|
derived from this software without specific prior
|
||||||
|
written permission of the assimp team.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
// We need those constants, workaround for any platforms where nobody defined them yet
|
||||||
|
#if (!defined SIZE_MAX)
|
||||||
|
# define SIZE_MAX (~((size_t)0))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (!defined UINT_MAX)
|
||||||
|
# define UINT_MAX (~((unsigned int)0))
|
||||||
|
#endif
|
||||||
|
|
|
@ -42,6 +42,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#define INCLUDED_EXCEPTIONAL_H
|
#define INCLUDED_EXCEPTIONAL_H
|
||||||
|
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
|
#include "DefaultIOStream.h"
|
||||||
using std::runtime_error;
|
using std::runtime_error;
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
|
|
|
@ -50,19 +50,25 @@ description strings.
|
||||||
Here we implement only the C++ interface (Assimp::Exporter).
|
Here we implement only the C++ interface (Assimp::Exporter).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_EXPORT
|
#ifndef ASSIMP_BUILD_NO_EXPORT
|
||||||
|
|
||||||
#include "DefaultIOSystem.h"
|
#include "DefaultIOSystem.h"
|
||||||
#include "BlobIOSystem.h"
|
#include "BlobIOSystem.h"
|
||||||
#include "SceneCombiner.h"
|
#include "SceneCombiner.h"
|
||||||
#include "BaseProcess.h"
|
#include "BaseProcess.h"
|
||||||
#include "Importer.h" // need this for GetPostProcessingStepInstanceList()
|
#include "Importer.h" // need this for GetPostProcessingStepInstanceList()
|
||||||
|
|
||||||
#include "JoinVerticesProcess.h"
|
#include "JoinVerticesProcess.h"
|
||||||
#include "MakeVerboseFormat.h"
|
#include "MakeVerboseFormat.h"
|
||||||
#include "ConvertToLHProcess.h"
|
#include "ConvertToLHProcess.h"
|
||||||
|
#include "Exceptional.h"
|
||||||
|
#include "ScenePrivate.h"
|
||||||
|
#include <boost/shared_ptr.hpp>
|
||||||
|
#include "../include/assimp/Exporter.hpp"
|
||||||
|
#include "../include/assimp/mesh.h"
|
||||||
|
#include "../include/assimp/postprocess.h"
|
||||||
|
#include "../include/assimp/scene.h"
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
|
|
||||||
|
@ -512,34 +518,30 @@ ExportProperties::ExportProperties(const ExportProperties &other)
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
// Set a configuration property
|
// Set a configuration property
|
||||||
void ExportProperties :: SetPropertyInteger(const char* szName, int iValue,
|
bool ExportProperties :: SetPropertyInteger(const char* szName, int iValue)
|
||||||
bool* bWasExisting /*= NULL*/)
|
|
||||||
{
|
{
|
||||||
SetGenericProperty<int>(mIntProperties, szName,iValue,bWasExisting);
|
return SetGenericProperty<int>(mIntProperties, szName,iValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
// Set a configuration property
|
// Set a configuration property
|
||||||
void ExportProperties :: SetPropertyFloat(const char* szName, float iValue,
|
bool ExportProperties :: SetPropertyFloat(const char* szName, float iValue)
|
||||||
bool* bWasExisting /*= NULL*/)
|
|
||||||
{
|
{
|
||||||
SetGenericProperty<float>(mFloatProperties, szName,iValue,bWasExisting);
|
return SetGenericProperty<float>(mFloatProperties, szName,iValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
// Set a configuration property
|
// Set a configuration property
|
||||||
void ExportProperties :: SetPropertyString(const char* szName, const std::string& value,
|
bool ExportProperties :: SetPropertyString(const char* szName, const std::string& value)
|
||||||
bool* bWasExisting /*= NULL*/)
|
|
||||||
{
|
{
|
||||||
SetGenericProperty<std::string>(mStringProperties, szName,value,bWasExisting);
|
return SetGenericProperty<std::string>(mStringProperties, szName,value);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
// Set a configuration property
|
// Set a configuration property
|
||||||
void ExportProperties :: SetPropertyMatrix(const char* szName, const aiMatrix4x4& value,
|
bool ExportProperties :: SetPropertyMatrix(const char* szName, const aiMatrix4x4& value)
|
||||||
bool* bWasExisting /*= NULL*/)
|
|
||||||
{
|
{
|
||||||
SetGenericProperty<aiMatrix4x4>(mMatrixProperties, szName,value,bWasExisting);
|
return SetGenericProperty<aiMatrix4x4>(mMatrixProperties, szName,value);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -42,7 +42,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
* @brief Assimp::FBX::AnimationCurve, Assimp::FBX::AnimationCurveNode,
|
* @brief Assimp::FBX::AnimationCurve, Assimp::FBX::AnimationCurveNode,
|
||||||
* Assimp::FBX::AnimationLayer, Assimp::FBX::AnimationStack
|
* Assimp::FBX::AnimationLayer, Assimp::FBX::AnimationStack
|
||||||
*/
|
*/
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER
|
||||||
|
|
||||||
|
@ -52,6 +51,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "FBXImportSettings.h"
|
#include "FBXImportSettings.h"
|
||||||
#include "FBXDocumentUtil.h"
|
#include "FBXDocumentUtil.h"
|
||||||
#include "FBXProperties.h"
|
#include "FBXProperties.h"
|
||||||
|
#include <boost/foreach.hpp>
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
namespace FBX {
|
namespace FBX {
|
||||||
|
|
|
@ -5,8 +5,8 @@ Open Asset Import Library (assimp)
|
||||||
Copyright (c) 2006-2012, assimp team
|
Copyright (c) 2006-2012, assimp team
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use of this software in source and binary forms,
|
Redistribution and use of this software in source and binary forms,
|
||||||
with or without modification, are permitted provided that the
|
with or without modification, are permitted provided that the
|
||||||
following conditions are met:
|
following conditions are met:
|
||||||
|
|
||||||
* Redistributions of source code must retain the above
|
* Redistributions of source code must retain the above
|
||||||
|
@ -23,16 +23,16 @@ following conditions are met:
|
||||||
derived from this software without specific prior
|
derived from this software without specific prior
|
||||||
written permission of the assimp team.
|
written permission of the assimp team.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
@ -42,12 +42,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
* we emit tokens so the parser needs almost no special handling
|
* we emit tokens so the parser needs almost no special handling
|
||||||
* for binary files.
|
* for binary files.
|
||||||
*/
|
*/
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER
|
||||||
|
|
||||||
#include "FBXTokenizer.h"
|
#include "FBXTokenizer.h"
|
||||||
#include "FBXUtil.h"
|
#include "FBXUtil.h"
|
||||||
|
#include "../include/assimp/defs.h"
|
||||||
|
#include <stdint.h>
|
||||||
|
#include "Exceptional.h"
|
||||||
|
#include "ByteSwapper.h"
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
namespace FBX {
|
namespace FBX {
|
||||||
|
@ -55,7 +58,7 @@ namespace FBX {
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
Token::Token(const char* sbegin, const char* send, TokenType type, unsigned int offset)
|
Token::Token(const char* sbegin, const char* send, TokenType type, unsigned int offset)
|
||||||
:
|
:
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
contents(sbegin, static_cast<size_t>(send-sbegin)),
|
contents(sbegin, static_cast<size_t>(send-sbegin)),
|
||||||
#endif
|
#endif
|
||||||
|
@ -105,7 +108,7 @@ uint32_t ReadWord(const char* input, const char*& cursor, const char* end)
|
||||||
{
|
{
|
||||||
if(Offset(cursor, end) < 4) {
|
if(Offset(cursor, end) < 4) {
|
||||||
TokenizeError("cannot ReadWord, out of bounds",input, cursor);
|
TokenizeError("cannot ReadWord, out of bounds",input, cursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t word = *reinterpret_cast<const uint32_t*>(cursor);
|
uint32_t word = *reinterpret_cast<const uint32_t*>(cursor);
|
||||||
AI_SWAP4(word);
|
AI_SWAP4(word);
|
||||||
|
@ -121,7 +124,7 @@ uint8_t ReadByte(const char* input, const char*& cursor, const char* end)
|
||||||
{
|
{
|
||||||
if(Offset(cursor, end) < 1) {
|
if(Offset(cursor, end) < 1) {
|
||||||
TokenizeError("cannot ReadByte, out of bounds",input, cursor);
|
TokenizeError("cannot ReadByte, out of bounds",input, cursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t word = *reinterpret_cast<const uint8_t*>(cursor);
|
uint8_t word = *reinterpret_cast<const uint8_t*>(cursor);
|
||||||
++cursor;
|
++cursor;
|
||||||
|
@ -131,14 +134,14 @@ uint8_t ReadByte(const char* input, const char*& cursor, const char* end)
|
||||||
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
unsigned int ReadString(const char*& sbegin_out, const char*& send_out, const char* input, const char*& cursor, const char* end,
|
unsigned int ReadString(const char*& sbegin_out, const char*& send_out, const char* input, const char*& cursor, const char* end,
|
||||||
bool long_length = false,
|
bool long_length = false,
|
||||||
bool allow_null = false)
|
bool allow_null = false)
|
||||||
{
|
{
|
||||||
const uint32_t len_len = long_length ? 4 : 1;
|
const uint32_t len_len = long_length ? 4 : 1;
|
||||||
if(Offset(cursor, end) < len_len) {
|
if(Offset(cursor, end) < len_len) {
|
||||||
TokenizeError("cannot ReadString, out of bounds reading length",input, cursor);
|
TokenizeError("cannot ReadString, out of bounds reading length",input, cursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
const uint32_t length = long_length ? ReadWord(input, cursor, end) : ReadByte(input, cursor, end);
|
const uint32_t length = long_length ? ReadWord(input, cursor, end) : ReadByte(input, cursor, end);
|
||||||
|
|
||||||
|
@ -169,7 +172,7 @@ void ReadData(const char*& sbegin_out, const char*& send_out, const char* input,
|
||||||
{
|
{
|
||||||
if(Offset(cursor, end) < 1) {
|
if(Offset(cursor, end) < 1) {
|
||||||
TokenizeError("cannot ReadData, out of bounds reading length",input, cursor);
|
TokenizeError("cannot ReadData, out of bounds reading length",input, cursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char type = *cursor;
|
const char type = *cursor;
|
||||||
sbegin_out = cursor++;
|
sbegin_out = cursor++;
|
||||||
|
@ -208,14 +211,14 @@ void ReadData(const char*& sbegin_out, const char*& send_out, const char* input,
|
||||||
// note: do not write cursor += ReadWord(...cursor) as this would be UB
|
// note: do not write cursor += ReadWord(...cursor) as this would be UB
|
||||||
|
|
||||||
// raw binary data
|
// raw binary data
|
||||||
case 'R':
|
case 'R':
|
||||||
{
|
{
|
||||||
const uint32_t length = ReadWord(input, cursor, end);
|
const uint32_t length = ReadWord(input, cursor, end);
|
||||||
cursor += length;
|
cursor += length;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 'b':
|
case 'b':
|
||||||
// TODO: what is the 'b' type code? Right now we just skip over it /
|
// TODO: what is the 'b' type code? Right now we just skip over it /
|
||||||
// take the full range we could get
|
// take the full range we could get
|
||||||
cursor = end;
|
cursor = end;
|
||||||
|
@ -226,7 +229,7 @@ void ReadData(const char*& sbegin_out, const char*& send_out, const char* input,
|
||||||
case 'd':
|
case 'd':
|
||||||
case 'l':
|
case 'l':
|
||||||
case 'i': {
|
case 'i': {
|
||||||
|
|
||||||
const uint32_t length = ReadWord(input, cursor, end);
|
const uint32_t length = ReadWord(input, cursor, end);
|
||||||
const uint32_t encoding = ReadWord(input, cursor, end);
|
const uint32_t encoding = ReadWord(input, cursor, end);
|
||||||
|
|
||||||
|
@ -256,7 +259,7 @@ void ReadData(const char*& sbegin_out, const char*& send_out, const char* input,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// zip/deflate algorithm (encoding==1)? take given length. anything else? die
|
// zip/deflate algorithm (encoding==1)? take given length. anything else? die
|
||||||
else if (encoding != 1) {
|
else if (encoding != 1) {
|
||||||
TokenizeError("cannot ReadData, unknown encoding",input, cursor);
|
TokenizeError("cannot ReadData, unknown encoding",input, cursor);
|
||||||
}
|
}
|
||||||
cursor += comp_len;
|
cursor += comp_len;
|
||||||
|
@ -276,7 +279,7 @@ void ReadData(const char*& sbegin_out, const char*& send_out, const char* input,
|
||||||
|
|
||||||
if(cursor > end) {
|
if(cursor > end) {
|
||||||
TokenizeError("cannot ReadData, the remaining size is too small for the data type: " + std::string(&type, 1),input, cursor);
|
TokenizeError("cannot ReadData, the remaining size is too small for the data type: " + std::string(&type, 1),input, cursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
// the type code is contained in the returned range
|
// the type code is contained in the returned range
|
||||||
send_out = cursor;
|
send_out = cursor;
|
||||||
|
@ -288,10 +291,10 @@ bool ReadScope(TokenList& output_tokens, const char* input, const char*& cursor,
|
||||||
{
|
{
|
||||||
// the first word contains the offset at which this block ends
|
// the first word contains the offset at which this block ends
|
||||||
const uint32_t end_offset = ReadWord(input, cursor, end);
|
const uint32_t end_offset = ReadWord(input, cursor, end);
|
||||||
|
|
||||||
// we may get 0 if reading reached the end of the file -
|
// we may get 0 if reading reached the end of the file -
|
||||||
// fbx files have a mysterious extra footer which I don't know
|
// fbx files have a mysterious extra footer which I don't know
|
||||||
// how to extract any information from, but at least it always
|
// how to extract any information from, but at least it always
|
||||||
// starts with a 0.
|
// starts with a 0.
|
||||||
if(!end_offset) {
|
if(!end_offset) {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -41,20 +41,23 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
/** @file FBXConverter.cpp
|
/** @file FBXConverter.cpp
|
||||||
* @brief Implementation of the FBX DOM -> aiScene converter
|
* @brief Implementation of the FBX DOM -> aiScene converter
|
||||||
*/
|
*/
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER
|
||||||
|
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <boost/tuple/tuple.hpp>
|
#include <boost/tuple/tuple.hpp>
|
||||||
|
#include <vector>
|
||||||
#include "FBXParser.h"
|
#include "FBXParser.h"
|
||||||
#include "FBXConverter.h"
|
#include "FBXConverter.h"
|
||||||
#include "FBXDocument.h"
|
#include "FBXDocument.h"
|
||||||
#include "FBXUtil.h"
|
#include "FBXUtil.h"
|
||||||
#include "FBXProperties.h"
|
#include "FBXProperties.h"
|
||||||
#include "FBXImporter.h"
|
#include "FBXImporter.h"
|
||||||
|
#include "../include/assimp/scene.h"
|
||||||
|
#include <boost/foreach.hpp>
|
||||||
|
#include <boost/scoped_array.hpp>
|
||||||
|
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
namespace FBX {
|
namespace FBX {
|
||||||
|
@ -1209,7 +1212,7 @@ private:
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
/** - if materialIndex == NO_MATERIAL_SEPARATION, materials are not taken into
|
/** - if materialIndex == NO_MATERIAL_SEPARATION, materials are not taken into
|
||||||
* account when determining which weights to include.
|
* account when determining which weights to include.
|
||||||
* - outputVertStartIndices is only used when a material index is specified, it gives for
|
* - outputVertStartIndices is only used when a material index is specified, it gives for
|
||||||
* each output vertex the DOM index it maps to. */
|
* each output vertex the DOM index it maps to. */
|
||||||
void ConvertWeights(aiMesh* out, const Model& model, const MeshGeometry& geo,
|
void ConvertWeights(aiMesh* out, const Model& model, const MeshGeometry& geo,
|
||||||
|
@ -1968,9 +1971,12 @@ private:
|
||||||
|
|
||||||
// strip AnimationStack:: prefix
|
// strip AnimationStack:: prefix
|
||||||
std::string name = st.Name();
|
std::string name = st.Name();
|
||||||
if(name.substr(0,16) == "AnimationStack::") {
|
if (name.substr(0, 16) == "AnimationStack::") {
|
||||||
name = name.substr(16);
|
name = name.substr(16);
|
||||||
}
|
}
|
||||||
|
else if (name.substr(0, 11) == "AnimStack::") {
|
||||||
|
name = name.substr(11);
|
||||||
|
}
|
||||||
|
|
||||||
anim->mName.Set(name);
|
anim->mName.Set(name);
|
||||||
|
|
||||||
|
@ -2014,12 +2020,18 @@ private:
|
||||||
double min_time = 1e10;
|
double min_time = 1e10;
|
||||||
double max_time = -1e10;
|
double max_time = -1e10;
|
||||||
|
|
||||||
|
int64_t start_time = st.LocalStart();
|
||||||
|
int64_t stop_time = st.LocalStop();
|
||||||
|
double start_timeF = CONVERT_FBX_TIME(start_time);
|
||||||
|
double stop_timeF = CONVERT_FBX_TIME(stop_time);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
BOOST_FOREACH(const NodeMap::value_type& kv, node_map) {
|
BOOST_FOREACH(const NodeMap::value_type& kv, node_map) {
|
||||||
GenerateNodeAnimations(node_anims,
|
GenerateNodeAnimations(node_anims,
|
||||||
kv.first,
|
kv.first,
|
||||||
kv.second,
|
kv.second,
|
||||||
layer_map,
|
layer_map,
|
||||||
|
start_time, stop_time,
|
||||||
max_time,
|
max_time,
|
||||||
min_time);
|
min_time);
|
||||||
}
|
}
|
||||||
|
@ -2043,9 +2055,27 @@ private:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//adjust relative timing for animation
|
||||||
|
{
|
||||||
|
double start_fps = start_timeF * anim_fps;
|
||||||
|
|
||||||
|
for (unsigned int c = 0; c < anim->mNumChannels; c++)
|
||||||
|
{
|
||||||
|
aiNodeAnim* channel = anim->mChannels[c];
|
||||||
|
for (uint32_t i = 0; i < channel->mNumPositionKeys; i++)
|
||||||
|
channel->mPositionKeys[i].mTime -= start_fps;
|
||||||
|
for (uint32_t i = 0; i < channel->mNumRotationKeys; i++)
|
||||||
|
channel->mRotationKeys[i].mTime -= start_fps;
|
||||||
|
for (uint32_t i = 0; i < channel->mNumScalingKeys; i++)
|
||||||
|
channel->mScalingKeys[i].mTime -= start_fps;
|
||||||
|
}
|
||||||
|
|
||||||
|
max_time -= min_time;
|
||||||
|
}
|
||||||
|
|
||||||
// for some mysterious reason, mDuration is simply the maximum key -- the
|
// for some mysterious reason, mDuration is simply the maximum key -- the
|
||||||
// validator always assumes animations to start at zero.
|
// validator always assumes animations to start at zero.
|
||||||
anim->mDuration = max_time /*- min_time */;
|
anim->mDuration = (stop_timeF - start_timeF) * anim_fps;
|
||||||
anim->mTicksPerSecond = anim_fps;
|
anim->mTicksPerSecond = anim_fps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2055,6 +2085,7 @@ private:
|
||||||
const std::string& fixed_name,
|
const std::string& fixed_name,
|
||||||
const std::vector<const AnimationCurveNode*>& curves,
|
const std::vector<const AnimationCurveNode*>& curves,
|
||||||
const LayerMap& layer_map,
|
const LayerMap& layer_map,
|
||||||
|
int64_t start, int64_t stop,
|
||||||
double& max_time,
|
double& max_time,
|
||||||
double& min_time)
|
double& min_time)
|
||||||
{
|
{
|
||||||
|
@ -2147,13 +2178,19 @@ private:
|
||||||
aiNodeAnim* const nd = GenerateSimpleNodeAnim(fixed_name, target, chain,
|
aiNodeAnim* const nd = GenerateSimpleNodeAnim(fixed_name, target, chain,
|
||||||
node_property_map.end(),
|
node_property_map.end(),
|
||||||
layer_map,
|
layer_map,
|
||||||
|
start, stop,
|
||||||
max_time,
|
max_time,
|
||||||
min_time,
|
min_time,
|
||||||
true // input is TRS order, assimp is SRT
|
true // input is TRS order, assimp is SRT
|
||||||
);
|
);
|
||||||
|
|
||||||
ai_assert(nd);
|
ai_assert(nd);
|
||||||
node_anims.push_back(nd);
|
if (nd->mNumPositionKeys == 0 && nd->mNumRotationKeys == 0 && nd->mNumScalingKeys == 0) {
|
||||||
|
delete nd;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
node_anims.push_back(nd);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2185,6 +2222,7 @@ private:
|
||||||
target,
|
target,
|
||||||
(*chain[i]).second,
|
(*chain[i]).second,
|
||||||
layer_map,
|
layer_map,
|
||||||
|
start, stop,
|
||||||
max_time,
|
max_time,
|
||||||
min_time);
|
min_time);
|
||||||
|
|
||||||
|
@ -2200,6 +2238,7 @@ private:
|
||||||
target,
|
target,
|
||||||
(*chain[i]).second,
|
(*chain[i]).second,
|
||||||
layer_map,
|
layer_map,
|
||||||
|
start, stop,
|
||||||
max_time,
|
max_time,
|
||||||
min_time);
|
min_time);
|
||||||
|
|
||||||
|
@ -2212,12 +2251,18 @@ private:
|
||||||
target,
|
target,
|
||||||
(*chain[i]).second,
|
(*chain[i]).second,
|
||||||
layer_map,
|
layer_map,
|
||||||
|
start, stop,
|
||||||
max_time,
|
max_time,
|
||||||
min_time,
|
min_time,
|
||||||
true);
|
true);
|
||||||
|
|
||||||
ai_assert(inv);
|
ai_assert(inv);
|
||||||
node_anims.push_back(inv);
|
if (inv->mNumPositionKeys == 0 && inv->mNumRotationKeys == 0 && inv->mNumScalingKeys == 0) {
|
||||||
|
delete inv;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
node_anims.push_back(inv);
|
||||||
|
}
|
||||||
|
|
||||||
ai_assert(TransformationComp_RotationPivotInverse > i);
|
ai_assert(TransformationComp_RotationPivotInverse > i);
|
||||||
flags |= bit << (TransformationComp_RotationPivotInverse - i);
|
flags |= bit << (TransformationComp_RotationPivotInverse - i);
|
||||||
|
@ -2230,12 +2275,18 @@ private:
|
||||||
target,
|
target,
|
||||||
(*chain[i]).second,
|
(*chain[i]).second,
|
||||||
layer_map,
|
layer_map,
|
||||||
|
start, stop,
|
||||||
max_time,
|
max_time,
|
||||||
min_time,
|
min_time,
|
||||||
true);
|
true);
|
||||||
|
|
||||||
ai_assert(inv);
|
ai_assert(inv);
|
||||||
node_anims.push_back(inv);
|
if (inv->mNumPositionKeys == 0 && inv->mNumRotationKeys == 0 && inv->mNumScalingKeys == 0) {
|
||||||
|
delete inv;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
node_anims.push_back(inv);
|
||||||
|
}
|
||||||
|
|
||||||
ai_assert(TransformationComp_RotationPivotInverse > i);
|
ai_assert(TransformationComp_RotationPivotInverse > i);
|
||||||
flags |= bit << (TransformationComp_RotationPivotInverse - i);
|
flags |= bit << (TransformationComp_RotationPivotInverse - i);
|
||||||
|
@ -2249,6 +2300,7 @@ private:
|
||||||
target,
|
target,
|
||||||
(*chain[i]).second,
|
(*chain[i]).second,
|
||||||
layer_map,
|
layer_map,
|
||||||
|
start, stop,
|
||||||
max_time,
|
max_time,
|
||||||
min_time);
|
min_time);
|
||||||
|
|
||||||
|
@ -2259,7 +2311,12 @@ private:
|
||||||
}
|
}
|
||||||
|
|
||||||
ai_assert(na);
|
ai_assert(na);
|
||||||
node_anims.push_back(na);
|
if (na->mNumPositionKeys == 0 && na->mNumRotationKeys == 0 && na->mNumScalingKeys == 0) {
|
||||||
|
delete na;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
node_anims.push_back(na);
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2320,13 +2377,14 @@ private:
|
||||||
const Model& target,
|
const Model& target,
|
||||||
const std::vector<const AnimationCurveNode*>& curves,
|
const std::vector<const AnimationCurveNode*>& curves,
|
||||||
const LayerMap& layer_map,
|
const LayerMap& layer_map,
|
||||||
|
int64_t start, int64_t stop,
|
||||||
double& max_time,
|
double& max_time,
|
||||||
double& min_time)
|
double& min_time)
|
||||||
{
|
{
|
||||||
ScopeGuard<aiNodeAnim> na(new aiNodeAnim());
|
ScopeGuard<aiNodeAnim> na(new aiNodeAnim());
|
||||||
na->mNodeName.Set(name);
|
na->mNodeName.Set(name);
|
||||||
|
|
||||||
ConvertRotationKeys(na, curves, layer_map, max_time,min_time, target.RotationOrder());
|
ConvertRotationKeys(na, curves, layer_map, start, stop, max_time, min_time, target.RotationOrder());
|
||||||
|
|
||||||
// dummy scaling key
|
// dummy scaling key
|
||||||
na->mScalingKeys = new aiVectorKey[1];
|
na->mScalingKeys = new aiVectorKey[1];
|
||||||
|
@ -2351,13 +2409,14 @@ private:
|
||||||
const Model& /*target*/,
|
const Model& /*target*/,
|
||||||
const std::vector<const AnimationCurveNode*>& curves,
|
const std::vector<const AnimationCurveNode*>& curves,
|
||||||
const LayerMap& layer_map,
|
const LayerMap& layer_map,
|
||||||
|
int64_t start, int64_t stop,
|
||||||
double& max_time,
|
double& max_time,
|
||||||
double& min_time)
|
double& min_time)
|
||||||
{
|
{
|
||||||
ScopeGuard<aiNodeAnim> na(new aiNodeAnim());
|
ScopeGuard<aiNodeAnim> na(new aiNodeAnim());
|
||||||
na->mNodeName.Set(name);
|
na->mNodeName.Set(name);
|
||||||
|
|
||||||
ConvertScaleKeys(na, curves, layer_map, max_time,min_time);
|
ConvertScaleKeys(na, curves, layer_map, start, stop, max_time, min_time);
|
||||||
|
|
||||||
// dummy rotation key
|
// dummy rotation key
|
||||||
na->mRotationKeys = new aiQuatKey[1];
|
na->mRotationKeys = new aiQuatKey[1];
|
||||||
|
@ -2382,6 +2441,7 @@ private:
|
||||||
const Model& /*target*/,
|
const Model& /*target*/,
|
||||||
const std::vector<const AnimationCurveNode*>& curves,
|
const std::vector<const AnimationCurveNode*>& curves,
|
||||||
const LayerMap& layer_map,
|
const LayerMap& layer_map,
|
||||||
|
int64_t start, int64_t stop,
|
||||||
double& max_time,
|
double& max_time,
|
||||||
double& min_time,
|
double& min_time,
|
||||||
bool inverse = false)
|
bool inverse = false)
|
||||||
|
@ -2389,7 +2449,7 @@ private:
|
||||||
ScopeGuard<aiNodeAnim> na(new aiNodeAnim());
|
ScopeGuard<aiNodeAnim> na(new aiNodeAnim());
|
||||||
na->mNodeName.Set(name);
|
na->mNodeName.Set(name);
|
||||||
|
|
||||||
ConvertTranslationKeys(na, curves, layer_map, max_time,min_time);
|
ConvertTranslationKeys(na, curves, layer_map, start, stop, max_time, min_time);
|
||||||
|
|
||||||
if (inverse) {
|
if (inverse) {
|
||||||
for (unsigned int i = 0; i < na->mNumPositionKeys; ++i) {
|
for (unsigned int i = 0; i < na->mNumPositionKeys; ++i) {
|
||||||
|
@ -2422,6 +2482,7 @@ private:
|
||||||
NodeMap::const_iterator chain[TransformationComp_MAXIMUM],
|
NodeMap::const_iterator chain[TransformationComp_MAXIMUM],
|
||||||
NodeMap::const_iterator iter_end,
|
NodeMap::const_iterator iter_end,
|
||||||
const LayerMap& layer_map,
|
const LayerMap& layer_map,
|
||||||
|
int64_t start, int64_t stop,
|
||||||
double& max_time,
|
double& max_time,
|
||||||
double& min_time,
|
double& min_time,
|
||||||
bool reverse_order = false)
|
bool reverse_order = false)
|
||||||
|
@ -2443,21 +2504,21 @@ private:
|
||||||
KeyFrameListList rotation;
|
KeyFrameListList rotation;
|
||||||
|
|
||||||
if(chain[TransformationComp_Scaling] != iter_end) {
|
if(chain[TransformationComp_Scaling] != iter_end) {
|
||||||
scaling = GetKeyframeList((*chain[TransformationComp_Scaling]).second);
|
scaling = GetKeyframeList((*chain[TransformationComp_Scaling]).second, start, stop);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
def_scale = PropertyGet(props,"Lcl Scaling",aiVector3D(1.f,1.f,1.f));
|
def_scale = PropertyGet(props,"Lcl Scaling",aiVector3D(1.f,1.f,1.f));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(chain[TransformationComp_Translation] != iter_end) {
|
if(chain[TransformationComp_Translation] != iter_end) {
|
||||||
translation = GetKeyframeList((*chain[TransformationComp_Translation]).second);
|
translation = GetKeyframeList((*chain[TransformationComp_Translation]).second, start, stop);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
def_translate = PropertyGet(props,"Lcl Translation",aiVector3D(0.f,0.f,0.f));
|
def_translate = PropertyGet(props,"Lcl Translation",aiVector3D(0.f,0.f,0.f));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(chain[TransformationComp_Rotation] != iter_end) {
|
if(chain[TransformationComp_Rotation] != iter_end) {
|
||||||
rotation = GetKeyframeList((*chain[TransformationComp_Rotation]).second);
|
rotation = GetKeyframeList((*chain[TransformationComp_Rotation]).second, start, stop);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
def_rot = EulerToQuaternion(PropertyGet(props,"Lcl Rotation",aiVector3D(0.f,0.f,0.f)),
|
def_rot = EulerToQuaternion(PropertyGet(props,"Lcl Rotation",aiVector3D(0.f,0.f,0.f)),
|
||||||
|
@ -2475,17 +2536,20 @@ private:
|
||||||
aiVectorKey* out_scale = new aiVectorKey[times.size()];
|
aiVectorKey* out_scale = new aiVectorKey[times.size()];
|
||||||
aiVectorKey* out_translation = new aiVectorKey[times.size()];
|
aiVectorKey* out_translation = new aiVectorKey[times.size()];
|
||||||
|
|
||||||
ConvertTransformOrder_TRStoSRT(out_quat, out_scale, out_translation,
|
if (times.size())
|
||||||
scaling,
|
{
|
||||||
translation,
|
ConvertTransformOrder_TRStoSRT(out_quat, out_scale, out_translation,
|
||||||
rotation,
|
scaling,
|
||||||
times,
|
translation,
|
||||||
max_time,
|
rotation,
|
||||||
min_time,
|
times,
|
||||||
target.RotationOrder(),
|
max_time,
|
||||||
def_scale,
|
min_time,
|
||||||
def_translate,
|
target.RotationOrder(),
|
||||||
def_rot);
|
def_scale,
|
||||||
|
def_translate,
|
||||||
|
def_rot);
|
||||||
|
}
|
||||||
|
|
||||||
// XXX remove duplicates / redundant keys which this operation did
|
// XXX remove duplicates / redundant keys which this operation did
|
||||||
// likely produce if not all three channels were equally dense.
|
// likely produce if not all three channels were equally dense.
|
||||||
|
@ -2507,6 +2571,7 @@ private:
|
||||||
if(chain[TransformationComp_Scaling] != iter_end) {
|
if(chain[TransformationComp_Scaling] != iter_end) {
|
||||||
ConvertScaleKeys(na, (*chain[TransformationComp_Scaling]).second,
|
ConvertScaleKeys(na, (*chain[TransformationComp_Scaling]).second,
|
||||||
layer_map,
|
layer_map,
|
||||||
|
start, stop,
|
||||||
max_time,
|
max_time,
|
||||||
min_time);
|
min_time);
|
||||||
}
|
}
|
||||||
|
@ -2522,6 +2587,7 @@ private:
|
||||||
if(chain[TransformationComp_Rotation] != iter_end) {
|
if(chain[TransformationComp_Rotation] != iter_end) {
|
||||||
ConvertRotationKeys(na, (*chain[TransformationComp_Rotation]).second,
|
ConvertRotationKeys(na, (*chain[TransformationComp_Rotation]).second,
|
||||||
layer_map,
|
layer_map,
|
||||||
|
start, stop,
|
||||||
max_time,
|
max_time,
|
||||||
min_time,
|
min_time,
|
||||||
target.RotationOrder());
|
target.RotationOrder());
|
||||||
|
@ -2539,6 +2605,7 @@ private:
|
||||||
if(chain[TransformationComp_Translation] != iter_end) {
|
if(chain[TransformationComp_Translation] != iter_end) {
|
||||||
ConvertTranslationKeys(na, (*chain[TransformationComp_Translation]).second,
|
ConvertTranslationKeys(na, (*chain[TransformationComp_Translation]).second,
|
||||||
layer_map,
|
layer_map,
|
||||||
|
start, stop,
|
||||||
max_time,
|
max_time,
|
||||||
min_time);
|
min_time);
|
||||||
}
|
}
|
||||||
|
@ -2558,17 +2625,21 @@ private:
|
||||||
|
|
||||||
|
|
||||||
// key (time), value, mapto (component index)
|
// key (time), value, mapto (component index)
|
||||||
typedef boost::tuple< const KeyTimeList*, const KeyValueList*, unsigned int > KeyFrameList;
|
typedef boost::tuple<boost::shared_ptr<KeyTimeList>, boost::shared_ptr<KeyValueList>, unsigned int > KeyFrameList;
|
||||||
typedef std::vector<KeyFrameList> KeyFrameListList;
|
typedef std::vector<KeyFrameList> KeyFrameListList;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
KeyFrameListList GetKeyframeList(const std::vector<const AnimationCurveNode*>& nodes)
|
KeyFrameListList GetKeyframeList(const std::vector<const AnimationCurveNode*>& nodes, int64_t start, int64_t stop)
|
||||||
{
|
{
|
||||||
KeyFrameListList inputs;
|
KeyFrameListList inputs;
|
||||||
inputs.reserve(nodes.size()*3);
|
inputs.reserve(nodes.size()*3);
|
||||||
|
|
||||||
|
//give some breathing room for rounding errors
|
||||||
|
int64_t adj_start = start - 10000;
|
||||||
|
int64_t adj_stop = stop + 10000;
|
||||||
|
|
||||||
BOOST_FOREACH(const AnimationCurveNode* node, nodes) {
|
BOOST_FOREACH(const AnimationCurveNode* node, nodes) {
|
||||||
ai_assert(node);
|
ai_assert(node);
|
||||||
|
|
||||||
|
@ -2593,7 +2664,23 @@ private:
|
||||||
const AnimationCurve* const curve = kv.second;
|
const AnimationCurve* const curve = kv.second;
|
||||||
ai_assert(curve->GetKeys().size() == curve->GetValues().size() && curve->GetKeys().size());
|
ai_assert(curve->GetKeys().size() == curve->GetValues().size() && curve->GetKeys().size());
|
||||||
|
|
||||||
inputs.push_back(boost::make_tuple(&curve->GetKeys(), &curve->GetValues(), mapto));
|
//get values within the start/stop time window
|
||||||
|
boost::shared_ptr<KeyTimeList> Keys(new KeyTimeList());
|
||||||
|
boost::shared_ptr<KeyValueList> Values(new KeyValueList());
|
||||||
|
const int count = curve->GetKeys().size();
|
||||||
|
Keys->reserve(count);
|
||||||
|
Values->reserve(count);
|
||||||
|
for (int n = 0; n < count; n++)
|
||||||
|
{
|
||||||
|
int64_t k = curve->GetKeys().at(n);
|
||||||
|
if (k >= adj_start && k <= adj_stop)
|
||||||
|
{
|
||||||
|
Keys->push_back(k);
|
||||||
|
Values->push_back(curve->GetValues().at(n));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
inputs.push_back(boost::make_tuple(Keys, Values, mapto));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return inputs; // pray for NRVO :-)
|
return inputs; // pray for NRVO :-)
|
||||||
|
@ -2623,7 +2710,7 @@ private:
|
||||||
const size_t count = inputs.size();
|
const size_t count = inputs.size();
|
||||||
while(true) {
|
while(true) {
|
||||||
|
|
||||||
uint64_t min_tick = std::numeric_limits<uint64_t>::max();
|
int64_t min_tick = std::numeric_limits<int64_t>::max();
|
||||||
for (size_t i = 0; i < count; ++i) {
|
for (size_t i = 0; i < count; ++i) {
|
||||||
const KeyFrameList& kfl = inputs[i];
|
const KeyFrameList& kfl = inputs[i];
|
||||||
|
|
||||||
|
@ -2632,7 +2719,7 @@ private:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (min_tick == std::numeric_limits<uint64_t>::max()) {
|
if (min_tick == std::numeric_limits<int64_t>::max()) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
keys.push_back(min_tick);
|
keys.push_back(min_tick);
|
||||||
|
@ -2832,6 +2919,7 @@ private:
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
void ConvertScaleKeys(aiNodeAnim* na, const std::vector<const AnimationCurveNode*>& nodes, const LayerMap& /*layers*/,
|
void ConvertScaleKeys(aiNodeAnim* na, const std::vector<const AnimationCurveNode*>& nodes, const LayerMap& /*layers*/,
|
||||||
|
int64_t start, int64_t stop,
|
||||||
double& maxTime,
|
double& maxTime,
|
||||||
double& minTime)
|
double& minTime)
|
||||||
{
|
{
|
||||||
|
@ -2841,36 +2929,40 @@ private:
|
||||||
// layers should be multiplied with each other). There is a FBX
|
// layers should be multiplied with each other). There is a FBX
|
||||||
// property in the layer to specify the behaviour, though.
|
// property in the layer to specify the behaviour, though.
|
||||||
|
|
||||||
const KeyFrameListList& inputs = GetKeyframeList(nodes);
|
const KeyFrameListList& inputs = GetKeyframeList(nodes, start, stop);
|
||||||
const KeyTimeList& keys = GetKeyTimeList(inputs);
|
const KeyTimeList& keys = GetKeyTimeList(inputs);
|
||||||
|
|
||||||
na->mNumScalingKeys = static_cast<unsigned int>(keys.size());
|
na->mNumScalingKeys = static_cast<unsigned int>(keys.size());
|
||||||
na->mScalingKeys = new aiVectorKey[keys.size()];
|
na->mScalingKeys = new aiVectorKey[keys.size()];
|
||||||
InterpolateKeys(na->mScalingKeys, keys, inputs, true, maxTime, minTime);
|
if (keys.size() > 0)
|
||||||
|
InterpolateKeys(na->mScalingKeys, keys, inputs, true, maxTime, minTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
void ConvertTranslationKeys(aiNodeAnim* na, const std::vector<const AnimationCurveNode*>& nodes,
|
void ConvertTranslationKeys(aiNodeAnim* na, const std::vector<const AnimationCurveNode*>& nodes,
|
||||||
const LayerMap& /*layers*/,
|
const LayerMap& /*layers*/,
|
||||||
|
int64_t start, int64_t stop,
|
||||||
double& maxTime,
|
double& maxTime,
|
||||||
double& minTime)
|
double& minTime)
|
||||||
{
|
{
|
||||||
ai_assert(nodes.size());
|
ai_assert(nodes.size());
|
||||||
|
|
||||||
// XXX see notes in ConvertScaleKeys()
|
// XXX see notes in ConvertScaleKeys()
|
||||||
const KeyFrameListList& inputs = GetKeyframeList(nodes);
|
const KeyFrameListList& inputs = GetKeyframeList(nodes, start, stop);
|
||||||
const KeyTimeList& keys = GetKeyTimeList(inputs);
|
const KeyTimeList& keys = GetKeyTimeList(inputs);
|
||||||
|
|
||||||
na->mNumPositionKeys = static_cast<unsigned int>(keys.size());
|
na->mNumPositionKeys = static_cast<unsigned int>(keys.size());
|
||||||
na->mPositionKeys = new aiVectorKey[keys.size()];
|
na->mPositionKeys = new aiVectorKey[keys.size()];
|
||||||
InterpolateKeys(na->mPositionKeys, keys, inputs, false, maxTime, minTime);
|
if (keys.size() > 0)
|
||||||
|
InterpolateKeys(na->mPositionKeys, keys, inputs, false, maxTime, minTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
void ConvertRotationKeys(aiNodeAnim* na, const std::vector<const AnimationCurveNode*>& nodes,
|
void ConvertRotationKeys(aiNodeAnim* na, const std::vector<const AnimationCurveNode*>& nodes,
|
||||||
const LayerMap& /*layers*/,
|
const LayerMap& /*layers*/,
|
||||||
|
int64_t start, int64_t stop,
|
||||||
double& maxTime,
|
double& maxTime,
|
||||||
double& minTime,
|
double& minTime,
|
||||||
Model::RotOrder order)
|
Model::RotOrder order)
|
||||||
|
@ -2878,12 +2970,13 @@ private:
|
||||||
ai_assert(nodes.size());
|
ai_assert(nodes.size());
|
||||||
|
|
||||||
// XXX see notes in ConvertScaleKeys()
|
// XXX see notes in ConvertScaleKeys()
|
||||||
const std::vector< KeyFrameList >& inputs = GetKeyframeList(nodes);
|
const std::vector< KeyFrameList >& inputs = GetKeyframeList(nodes, start, stop);
|
||||||
const KeyTimeList& keys = GetKeyTimeList(inputs);
|
const KeyTimeList& keys = GetKeyTimeList(inputs);
|
||||||
|
|
||||||
na->mNumRotationKeys = static_cast<unsigned int>(keys.size());
|
na->mNumRotationKeys = static_cast<unsigned int>(keys.size());
|
||||||
na->mRotationKeys = new aiQuatKey[keys.size()];
|
na->mRotationKeys = new aiQuatKey[keys.size()];
|
||||||
InterpolateKeys(na->mRotationKeys, keys, inputs, false, maxTime, minTime, order);
|
if (keys.size() > 0)
|
||||||
|
InterpolateKeys(na->mRotationKeys, keys, inputs, false, maxTime, minTime, order);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#ifndef INCLUDED_AI_FBX_CONVERTER_H
|
#ifndef INCLUDED_AI_FBX_CONVERTER_H
|
||||||
#define INCLUDED_AI_FBX_CONVERTER_H
|
#define INCLUDED_AI_FBX_CONVERTER_H
|
||||||
|
|
||||||
|
struct aiScene;
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
namespace FBX {
|
namespace FBX {
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
/** @file FBXNoteAttribute.cpp
|
/** @file FBXNoteAttribute.cpp
|
||||||
* @brief Assimp::FBX::NodeAttribute (and subclasses) implementation
|
* @brief Assimp::FBX::NodeAttribute (and subclasses) implementation
|
||||||
*/
|
*/
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER
|
||||||
|
|
||||||
|
@ -51,6 +50,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "FBXImportSettings.h"
|
#include "FBXImportSettings.h"
|
||||||
#include "FBXDocumentUtil.h"
|
#include "FBXDocumentUtil.h"
|
||||||
#include "FBXProperties.h"
|
#include "FBXProperties.h"
|
||||||
|
#include <boost/foreach.hpp>
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
namespace FBX {
|
namespace FBX {
|
||||||
|
|
|
@ -41,7 +41,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
/** @file FBXDocument.cpp
|
/** @file FBXDocument.cpp
|
||||||
* @brief Implementation of the FBX DOM classes
|
* @brief Implementation of the FBX DOM classes
|
||||||
*/
|
*/
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER
|
||||||
|
|
||||||
|
@ -54,6 +53,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "FBXImportSettings.h"
|
#include "FBXImportSettings.h"
|
||||||
#include "FBXDocumentUtil.h"
|
#include "FBXDocumentUtil.h"
|
||||||
#include "FBXProperties.h"
|
#include "FBXProperties.h"
|
||||||
|
#include <boost/foreach.hpp>
|
||||||
|
#include <boost/make_shared.hpp>
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
namespace FBX {
|
namespace FBX {
|
||||||
|
|
|
@ -47,8 +47,19 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <numeric>
|
||||||
|
#include <boost/scoped_ptr.hpp>
|
||||||
|
#include "../include/assimp/ai_assert.h"
|
||||||
|
#include "../include/assimp/vector3.h"
|
||||||
|
#include "../include/assimp/vector2.h"
|
||||||
|
#include "../include/assimp/color4.h"
|
||||||
|
#include "../include/assimp/mesh.h"
|
||||||
#include "FBXProperties.h"
|
#include "FBXProperties.h"
|
||||||
|
#include "FBXParser.h"
|
||||||
|
|
||||||
|
#define _AI_CONCAT(a,b) a ## b
|
||||||
|
#define AI_CONCAT(a,b) _AI_CONCAT(a,b)
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
namespace FBX {
|
namespace FBX {
|
||||||
|
@ -871,7 +882,7 @@ private:
|
||||||
std::vector<unsigned int> mappings;
|
std::vector<unsigned int> mappings;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef std::vector<uint64_t> KeyTimeList;
|
typedef std::vector<int64_t> KeyTimeList;
|
||||||
typedef std::vector<float> KeyValueList;
|
typedef std::vector<float> KeyValueList;
|
||||||
|
|
||||||
/** Represents a FBX animation curve (i.e. a 1-dimensional set of keyframes and values therefor) */
|
/** Represents a FBX animation curve (i.e. a 1-dimensional set of keyframes and values therefor) */
|
||||||
|
@ -1015,10 +1026,10 @@ public:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
fbx_simple_property(LocalStart, uint64_t, 0L)
|
fbx_simple_property(LocalStart, int64_t, 0L)
|
||||||
fbx_simple_property(LocalStop, uint64_t, 0L)
|
fbx_simple_property(LocalStop, int64_t, 0L)
|
||||||
fbx_simple_property(ReferenceStart, uint64_t, 0L)
|
fbx_simple_property(ReferenceStart, int64_t, 0L)
|
||||||
fbx_simple_property(ReferenceStop, uint64_t, 0L)
|
fbx_simple_property(ReferenceStop, int64_t, 0L)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
/** @file FBXDocumentUtil.cpp
|
/** @file FBXDocumentUtil.cpp
|
||||||
* @brief Implementation of the FBX DOM utility functions declared in FBXDocumentUtil.h
|
* @brief Implementation of the FBX DOM utility functions declared in FBXDocumentUtil.h
|
||||||
*/
|
*/
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER
|
||||||
|
|
||||||
|
@ -50,6 +49,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "FBXUtil.h"
|
#include "FBXUtil.h"
|
||||||
#include "FBXDocumentUtil.h"
|
#include "FBXDocumentUtil.h"
|
||||||
#include "FBXProperties.h"
|
#include "FBXProperties.h"
|
||||||
|
#include <boost/make_shared.hpp>
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
namespace FBX {
|
namespace FBX {
|
||||||
|
|
|
@ -44,6 +44,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#ifndef INCLUDED_AI_FBX_DOCUMENT_UTIL_H
|
#ifndef INCLUDED_AI_FBX_DOCUMENT_UTIL_H
|
||||||
#define INCLUDED_AI_FBX_DOCUMENT_UTIL_H
|
#define INCLUDED_AI_FBX_DOCUMENT_UTIL_H
|
||||||
|
|
||||||
|
#include "../include/assimp/defs.h"
|
||||||
|
#include <string>
|
||||||
|
#include <boost/shared_ptr.hpp>
|
||||||
|
#include "FBXDocument.h"
|
||||||
|
|
||||||
|
struct Token;
|
||||||
|
struct Element;
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
namespace FBX {
|
namespace FBX {
|
||||||
namespace Util {
|
namespace Util {
|
||||||
|
|
|
@ -41,7 +41,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
/** @file FBXImporter.cpp
|
/** @file FBXImporter.cpp
|
||||||
* @brief Implementation of the FBX importer.
|
* @brief Implementation of the FBX importer.
|
||||||
*/
|
*/
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER
|
||||||
|
|
||||||
|
@ -59,6 +58,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#include "StreamReader.h"
|
#include "StreamReader.h"
|
||||||
#include "MemoryIOWrapper.h"
|
#include "MemoryIOWrapper.h"
|
||||||
|
#include "../include/assimp/Importer.hpp"
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
template<> const std::string LogFunctions<FBXImporter>::log_prefix = "FBX: ";
|
template<> const std::string LogFunctions<FBXImporter>::log_prefix = "FBX: ";
|
||||||
|
|
|
@ -41,7 +41,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
/** @file FBXMaterial.cpp
|
/** @file FBXMaterial.cpp
|
||||||
* @brief Assimp::FBX::Material and Assimp::FBX::Texture implementation
|
* @brief Assimp::FBX::Material and Assimp::FBX::Texture implementation
|
||||||
*/
|
*/
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER
|
||||||
|
|
||||||
|
@ -51,6 +50,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "FBXImportSettings.h"
|
#include "FBXImportSettings.h"
|
||||||
#include "FBXDocumentUtil.h"
|
#include "FBXDocumentUtil.h"
|
||||||
#include "FBXProperties.h"
|
#include "FBXProperties.h"
|
||||||
|
#include <boost/foreach.hpp>
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
namespace FBX {
|
namespace FBX {
|
||||||
|
|
|
@ -41,7 +41,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
/** @file FBXMeshGeometry.cpp
|
/** @file FBXMeshGeometry.cpp
|
||||||
* @brief Assimp::FBX::MeshGeometry implementation
|
* @brief Assimp::FBX::MeshGeometry implementation
|
||||||
*/
|
*/
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER
|
||||||
|
|
||||||
|
@ -52,6 +51,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "FBXImporter.h"
|
#include "FBXImporter.h"
|
||||||
#include "FBXImportSettings.h"
|
#include "FBXImportSettings.h"
|
||||||
#include "FBXDocumentUtil.h"
|
#include "FBXDocumentUtil.h"
|
||||||
|
#include <boost/foreach.hpp>
|
||||||
|
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
|
|
|
@ -41,7 +41,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
/** @file FBXModel.cpp
|
/** @file FBXModel.cpp
|
||||||
* @brief Assimp::FBX::Model implementation
|
* @brief Assimp::FBX::Model implementation
|
||||||
*/
|
*/
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER
|
||||||
|
|
||||||
|
@ -51,6 +50,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "FBXImportSettings.h"
|
#include "FBXImportSettings.h"
|
||||||
#include "FBXDocumentUtil.h"
|
#include "FBXDocumentUtil.h"
|
||||||
#include "FBXProperties.h"
|
#include "FBXProperties.h"
|
||||||
|
#include <boost/foreach.hpp>
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
namespace FBX {
|
namespace FBX {
|
||||||
|
|
|
@ -41,7 +41,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
/** @file FBXNoteAttribute.cpp
|
/** @file FBXNoteAttribute.cpp
|
||||||
* @brief Assimp::FBX::NodeAttribute (and subclasses) implementation
|
* @brief Assimp::FBX::NodeAttribute (and subclasses) implementation
|
||||||
*/
|
*/
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,8 @@ Open Asset Import Library (assimp)
|
||||||
Copyright (c) 2006-2012, assimp team
|
Copyright (c) 2006-2012, assimp team
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use of this software in source and binary forms,
|
Redistribution and use of this software in source and binary forms,
|
||||||
with or without modification, are permitted provided that the
|
with or without modification, are permitted provided that the
|
||||||
following conditions are met:
|
following conditions are met:
|
||||||
|
|
||||||
* Redistributions of source code must retain the above
|
* Redistributions of source code must retain the above
|
||||||
|
@ -23,16 +23,16 @@ following conditions are met:
|
||||||
derived from this software without specific prior
|
derived from this software without specific prior
|
||||||
written permission of the assimp team.
|
written permission of the assimp team.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
@ -41,7 +41,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
/** @file FBXParser.cpp
|
/** @file FBXParser.cpp
|
||||||
* @brief Implementation of the FBX parser and the rudimentary DOM that we use
|
* @brief Implementation of the FBX parser and the rudimentary DOM that we use
|
||||||
*/
|
*/
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER
|
||||||
|
|
||||||
|
@ -59,6 +58,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#include "ParsingUtils.h"
|
#include "ParsingUtils.h"
|
||||||
#include "fast_atof.h"
|
#include "fast_atof.h"
|
||||||
|
#include <boost/foreach.hpp>
|
||||||
|
#include "ByteSwapper.h"
|
||||||
|
|
||||||
using namespace Assimp;
|
using namespace Assimp;
|
||||||
using namespace Assimp::FBX;
|
using namespace Assimp::FBX;
|
||||||
|
@ -188,7 +189,7 @@ Scope::Scope(Parser& parser,bool topLevel)
|
||||||
TokenPtr t = parser.CurrentToken();
|
TokenPtr t = parser.CurrentToken();
|
||||||
if (t->Type() != TokenType_OPEN_BRACKET) {
|
if (t->Type() != TokenType_OPEN_BRACKET) {
|
||||||
ParseError("expected open bracket",t);
|
ParseError("expected open bracket",t);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TokenPtr n = parser.AdvanceToNextToken();
|
TokenPtr n = parser.AdvanceToNextToken();
|
||||||
|
@ -383,7 +384,7 @@ float ParseTokenAsFloat(const Token& t, const char*& err_out)
|
||||||
}
|
}
|
||||||
|
|
||||||
// need to copy the input string to a temporary buffer
|
// need to copy the input string to a temporary buffer
|
||||||
// first - next in the fbx token stream comes ',',
|
// first - next in the fbx token stream comes ',',
|
||||||
// which fast_atof could interpret as decimal point.
|
// which fast_atof could interpret as decimal point.
|
||||||
#define MAX_FLOAT_LENGTH 31
|
#define MAX_FLOAT_LENGTH 31
|
||||||
char temp[MAX_FLOAT_LENGTH + 1];
|
char temp[MAX_FLOAT_LENGTH + 1];
|
||||||
|
@ -431,6 +432,43 @@ int ParseTokenAsInt(const Token& t, const char*& err_out)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
int64_t ParseTokenAsInt64(const Token& t, const char*& err_out)
|
||||||
|
{
|
||||||
|
err_out = NULL;
|
||||||
|
|
||||||
|
if (t.Type() != TokenType_DATA) {
|
||||||
|
err_out = "expected TOK_DATA token";
|
||||||
|
return 0L;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (t.IsBinary())
|
||||||
|
{
|
||||||
|
const char* data = t.begin();
|
||||||
|
if (data[0] != 'L') {
|
||||||
|
err_out = "failed to parse Int64, unexpected data type";
|
||||||
|
return 0L;
|
||||||
|
}
|
||||||
|
|
||||||
|
BE_NCONST int64_t id = SafeParse<int64_t>(data + 1, t.end());
|
||||||
|
AI_SWAP8(id);
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
// XXX: should use size_t here
|
||||||
|
unsigned int length = static_cast<unsigned int>(t.end() - t.begin());
|
||||||
|
ai_assert(length > 0);
|
||||||
|
|
||||||
|
const char* out;
|
||||||
|
const int64_t id = strtol10_64(t.begin(), &out, &length);
|
||||||
|
if (out > t.end()) {
|
||||||
|
err_out = "failed to parse Int64 (text)";
|
||||||
|
return 0L;
|
||||||
|
}
|
||||||
|
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
std::string ParseTokenAsString(const Token& t, const char*& err_out)
|
std::string ParseTokenAsString(const Token& t, const char*& err_out)
|
||||||
{
|
{
|
||||||
|
@ -477,7 +515,7 @@ namespace {
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
// read the type code and element count of a binary data array and stop there
|
// read the type code and element count of a binary data array and stop there
|
||||||
void ReadBinaryDataArrayHead(const char*& data, const char* end, char& type, uint32_t& count,
|
void ReadBinaryDataArrayHead(const char*& data, const char* end, char& type, uint32_t& count,
|
||||||
const Element& el)
|
const Element& el)
|
||||||
{
|
{
|
||||||
if (static_cast<size_t>(end-data) < 5) {
|
if (static_cast<size_t>(end-data) < 5) {
|
||||||
|
@ -498,8 +536,8 @@ void ReadBinaryDataArrayHead(const char*& data, const char* end, char& type, uin
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
// read binary data array, assume cursor points to the 'compression mode' field (i.e. behind the header)
|
// read binary data array, assume cursor points to the 'compression mode' field (i.e. behind the header)
|
||||||
void ReadBinaryDataArray(char type, uint32_t count, const char*& data, const char* end,
|
void ReadBinaryDataArray(char type, uint32_t count, const char*& data, const char* end,
|
||||||
std::vector<char>& buff,
|
std::vector<char>& buff,
|
||||||
const Element& /*el*/)
|
const Element& /*el*/)
|
||||||
{
|
{
|
||||||
BE_NCONST uint32_t encmode = SafeParse<uint32_t>(data, end);
|
BE_NCONST uint32_t encmode = SafeParse<uint32_t>(data, end);
|
||||||
|
@ -543,7 +581,7 @@ void ReadBinaryDataArray(char type, uint32_t count, const char*& data, const cha
|
||||||
else if(encmode == 1) {
|
else if(encmode == 1) {
|
||||||
// zlib/deflate, next comes ZIP head (0x78 0x01)
|
// zlib/deflate, next comes ZIP head (0x78 0x01)
|
||||||
// see http://www.ietf.org/rfc/rfc1950.txt
|
// see http://www.ietf.org/rfc/rfc1950.txt
|
||||||
|
|
||||||
z_stream zstream;
|
z_stream zstream;
|
||||||
zstream.opaque = Z_NULL;
|
zstream.opaque = Z_NULL;
|
||||||
zstream.zalloc = Z_NULL;
|
zstream.zalloc = Z_NULL;
|
||||||
|
@ -593,7 +631,7 @@ void ParseVectorDataArray(std::vector<aiVector3D>& out, const Element& el)
|
||||||
if(tok.empty()) {
|
if(tok.empty()) {
|
||||||
ParseError("unexpected empty element",&el);
|
ParseError("unexpected empty element",&el);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(tok[0]->IsBinary()) {
|
if(tok[0]->IsBinary()) {
|
||||||
const char* data = tok[0]->begin(), *end = tok[0]->end();
|
const char* data = tok[0]->begin(), *end = tok[0]->end();
|
||||||
|
|
||||||
|
@ -615,7 +653,7 @@ void ParseVectorDataArray(std::vector<aiVector3D>& out, const Element& el)
|
||||||
|
|
||||||
std::vector<char> buff;
|
std::vector<char> buff;
|
||||||
ReadBinaryDataArray(type, count, data, end, buff, el);
|
ReadBinaryDataArray(type, count, data, end, buff, el);
|
||||||
|
|
||||||
ai_assert(data == end);
|
ai_assert(data == end);
|
||||||
ai_assert(buff.size() == count * (type == 'd' ? 8 : 4));
|
ai_assert(buff.size() == count * (type == 'd' ? 8 : 4));
|
||||||
|
|
||||||
|
@ -1057,11 +1095,68 @@ void ParseVectorDataArray(std::vector<uint64_t>& out, const Element& el)
|
||||||
|
|
||||||
for (TokenList::const_iterator it = a.Tokens().begin(), end = a.Tokens().end(); it != end; ) {
|
for (TokenList::const_iterator it = a.Tokens().begin(), end = a.Tokens().end(); it != end; ) {
|
||||||
const uint64_t ival = ParseTokenAsID(**it++);
|
const uint64_t ival = ParseTokenAsID(**it++);
|
||||||
|
|
||||||
out.push_back(ival);
|
out.push_back(ival);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
// read an array of int64_ts
|
||||||
|
void ParseVectorDataArray(std::vector<int64_t>& out, const Element& el)
|
||||||
|
{
|
||||||
|
out.clear();
|
||||||
|
const TokenList& tok = el.Tokens();
|
||||||
|
if (tok.empty()) {
|
||||||
|
ParseError("unexpected empty element", &el);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tok[0]->IsBinary()) {
|
||||||
|
const char* data = tok[0]->begin(), *end = tok[0]->end();
|
||||||
|
|
||||||
|
char type;
|
||||||
|
uint32_t count;
|
||||||
|
ReadBinaryDataArrayHead(data, end, type, count, el);
|
||||||
|
|
||||||
|
if (!count) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type != 'l') {
|
||||||
|
ParseError("expected long array (binary)", &el);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<char> buff;
|
||||||
|
ReadBinaryDataArray(type, count, data, end, buff, el);
|
||||||
|
|
||||||
|
ai_assert(data == end);
|
||||||
|
ai_assert(buff.size() == count * 8);
|
||||||
|
|
||||||
|
out.reserve(count);
|
||||||
|
|
||||||
|
const int64_t* ip = reinterpret_cast<const int64_t*>(&buff[0]);
|
||||||
|
for (unsigned int i = 0; i < count; ++i, ++ip) {
|
||||||
|
BE_NCONST int64_t val = *ip;
|
||||||
|
AI_SWAP8(val);
|
||||||
|
out.push_back(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const size_t dim = ParseTokenAsDim(*tok[0]);
|
||||||
|
|
||||||
|
// see notes in ParseVectorDataArray()
|
||||||
|
out.reserve(dim);
|
||||||
|
|
||||||
|
const Scope& scope = GetRequiredScope(el);
|
||||||
|
const Element& a = GetRequiredElement(scope, "a", &el);
|
||||||
|
|
||||||
|
for (TokenList::const_iterator it = a.Tokens().begin(), end = a.Tokens().end(); it != end;) {
|
||||||
|
const int64_t ival = ParseTokenAsInt64(**it++);
|
||||||
|
|
||||||
|
out.push_back(ival);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
aiMatrix4x4 ReadMatrix(const Element& element)
|
aiMatrix4x4 ReadMatrix(const Element& element)
|
||||||
|
@ -1116,7 +1211,7 @@ std::string ParseTokenAsString(const Token& t)
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
// extract a required element from a scope, abort if the element cannot be found
|
// extract a required element from a scope, abort if the element cannot be found
|
||||||
const Element& GetRequiredElement(const Scope& sc, const std::string& index, const Element* element /*= NULL*/)
|
const Element& GetRequiredElement(const Scope& sc, const std::string& index, const Element* element /*= NULL*/)
|
||||||
{
|
{
|
||||||
const Element* el = sc[index];
|
const Element* el = sc[index];
|
||||||
if(!el) {
|
if(!el) {
|
||||||
|
@ -1154,7 +1249,7 @@ const Token& GetRequiredToken(const Element& el, unsigned int index)
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
// wrapper around ParseTokenAsID() with ParseError handling
|
// wrapper around ParseTokenAsID() with ParseError handling
|
||||||
uint64_t ParseTokenAsID(const Token& t)
|
uint64_t ParseTokenAsID(const Token& t)
|
||||||
{
|
{
|
||||||
const char* err;
|
const char* err;
|
||||||
const uint64_t i = ParseTokenAsID(t,err);
|
const uint64_t i = ParseTokenAsID(t,err);
|
||||||
|
@ -1205,8 +1300,19 @@ int ParseTokenAsInt(const Token& t)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
// wrapper around ParseTokenAsInt64() with ParseError handling
|
||||||
|
int64_t ParseTokenAsInt64(const Token& t)
|
||||||
|
{
|
||||||
|
const char* err;
|
||||||
|
const int64_t i = ParseTokenAsInt64(t, err);
|
||||||
|
if (err) {
|
||||||
|
ParseError(err, t);
|
||||||
|
}
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
} // !FBX
|
} // !FBX
|
||||||
} // !Assimp
|
} // !Assimp
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -48,9 +48,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
|
#include <boost/scoped_ptr.hpp>
|
||||||
#include "LogAux.h"
|
#include "LogAux.h"
|
||||||
|
|
||||||
#include "FBXCompileConfig.h"
|
#include "FBXCompileConfig.h"
|
||||||
|
@ -206,6 +207,7 @@ size_t ParseTokenAsDim(const Token& t, const char*& err_out);
|
||||||
|
|
||||||
float ParseTokenAsFloat(const Token& t, const char*& err_out);
|
float ParseTokenAsFloat(const Token& t, const char*& err_out);
|
||||||
int ParseTokenAsInt(const Token& t, const char*& err_out);
|
int ParseTokenAsInt(const Token& t, const char*& err_out);
|
||||||
|
int64_t ParseTokenAsInt64(const Token& t, const char*& err_out);
|
||||||
std::string ParseTokenAsString(const Token& t, const char*& err_out);
|
std::string ParseTokenAsString(const Token& t, const char*& err_out);
|
||||||
|
|
||||||
|
|
||||||
|
@ -214,6 +216,7 @@ uint64_t ParseTokenAsID(const Token& t);
|
||||||
size_t ParseTokenAsDim(const Token& t);
|
size_t ParseTokenAsDim(const Token& t);
|
||||||
float ParseTokenAsFloat(const Token& t);
|
float ParseTokenAsFloat(const Token& t);
|
||||||
int ParseTokenAsInt(const Token& t);
|
int ParseTokenAsInt(const Token& t);
|
||||||
|
int64_t ParseTokenAsInt64(const Token& t);
|
||||||
std::string ParseTokenAsString(const Token& t);
|
std::string ParseTokenAsString(const Token& t);
|
||||||
|
|
||||||
/* read data arrays */
|
/* read data arrays */
|
||||||
|
@ -224,6 +227,7 @@ void ParseVectorDataArray(std::vector<int>& out, const Element& el);
|
||||||
void ParseVectorDataArray(std::vector<float>& out, const Element& el);
|
void ParseVectorDataArray(std::vector<float>& out, const Element& el);
|
||||||
void ParseVectorDataArray(std::vector<unsigned int>& out, const Element& el);
|
void ParseVectorDataArray(std::vector<unsigned int>& out, const Element& el);
|
||||||
void ParseVectorDataArray(std::vector<uint64_t>& out, const Element& e);
|
void ParseVectorDataArray(std::vector<uint64_t>& out, const Element& e);
|
||||||
|
void ParseVectorDataArray(std::vector<int64_t>& out, const Element& el);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
/** @file FBXProperties.cpp
|
/** @file FBXProperties.cpp
|
||||||
* @brief Implementation of the FBX dynamic properties system
|
* @brief Implementation of the FBX dynamic properties system
|
||||||
*/
|
*/
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER
|
||||||
|
|
||||||
|
@ -50,6 +49,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "FBXDocument.h"
|
#include "FBXDocument.h"
|
||||||
#include "FBXDocumentUtil.h"
|
#include "FBXDocumentUtil.h"
|
||||||
#include "FBXProperties.h"
|
#include "FBXProperties.h"
|
||||||
|
#include <boost/foreach.hpp>
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
namespace FBX {
|
namespace FBX {
|
||||||
|
@ -88,9 +88,12 @@ Property* ReadTypedProperty(const Element& element)
|
||||||
else if (!strcmp(cs, "int") || !strcmp(cs, "Int") || !strcmp(cs, "enum") || !strcmp(cs, "Enum")) {
|
else if (!strcmp(cs, "int") || !strcmp(cs, "Int") || !strcmp(cs, "enum") || !strcmp(cs, "Enum")) {
|
||||||
return new TypedProperty<int>(ParseTokenAsInt(*tok[4]));
|
return new TypedProperty<int>(ParseTokenAsInt(*tok[4]));
|
||||||
}
|
}
|
||||||
else if (!strcmp(cs,"ULongLong")) {
|
else if (!strcmp(cs, "ULongLong")) {
|
||||||
return new TypedProperty<uint64_t>(ParseTokenAsID(*tok[4]));
|
return new TypedProperty<uint64_t>(ParseTokenAsID(*tok[4]));
|
||||||
}
|
}
|
||||||
|
else if (!strcmp(cs, "KTime")) {
|
||||||
|
return new TypedProperty<int64_t>(ParseTokenAsInt64(*tok[4]));
|
||||||
|
}
|
||||||
else if (!strcmp(cs,"Vector3D") ||
|
else if (!strcmp(cs,"Vector3D") ||
|
||||||
!strcmp(cs,"ColorRGB") ||
|
!strcmp(cs,"ColorRGB") ||
|
||||||
!strcmp(cs,"Vector") ||
|
!strcmp(cs,"Vector") ||
|
||||||
|
@ -105,7 +108,7 @@ Property* ReadTypedProperty(const Element& element)
|
||||||
ParseTokenAsFloat(*tok[6]))
|
ParseTokenAsFloat(*tok[6]))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else if (!strcmp(cs,"double") || !strcmp(cs,"Number") || !strcmp(cs,"KTime") || !strcmp(cs,"Float") || !strcmp(cs,"FieldOfView")) {
|
else if (!strcmp(cs,"double") || !strcmp(cs,"Number") || !strcmp(cs,"Float") || !strcmp(cs,"FieldOfView")) {
|
||||||
return new TypedProperty<float>(ParseTokenAsFloat(*tok[4]));
|
return new TypedProperty<float>(ParseTokenAsFloat(*tok[4]));
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
@ -46,6 +46,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include "FBXCompileConfig.h"
|
||||||
|
#include <boost/shared_ptr.hpp>
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
namespace FBX {
|
namespace FBX {
|
||||||
|
|
|
@ -41,7 +41,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
/** @file FBXTokenizer.cpp
|
/** @file FBXTokenizer.cpp
|
||||||
* @brief Implementation of the FBX broadphase lexer
|
* @brief Implementation of the FBX broadphase lexer
|
||||||
*/
|
*/
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER
|
#ifndef ASSIMP_BUILD_NO_FBX_IMPORTER
|
||||||
|
|
||||||
|
@ -52,6 +51,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#include "FBXTokenizer.h"
|
#include "FBXTokenizer.h"
|
||||||
#include "FBXUtil.h"
|
#include "FBXUtil.h"
|
||||||
|
#include "Exceptional.h"
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
namespace FBX {
|
namespace FBX {
|
||||||
|
|
|
@ -45,8 +45,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
#define INCLUDED_AI_FBX_TOKENIZER_H
|
#define INCLUDED_AI_FBX_TOKENIZER_H
|
||||||
|
|
||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
|
|
||||||
#include "FBXCompileConfig.h"
|
#include "FBXCompileConfig.h"
|
||||||
|
#include "../include/assimp/ai_assert.h"
|
||||||
|
#include <vector>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
namespace Assimp {
|
namespace Assimp {
|
||||||
namespace FBX {
|
namespace FBX {
|
||||||
|
|
|
@ -41,7 +41,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
/** @file FBXUtil.cpp
|
/** @file FBXUtil.cpp
|
||||||
* @brief Implementation of internal FBX utility functions
|
* @brief Implementation of internal FBX utility functions
|
||||||
*/
|
*/
|
||||||
#include "AssimpPCH.h"
|
|
||||||
|
|
||||||
#include "FBXUtil.h"
|
#include "FBXUtil.h"
|
||||||
#include "FBXTokenizer.h"
|
#include "FBXTokenizer.h"
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue