本文整理汇总了C++中CoordinateSystem::getTransform方法的典型用法代码示例。如果您正苦于以下问题:C++ CoordinateSystem::getTransform方法的具体用法?C++ CoordinateSystem::getTransform怎么用?C++ CoordinateSystem::getTransform使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CoordinateSystem
的用法示例。
在下文中一共展示了CoordinateSystem::getTransform方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: transformObject
void SOP_SceneCacheSource::transformObject( IECore::Object *object, const Imath::M44d &transform, bool &hasAnimatedTopology, bool &hasAnimatedPrimVars, std::vector<InternedString> &animatedPrimVars )
{
Primitive *primitive = IECore::runTimeCast<Primitive>( object );
if ( primitive )
{
TransformOpPtr transformer = new TransformOp();
transformer->inputParameter()->setValue( primitive );
transformer->copyParameter()->setTypedValue( false );
transformer->matrixParameter()->setValue( new M44dData( transform ) );
transformer->operate();
std::vector<std::string> &primVars = transformer->primVarsParameter()->getTypedValue();
for ( std::vector<std::string>::iterator it = primVars.begin(); it != primVars.end(); ++it )
{
if ( std::find( animatedPrimVars.begin(), animatedPrimVars.end(), *it ) == animatedPrimVars.end() )
{
animatedPrimVars.push_back( *it );
hasAnimatedPrimVars = true;
}
}
return;
}
Group *group = IECore::runTimeCast<Group>( object );
if ( group )
{
MatrixTransformPtr matTransform = matrixTransform( transform );
matTransform->matrix *= group->getTransform()->transform();
group->setTransform( matTransform );
return;
}
CoordinateSystem *coord = IECore::runTimeCast<CoordinateSystem>( object );
if ( coord )
{
MatrixTransformPtr matTransform = matrixTransform( transform );
matTransform->matrix *= coord->getTransform()->transform();
coord->setTransform( matTransform );
return;
}
}