Sirikata
|
An implementation of the OpenCOLLADA IWriter class that is responsible for importing COLLADA documents and re-Writing (i.e. More...
#include <ColladaDocumentImporter.hpp>
Classes | |
struct | AnimationCurve |
Generated by "sampler" tags as part of an animation. More... | |
struct | ExtraGeometryData |
struct | ExtraPrimitiveData |
struct | OCSkinController |
struct | OCSkinControllerData |
class | UniqueIdHash |
Public Member Functions | |
ColladaDocumentImporter (Transfer::URI const &uri, const SHA256 &hash) | |
ColladaDocumentImporter (std::vector< Transfer::URI > uriList) | |
~ColladaDocumentImporter () | |
ColladaDocumentPtr | getDocument () const |
String | documentURI () const |
Mesh::MeshdataPtr | getMeshdata () |
virtual void | cancel (COLLADAFW::String const &errorMessage) |
virtual void | start () |
virtual void | finish () |
virtual bool | writeGlobalAsset (COLLADAFW::FileInfo const *asset) |
virtual bool | writeScene (COLLADAFW::Scene const *scene) |
virtual bool | writeVisualScene (COLLADAFW::VisualScene const *visualScene) |
virtual bool | writeLibraryNodes (COLLADAFW::LibraryNodes const *libraryNodes) |
virtual bool | writeGeometry (COLLADAFW::Geometry const *geometry) |
virtual bool | writeMaterial (COLLADAFW::Material const *material) |
virtual bool | writeEffect (COLLADAFW::Effect const *effect) |
virtual bool | writeCamera (COLLADAFW::Camera const *camera) |
virtual bool | writeImage (COLLADAFW::Image const *image) |
virtual bool | writeLight (COLLADAFW::Light const *light) |
virtual bool | writeAnimation (COLLADAFW::Animation const *animation) |
virtual bool | writeAnimationList (COLLADAFW::AnimationList const *animationList) |
virtual bool | writeSkinControllerData (COLLADAFW::SkinControllerData const *skinControllerData) |
virtual bool | writeController (COLLADAFW::Controller const *controller) |
virtual bool | writeFormulas (COLLADAFW::Formulas const *formulas) |
virtual bool | writeKinematicsScene (COLLADAFW::KinematicsScene const *kinematicsScene) |
Protected Types | |
typedef std::map < COLLADAFW::UniqueId, const COLLADAFW::VisualScene * > | VisualSceneMap |
typedef std::map < COLLADAFW::UniqueId, const COLLADAFW::Node * > | NodeMap |
typedef std::tr1::unordered_map < COLLADAFW::UniqueId, size_t, UniqueIdHash > | IndicesMap |
typedef std::tr1::unordered_multimap < COLLADAFW::UniqueId, size_t, UniqueIdHash > | IndicesMultimap |
typedef std::tr1::unordered_map < COLLADAFW::UniqueId, COLLADAFW::UniqueId, UniqueIdHash > | IdMap |
typedef std::tr1::unordered_map < COLLADAFW::UniqueId, OCSkinControllerData, UniqueIdHash > | OCSkinControllerDataMap |
typedef std::tr1::unordered_map < COLLADAFW::UniqueId, OCSkinController, UniqueIdHash > | OCSkinControllerMap |
typedef std::tr1::unordered_map < COLLADAFW::UniqueId, AnimationCurve, UniqueIdHash > | AnimationCurveMap |
typedef std::vector < COLLADAFW::AnimationList::AnimationBinding > | AnimationBindings |
AnimationBindings uniquely identify AnimationCurves for each (joint,animation). | |
typedef std::tr1::unordered_map < COLLADAFW::UniqueId, AnimationBindings, UniqueIdHash > | AnimationBindingsMap |
typedef std::tr1::unordered_map < COLLADAFW::UniqueId, COLLADAFW::Effect, UniqueIdHash > | ColladaEffectMap |
typedef std::tr1::unordered_map < COLLADAFW::UniqueId, std::string, UniqueIdHash > | URIMap |
typedef std::tr1::unordered_map < COLLADAFW::UniqueId, size_t, UniqueIdHash > | IndexMap |
Protected Member Functions | |
void | setupPrim (Mesh::SubMeshGeometry::Primitive *outputPrim, ExtraPrimitiveData &outputPrimExtra, const COLLADAFW::MeshPrimitive *prim) |
Protected Attributes | |
Matrix4x4f | mChangeUp |
Matrix4x4f | mUnitScale |
COLLADAFW::UniqueId | mVisualSceneId |
VisualSceneMap | mVisualScenes |
NodeMap | mLibraryNodes |
OCSkinControllerDataMap | mSkinControllerData |
OCSkinControllerMap | mSkinControllers |
AnimationCurveMap | mAnimationCurves |
std::set< String > | mAnimationNames |
bool | mOnlyHasDefaultAnimation |
AnimationBindingsMap | mAnimationBindings |
std::vector< size_t > | mAnimatedNodeIndices |
Mesh::SubMeshGeometryList | mGeometries |
IndicesMultimap | mGeometryMap |
std::vector< ExtraGeometryData > | mExtraGeometryData |
IndicesMap | mLightMap |
Mesh::LightInfoList | mLights |
IdMap | mMaterialMap |
ColladaEffectMap | mColladaEffects |
IndicesMap | mConvertedEffects |
URIMap | mTextureMap |
std::vector < COLLADAFW::EffectCommon * > | mColladaClonedCommonEffects |
Mesh::MaterialEffectInfoList | mEffects |
IndexMap | mNodeIndices |
IndexMap | mJointIndices |
Mesh::MeshdataPtr | mMesh |
Private Types | |
enum | State { CANCELLED = -1, IDLE, STARTED, FINISHED } |
Private Member Functions | |
ColladaDocumentImporter (ColladaDocumentImporter const &) | |
ColladaDocumentImporter & | operator= (ColladaDocumentImporter const &) |
void | postProcess () |
void | translateNodes () |
void | translateSkinControllers () |
void | makeTexture (Mesh::MaterialEffectInfo::Texture::Affecting type, const COLLADAFW::MaterialBinding *binding, const COLLADAFW::EffectCommon *effect, const COLLADAFW::ColorOrTexture &color, size_t geom_index, size_t prim_index, Mesh::MaterialEffectInfo::TextureList &output) |
size_t | finishEffect (const COLLADAFW::MaterialBinding *binding, size_t geom_index, size_t prim_index) |
Private Attributes | |
ColladaDocumentPtr | mDocument |
State | mState |
An implementation of the OpenCOLLADA IWriter class that is responsible for importing COLLADA documents and re-Writing (i.e.
converting) the data to suit the application.
typedef std::vector<COLLADAFW::AnimationList::AnimationBinding> Sirikata::Models::ColladaDocumentImporter::AnimationBindings [protected] |
AnimationBindings uniquely identify AnimationCurves for each (joint,animation).
This is maintained because OpenCOLLADA keeps these decoupled and we need to combine the info to attach the keyframes for each animation to the corresponding joint (node) after parsing.
typedef std::tr1::unordered_map<COLLADAFW::UniqueId, AnimationBindings, UniqueIdHash> Sirikata::Models::ColladaDocumentImporter::AnimationBindingsMap [protected] |
typedef std::tr1::unordered_map<COLLADAFW::UniqueId, AnimationCurve, UniqueIdHash> Sirikata::Models::ColladaDocumentImporter::AnimationCurveMap [protected] |
typedef std::tr1::unordered_map<COLLADAFW::UniqueId, COLLADAFW::Effect, UniqueIdHash> Sirikata::Models::ColladaDocumentImporter::ColladaEffectMap [protected] |
typedef std::tr1::unordered_map<COLLADAFW::UniqueId, COLLADAFW::UniqueId, UniqueIdHash> Sirikata::Models::ColladaDocumentImporter::IdMap [protected] |
typedef std::tr1::unordered_map<COLLADAFW::UniqueId, size_t, UniqueIdHash> Sirikata::Models::ColladaDocumentImporter::IndexMap [protected] |
typedef std::tr1::unordered_map<COLLADAFW::UniqueId, size_t, UniqueIdHash> Sirikata::Models::ColladaDocumentImporter::IndicesMap [protected] |
typedef std::tr1::unordered_multimap<COLLADAFW::UniqueId, size_t, UniqueIdHash> Sirikata::Models::ColladaDocumentImporter::IndicesMultimap [protected] |
typedef std::map<COLLADAFW::UniqueId, const COLLADAFW::Node*> Sirikata::Models::ColladaDocumentImporter::NodeMap [protected] |
typedef std::tr1::unordered_map<COLLADAFW::UniqueId,OCSkinControllerData, UniqueIdHash> Sirikata::Models::ColladaDocumentImporter::OCSkinControllerDataMap [protected] |
typedef std::tr1::unordered_map<COLLADAFW::UniqueId,OCSkinController, UniqueIdHash> Sirikata::Models::ColladaDocumentImporter::OCSkinControllerMap [protected] |
typedef std::tr1::unordered_map<COLLADAFW::UniqueId, std::string, UniqueIdHash> Sirikata::Models::ColladaDocumentImporter::URIMap [protected] |
typedef std::map<COLLADAFW::UniqueId, const COLLADAFW::VisualScene*> Sirikata::Models::ColladaDocumentImporter::VisualSceneMap [protected] |
enum Sirikata::Models::ColladaDocumentImporter::State [private] |
Sirikata::Models::ColladaDocumentImporter::ColladaDocumentImporter | ( | Transfer::URI const & | uri, |
const SHA256 & | hash | ||
) | [explicit] |
Sirikata::Models::ColladaDocumentImporter::ColladaDocumentImporter | ( | std::vector< Transfer::URI > | uriList | ) | [explicit] |
References Sirikata::Logging::insane.
Sirikata::Models::ColladaDocumentImporter::~ColladaDocumentImporter | ( | ) |
References Sirikata::Logging::insane, and mColladaClonedCommonEffects.
Sirikata::Models::ColladaDocumentImporter::ColladaDocumentImporter | ( | ColladaDocumentImporter const & | ) | [private] |
void Sirikata::Models::ColladaDocumentImporter::cancel | ( | COLLADAFW::String const & | errorMessage | ) | [virtual] |
References CANCELLED, Sirikata::Logging::insane, and mState.
String Sirikata::Models::ColladaDocumentImporter::documentURI | ( | ) | const |
References mDocument.
Referenced by Sirikata::Models::ColladaDocumentLoader::load().
void Sirikata::Models::ColladaDocumentImporter::finish | ( | ) | [virtual] |
References Sirikata::Logging::error, FINISHED, finishEffect(), Sirikata::Mesh::GeometryInstance::geometryIndex, Sirikata::Logging::insane, Sirikata::Mesh::LightInstance::lightIndex, Sirikata::Mesh::GeometryInstance::materialBindingMap, mChangeUp, mEffects, mGeometries, mGeometryMap, mLibraryNodes, mLightMap, mLights, mMesh, mNodeIndices, mSkinControllers, mState, mUnitScale, mVisualSceneId, mVisualScenes, Sirikata::Mesh::LightInstance::parentNode, Sirikata::Mesh::GeometryInstance::parentNode, postProcess(), and Sirikata::Logging::warn.
size_t Sirikata::Models::ColladaDocumentImporter::finishEffect | ( | const COLLADAFW::MaterialBinding * | binding, |
size_t | geom_index, | ||
size_t | prim_index | ||
) | [private] |
References Sirikata::Logging::insane, makeTexture(), mColladaEffects, mConvertedEffects, mEffects, and mMaterialMap.
Referenced by finish().
ColladaDocumentPtr Sirikata::Models::ColladaDocumentImporter::getDocument | ( | ) | const |
References Sirikata::Logging::fatal, FINISHED, mDocument, mState, and SILOG.
Referenced by Sirikata::Models::ColladaDocumentLoader::getDocument().
Mesh::MeshdataPtr Sirikata::Models::ColladaDocumentImporter::getMeshdata | ( | ) | [inline] |
Referenced by Sirikata::Models::ColladaDocumentLoader::getMeshdata().
void Sirikata::Models::ColladaDocumentImporter::makeTexture | ( | Mesh::MaterialEffectInfo::Texture::Affecting | type, |
const COLLADAFW::MaterialBinding * | binding, | ||
const COLLADAFW::EffectCommon * | effect, | ||
const COLLADAFW::ColorOrTexture & | color, | ||
size_t | geom_index, | ||
size_t | prim_index, | ||
Mesh::MaterialEffectInfo::TextureList & | output | ||
) | [private] |
References Sirikata::Mesh::MaterialEffectInfo::Texture::affecting, Sirikata::Mesh::MaterialEffectInfo::Texture::color, FIX_ENUM, Sirikata::Mesh::MaterialEffectInfo::Texture::magFilter, Sirikata::Mesh::MaterialEffectInfo::Texture::maxMipLevel, mExtraGeometryData, Sirikata::Mesh::MaterialEffectInfo::Texture::minFilter, Sirikata::Mesh::MaterialEffectInfo::Texture::mipBias, mTextureMap, Sirikata::Mesh::MaterialEffectInfo::Texture::samplerType, Sirikata::Mesh::MaterialEffectInfo::Texture::texCoord, Sirikata::Mesh::MaterialEffectInfo::Texture::uri, Sirikata::Mesh::MaterialEffectInfo::Texture::wrapS, Sirikata::Mesh::MaterialEffectInfo::Texture::wrapT, and Sirikata::Mesh::MaterialEffectInfo::Texture::wrapU.
Referenced by finishEffect().
ColladaDocumentImporter& Sirikata::Models::ColladaDocumentImporter::operator= | ( | ColladaDocumentImporter const & | ) | [private] |
void Sirikata::Models::ColladaDocumentImporter::postProcess | ( | ) | [private] |
References Sirikata::Logging::insane, translateNodes(), and translateSkinControllers().
Referenced by finish().
void Sirikata::Models::ColladaDocumentImporter::setupPrim | ( | Mesh::SubMeshGeometry::Primitive * | outputPrim, |
ExtraPrimitiveData & | outputPrimExtra, | ||
const COLLADAFW::MeshPrimitive * | prim | ||
) | [protected] |
void Sirikata::Models::ColladaDocumentImporter::start | ( | ) | [virtual] |
References Sirikata::Logging::insane, mState, and STARTED.
void Sirikata::Models::ColladaDocumentImporter::translateNodes | ( | ) | [private] |
References Sirikata::Mesh::Node::containsInstanceController, Sirikata::Logging::error, Sirikata::Matrix4x4< scalar >::extract3x3(), Sirikata::Matrix4x4< scalar >::getCol(), Sirikata::Matrix4x4< float32 >::identity(), Sirikata::Mesh::TransformationKeyFrames::inputs, Sirikata::Models::ColladaDocumentImporter::AnimationCurve::inputs, mAnimatedNodeIndices, mAnimationBindings, mAnimationCurves, mJointIndices, mLibraryNodes, mMesh, mNodeIndices, mOnlyHasDefaultAnimation, mVisualSceneId, mVisualScenes, Sirikata::Models::ColladaDocumentImporter::AnimationCurve::name, Sirikata::Mesh::NullNodeIndex, Sirikata::Mesh::TransformationKeyFrames::outputs, Sirikata::Models::ColladaDocumentImporter::AnimationCurve::outputs, Sirikata::Matrix4x4< float32 >::rotate(), SILOG, Sirikata::Matrix4x4< float32 >::translate(), and true_root.
Referenced by postProcess().
void Sirikata::Models::ColladaDocumentImporter::translateSkinControllers | ( | ) | [private] |
References Sirikata::Models::ColladaDocumentImporter::OCSkinControllerData::bindShapeMatrix, Sirikata::Mesh::SkinController::bindShapeMatrix, Sirikata::Matrix4x4< float32 >::identity(), Sirikata::Mesh::SkinController::inverseBindMatrices, Sirikata::Models::ColladaDocumentImporter::OCSkinControllerData::inverseBindMatrices, Sirikata::Models::ColladaDocumentImporter::OCSkinControllerData::jointIndices, Sirikata::Mesh::SkinController::jointIndices, Sirikata::Mesh::SkinController::joints, Sirikata::Models::ColladaDocumentImporter::OCSkinController::joints, mAnimatedNodeIndices, mExtraGeometryData, mGeometryMap, mJointIndices, mMesh, mSkinControllerData, mSkinControllers, Sirikata::Mesh::SubMeshGeometry::positions, Sirikata::Models::ColladaDocumentImporter::OCSkinController::skinControllerData, Sirikata::Mesh::SubMeshGeometry::skinControllers, Sirikata::Models::ColladaDocumentImporter::OCSkinController::source, Sirikata::Models::ColladaDocumentImporter::OCSkinControllerData::weights, Sirikata::Mesh::SkinController::weights, Sirikata::Models::ColladaDocumentImporter::OCSkinControllerData::weightStartIndices, and Sirikata::Mesh::SkinController::weightStartIndices.
Referenced by postProcess().
bool Sirikata::Models::ColladaDocumentImporter::writeAnimation | ( | COLLADAFW::Animation const * | animation | ) | [virtual] |
References Sirikata::Logging::error, Sirikata::Models::ColladaDocumentImporter::AnimationCurve::inputs, Sirikata::Logging::insane, mAnimationCurves, mAnimationNames, mOnlyHasDefaultAnimation, Sirikata::Models::ColladaDocumentImporter::AnimationCurve::name, and Sirikata::Models::ColladaDocumentImporter::AnimationCurve::outputs.
bool Sirikata::Models::ColladaDocumentImporter::writeAnimationList | ( | COLLADAFW::AnimationList const * | animationList | ) | [virtual] |
References Sirikata::Logging::insane, and mAnimationBindings.
bool Sirikata::Models::ColladaDocumentImporter::writeCamera | ( | COLLADAFW::Camera const * | camera | ) | [virtual] |
References Sirikata::Logging::insane.
bool Sirikata::Models::ColladaDocumentImporter::writeController | ( | COLLADAFW::Controller const * | controller | ) | [virtual] |
References Sirikata::Logging::error, Sirikata::Logging::insane, Sirikata::Models::ColladaDocumentImporter::OCSkinController::joints, mSkinControllers, Sirikata::Models::ColladaDocumentImporter::OCSkinController::skinControllerData, and Sirikata::Models::ColladaDocumentImporter::OCSkinController::source.
bool Sirikata::Models::ColladaDocumentImporter::writeEffect | ( | COLLADAFW::Effect const * | effect | ) | [virtual] |
References Sirikata::Logging::insane, and mColladaEffects.
bool Sirikata::Models::ColladaDocumentImporter::writeFormulas | ( | COLLADAFW::Formulas const * | formulas | ) | [virtual] |
References Sirikata::Logging::insane.
bool Sirikata::Models::ColladaDocumentImporter::writeGeometry | ( | COLLADAFW::Geometry const * | geometry | ) | [virtual] |
References Sirikata::Mesh::SubMeshGeometry::aabb, Sirikata::Models::createIndexSet(), Sirikata::Logging::error, Sirikata::Mesh::SubMeshGeometry::Primitive::indices, Sirikata::Logging::insane, mDocument, mExtraGeometryData, mGeometries, mGeometryMap, Sirikata::Mesh::SubMeshGeometry::name, Sirikata::Models::IndexSet::normalIndices, Sirikata::Mesh::SubMeshGeometry::normals, Sirikata::Models::IndexSet::positionIndices, Sirikata::Mesh::SubMeshGeometry::positions, Sirikata::Mesh::SubMeshGeometry::primitives, Sirikata::Mesh::SubMeshGeometry::radius, setupPrim(), SILOG, Sirikata::Mesh::SubMeshGeometry::texUVs, and Sirikata::Models::IndexSet::uvIndices.
bool Sirikata::Models::ColladaDocumentImporter::writeGlobalAsset | ( | COLLADAFW::FileInfo const * | asset | ) | [virtual] |
References Sirikata::Logging::insane, mChangeUp, mDocument, mUnitScale, and Sirikata::Matrix4x4< float32 >::scale().
bool Sirikata::Models::ColladaDocumentImporter::writeImage | ( | COLLADAFW::Image const * | image | ) | [virtual] |
References Sirikata::Logging::insane, mMesh, and mTextureMap.
bool Sirikata::Models::ColladaDocumentImporter::writeKinematicsScene | ( | COLLADAFW::KinematicsScene const * | kinematicsScene | ) | [virtual] |
References Sirikata::Logging::insane.
bool Sirikata::Models::ColladaDocumentImporter::writeLibraryNodes | ( | COLLADAFW::LibraryNodes const * | libraryNodes | ) | [virtual] |
References mLibraryNodes, and node.
bool Sirikata::Models::ColladaDocumentImporter::writeLight | ( | COLLADAFW::Light const * | light | ) | [virtual] |
References Sirikata::LightInfo::DIRECTIONAL, Sirikata::Logging::insane, mLightMap, mLights, Sirikata::LightInfo::POINT, Sirikata::LightInfo::setLightAmbientColor(), Sirikata::LightInfo::setLightDiffuseColor(), Sirikata::LightInfo::setLightFalloff(), Sirikata::LightInfo::setLightSpecularColor(), Sirikata::LightInfo::setLightType(), and Sirikata::LightInfo::SPOTLIGHT.
bool Sirikata::Models::ColladaDocumentImporter::writeMaterial | ( | COLLADAFW::Material const * | material | ) | [virtual] |
References Sirikata::Logging::insane, and mMaterialMap.
bool Sirikata::Models::ColladaDocumentImporter::writeScene | ( | COLLADAFW::Scene const * | scene | ) | [virtual] |
References mVisualSceneId.
bool Sirikata::Models::ColladaDocumentImporter::writeSkinControllerData | ( | COLLADAFW::SkinControllerData const * | skinControllerData | ) | [virtual] |
References Sirikata::Models::ColladaDocumentImporter::OCSkinControllerData::bindShapeMatrix, Sirikata::Logging::insane, Sirikata::Models::ColladaDocumentImporter::OCSkinControllerData::inverseBindMatrices, Sirikata::Models::ColladaDocumentImporter::OCSkinControllerData::jointIndices, mSkinControllerData, Sirikata::Models::ColladaDocumentImporter::OCSkinControllerData::weights, and Sirikata::Models::ColladaDocumentImporter::OCSkinControllerData::weightStartIndices.
bool Sirikata::Models::ColladaDocumentImporter::writeVisualScene | ( | COLLADAFW::VisualScene const * | visualScene | ) | [virtual] |
References Sirikata::Logging::insane, and mVisualScenes.
std::vector<size_t> Sirikata::Models::ColladaDocumentImporter::mAnimatedNodeIndices [protected] |
Referenced by translateNodes(), and translateSkinControllers().
Referenced by translateNodes(), and writeAnimationList().
Referenced by translateNodes(), and writeAnimation().
std::set<String> Sirikata::Models::ColladaDocumentImporter::mAnimationNames [protected] |
Referenced by writeAnimation().
Referenced by finish(), and writeGlobalAsset().
std::vector<COLLADAFW::EffectCommon*> Sirikata::Models::ColladaDocumentImporter::mColladaClonedCommonEffects [protected] |
Referenced by ~ColladaDocumentImporter().
Referenced by finishEffect(), and writeEffect().
Referenced by finishEffect().
Referenced by documentURI(), getDocument(), writeGeometry(), and writeGlobalAsset().
Referenced by finish(), and finishEffect().
std::vector<ExtraGeometryData> Sirikata::Models::ColladaDocumentImporter::mExtraGeometryData [protected] |
Referenced by makeTexture(), translateSkinControllers(), and writeGeometry().
Referenced by finish(), and writeGeometry().
Referenced by finish(), translateSkinControllers(), and writeGeometry().
Referenced by translateNodes(), and translateSkinControllers().
Referenced by finish(), translateNodes(), and writeLibraryNodes().
Referenced by finish(), and writeLight().
Referenced by finish(), and writeLight().
Referenced by finishEffect(), and writeMaterial().
Referenced by ColladaDocumentImporter(), finish(), translateNodes(), translateSkinControllers(), and writeImage().
Referenced by finish(), and translateNodes().
bool Sirikata::Models::ColladaDocumentImporter::mOnlyHasDefaultAnimation [protected] |
Referenced by ColladaDocumentImporter(), translateNodes(), and writeAnimation().
Referenced by translateSkinControllers(), and writeSkinControllerData().
Referenced by finish(), translateSkinControllers(), and writeController().
Referenced by cancel(), finish(), getDocument(), and start().
Referenced by makeTexture(), and writeImage().
Referenced by finish(), and writeGlobalAsset().
COLLADAFW::UniqueId Sirikata::Models::ColladaDocumentImporter::mVisualSceneId [protected] |
Referenced by finish(), translateNodes(), and writeScene().
Referenced by finish(), translateNodes(), and writeVisualScene().