Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#ifndef MESHUTILS_H
Toshihiro Shimizu 890ddd
#define MESHUTILS_H
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#undef DVAPI
Toshihiro Shimizu 890ddd
#undef DVVAR
Toshihiro Shimizu 890ddd
#ifdef TNZEXT_EXPORTS
Toshihiro Shimizu 890ddd
#define DVAPI DV_EXPORT_API
Toshihiro Shimizu 890ddd
#define DVVAR DV_EXPORT_VAR
Toshihiro Shimizu 890ddd
#else
Toshihiro Shimizu 890ddd
#define DVAPI DV_IMPORT_API
Toshihiro Shimizu 890ddd
#define DVVAR DV_IMPORT_VAR
Toshihiro Shimizu 890ddd
#endif
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=======================================================================
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//    Forward Declarations
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class TMeshImageP;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
struct DrawableTextureData;
Toshihiro Shimizu 890ddd
struct PlasticDeformerDataGroup;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=======================================================================
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//********************************************************************************************
Toshihiro Shimizu 890ddd
//    Mesh Image Utility  functions
Toshihiro Shimizu 890ddd
//********************************************************************************************
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
/*!
Toshihiro Shimizu 890ddd
  \brief    Transforms a mesh image by the specified affine transform.
Toshihiro Shimizu 890ddd
*/
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
DVAPI void transform(
Toshihiro Shimizu 890ddd
	const TMeshImageP &image, //!< Mesh image to be transformed.
Toshihiro Shimizu 890ddd
	const TAffine &aff		  //!< Affine transform to be applied on the input image.
Toshihiro Shimizu 890ddd
	);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//---------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
/*!
Toshihiro Shimizu 890ddd
  \brief    Draws the edges of the input meshImage on current OpenGL context.
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
  \remark   This function accepts input data associated to a deformation of
Toshihiro Shimizu 890ddd
            the mesh image to be drawn. See PlasticDeformerStorage for details.
Toshihiro Shimizu 890ddd
*/
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
DVAPI void tglDrawEdges(
Toshihiro Shimizu 890ddd
	const TMeshImage &image,						  //!< Input mesh image whose edges will be drawn.
Toshihiro Shimizu 890ddd
	const PlasticDeformerDataGroup *deformerDatas = 0 //!< Optional data about a deformation of the input image.
Toshihiro Shimizu 890ddd
	);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//---------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
/*!
Toshihiro Shimizu 890ddd
  \brief    Draws the faces of the input meshImage on current OpenGL context.
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
  \remark   This function accepts input data associated to a deformation of
Toshihiro Shimizu 890ddd
            the mesh image to be drawn. See PlasticDeformerStorage for details.
Toshihiro Shimizu 890ddd
*/
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
DVAPI void tglDrawFaces(
Toshihiro Shimizu 890ddd
	const TMeshImage &image,						  //!< Input mesh image whose faces will be drawn.
Toshihiro Shimizu 890ddd
	const PlasticDeformerDataGroup *deformerDatas = 0 //!< Optional data about a deformation of the input image.
Toshihiro Shimizu 890ddd
	);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//---------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
/*!
Toshihiro Shimizu 890ddd
  \brief    Draws the stacking order information of the input mesh image's
Toshihiro Shimizu 890ddd
            faces, on current OpenGL context.
Toshihiro Shimizu 890ddd
*/
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
DVAPI void tglDrawSO(
Toshihiro Shimizu 890ddd
	const TMeshImage &image,						   //!< Input mesh image whose SO will be drawn.
Toshihiro Shimizu 890ddd
	double minColor[4],								   //!< RGBM color quadruple (in [0, 1]) corresponding to the lowest SO value.
Toshihiro Shimizu 890ddd
	double maxColor[4],								   //!< RGBM color quadruple corresponding to the highest SO value.
Toshihiro Shimizu 890ddd
	const PlasticDeformerDataGroup *deformerDatas = 0, //!< Deformation data structure containing SO data.
Toshihiro Shimizu 890ddd
	bool deformedDomain = false						   //!< Whether the image data must be drawn \a deformed
Toshihiro Shimizu 890ddd
													   //!  by the specified deformerDatas, or not.
Toshihiro Shimizu 890ddd
	);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//---------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
/*!
Toshihiro Shimizu 890ddd
  \brief    Draws the \a rigidity information of the input mesh image's
Toshihiro Shimizu 890ddd
            faces, on current OpenGL context.
Toshihiro Shimizu 890ddd
*/
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
DVAPI void tglDrawRigidity(
Toshihiro Shimizu 890ddd
	const TMeshImage &image,						   //!< Input mesh image whose rigidity will be drawn.
Toshihiro Shimizu 890ddd
	double minColor[4],								   //!< RGBM color quadruple (in [0, 1]) corresponding to the lowest rigidity value.
Toshihiro Shimizu 890ddd
	double maxColor[4],								   //!< RGBM color quadruple corresponding to the highest rigidity value.
Toshihiro Shimizu 890ddd
	const PlasticDeformerDataGroup *deformerDatas = 0, //!< Data structure of an optional deformation of the input image.
Toshihiro Shimizu 890ddd
	bool deformedDomain = false						   //!< Whether the image data must be drawn \a deformed
Toshihiro Shimizu 890ddd
													   //!  by the specified deformerDatas, or not.
Toshihiro Shimizu 890ddd
	);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//---------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
/*!
Toshihiro Shimizu 890ddd
  \brief    Draws a texturized mesh image on current OpenGL context.
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
  \remark   The input textures are assumed to be \a nonpremultiplied,
Toshihiro Shimizu 890ddd
            while the drawn image will be \a premultiplied.
Toshihiro Shimizu 890ddd
*/
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
DVAPI void tglDraw(
Toshihiro Shimizu 890ddd
	const TMeshImage &image,					  //!< Mesh image to be drawn.
Toshihiro Shimizu 890ddd
	const DrawableTextureData &texData,			  //!< Textures data to use for texturing.
Toshihiro Shimizu 890ddd
	const TAffine &meshToTexAffine,				  //!< Transform from mesh to texture coordinates.
Toshihiro Shimizu 890ddd
	const PlasticDeformerDataGroup &deformerDatas //!< Data structure of a deformation of the input image.
Toshihiro Shimizu 890ddd
	);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#endif // MESHUTILS_H