void UpdateTarget()

in visualization/FitAdam/include/AdamFastCost.h [714:842]


	void UpdateTarget()
	{
		int offset = 0;
		if (regressor_type == 0)
		{
			for (int ic = 0; ic < fit_data_.adam.m_indices_jointConst_adamIdx.rows(); ic++)
				m_targetPts.block(ic * 5, 0, 5, 1) = fit_data_.bodyJoints.block(0, fit_data_.adam.m_indices_jointConst_smcIdx(ic), 5, 1);
			offset += fit_data_.adam.m_indices_jointConst_adamIdx.rows();

			if (fit_data_.lHandJoints.size() > 0)
			{
				for (int ic = 0; ic < fit_data_.adam.m_correspond_adam2lHand_adamIdx.rows(); ic++)
					m_targetPts.block((offset + ic) * 5, 0, 5, 1) = fit_data_.lHandJoints.block(0, fit_data_.adam.m_correspond_adam2lHand_lHandIdx(ic), 5, 1);
				offset += fit_data_.adam.m_correspond_adam2lHand_adamIdx.rows();
			}

			if (fit_data_.rHandJoints.size() > 0)
			{
				for (int ic = 0; ic < fit_data_.adam.m_correspond_adam2rHand_adamIdx.rows(); ic++)
					m_targetPts.block((offset + ic) * 5, 0, 5, 1) = fit_data_.rHandJoints.block(0, fit_data_.adam.m_correspond_adam2rHand_rHandIdx(ic), 5, 1);
				offset += fit_data_.adam.m_correspond_adam2rHand_adamIdx.rows();
			}

			corres_vertex2targetpt[0].second = {fit_data_.bodyJoints(0, 1), fit_data_.bodyJoints(1, 1), fit_data_.bodyJoints(2, 1), fit_data_.bodyJoints(3, 1), fit_data_.bodyJoints(4, 1)};
			corres_vertex2targetpt[1].second = {fit_data_.bodyJoints(0, 16), fit_data_.bodyJoints(1, 16), fit_data_.bodyJoints(2, 16), fit_data_.bodyJoints(3, 16), fit_data_.bodyJoints(4, 16)};
			corres_vertex2targetpt[2].second = {fit_data_.bodyJoints(0, 18), fit_data_.bodyJoints(1, 18), fit_data_.bodyJoints(2, 18), fit_data_.bodyJoints(3, 18), fit_data_.bodyJoints(4, 18)};
			corres_vertex2targetpt[3].second = {fit_data_.bodyJoints(0, 19), fit_data_.bodyJoints(1, 19), fit_data_.bodyJoints(2, 19), fit_data_.bodyJoints(3, 19), fit_data_.bodyJoints(4, 19)};
			corres_vertex2targetpt[4].second = {fit_data_.rFoot(0, 0), fit_data_.rFoot(1, 0), fit_data_.rFoot(2, 0), fit_data_.rFoot(3, 0), fit_data_.rFoot(4, 0)};
			corres_vertex2targetpt[5].second = {fit_data_.rFoot(0, 1), fit_data_.rFoot(1, 1), fit_data_.rFoot(2, 1), fit_data_.rFoot(3, 1), fit_data_.rFoot(4, 1)};
			corres_vertex2targetpt[6].second = {fit_data_.rFoot(0, 2), fit_data_.rFoot(1, 2), fit_data_.rFoot(2, 2), fit_data_.rFoot(3, 2), fit_data_.rFoot(4, 2)};
			corres_vertex2targetpt[7].second = {fit_data_.rFoot(0, 2), fit_data_.rFoot(1, 2), fit_data_.rFoot(2, 2), fit_data_.rFoot(3, 2), fit_data_.rFoot(4, 2)};
			corres_vertex2targetpt[8].second = {fit_data_.lFoot(0, 0), fit_data_.lFoot(1, 0), fit_data_.lFoot(2, 0), fit_data_.lFoot(3, 0), fit_data_.lFoot(4, 0)};
			corres_vertex2targetpt[9].second = {fit_data_.lFoot(0, 1), fit_data_.lFoot(1, 1), fit_data_.lFoot(2, 1), fit_data_.lFoot(3, 1), fit_data_.lFoot(4, 1)};
			corres_vertex2targetpt[10].second = {fit_data_.lFoot(0, 2), fit_data_.lFoot(1, 2), fit_data_.lFoot(2, 2), fit_data_.lFoot(3, 2), fit_data_.lFoot(4, 2)};
			corres_vertex2targetpt[11].second = {fit_data_.lFoot(0, 2), fit_data_.lFoot(1, 2), fit_data_.lFoot(2, 2), fit_data_.lFoot(3, 2), fit_data_.lFoot(4, 2)};
			for (int r = 0; r < fit_data_.adam.m_correspond_adam2face70_adamIdx.rows(); ++r)
			{
				int face70ID = fit_data_.adam.m_correspond_adam2face70_face70Idx(r);
				if (face70ID < 0) corres_vertex2targetpt[12 + r].second = {{0.0, 0.0, 0.0, 0.0, 0.0}};
				else
					corres_vertex2targetpt[12 + r].second = {{fit_data_.faceJoints(0, face70ID), fit_data_.faceJoints(1, face70ID), fit_data_.faceJoints(2, face70ID), fit_data_.faceJoints(3, face70ID), fit_data_.faceJoints(4, face70ID)}};
			}

			if (fit_data_.fit_surface)
			{
				const int surface_offset = 12 + fit_data_.adam.m_correspond_adam2face70_face70Idx.rows();
				for (int i = 0; i < fit_data_.surface_constraint.cols(); i++)
				{
					corres_vertex2targetpt[surface_offset + i].second = {fit_data_.surface_constraint(0, i), fit_data_.surface_constraint(1, i), fit_data_.surface_constraint(2, i), fit_data_.surface_constraint(3, i), fit_data_.surface_constraint(4, i)};
				}
				assert(fit_data_.surface_constraint.cols() + surface_offset == corres_vertex2targetpt.size());
			}

			for (int i = 0; i < corres_vertex2targetpt.size(); i++)
			{
				std::copy(corres_vertex2targetpt[i].second.data(), corres_vertex2targetpt[i].second.data() + 5, m_targetPts.data() + 5 * (i + offset));
			}
		}
		else if (regressor_type == 1)
		{
			for(int i = 0; i < fit_data_.adam.h36m_jointConst_smcIdx.size(); i++)
				m_targetPts.block(5 * i, 0, 5, 1) = fit_data_.bodyJoints.col(fit_data_.adam.h36m_jointConst_smcIdx[i]);
			if (fit_data_.fit_surface)
			{
				offset = fit_data_.adam.h36m_jointConst_smcIdx.size();
				for (int i = 0; i < fit_data_.surface_constraint.cols(); i++)
				{
					corres_vertex2targetpt[i].second = {fit_data_.surface_constraint(0, i), fit_data_.surface_constraint(1, i), fit_data_.surface_constraint(2, i), fit_data_.surface_constraint(3, i), fit_data_.surface_constraint(4, i)};
				}
				for (int i = 0; i < corres_vertex2targetpt.size(); i++)
				{
					std::copy(corres_vertex2targetpt[i].second.data(), corres_vertex2targetpt[i].second.data() + 5, m_targetPts.data() + 5 * (i + offset));
				}
			}
		}
		else
		{
			assert (regressor_type == 2);
			for(int i = 0; i < fit_data_.adam.coco_jointConst_smcIdx.size(); i++)
				m_targetPts.block(5 * i, 0, 5, 1) = fit_data_.bodyJoints.col(fit_data_.adam.coco_jointConst_smcIdx[i]);

			int offset = fit_data_.adam.coco_jointConst_smcIdx.size();
			if (fit_data_.lHandJoints.size() > 0)
			{
				for (int ic = 0; ic < fit_data_.adam.m_correspond_adam2lHand_adamIdx.rows(); ic++)
					m_targetPts.block((offset + ic) * 5, 0, 5, 1) = fit_data_.lHandJoints.block(0, fit_data_.adam.m_correspond_adam2lHand_lHandIdx(ic), 5, 1);
				offset += fit_data_.adam.m_correspond_adam2lHand_adamIdx.rows();
			}

			if (fit_data_.rHandJoints.size() > 0)
			{
				for (int ic = 0; ic < fit_data_.adam.m_correspond_adam2rHand_adamIdx.rows(); ic++)
					m_targetPts.block((offset + ic) * 5, 0, 5, 1) = fit_data_.rHandJoints.block(0, fit_data_.adam.m_correspond_adam2rHand_rHandIdx(ic), 5, 1);
				offset += fit_data_.adam.m_correspond_adam2rHand_adamIdx.rows();
			}
			assert(offset == m_nCorrespond_adam2joints); // check the number of constraints

			offset = 0;
			corres_vertex2targetpt[offset++].second = {fit_data_.rFoot(0, 0), fit_data_.rFoot(1, 0), fit_data_.rFoot(2, 0), fit_data_.rFoot(3, 0), fit_data_.rFoot(4, 0)};
			corres_vertex2targetpt[offset++].second = {fit_data_.rFoot(0, 1), fit_data_.rFoot(1, 1), fit_data_.rFoot(2, 1), fit_data_.rFoot(3, 1), fit_data_.rFoot(4, 1)};
			corres_vertex2targetpt[offset++].second = {fit_data_.rFoot(0, 2), fit_data_.rFoot(1, 2), fit_data_.rFoot(2, 2), fit_data_.rFoot(3, 2), fit_data_.rFoot(4, 2)};
			corres_vertex2targetpt[offset++].second = {fit_data_.rFoot(0, 2), fit_data_.rFoot(1, 2), fit_data_.rFoot(2, 2), fit_data_.rFoot(3, 2), fit_data_.rFoot(4, 2)};
			corres_vertex2targetpt[offset++].second = {fit_data_.lFoot(0, 0), fit_data_.lFoot(1, 0), fit_data_.lFoot(2, 0), fit_data_.lFoot(3, 0), fit_data_.lFoot(4, 0)};
			corres_vertex2targetpt[offset++].second = {fit_data_.lFoot(0, 1), fit_data_.lFoot(1, 1), fit_data_.lFoot(2, 1), fit_data_.lFoot(3, 1), fit_data_.lFoot(4, 1)};
			corres_vertex2targetpt[offset++].second = {fit_data_.lFoot(0, 2), fit_data_.lFoot(1, 2), fit_data_.lFoot(2, 2), fit_data_.lFoot(3, 2), fit_data_.lFoot(4, 2)};
			corres_vertex2targetpt[offset++].second = {fit_data_.lFoot(0, 2), fit_data_.lFoot(1, 2), fit_data_.lFoot(2, 2), fit_data_.lFoot(3, 2), fit_data_.lFoot(4, 2)};
			for (int r = 0; r < fit_data_.adam.m_correspond_adam2face70_adamIdx.rows(); ++r)
			{
				int face70ID = fit_data_.adam.m_correspond_adam2face70_face70Idx(r);
				if (face70ID < 0) corres_vertex2targetpt[offset++].second = {{0.0, 0.0, 0.0, 0.0, 0.0}};
				else
					corres_vertex2targetpt[offset++].second = {{fit_data_.faceJoints(0, face70ID), fit_data_.faceJoints(1, face70ID), fit_data_.faceJoints(2, face70ID), fit_data_.faceJoints(3, face70ID), fit_data_.faceJoints(4, face70ID)}};
			}
			if (fit_data_.fit_surface)
			{
				for (int i = 0; i < fit_data_.surface_constraint.cols(); i++)
				{
					corres_vertex2targetpt[offset++].second = {fit_data_.surface_constraint(0, i), fit_data_.surface_constraint(1, i), fit_data_.surface_constraint(2, i), fit_data_.surface_constraint(3, i), fit_data_.surface_constraint(4, i)};
				}
			}
			assert(offset == m_nCorrespond_adam2pts); // check the number of constraints

			offset = m_nCorrespond_adam2joints;
			for (int i = 0; i < corres_vertex2targetpt.size(); i++)
			{
				std::copy(corres_vertex2targetpt[i].second.data(), corres_vertex2targetpt[i].second.data() + 5, m_targetPts.data() + 5 * (i + offset));
			}
		}
	}