本文整理汇总了C++中OutputPort::GetValue方法的典型用法代码示例。如果您正苦于以下问题:C++ OutputPort::GetValue方法的具体用法?C++ OutputPort::GetValue怎么用?C++ OutputPort::GetValue使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OutputPort
的用法示例。
在下文中一共展示了OutputPort::GetValue方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: op
XSI::CStatus CAxisInterpOp::Update
(
UpdateContext& ctx,
OutputPort& output
)
{
Operator op(ctx.GetOperator());
///////////////////////////////////////////////////////////////
// get operator parameters
///////////////////////////////////////////////////////////////
XSI::CString triggers(op.GetParameterValue(L"Triggers"));
// triggers changed
if ( m_csTriggers != triggers )
{
m_csTriggers = triggers;
Init( ctx, 0 );
}
double boneperc = op.GetParameterValue(L"BoneDist");
///////////////////////////////////////////////////////////////
// get objects connected to input & output ports
///////////////////////////////////////////////////////////////
InputPort rootboneport(op.GetPort(L"globalkineport",L"RootBoneGroup",0));
InputPort parentboneport(op.GetPort(L"globalkineport",L"ParentBoneGroup",0));
InputPort parentbonelenport(op.GetPort(L"bonelengthport",L"ParentBoneGroup",0));
InputPort childboneport(op.GetPort(L"globalkineport",L"ChildBoneGroup",0));
KinematicState gkRoot(rootboneport.GetValue());
KinematicState gkParent(parentboneport.GetValue());
double parentbonelen(parentbonelenport.GetValue());
KinematicState gkChild(childboneport.GetValue());
KinematicState gkHelper(output.GetValue());
// GET TRANSFORMATIONS OF ROOT, PARENT & CHILD
CTransformation tGRoot = gkRoot.GetTransform();
CTransformation tGBone1 = gkParent.GetTransform();
CTransformation tGBone2 = gkChild.GetTransform();
#ifdef _DEBUG_UPDATE
{
Application app;
wchar_t wszBuf[256];
XSI::MATH::CQuaternion q = tGBone1.GetRotationQuaternion();
double x, y, z;
q.GetXYZAnglesValues(x,y,z);
swprintf( wszBuf, L"parent R(%f,%f,%f)]", r2d(x),r2d(y),r2d(z) );
app.LogMessage( (const wchar_t*)wszBuf );
}
#endif
#ifdef _DEBUG_UPDATE
{
Application app;
wchar_t wszBuf[256];
XSI::MATH::CQuaternion q = tGBone2.GetRotationQuaternion();
double x, y, z;
q.GetXYZAnglesValues(x,y,z);
swprintf( wszBuf, L"child R(%f,%f,%f)]", r2d(x),r2d(y),r2d(z) );
app.LogMessage( (const wchar_t*)wszBuf );
}
#endif
///////////////////////////////////////////////////////////////
// perform update function
///////////////////////////////////////////////////////////////
// GET LOCAL TRANSFORM OF CHILD RELATIVE TO PARENT
XSI::MATH::CMatrix3 mBone1( tGBone1.GetRotationMatrix3() );
XSI::MATH::CMatrix3 mBone2( tGBone2.GetRotationMatrix3() );
#ifdef _DEBUG_UPDATE
{
Application app;
wchar_t wszBuf[256];
double m0, m1, m2, m3, m4, m5, m6, m7, m8;
mBone1.Get(m0, m1, m2, m3, m4, m5, m6, m7, m8);
swprintf( wszBuf, L"mBone1->\n%.2f,%.2f,%.2f\n%.2f,%.2f,%.2f\n%.2f,%.2f,%.2f", m0, m1, m2, m3, m4, m5, m6, m7, m8 );
app.LogMessage( (const wchar_t*)wszBuf );
}
#endif
#ifdef _DEBUG_UPDATE
{
Application app;
//.........这里部分代码省略.........
示例2: op
CStatus CHelperBoneOp::Update
(
UpdateContext& ctx,
OutputPort& output
)
{
///////////////////////////////////////////////////////////////
// get operator
///////////////////////////////////////////////////////////////
Operator op(ctx.GetOperator());
///////////////////////////////////////////////////////////////
// get output port
///////////////////////////////////////////////////////////////
KinematicState gkHelper(output.GetValue());
///////////////////////////////////////////////////////////////
// get helper bone data
///////////////////////////////////////////////////////////////
InputPort bonedataport(op.GetPort(L"bonedataport",L"HelperBoneGroup",0));
Property HelperBoneData(bonedataport.GetValue());
bool enabled = HelperBoneData.GetParameterValue(L"Enabled");
// not enabled: do nothing
if (!enabled)
return CStatus::OK;
///////////////////////////////////////////////////////////////
// evaluate new transformation for helperbone
///////////////////////////////////////////////////////////////
XSI::MATH::CTransformation tNewPose;
bool bComputeInWorldSpace = (0!=(long)HelperBoneData.GetParameterValue(L"ComputationSpace"));
///////////////////////////////////////////////////////////////
// get objects connected to input & output ports
///////////////////////////////////////////////////////////////
InputPort rootboneport(op.GetPort(L"globalkineport",L"RootBoneGroup",0));
InputPort parentboneport(op.GetPort(L"globalkineport",L"ParentBoneGroup",0));
InputPort childboneport(op.GetPort(L"globalkineport",L"ChildBoneGroup",0));
KinematicState gkRoot(rootboneport.GetValue());
KinematicState gkParent(parentboneport.GetValue());
KinematicState gkChild(childboneport.GetValue());
// get helperbonedata values
XSI::MATH::CVector3 vBasePos(
HelperBoneData.GetParameterValue(L"BoneOffsetX"),
HelperBoneData.GetParameterValue(L"BoneOffsetY"),
HelperBoneData.GetParameterValue(L"BoneOffsetZ") );
double perc_along_root = (double)HelperBoneData.GetParameterValue(L"BoneDistance") / 100.0;
double root_bone_length = (double)HelperBoneData.GetParameterValue(L"RootBoneLength");
XSI::GridData griddata(HelperBoneData.GetParameterValue(L"Triggers"));
// read triggers
ReadTriggerData(griddata);
// GET TRANSFORMATIONS OF ROOT, PARENT & CHILD
CTransformation tGRoot = gkRoot.GetTransform();
CTransformation tGParent = gkParent.GetTransform();
CTransformation tGChild = gkChild.GetTransform();
///////////////////////////////////////////////////////////////
// compute new orientation and position based on triggers
///////////////////////////////////////////////////////////////
DebugPrint( L"parent", tGParent.GetRotationQuaternion() );
DebugPrint( L"child", tGChild.GetRotationQuaternion() );
// GET LOCAL TRANSFORM OF CHILD RELATIVE TO PARENT
XSI::MATH::CMatrix3 m3Parent( tGParent.GetRotationMatrix3() );
DebugPrint(L"m3Parent->", m3Parent);
XSI::MATH::CMatrix3 m3Child( tGChild.GetRotationMatrix3() );
DebugPrint(L"m3Parent->", m3Child);
m3Parent.TransposeInPlace();
DebugPrint(L"m3Parent.TransposeInPlace->", m3Parent);
// bug #90494
// m3Child.MulInPlace( m3Parent );
MulInPlace( m3Child, m3Parent );
DebugPrint(L"m3Child.MulInPlace->", m3Child);
// GET ORIENTATION OF BONE2 RELATIVE TO BONE1 AS A QUATERNION
XSI::MATH::CQuaternion qBone2 = m3Child.GetQuaternion();
DebugPrint( L"child2parent", qBone2 );
// MATCH QUATERNIONS
ComputeWeights( qBone2, m_cTriggers, m_aEnabled, m_aWeights, m_aTriggerOri, m_aTriggerTol );
// SUM TARGET ORIENTATIONS & POSITIONS
XSI::MATH::CQuaternion qNewOri;
XSI::MATH::CVector3 vNewPos;
//.........这里部分代码省略.........