本文整理汇总了C++中ogre::MeshPtr::hasSkeleton方法的典型用法代码示例。如果您正苦于以下问题:C++ MeshPtr::hasSkeleton方法的具体用法?C++ MeshPtr::hasSkeleton怎么用?C++ MeshPtr::hasSkeleton使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ogre::MeshPtr
的用法示例。
在下文中一共展示了MeshPtr::hasSkeleton方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: addMesh
void MeshMergeTool::addMesh(Ogre::MeshPtr mesh)
{
SkeletonPtr meshSkel = mesh->getSkeleton();
if (meshSkel.isNull() && mesh->hasSkeleton())
{
meshSkel = SkeletonManager::getSingleton().getByName(mesh->getSkeletonName());
}
if (meshSkel.isNull() && !mBaseSkeleton.isNull())
{
throw std::logic_error(
"Some meshes have a skeleton, but others have none, cannot merge.");
}
if (!meshSkel.isNull() && mBaseSkeleton.isNull() && !mMeshes.empty())
{
throw std::logic_error(
"Some meshes have a skeleton, but others have none, cannot merge.");
}
if (!meshSkel.isNull() && mBaseSkeleton.isNull() && mMeshes.empty())
{
mBaseSkeleton = meshSkel;
print("Set: base skeleton (" + mBaseSkeleton->getName()+")", V_HIGH);
}
if (meshSkel != mBaseSkeleton)
{
throw std::logic_error(
"Some meshes have a skeleton, but others have none, cannot merge.");
}
mMeshes.push_back(mesh);
}
示例2: addMesh
//------------------------------------------------------------------------------------------------
void StaticMeshToShapeConverter::addMesh(const Ogre::MeshPtr &mesh, const Ogre::Matrix4 &transform)
{
// Each entity added need to reset size and radius
// next time getRadius and getSize are asked, they're computed.
mBounds = Ogre::Vector3(-1,-1,-1);
mBoundRadius = -1;
//_entity = entity;
//_node = (SceneNode*)(_entity->getParentNode());
mTransform = transform;
if (mesh->hasSkeleton ())
Ogre::LogManager::getSingleton().logMessage("MeshToShapeConverter::addMesh : Mesh " + mesh->getName () + " as skeleton but added to trimesh non animated");
if (mesh->sharedVertexData)
{
VertexIndexToShape::addStaticVertexData (mesh->sharedVertexData);
}
for(unsigned int i = 0;i < mesh->getNumSubMeshes();++i)
{
Ogre::SubMesh *sub_mesh = mesh->getSubMesh(i);
if (!sub_mesh->useSharedVertices)
{
VertexIndexToShape::addIndexData(sub_mesh->indexData, mVertexCount);
VertexIndexToShape::addStaticVertexData (sub_mesh->vertexData);
}
else
{
VertexIndexToShape::addIndexData (sub_mesh->indexData);
}
}
}
示例3: PrepareMesh
Ogre::Mesh* EC_Mesh::PrepareMesh(const std::string& mesh_name, bool clone)
{
if (!ViewEnabled())
return 0;
if (renderer_.expired())
return 0;
RendererPtr renderer = renderer_.lock();
Ogre::MeshManager& mesh_mgr = Ogre::MeshManager::getSingleton();
Ogre::MeshPtr mesh = mesh_mgr.getByName(SanitateAssetIdForOgre(mesh_name));
// For local meshes, mesh will not get automatically loaded until used in an entity. Load now if necessary
if (mesh.isNull())
{
try
{
mesh_mgr.load(mesh_name, Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
mesh = mesh_mgr.getByName(mesh_name);
}
catch (Ogre::Exception& e)
{
LogError("Could not load mesh " + mesh_name + ": " + std::string(e.what()));
return 0;
}
}
// If mesh is still null, must abort
if (mesh.isNull())
{
LogError("Mesh " + mesh_name + " does not exist");
return 0;
}
if (clone)
{
try
{
mesh = mesh->clone(renderer->GetUniqueObjectName("EC_Mesh_clone"));
mesh->setAutoBuildEdgeLists(false);
cloned_mesh_name_ = mesh->getName();
}
catch (Ogre::Exception& e)
{
LogError("Could not clone mesh " + mesh_name + ":" + std::string(e.what()));
return 0;
}
}
if (mesh->hasSkeleton())
{
Ogre::SkeletonPtr skeleton = Ogre::SkeletonManager::getSingleton().getByName(mesh->getSkeletonName());
if (skeleton.isNull() || skeleton->getNumBones() == 0)
{
LogDebug("Mesh " + mesh_name + " has a skeleton with 0 bones. Disabling the skeleton.");
mesh->setSkeletonName("");
}
}
return mesh.get();
}
示例4: loadCorrelativeResource
Ogre::MeshPtr
loadMesh(const Ogre::String& meshName, const Ogre::String& groupName,
const Ogre::String& baseResourceName, const Ogre::String& baseGroupName)
{
// Load the mesh
Ogre::MeshPtr mesh = loadCorrelativeResource(
meshName, groupName,
baseResourceName, baseGroupName,
Ogre::MeshManager::getSingleton());
if (mesh.isNull())
{
OGRE_EXCEPT(Ogre::Exception::ERR_ITEM_NOT_FOUND,
"Unable to load mesh " + meshName,
"loadMesh");
}
// Try to resolve skeleton resource
if (mesh->hasSkeleton() && mesh->getSkeleton().isNull())
{
// resolve correlative with mesh
Ogre::SkeletonPtr skeleton = loadCorrelativeResource(
mesh->getSkeletonName(), groupName,
mesh->getName(), mesh->getGroup(),
Ogre::SkeletonManager::getSingleton());
if (skeleton.isNull())
{
// resolve correlative with base resource
skeleton = loadCorrelativeResource(
mesh->getSkeletonName(), groupName,
baseResourceName, baseGroupName,
Ogre::SkeletonManager::getSingleton());
}
if (skeleton.isNull())
{
OGRE_EXCEPT(Ogre::Exception::ERR_ITEM_NOT_FOUND,
"Unable to load skeleton " + mesh->getSkeletonName() +
" for mesh " + mesh->getName(),
"loadMesh");
}
// Set to the actual name
mesh->setSkeletonName(skeleton->getName());
}
return mesh;
}
示例5:
const std::string& EC_Mesh::GetSkeletonName() const
{
static std::string empty_name;
if (!entity_)
return empty_name;
else
{
Ogre::MeshPtr mesh = entity_->getMesh();
if (!mesh->hasSkeleton())
return empty_name;
Ogre::SkeletonPtr skel = mesh->getSkeleton();
if (skel.isNull())
return empty_name;
return skel->getName();
}
}
示例6: addMesh
//------------------------------------------------------------------------------------------------
void AnimatedMeshToShapeConverter::addMesh(const Ogre::MeshPtr &mesh,
const Ogre::Matrix4 &transform)
{
// Each entity added need to reset size and radius
// next time getRadius and getSize are asked, they're computed.
mBounds = Ogre::Vector3(-1.0f , -1.0f, -1.0f);
mBoundRadius = -1.0f;
//_entity = entity;
//_node = (SceneNode*)(_entity->getParentNode());
mTransform = transform;
assert(mesh->hasSkeleton());
if (mesh->sharedVertexData)
{
VertexIndexToShape::addAnimatedVertexData(mesh->sharedVertexData,
NULL,
&mesh->sharedBlendIndexToBoneIndexMap);
}
for (unsigned int i = 0; i < mesh->getNumSubMeshes(); ++i)
{
Ogre::SubMesh *sub_mesh = mesh->getSubMesh(i);
if (!sub_mesh->useSharedVertices)
{
VertexIndexToShape::addIndexData(sub_mesh->indexData, mVertexCount);
VertexIndexToShape::addAnimatedVertexData(sub_mesh->vertexData,
NULL,
&sub_mesh->blendIndexToBoneIndexMap);
}
else
{
VertexIndexToShape::addIndexData(sub_mesh->indexData);
}
}
}