コード例 #1
0
ファイル: BodyIK.cs プロジェクト: Stereoarts/SAFullBodyIK
			bool _UpperSolve_PreTranslate2( out Vector3 translate, ref CachedRate01 translateRate, ref CachedRate01 stableRate, ref Vector3 stableCenterLegPos )
			{
				// If resetTransform = false, contain targetBeginPos to default transform or modify _UpperSolve_Translate()

				// Memo: Prepare SolveTargetBeginPosRated().

				translate = Vector3.zero;

				Assert( _hipsEffector != null );
				if( _hipsEffector.positionEnabled &&
					_hipsEffector.positionWeight <= IKEpsilon &&
					_hipsEffector.pull >= 1.0f - IKEpsilon ) {
					return false; // Always locked.
				}

				var temp = _solverInternal;
				Assert( temp != null );

				bool continuousSolverEnabled = _internalValues.continuousSolverEnabled;

				bool translateEnabled = (continuousSolverEnabled && stableRate.isGreater0);
				if( temp.targetCenterArmEnabled ) {
					translate = temp.targetCenterArmPos - temp.currentCenterArmPos;
					translateEnabled = true;
				}

				if( translateEnabled ) {
					if( translateRate.isLess1 ) {
						translate *= translateRate.value;
					}

					if( continuousSolverEnabled && stableRate.isGreater0 ) {
						Vector3 extraTranslate = stableCenterLegPos - temp.centerLegPos;
						translate = Vector3.Lerp( translate, extraTranslate, stableRate.value );
					}

					if( _hipsEffector.positionEnabled && _hipsEffector.pull > IKEpsilon ) {
						Vector3 extraTranslate = _hipsEffector._hidden_worldPosition - temp.centerLegPos;
						translate = Vector3.Lerp( translate, extraTranslate, _hipsEffector.pull );
					}

					return true;
				}

				return false;
			}
コード例 #2
0
ファイル: BodyIK.cs プロジェクト: Stereoarts/SAFullBodyIK
			void _UpperSolve_Translate2( ref CachedRate01 translateRate, ref CachedRate01 stableRate, ref Vector3 stableCenterLegPos )
			{
				Vector3 translate;
				if( _UpperSolve_PreTranslate2( out translate, ref translateRate, ref stableRate, ref stableCenterLegPos ) ) {
					var temp = _solverInternal;
					Assert( temp != null );
					temp.Translate( ref translate );
				}
			}