Mesh Sequence Formalism
We use Mesh Sequence as a global term to refer to all types of mesh animations. Currently, we only know of two types mesh sequences used in the literature:- Dynamic Mesh: in this kind of mesh sequences, the number of vertices, the connectivity (neighboring relations be- tween vertices) and the topology of the mesh are fixed all along the sequence: the animation represents one mesh whose vertex coordinates are evolving though time.
- Unconstrained Mesh Sequence: this type of mesh se quences does not enforce restrictions on the number of vertices, the connectivity or the topology of mesh during the sequence. The an imation represents a set of meshes without any a priori relation between them.
- Stable Mesh Sequence :a mesh sequence between the Dynamic Mesh and the Unconstrained Mesh Sequence. This type of mesh se quences does not enforce restrictions on the number of vertices and the connectivity. However the topology of mesh is fixed during the sequence.
Mesh Sequence Segmentation
A mesh M is defined as:
We have defined 3 mesh sequence segmentations:
- Stable Segmentation : One Segmented mesh for the sequence.
- Geometric Segmentation: Segment mesh at each frame.
This means applying f times a static mesh segmentation.
We still enforce the following constraint: each segmentation
should have the same number of segments and have a
one to one mapping between segments. Let k be the num-
ber of segments. A geometric segmentation is defined as:
Another constraint, which is not mandatory and has to be removed for unconstrained mesh sequences, is to keep a constant connectivity between segments: if segment B is adjacent to segment A in one frame of the sequence, then it has to be adjacent to segment A in all other frames. - Time Segmentation: this segmentation consists in segmenting
the sequence in sub-sequences, based on properties defined by the application aim.
Format Description
This document presents the format used for the mesh sequences and their associated segmentations in the MADRAS repository.The format is based on XML (extensible!) and uses a bzip2 (without loss) compression. The scheme can be downloaded here. It follow the formalism defined here
The first two lines correspond to the xml header and schema description. They are mandatories :
<?xml version="1.0"?>
<MS xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' Name="NAME" nbFrame="NBFRAME" xsi:schemaLocation='http://evasion.imag.fr/Membres/Romain.Arcila/files MeshSequenceSchema.xsd'>
where Name is the name of the sequence (can be empty) and nbFrame is at least 1.
The mesh sequence is therefore defined with one of the following tag:
<DM> : sequence is a Dynamic Mesh.
<SMS> : sequence is a Stable Mesh Sequence
<UMS> : sequence is an Unstable Mesh Sequence
A mesh is defined with the tag <M> containing :
one tag <Vs> : the vertices of the mesh with a succssion of tags <V>S1 S2 S3</V>
one tag <Fs> : the faces of the mesh with a succession of tags <F> index_S1 index_S2 index_S3 index_S4 .... <F>
A Dynamic Mesh (<DM>) contains a tag <M> (the first first frame) and a succession of tags <Vs> (one by frame of the sequence) which described the position of the vertices all along the sequence. A Stable Mesh Sequence (<SMS>) and an Unstable Mesh Sequence (<UMS.>) contain a succession of tags <M.>, one by frame.
Please note that a file can contain only one mesh sequence.
-----------------------------------------------------
The format supports the declararion of processing tags (<Processing.>) after the declaration of the mesh sequence.
This tags is used to described the transformation applied on the sequence, such as compression
or remeshing. At the time of now, only the Segmentations tag is defined. Additionnal tags can be added, compression will be added on near future.
The <Segmentations> tag is used to declare the different segmentations applied on the mesh sequence. It contains all the segmentations. (Please not than there is no support for Hierarchical Segmentation as it is not defined.)
The following segmentation types are defined:
-StableSegmentation (<StableSegmentation V={0,1}>): V=0 means face clustering while V=1 means vertex clustering. It contains a sequence a <Group.>index_{vertex1,face1} index_{vertex5,face5}...</Group> where Group is a cluster. The index corresponds to the vertex or face index (as declared in M tags) )of the mesh in the first frame of the sequence (or subsequence).
-GeometricSegmentation (<GeometricSegementation V={0,1}>): see StableSegmentation for V meaning.This tags contains a seuence of seg tag (<Seg>), one by frame, which contains the declaration of cluster with the Group tag (see StableSegmentation). GeometricSegmentation can contain a StableSegmentation.
-TimeSegmentation (<TimeSegmentation>): the basic version contains a succession of Group tag (<Group>): <Group>first_frame last_frame </Group>, where first_frame (resp. last_frame) correspond to the first frame (resp. last frame) of the subsequence. The TimeSegmentation can embedd other Segmentation for each Group. <Group> frame1 frame2 <Segmentation_type> declararion of the segmentation</SegmentationType></Group> where Segmentation_type can be GeometricSegmentation or StableSegmentation (It means that the segmentation type will be applied to the subsequence).