示例#1
0
        /// <summary>
        /// 加算
        /// </summary>
        /// <returns>加算値</returns>
        /// <param name='lhs'>被加数</param>
        /// <param name='rhs'>加数</param>
        public static BoneMorphParameter operator+(BoneMorphParameter lhs, BoneMorphParameter rhs)
        {
            BoneMorphParameter result = new BoneMorphParameter();

            result.position = lhs.position + rhs.position;
            result.rotation = lhs.rotation * rhs.rotation;             //順回転乗算
            return(result);
        }
示例#2
0
        /// <summary>
        /// 減算
        /// </summary>
        /// <returns>減算値</returns>
        /// <param name='lhs'>被加数</param>
        /// <param name='rhs'>加数</param>
        public static BoneMorphParameter operator-(BoneMorphParameter lhs, BoneMorphParameter rhs)
        {
            BoneMorphParameter result = new BoneMorphParameter();

            result.position = lhs.position - rhs.position;
            result.rotation = lhs.rotation * Quaternion.Inverse(rhs.rotation);             //逆回転乗算
            return(result);
        }
示例#3
0
        /// <summary>
        /// スカラー乗算
        /// </summary>
        /// <returns>スカラー乗算値</returns>
        /// <param name='lhs'>被乗数</param>
        /// <param name='rhs'>乗数</param>
        public static BoneMorphParameter operator*(BoneMorphParameter lhs, float rhs)
        {
            BoneMorphParameter result = new BoneMorphParameter();

            result.position = lhs.position * rhs;
            result.rotation = Quaternion.Slerp(Quaternion.identity, lhs.rotation, rhs);             //0.0fが掛けられればQuaternion.identity化する
            return(result);
        }
示例#4
0
        /// <summary>
        /// パラメータの線形補間
        /// </summary>
        /// <returns>補間値</returns>
        /// <param name='lhs'>補間始点</param>
        /// <param name='rhs'>補間終点</param>
        /// <param name='weight'>補間係数(0.0fなら始点、1.0fなら終点)</param>
        public static BoneMorphParameter Lerp(BoneMorphParameter lhs, BoneMorphParameter rhs, float weight)
        {
            BoneMorphParameter result = new BoneMorphParameter();

            result.position = Vector3.Lerp(lhs.position, rhs.position, weight);
            result.rotation = Quaternion.Slerp(lhs.rotation, rhs.rotation, weight);
            return(result);
        }
示例#5
0
	/// <summary>
	/// モーフ処理
	/// </summary>
	/// <returns>更新したか(true:更新した、false:未更新)</returns>
	/// <param name='composite'>モーフ値</param>
	public bool Compute(BoneMorphParameter[] composite)
	{
		bool result = false;
		//キャッシュ設定
		float weight = base.GetWeight(transform);
		if ((prev_weight_ != weight) || (null == values_cache_)) {
			values_cache_ = values.Select(x=>x * weight).ToArray();
			prev_weight_ = weight;
			result = true;
		}
		
		//反映
		for (int i = 0, i_max = values_cache_.Length; i < i_max; ++i) {
			composite[indices[i]] += values_cache_[i];
		}
		return result;
	}
示例#6
0
		/// <summary>
		/// 減算
		/// </summary>
		/// <returns>減算値</returns>
		/// <param name='lhs'>被加数</param>
		/// <param name='rhs'>加数</param>
		public static BoneMorphParameter operator- (BoneMorphParameter lhs, BoneMorphParameter rhs) {
			BoneMorphParameter result = new BoneMorphParameter();
			result.position = lhs.position - rhs.position;
			result.rotation = lhs.rotation * Quaternion.Inverse(rhs.rotation); //逆回転乗算
			return result;
		}
示例#7
0
		/// <summary>
		/// 加算
		/// </summary>
		/// <returns>加算値</returns>
		/// <param name='lhs'>被加数</param>
		/// <param name='rhs'>加数</param>
		public static BoneMorphParameter operator+ (BoneMorphParameter lhs, BoneMorphParameter rhs) {
			BoneMorphParameter result = new BoneMorphParameter();
			result.position = lhs.position + rhs.position;
			result.rotation = lhs.rotation * rhs.rotation; //順回転乗算
			return result;
		}
示例#8
0
		/// <summary>
		/// パラメータの線形補間
		/// </summary>
		/// <returns>補間値</returns>
		/// <param name='lhs'>補間始点</param>
		/// <param name='rhs'>補間終点</param>
		/// <param name='weight'>補間係数(0.0fなら始点、1.0fなら終点)</param>
		public static BoneMorphParameter Lerp (BoneMorphParameter lhs, BoneMorphParameter rhs, float weight) {
			BoneMorphParameter result = new BoneMorphParameter();
			result.position = Vector3.Lerp(lhs.position, rhs.position, weight);
			result.rotation = Quaternion.Slerp(lhs.rotation, rhs.rotation, weight);
			return result;
		}
示例#9
0
		/// <summary>
		/// スカラー乗算
		/// </summary>
		/// <returns>スカラー乗算値</returns>
		/// <param name='lhs'>被乗数</param>
		/// <param name='rhs'>乗数</param>
		public static BoneMorphParameter operator* (BoneMorphParameter lhs, float rhs) {
			BoneMorphParameter result = new BoneMorphParameter();
			result.position = lhs.position * rhs;
			result.rotation = Quaternion.Slerp(Quaternion.identity, lhs.rotation, rhs); //0.0fが掛けられればQuaternion.identity化する
			return result;
		}