[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

EP1869645A2 - Animation method using an animation graph - Google Patents

Animation method using an animation graph

Info

Publication number
EP1869645A2
EP1869645A2 EP06726331A EP06726331A EP1869645A2 EP 1869645 A2 EP1869645 A2 EP 1869645A2 EP 06726331 A EP06726331 A EP 06726331A EP 06726331 A EP06726331 A EP 06726331A EP 1869645 A2 EP1869645 A2 EP 1869645A2
Authority
EP
European Patent Office
Prior art keywords
animation
modules
defaultvalue
module
graph
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
EP06726331A
Other languages
German (de)
French (fr)
Inventor
Gaspard Breton
David Cailliere
Danielle Pele
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Orange SA
Original Assignee
France Telecom SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by France Telecom SA filed Critical France Telecom SA
Publication of EP1869645A2 publication Critical patent/EP1869645A2/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • G06T13/403D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/61Scene description

Definitions

  • the present invention generally relates to the field of image processing, and in particular the animation of graphic scenes using an animation engine.
  • the invention is focused primarily on the animation of characters in three dimensions, but its method is also used on any other type of graphic scene in two or three dimensions.
  • the current animation engines implement a single animation method each, for example a parametric system, a muscular system, or a system based on key images. Moreover, in these animation engines, all the modules necessary for the animation, as well as their interactions, are known in advance and can not be modified. These animation engines are therefore generally built in one block, in the form of a compiled executable code.
  • the current animation engines do not make it possible to choose an animation method when the engine is started, nor to adapt the power required to an animation by choosing to animate only an independent subset of a scene. or a three-dimensional character. In particular, they do not make it possible to carry out tests by choosing a particular animation method to animate only part of a face. Each test requires a different animation engine.
  • the present invention aims to solve the disadvantages of the prior art by providing an animation method acting on a scene graph, a term commonly used to refer to a collection of three-dimensional graphic meshes, and an animation graph to execute different phases of the same animation.
  • the invention proposes a method of animating a scene graph characterized in that it comprises the steps of:
  • an animation graph instance comprising animation and composition modules organized in a tree-like manner, the animation modules being sub-tree sheets of the graph and the composition modules making it possible to compose the results of their son modules, these being indifferently modules of animation or composition,
  • the invention makes it possible to reuse the animation modules of the same animation engine in different configurations, without requiring coding different assemblies of modules in different programs for each configuration.
  • the animation engine according to the invention adapts to the power of the machine that uses it, by choosing an appropriate animation method. It also allows you to test different animation processes, without recompiling animation modules of the animation engine for each different configuration test.
  • the use of an animation graph to produce an animation makes it possible to modify the characteristics of the animation by choosing only the appropriate animation modules, among those that exist and are already compiled in the animation engine.
  • the algorithm used by at least one of said composition modules does not does not depend on the parts of the mesh on which its son animation modules act.
  • the algorithm used by at least one of said composition modules of the graph does not depend on the animation method used by its son modules.
  • composition modules make it possible to test animation modules of different processes by reusing the same composition modules.
  • the step of creating an animation graph instance comprises reading a configuration file describing said animation graph.
  • a configuration file of the characteristics needed to create an animation graph facilitates the realization of various configuration tests.
  • a configuration file is defined and makes it possible to create the animation graph corresponding to this test in the animation engine.
  • the invention also relates to an animation graph for executing one or more animation phases using the method according to the invention, characterized in that: each animation phase is described by a sub-tree of which it is the root in the animation graph, said subtree including animation modules and possibly composition modules,
  • the animation modules and the possible composition modules are organized in a tree-like manner, the animation modules being sheets of said sub-tree and the modules of the sub-tree.
  • composition allowing the composition of the results of their son modules, these being indifferently modules of animation or composition.
  • the invention also relates to an animation engine characterized in that it comprises dynamic configuration means using an animation graph according to the invention.
  • the invention also relates to the use of an animation graph according to the invention for the execution of an animation, characterized in that when the animation graph contains several phases, they are executed sequentially.
  • the invention also relates to a computer program characterized in that it comprises instructions for implementing the method according to the invention, when said program is executed in a computer system.
  • the animation graph, the animation engine and the computer program have advantages similar to those of the method.
  • FIG. 1 represents an animation graph according to the invention
  • FIG. 2 represents the steps of the method according to the invention
  • FIG. 3 represents the binding of a face in three dimensions, intended to be animated
  • FIG. 4 represents the composition of animation results by a composition module
  • FIG. 5 represents a user interface
  • FIG. 6 represents the execution step of the method according to the invention
  • FIG. 7 represents a set of parameters defining an example of a profile making it possible to configure an animation engine.
  • the method according to the invention is implemented in an animation engine in a software way.
  • the software used has a set of predefined modules whose instantiation in the form of a tree is controlled by an animation graph.
  • the method dynamically configures the animation engine using the animation graph.
  • This engine configuration, or animation graph is specified in a configuration file called profile.
  • the modules of the animation engine are animation and composition modules, intended in this embodiment to animate a scene graph representing a face in three dimensions. Nevertheless, the method according to the invention is also applicable to any other type of graphic scene, using animation and composition modules adapted to this other type of scene. These modules are organized in a tree-like manner in the animation graph G shown in FIG. 1, configured so as to produce a three-dimensional animation of the face.
  • these modules are generally already compiled because of a previous use.
  • the use of the method according to the invention does not require the recompilation of these modules, even when the configuration of the graph is modified, for example to use animation modules corresponding to another animation method that the animation modules precedents.
  • Step e1 is the creation of an animation graph instance corresponding to a configuration of the animation engine.
  • This configuration is selected using a profile, or configuration file describing the animation graph G, from among a set of profiles available in the animation engine. It defines the animation process used and the choice of corresponding modules to use. As previously explained, these modules are usually pre-compiled.
  • the animation engine creates this animation graph instance from the reading of the selected configuration file. It creates an instance of each module of the graph, and the links defined by the structure of the graph of animation G, between these instances of modules. These links are used during the execution stage of the animation.
  • the next step e2 is the parameterization of each animation module of the graph with input parameters specific to each of these modules and the face to be animated, and with control parameters specific to the modules and the animation itself. Even. These parameters are indeed often to be modified, for example when the animation engine is used on a different face than that of the previous use.
  • the parameterization uses, for example, parameter files giving the values for each face of all the parameters necessary for the animation engine animation modules, one file per face being available in the engine.
  • the profile selected in step e1 also contains default parameters for the animation modules of the animation graph G, which are used in step e2 to parameterize the animation modules, in the case, for example, where the parameter files are incomplete.
  • the next step e3 is the execution of the animation. It allows the animation of the face in three dimensions by following the indications of the control parameters given during step e2 of parameterizing the modules of the animation graph.
  • the animation modules are sheets of the graph G tree, while the composition modules are parents of modules of animation or composition in the graph tree G.
  • the graph G tree of the animation engine is rooted in the sequence S, which has for girls one or more phases, which will be executed sequentially one after the other. other. In the example of Figure 1 these phases are the phases P1 to P3. This first level of the tree thus makes it possible to describe the temporal aspect of the animation, while the following levels describe the organizational aspect of the engine.
  • Each animation module MA1, MA2, ..., MA10 is used, during a three-dimensional animation of the face, to animate a part of the three-dimensional mesh that forms this face.
  • an animation module is specific to a particular animation process, but is not always specific to the part of the mesh on which it acts.
  • the animation modules Mu1 and Mu2 acting on the scene graph or M-mesh of the face in three dimensions use a method of muscle animation.
  • This animation process consists of deforming the vertices of a part of the mesh in a similar way to the deformation that would be caused by a muscle on the corresponding part of the face, also called zone of influence of the muscle.
  • Each module can therefore be likened to a muscle.
  • the Mu1 module corresponds to a frontal muscle whose functioning is that of an ordinary muscle, also usable on other parts of the face, for example as a risorius muscle, while the Mu2 module corresponds to a mouth muscle whose operation is more specific because it should not deform the lower lip of the face.
  • the positioning of an animation module on the three-dimensional mesh is determined by input parameters to this module, configured during step e2 of setting the animation graph.
  • these parameters define, for example, the point of attachment of the muscle to the bone. of the face, its point of insertion in the flesh of the face, or its opening angle.
  • the animation modules MA1, MA2 MA10 shown in FIG. 1 therefore make it possible to modify the geometrical properties of the three-dimensional mesh by displacing certain vertices, or the colorimetric properties by modifying the materials or textures used for the illumination of the face by three dimensions.
  • an animation module is activated either locally or globally:
  • a module is activated locally when it acts on only one vertex of the mesh to modify the position or the colorimetric properties.
  • the result returned by the module then contains the new position of the vertex in the mesh, and possibly other parameters of color or composition.
  • a module is globally enabled when it processes all the vertices of a mesh at the same time.
  • the returned result is, for example, a new temporary mesh that does not contain composition parameters.
  • composition modules MC1, MC2,..., MC4, represented in FIG. 1 make it possible to compose the results of the animation modules that work together, for example the results of modules corresponding to pseudo-muscles operating simultaneously.
  • a composition module in the graph G composes the results of the animation or composition modules of which it is the parent in the animation graph G.
  • the MC1 composition module is used to compose the result of the MC3 and MC4 composition modules,
  • composition module MC2 makes it possible to compose the result of the modules of animation MA4 and MA5, -
  • composition module MC3 makes it possible to compose the result of the modules of animation MA6, MA7, and MA8,
  • the MC4 composition module is used to compose the result of the MA9 and MA10 animation modules. More precisely, a composition module makes it possible to determine the final deformation resulting from the actions of its son modules on the three-dimensional mesh.
  • the composition algorithm used by this module is implemented independently of the part of the mesh concerned. It consists in fact in a simple weighting of the deformations caused on the mesh by each of its son modules.
  • the composition parameters provided by each of the child modules to the composition module may, however, be specific to the child modules. These may be, for example, specific weighting coefficients.
  • the local action of the module MA ⁇ causes the displacement of the vertex A towards the position B
  • the local action of the module MA10 causes the displacement of the vertex A to the C position.
  • the simple addition of these displacements results in the position D, which is generally unrealistic for the animation of a face.
  • the composition module MC4 uses a weighting algorithm to give as a result of the composition of the actions of the modules MA9 and MA10 on the vertex A, the position E, which is more realistic.
  • composition modules therefore use the results of the local actions of each of their child modules.
  • the composition modules are activated either locally or globally, as for the modules of animation. When activated locally, they return the results of their top-by-vertex composition.
  • the results of the modules animation can thus be reassembled to be used iteratively in the tree of the graph G by their different parent modules.
  • composition modules are either specific to an animation method or independent of the animation method used. In the first case, when changing the animation method used, these specific composition modules must be changed in the animation graph G, while in the second case only the animation modules must be changed.
  • composition modules are very generic because they simply add or weight the results of each of their son modules, and are independent of the animation process used.
  • composition modules of the graph G are applied to the animation modules themselves and not to the objects of the three-dimensional scene considered. This makes it easy to reuse the G animation graph on different faces, modifying only the positioning parameters of the animation modules. These parameters are positioned during step e2 of setting the animation graph.
  • Some of these parameters are numerical values, corresponding for example to a point of attachment of a muscle for a muscle module.
  • Other parameters called elements are modules implementing detection or pretreatment algorithms on the three-dimensional mesh necessary for certain animation modules. Indeed, for example an animation module that treats the operation of eyelids requires knowing where are the eyes of the face. The detection of an eye is then implemented in an element. These elements making it possible to carry out pretreatments or detections of three-dimensional facial areas are for example performed during step e2 of setting the animation graph G.
  • control parameters are necessary in order to carry out the animation.
  • These control parameters are specific to an expression, they define for example for a muscular animation process, the degree of contraction to be applied to the muscle modeled by an animation module, when the face to animate must smile.
  • These different control parameters are grouped into animation channels.
  • a large number of animation channels can be used, including for example a channel for the movement of the eyes, a channel for the movement of the eyelids, a channel for emotions, a channel for emphases, which are conversational markers, or a channel for speech, more precisely one channel per language.
  • the animation graph thus created and parameterized during steps e1 and e2 is executed at the time of the animation.
  • the animation graph G is more or less complex and incorporates different elements and animation modules that do not require the same computing power.
  • a user interface is implemented in the engine to adjust the parameters of the animation modules, during step e2 of setting the animation graph G. This interface is used together or instead of the parameter files used in step e2.
  • the user interface is divided into two categories, the parameterization interface and the control interface.
  • the parameterization interface makes it possible to adapt the animation modules to the virtual character by positioning the input parameters of these modules.
  • the control interface is used to adjust the static control parameters of the animation modules that will be used during the step e3 of executing the animation.
  • this user interface is intended for the skilled person using the animation engine according to the invention, and not for any user who uses another type of interface to simply define a sequence of expressions predefined to play for a given animation. Indeed any user intervenes during the e3 execution stage only, for example by asking the animation engine to pronounce the word "Hello” to the face. The animation engine then declines the dynamic control parameters necessary for the pronunciation of the word "Hello", by using the static control parameters positioned by those skilled in the art at step e2 of setting the animation graph G.
  • a voice synthesis system which breaks down the word "Hello" into phonemes, each phoneme having one or more associated static control parameters, and deduces the dynamic control parameters to be applied to the face between two phonemes by a interpolation using the static control parameters associated with each of these two phonemes.
  • each The interface category is organized into pages so that the parameters can be grouped into a convenient form.
  • the pages are organized in one or more horizontal or vertical groups of graphic objects, each of which makes it possible to describe and position a parameter. These groups can be described recursively. For example, a vertical group may consist of several horizontal groups.
  • the parameterization interface I is composed of three graphical pages TAB1 to TAB3.
  • the first page TAB1 contains a GV vertical group of four graphic objects:
  • the graphic object IF1 makes it possible to position the input parameter "Extra" of an eyelid animation module. This parameter defines the position of the eyelid relative to the radius of the eye.
  • the graphic object IF2 makes it possible to position the input parameter "Attenuation" of the same module.
  • This parameter defines the attenuation of the movement of the apices of the eyelid when it opens.
  • the graphic object IF3 makes it possible to position the input parameter "openMax" of the same module, defining the maximum opening of the eyelid during the animation.
  • the graphic object IF4 makes it possible to provide the eyelid animation module with an "eye" detection element corresponding to either the right eye or the left eye of the face in three dimensions.
  • Step e3 of execution of the animation graph G is now detailed.
  • the animation is started in step e3 of the execution of the animation graph G.
  • the execution of the animation graph G calls the "anime" function of the root sequence S of the G animation graph tree. This execution consists of traversing the animation graph to produce the desired animation.
  • the control parameters of each animation module are applied to the module corresponding during this animation, to produce the expressions that are sent as instructions to the engine during the execution step e3.
  • each animation channel provides its own control parameters.
  • these parameters are mixed according to a so-called "mixing" technique which makes it possible to coordinate the different deformations of the face due to each animation channel, in order to obtain a coherent animation.
  • the animation modules thus receive only a set of control parameters, as if only one animation channel had been defined. For example, for a muscular animation method, an animation module receives only one contraction value of the muscle that it represents at a time.
  • the operation of the execution step e3 is represented in FIG. 6.
  • the "anime” function applied to the sequence S calls in turn the functions "animates” daughter phases of the sequence S, that is to say say in this embodiment, the functions "animates” phases P1 to P3, in order to execute them sequentially.
  • the operation of the animation of the phase P1 is not shown in FIG.
  • Each phase P1 to P3 has the list of their son modules, and activates them by the function "animeGlobal".
  • the "animeGlobal” function allows you to activate an animation or composition module in a global way, while the “animeLocal” function allows you to activate an animation or composition module locally.
  • the "animeLocal” function contains the desired animation algorithm and only works on one vertex. It therefore returns the unit result of its action consisting of the new position of the vertex and a set of parameters useful for the composition, for example weighting parameters.
  • the "animeGlobal” function performs an iteration of the "animeLocal” function on all the vertices of the influence zone of the animation module.
  • the "animeLocal” function of a composition module only works on one vertex, but begins by calling the "animeLocal” function of its child modules, which are composition or animation modules. Then the function applies the desired composition algorithm and returns the result.
  • the "animeGlobal” function of a composition module performs an iteration of the "animeLocal” function on all the vertices to be composed by the composition module.
  • the "anime” function applied to the phase P2 thus causes the animation of its MC2 son module by the call of the "animeGlobal” function
  • the "anime” function applied to the phase P3 causes the animation of its child module MA3 by calling the function "animeGlobal”.
  • the phases are not composition modules, and are executed sequentially one after the other taking into account the mesh deformed by the preceding animation phase.
  • the son modules of a phase thus allow the calculation of intermediate meshes used during the animation, and are activated globally.
  • the composition module MC2 when calling the "animeGlobal” function, calls the “animeLocal” function on its child modules, which are the MA4 and MA5 animation modules. For each of the vertices of their respective zones of influence, the modules MA4 and MA5 then each apply their animation algorithm taking into account their input parameters, and their mixed control parameters to take account of the action of each of the animation channels.
  • the MA4 and MA5 modules return vertex by vertex the results r1 and r2 of their actions as well as parameters useful for the composition, to their parent module MC2.
  • the composition module MC2 On receipt of the results provided by the modules MA4 and MA5, the composition module MC2 applies its composition algorithm on each of the vertices in the influence zones of the modules MA4 and MA5, and returns the global results r3 of this composition to the phase P2. Finally phase P2 transmits these results r3 to the sequence S.
  • the results of the actions of animation modules or composition transmitted by the phases to the sequence S allow the animation engine to play the animation.
  • the results of the phases are used phase by phase to deform the mesh of the face.
  • the deformations of the mesh due to the current phase are taken into account by the animation engine to calculate the deformations of the mesh in the following phase.
  • the motor will combine these two movements.
  • FIG. 7 An example of a profile necessary to enable the animation engine to perform the animation of the face in three dimensions is represented in the table TAB1 of FIG. 7.
  • This profile is produced in the XML language, according to the English "extensible Markup Language ".
  • the first column gives the name of the XML tag described on the line considered, the second column specifies the attributes associated with this tag, and the third column specifies the value to give to these attributes.
  • the "Configuration” tag is used to describe the entire configuration of the animation engine, including the optional tags “Engine” and “User interface”.
  • the "Engine” tag is used to describe the engine and contains mandatory "Channel”, “Phase” and “Element” tags, which respectively make it possible to describe an animation channel, a phase and an element of detection or detection. pretreatment on a may three-dimensional face wrap. For a given animation, several of these tags are present depending on the number of animation channels, phases and elements necessary for the animation.
  • the "Channel” tag allows you to specify animation channels of the animation engine that will be active. The first attribute of this tag, "Name”, allows to give a name to the channel.
  • ManipReplay means a manipulator channel for replaying an animation
  • ManipNeck is a manipulator channel for controlling the head
  • ManipEyes means a manipulator channel for controlling the eyes
  • ManipEyelids means a manipulator channel for controlling the eyelids
  • “ExpE motion” designates an expression channel for controlling emotions
  • “ExpMood” designates an expression channel to control moods
  • ConvMarker refers to an expression channel to activate conversational markers
  • “VisemeFrench” refers to a speech channel for French
  • VisemeEnglish refers to a speech channel for English
  • o "VisemeSpanish” means a speech channel for Spanish.
  • the second attribute "Status" allows you to specify the initial state of the channel, that is, whether it is activated or not.
  • the "Element” tag is used to create element instances. This tag is composed of the following attributes: o
  • the "Type” attribute specifies the type of element used, for example an eye detection element. This type is to be matched with the elements actually implemented in the animation engine.
  • the "Name” attribute gives a name to the instance of the element that will be created by the animation engine, which allows to identify it for reference.
  • the optional attribute "Dimension” specifies the right or left side of the face to be considered for this element instance, if any.
  • the "Phase” tag allows you to specify the phase to which you are referring. It has only one attribute, “Number”, which is the phase number in the time sequence of the animation.
  • the "Phase” tag contains one or more "Module” tags corresponding to its child modules.
  • the “Module” tag is used to specify the module used. This can be either an animation module or a composition module.
  • Module itself contains one or more “Module” tags corresponding to its child modules when it represents a composition module, or none if it represents an animation module. It can also contain a list of "Parameter” tags.
  • the "Module” tag has the following attributes: o
  • the "Type” attribute specifies the type of module used. This type is to be matched with the modules actually implemented in the animation engine. It may be for example a module of the "Muscle” type, which is an animation module using a method of non-specific muscular animation to a part of the face.
  • the "Name” attribute gives a name to the instance of the module that will be created by the animation engine, which allows to identify it for reference.
  • the optional "Dimension” attribute specifies the right or left side of the face to be considered for this module instance, if any.
  • the "Parameter” tag is used to give some parameters of the module default values.
  • the "user interface” tag is used to describe the engine's user interface, including the optional tags.
  • the "lnterface_de_ammametrage” tag is used to describe the parameterization interface. For this it contains one or more optional tags “Page”, or simply a tag “Group_horizontal” or tag “Group_verticar if all input parameters modules can be viewed on a single graphic page.
  • Control_Interface in a similar way, describes the control interface. It contains one or more optional “Page” tags, or simply a "Horizontal_group” tag or a “Vertical_group” tag if all control parameters can be viewed on a single graphic page.
  • the "Page” tag is used to specify a graphic page in the control interface or in the configuration interface. This tag contains only one attribute "Name” which gives the name to the graphic page thus specified. It also contains a "Group_Horizontal” tag or a "Vertical_Group” tag, which may contain other "Horizontal_Group” or “VerticalGroup” tags, which allows for a large number of possible layouts of the page.
  • the "Vertical_group” or “Horizontal_group” tags specify groups, respectively. vertical or horizontal graphical objects allowing a user to set control or input parameters to the modules.
  • the tag "Groupejiorizontal” therefore contains one or more "Interface” tags which each represent a graphic object.
  • the graphic objects thus described will be arranged horizontally.
  • the tag “Groupe_h ⁇ rizontal” can itself contain instead of or in addition to this list of graphic objects, one or more tags “Groupe_horizontal” or “Groupe_vertical”.
  • the "Vertical_group” tag similarly, contains one or more "Interface” tags representing graphical objects that will be arranged vertically.
  • the "Vertical_group” tag can itself contain, instead of or in addition to this list of graphic objects, one or more "Horizontal_group” or “Vertical_group” tags.
  • the "Interface” tag allows you to specify a graphic object to use.
  • This tag contains two attributes.
  • the first "Type” attribute defines a type of graphic object. This type must be mapped to the predefined graphical objects in the GUI system. Indeed for each type of module or specific module are implemented one or more graphic objects, for example drop-down lists or sliders, for positioning the parameters of the module.
  • the second attribute, "Reference" contains the name of the element or module instance that the graphical object should control.

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Processing Or Creating Images (AREA)

Abstract

The invention relates to a method for animating a scene graph (M), characterized by comprising the following steps: creating (e1) an animation graph instance (G) comprising animation modules (MA1,..., MA10) and composition modules (MC1,..., MC4) organized in an arborescent manner, the animation modules being lower leaves of the trees of the graph and the composition modules enabling the composition of the results of their child modules, said child modules being any of the animation or composition modules; executing (e3) the animation while successively executing the animation and composition modules of the graph in such a manner that the execution of a composition module uses the results of the executions of its child modules.

Description

Procédé d'animation utilisant un graphe d'animation Animation process using an animation graph
La présente invention concerne de manière générale le domaine du traitement d'images, et en particulier l'animation de scènes graphiques à l'aide d'un moteur d'animation.The present invention generally relates to the field of image processing, and in particular the animation of graphic scenes using an animation engine.
De plus, l'invention est axée principalement sur l'animation de personnages en trois dimensions, mais son procédé est aussi utilisable sur tout autre type de scène graphique en deux ou trois dimensions.In addition, the invention is focused primarily on the animation of characters in three dimensions, but its method is also used on any other type of graphic scene in two or three dimensions.
Les moteurs d'animation actuels implémentent un seul procédé d'animation chacun, par exemple un système paramétrique, un système musculaire, ou encore un système à base d'images clés. De plus dans ces moteurs d'animation, la totalité des modules nécessaires à l'animation, ainsi que leurs interactions, sont connus à l'avance et non modifiables. Ces moteurs d'animation sont donc en général construits d'un seul bloc, sous la forme d'un code exécutable compilé.The current animation engines implement a single animation method each, for example a parametric system, a muscular system, or a system based on key images. Moreover, in these animation engines, all the modules necessary for the animation, as well as their interactions, are known in advance and can not be modified. These animation engines are therefore generally built in one block, in the form of a compiled executable code.
De ce fait, lors de l'utilisation d'un moteur ou programme d'animation sur une machine, celle-ci doit avoir la puissance requise pour mettre en œuvre le procédé d'animation utilisé. Les moteurs d'animation actuels ne permettent pas en effet de choisir un procédé d'animation au démarrage du moteur, ni d'adapter la puissance requise à une animation en choisissant de n'animer qu'un sous-ensemble indépendant d'une scène ou d'un personnage en trois dimensions. Notamment ils ne permettent pas de procéder à des tests en choisissant un procédé d'animation particulier pour animer une partie seulement d'un visage. Chaque test nécessite un moteur d'animation différent.Therefore, when using a motor or animation program on a machine, it must have the power required to implement the animation process used. The current animation engines do not make it possible to choose an animation method when the engine is started, nor to adapt the power required to an animation by choosing to animate only an independent subset of a scene. or a three-dimensional character. In particular, they do not make it possible to carry out tests by choosing a particular animation method to animate only part of a face. Each test requires a different animation engine.
La présente invention a pour but de résoudre les inconvénients de la technique antérieure en fournissant un procédé d'animation agissant sur un graphe de scène, terme communément utilisé pour désigner une collection de maillages graphiques en trois dimensions, et un graphe d'animation permettant d'exécuter différentes phases d'une même animation.The present invention aims to solve the disadvantages of the prior art by providing an animation method acting on a scene graph, a term commonly used to refer to a collection of three-dimensional graphic meshes, and an animation graph to execute different phases of the same animation.
A cette fin, l'invention propose un procédé d'animation d'un graphe de scène caractérisé en ce qu'il comporte les étapes de:To this end, the invention proposes a method of animating a scene graph characterized in that it comprises the steps of:
- Création d'une instance de graphe d'animation comportant des modules d'animation et de composition organisés de manière arborescente, les modules d'animation étant des feuilles de sous arbres du graphe et les modules de composition permettant la composition des résultats de leurs modules fils, ceux-ci étant indifféremment des modules d'animation ou de composition,Creation of an animation graph instance comprising animation and composition modules organized in a tree-like manner, the animation modules being sub-tree sheets of the graph and the composition modules making it possible to compose the results of their son modules, these being indifferently modules of animation or composition,
- Exécution de l'animation en exécutant successivement les modules d'animation et de composition du graphe, de telle manière que l'exécution d'un module de composition utilise les résultats des exécutions de ses modules fils.Execution of the animation by successively executing the animation and composition modules of the graph, so that the execution of a composition module uses the results of the executions of its child modules.
L'invention permet de réutiliser les modules d'animation d'un même moteur d'animation dans différentes configurations, sans nécessiter de coder différents assemblages de modules dans des programmes différents pour chaque configuration. Ainsi, le moteur d'animation selon l'invention s'adapte à la puissance de la machine qui l'utilise, par le choix d'un procédé d'animation adéquat. Il permet aussi de tester différents procédés d'animation, sans recompiler les modules d'animation du moteur d'animation à chaque test de configuration différente. L'utilisation d'un graphe d'animation pour produire une animation permet en effet de modifier les caractéristiques de l'animation en choisissant seulement les modules d'animation adéquats, parmi ceux qui existent et sont déjà compilés dans le moteur d'animation.The invention makes it possible to reuse the animation modules of the same animation engine in different configurations, without requiring coding different assemblies of modules in different programs for each configuration. Thus, the animation engine according to the invention adapts to the power of the machine that uses it, by choosing an appropriate animation method. It also allows you to test different animation processes, without recompiling animation modules of the animation engine for each different configuration test. The use of an animation graph to produce an animation makes it possible to modify the characteristics of the animation by choosing only the appropriate animation modules, among those that exist and are already compiled in the animation engine.
Selon une caractéristique préférée du procédé selon l'invention, l'algorithme utilisé par au moins un desdits modules de composition ne dépend pas des parties du maillage sur lesquelles agissent ses modules d'animation fils.According to a preferred characteristic of the method according to the invention, the algorithm used by at least one of said composition modules does not does not depend on the parts of the mesh on which its son animation modules act.
Cela permet, lorsqu'on veut changer des modules d'animation fils composés par un module de composition dans le graphe d'animation, de réutiliser ce même module de composition, bien que les nouveaux modules d'animation fils agissent sur des parties de maillage différentes des anciens modules d'animation fils.This makes it possible, when you want to change the animation module son composed by a composition module in the animation graph, to reuse the same composition module, although the new son animation modules act on parts of mesh different from the old son animation modules.
Selon une caractéristique préférée, l'algorithme utilisé par au moins un desdits modules de composition du graphe ne dépend pas du procédé d'animation utilisé par ses modules fils.According to a preferred characteristic, the algorithm used by at least one of said composition modules of the graph does not depend on the animation method used by its son modules.
L'utilisation de modules de composition très génériques permet de tester des modules d'animation de différents procédés en réutilisant les mêmes modules de composition.The use of very generic composition modules makes it possible to test animation modules of different processes by reusing the same composition modules.
Selon une caractéristique préférée, l'étape de création d'une instance de graphe d'animation comprend la lecture d'un fichier de configuration décrivant ledit graphe d'animation.According to a preferred characteristic, the step of creating an animation graph instance comprises reading a configuration file describing said animation graph.
Le regroupement dans un fichier de configuration des caractéristiques nécessaires à la création d'un graphe d'animation facilite la réalisation de différents tests de configuration. Pour chaque test de configuration, un fichier de configuration est par exemple défini et permet de créer le graphe d'animation correspondant à ce test dans le moteur d'animation.The grouping in a configuration file of the characteristics needed to create an animation graph facilitates the realization of various configuration tests. For each configuration test, for example, a configuration file is defined and makes it possible to create the animation graph corresponding to this test in the animation engine.
L'invention concerne aussi un graphe d'animation permettant d'exécuter une ou plusieurs phases d'animation en utilisant le procédé selon l'invention, caractérisé en ce que: - Chaque phase d'animation est décrite par un sous arbre dont elle est la racine dans le graphe d'animation, ledit sous arbre comportant des modules d'animation et éventuellement des modules de composition,The invention also relates to an animation graph for executing one or more animation phases using the method according to the invention, characterized in that: each animation phase is described by a sub-tree of which it is the root in the animation graph, said subtree including animation modules and possibly composition modules,
- Dans ledit sous arbre les modules d'animation et les éventuels modules de composition sont organisés de manière arborescente, les modules d'animation étant des feuilles dudit sous arbre et les modules de composition permettant la composition des résultats de leurs modules fils, ceux-ci étant indifféremment des modules d'animation ou de composition.In said subtree, the animation modules and the possible composition modules are organized in a tree-like manner, the animation modules being sheets of said sub-tree and the modules of the sub-tree. composition allowing the composition of the results of their son modules, these being indifferently modules of animation or composition.
L'invention concerne encore un moteur d'animation caractérisé en ce qu'il comporte des moyens de configuration dynamique utilisant un graphe d'animation selon l'invention.The invention also relates to an animation engine characterized in that it comprises dynamic configuration means using an animation graph according to the invention.
L'invention concerne encore l'utilisation d'un graphe d'animation selon l'invention pour l'exécution d'une animation, caractérisée en ce que lorsque le graphe d'animation contient plusieurs phases, celles-ci sont exécutées séquentiellement.The invention also relates to the use of an animation graph according to the invention for the execution of an animation, characterized in that when the animation graph contains several phases, they are executed sequentially.
Enfin, l'invention concerne également un programme d'ordinateur caractérisé en ce qu'il comporte des instructions de mise en œuvre du procédé selon l'invention, lorsque ledit programme est exécuté dans un système informatique. Le graphe d'animation, le moteur d'animation et le programme d'ordinateur présentent des avantages analogues à ceux du procédé.Finally, the invention also relates to a computer program characterized in that it comprises instructions for implementing the method according to the invention, when said program is executed in a computer system. The animation graph, the animation engine and the computer program have advantages similar to those of the method.
D'autres caractéristiques et avantages apparaîtront à la lecture d'un mode de réalisation préféré décrit en référence aux figures dans lesquelles : - la figure 1 représente un graphe d'animation selon l'invention,Other characteristics and advantages will appear on reading a preferred embodiment described with reference to the figures in which: FIG. 1 represents an animation graph according to the invention,
- la figure 2 représente les étapes du procédé selon l'invention,FIG. 2 represents the steps of the method according to the invention,
- la figure 3 représente le mai liage d'un visage en trois dimensions, destiné à être animé,FIG. 3 represents the binding of a face in three dimensions, intended to be animated,
- la figure 4 représente la composition de résultats d'animation par un module de composition,FIG. 4 represents the composition of animation results by a composition module,
- la figure 5 représente une interface utilisateur,FIG. 5 represents a user interface,
- la figure 6 représente l'étape d'exécution du procédé selon l'invention,FIG. 6 represents the execution step of the method according to the invention,
- la figure 7 représente un ensemble de paramètres définissant un exemple de profil permettant de configurer un moteur d'animation. Selon un mode de réalisation de l'invention, le procédé selon l'invention est implémenté dans un moteur d'animation de manière logicielle. Le logiciel utilisé dispose d'un ensemble de modules prédéfinis dont l'instanciation sous la forme d'un arbre est commandée par un graphe d'animation. Le procédé permet de configurer dynamiquement le moteur d'animation à l'aide du graphe d'animation. Cette configuration du moteur, ou graphe d'animation, est spécifiée dans un fichier de configuration appelé profil.FIG. 7 represents a set of parameters defining an example of a profile making it possible to configure an animation engine. According to one embodiment of the invention, the method according to the invention is implemented in an animation engine in a software way. The software used has a set of predefined modules whose instantiation in the form of a tree is controlled by an animation graph. The method dynamically configures the animation engine using the animation graph. This engine configuration, or animation graph, is specified in a configuration file called profile.
Les modules du moteur d'animation sont des modules d'animation et de composition, destinés dans cet exemple de réalisation à animer un graphe de scène représentant un visage en trois dimensions. Néanmoins le procédé selon l'invention est applicable aussi à tout autre type de scène graphique, en utilisant des modules d'animation et de composition adaptés à cet autre type de scène. Ces modules sont organisés de manière arborescente dans le graphe d'animation G représenté à la figure 1 , configuré de manière à réaliser une animation du visage en trois dimensions.The modules of the animation engine are animation and composition modules, intended in this embodiment to animate a scene graph representing a face in three dimensions. Nevertheless, the method according to the invention is also applicable to any other type of graphic scene, using animation and composition modules adapted to this other type of scene. These modules are organized in a tree-like manner in the animation graph G shown in FIG. 1, configured so as to produce a three-dimensional animation of the face.
Lors de l'utilisation du moteur d'animation, ces modules sont en général déjà compilés du fait d'une précédente utilisation. L'utilisation du procédé selon l'invention ne nécessite pas la recompilation de ces modules, même lorsque la configuration du graphe est modifiée, par exemple pour utiliser des modules d'animation correspondant à un autre procédé d'animation que les modules d'animation précédents.When using the animation engine, these modules are generally already compiled because of a previous use. The use of the method according to the invention does not require the recompilation of these modules, even when the configuration of the graph is modified, for example to use animation modules corresponding to another animation method that the animation modules precedents.
Le procédé comporte trois grandes étapes, représentées à la figure 2 et résumées ci-après. L'étape e1 est la création d'une instance de graphe d'animation correspondant à une configuration du moteur d'animation. Cette configuration est sélectionnée à l'aide d'un profil, ou fichier de configuration décrivant le graphe d'animation G, parmi un ensemble de profils disponibles dans le moteur d'animation. Elle définit le procédé d'animation utilisé et le choix des modules correspondants à utiliser. Comme expliqué précédemment, ces modules sont en général pré-compilés. Le moteur d'animation crée cette instance de graphe d'animation à partir de la lecture du fichier de configuration sélectionné. Il crée une instance de chaque module du graphe, et les liens définis par la structure du graphe d'animation G, entre ces instances de modules. Ces liens sont utilisés lors de l'étape d'exécution de l'animation.The process has three main steps, shown in Figure 2 and summarized below. Step e1 is the creation of an animation graph instance corresponding to a configuration of the animation engine. This configuration is selected using a profile, or configuration file describing the animation graph G, from among a set of profiles available in the animation engine. It defines the animation process used and the choice of corresponding modules to use. As previously explained, these modules are usually pre-compiled. The animation engine creates this animation graph instance from the reading of the selected configuration file. It creates an instance of each module of the graph, and the links defined by the structure of the graph of animation G, between these instances of modules. These links are used during the execution stage of the animation.
L'étape suivante e2 est le paramétrage de chaque module d'animation du graphe avec des paramètres d'entrée propres à chacun de ces modules et au visage à animer, et avec des paramètres de contrôle propres aux modules et à l'animation elle-même. Ces paramètres sont en effet souvent à modifier, par exemple lorsque le moteur d'animation est utilisé sur un autre visage que celui de l'utilisation précédente. Le paramétrage utilise par exemple des fichiers de paramètres donnant les valeurs pour chaque visage de tous les paramètres nécessaires aux modules d'animation du moteur d'animation, un fichier par visage étant disponible dans le moteur. Le profil sélectionné à l'étape e1 contient en outre des paramètres par défaut pour les modules d'animation du graphe d'animation G, qui sont utilisés à l'étape e2 pour paramétrer les modules d'animation, dans le cas par exemple où les fichiers de paramètres sont incomplets. L'étape suivante e3 est l'exécution de l'animation. Elle permet l'animation du visage en trois dimensions en suivant les indications des paramètres de contrôle donnés lors de l'étape e2 de paramétrage des modules du graphe d'animation.The next step e2 is the parameterization of each animation module of the graph with input parameters specific to each of these modules and the face to be animated, and with control parameters specific to the modules and the animation itself. even. These parameters are indeed often to be modified, for example when the animation engine is used on a different face than that of the previous use. The parameterization uses, for example, parameter files giving the values for each face of all the parameters necessary for the animation engine animation modules, one file per face being available in the engine. The profile selected in step e1 also contains default parameters for the animation modules of the animation graph G, which are used in step e2 to parameterize the animation modules, in the case, for example, where the parameter files are incomplete. The next step e3 is the execution of the animation. It allows the animation of the face in three dimensions by following the indications of the control parameters given during step e2 of parameterizing the modules of the animation graph.
Les paramètres des modules d'animation, ainsi que l'étape e3 d'exécution, seront plus amplement détaillés dans la suite.The parameters of the animation modules, as well as the step e3 of execution, will be more fully detailed below.
La structure du graphe d'animation G, ainsi que les différents modules le composant, sont maintenant détaillés.The structure of the animation graph G, as well as the various modules composing it, are now detailed.
Les modules d'animation sont des feuilles de l'arbre du graphe G, tandis que les modules de composition sont des parents de modules d'animation ou de composition dans l'arbre du graphe G. L'arbre du graphe G composant le moteur d'animation a pour racine la séquence S, qui a pour filles une ou plusieurs phases, qui seront exécutées séquentiellement les unes après les autres. Dans l'exemple de la figure 1 ces phases sont les phases P1 à P3. Ce premier niveau de l'arbre permet donc de décrire l'aspect temporel de l'animation, tandis que les niveaux suivants décrivent l'aspect organisationnel du moteur.The animation modules are sheets of the graph G tree, while the composition modules are parents of modules of animation or composition in the graph tree G. The graph G tree of the animation engine is rooted in the sequence S, which has for girls one or more phases, which will be executed sequentially one after the other. other. In the example of Figure 1 these phases are the phases P1 to P3. This first level of the tree thus makes it possible to describe the temporal aspect of the animation, while the following levels describe the organizational aspect of the engine.
Chaque module d'animation MA1 , MA2,..., MA10 est utilisé, lors d'une animation du visage en trois dimensions, pour animer une partie du maillage à trois dimensions qui forme ce visage.Each animation module MA1, MA2, ..., MA10 is used, during a three-dimensional animation of the face, to animate a part of the three-dimensional mesh that forms this face.
Il est à noter qu'un module d'animation est propre à un procédé d'animation particulier, mais n'est pas toujours propre à la partie du maillage sur laquelle il agit. Dans l'exemple de la figure 3, les modules d'animation Mu1 et Mu2 agissant sur le graphe de scène ou maillage M du visage en trois dimensions utilisent un procédé d'animation musculaire. Ce procédé d'animation consiste à déformer les sommets d'une partie du maillage de manière similaire à la déformation qui serait provoquée par un muscle sur la partie du visage correspondante, appelée aussi zone d'influence du muscle. Chaque module peut donc être assimilé à un muscle. Ainsi le module Mu1 correspond à un muscle frontal dont le fonctionnement est celui d'un muscle ordinaire, utilisable également sur d'autres parties du visage, par exemple comme muscle risorius, tandis que le module Mu2 correspond à un muscle de bouche dont le fonctionnement est plus spécifique, car il ne doit pas déformer la lèvre inférieure du visage.It should be noted that an animation module is specific to a particular animation process, but is not always specific to the part of the mesh on which it acts. In the example of FIG. 3, the animation modules Mu1 and Mu2 acting on the scene graph or M-mesh of the face in three dimensions use a method of muscle animation. This animation process consists of deforming the vertices of a part of the mesh in a similar way to the deformation that would be caused by a muscle on the corresponding part of the face, also called zone of influence of the muscle. Each module can therefore be likened to a muscle. Thus the Mu1 module corresponds to a frontal muscle whose functioning is that of an ordinary muscle, also usable on other parts of the face, for example as a risorius muscle, while the Mu2 module corresponds to a mouth muscle whose operation is more specific because it should not deform the lower lip of the face.
Le positionnement d'un module d'animation sur le maillage à trois dimensions est déterminé par des paramètres d'entrée à ce module, configurés lors de l'étape e2 de paramétrage du graphe d'animation. Pour un module d'animation utilisant un procédé musculaire, ces paramètres définissent entre autres, par exemple, le point d'attachement du muscle à l'os du visage, son point d'insertion dans la chair du visage, ou encore son angle d'ouverture.The positioning of an animation module on the three-dimensional mesh is determined by input parameters to this module, configured during step e2 of setting the animation graph. For an animation module using a muscular process, these parameters define, for example, the point of attachment of the muscle to the bone. of the face, its point of insertion in the flesh of the face, or its opening angle.
Les modules d'animation MA1 , MA2 MA10 représentés à la figure 1 permettent donc de modifier les propriétés géométriques du maillage à trois dimensions en déplaçant certains sommets, ou les propriétés colorimétriques en modifiant les matériaux ou les textures utilisés pour l'illumination du visage en trois dimensions. De plus un module d'animation est activé soit de façon locale, soit de façon globale:The animation modules MA1, MA2 MA10 shown in FIG. 1 therefore make it possible to modify the geometrical properties of the three-dimensional mesh by displacing certain vertices, or the colorimetric properties by modifying the materials or textures used for the illumination of the face by three dimensions. In addition, an animation module is activated either locally or globally:
- Un module est activé de façon locale lorsqu'il n'agit que sur un seul sommet du maillage pour en modifier la position ou les propriétés colorimétriques. Le résultat retourné par le module contient alors la nouvelle position du sommet dans le maillage, et éventuellement d'autres paramètres de couleur ou de composition.- A module is activated locally when it acts on only one vertex of the mesh to modify the position or the colorimetric properties. The result returned by the module then contains the new position of the vertex in the mesh, and possibly other parameters of color or composition.
- Un module est activé de façon globale lorsqu'il traite tous les sommets d'un maillage en même temps. Dans ce cas le résultat retourné est par exemple un nouveau maillage temporaire ne contenant pas de paramètres de composition.- A module is globally enabled when it processes all the vertices of a mesh at the same time. In this case, the returned result is, for example, a new temporary mesh that does not contain composition parameters.
Les modules de composition MC1 , MC2,..., MC4, représentés à la figure 1, permettent de composer les résultats des modules d'animation qui fonctionnent de façon conjointe, par exemple les résultats de modules correspondant à de pseudo muscles fonctionnant simultanément. Un module de composition dans le graphe G compose les résultats des modules d'animation ou de composition dont il est le parent dans le graphe d'animation G. Ainsi:The composition modules MC1, MC2,..., MC4, represented in FIG. 1, make it possible to compose the results of the animation modules that work together, for example the results of modules corresponding to pseudo-muscles operating simultaneously. A composition module in the graph G composes the results of the animation or composition modules of which it is the parent in the animation graph G. Thus:
- Le module de composition MC1 permet de composer le résultat des modules de composition MC3 et MC4,- The MC1 composition module is used to compose the result of the MC3 and MC4 composition modules,
- Le module de composition MC2 permet de composer le résultat des modules d'animation MA4 et MA5, - Le module de composition MC3 permet de composer le résultat des modules d'animation MA6, MA7, et MA8,- The composition module MC2 makes it possible to compose the result of the modules of animation MA4 and MA5, - The composition module MC3 makes it possible to compose the result of the modules of animation MA6, MA7, and MA8,
- Le module de composition MC4 permet de composer le résultat des modules d'animation MA9 et MA10. Plus précisément, un module de composition permet de déterminer la déformation finale résultant des actions de ses modules fils sur le maillage à trois dimensions. L'algorithme de composition utilisé par ce module est implémenté de manière indépendante de la partie du maillage concernée. Il consiste en effet en une simple pondération des déformations provoquées sur le maillage par chacun de ses modules fils. Les paramètres de composition fournis par chacun des modules fils au module de composition peuvent en revanche être spécifiques aux modules fils. Il peut s'agir par exemple de coefficients de pondération spécifiques.- The MC4 composition module is used to compose the result of the MA9 and MA10 animation modules. More precisely, a composition module makes it possible to determine the final deformation resulting from the actions of its son modules on the three-dimensional mesh. The composition algorithm used by this module is implemented independently of the part of the mesh concerned. It consists in fact in a simple weighting of the deformations caused on the mesh by each of its son modules. The composition parameters provided by each of the child modules to the composition module may, however, be specific to the child modules. These may be, for example, specific weighting coefficients.
Par exemple pour le sommet A du maillage à trois dimensions représenté à la figure 4, l'action locale du module MAΘ provoque le déplacement du sommet A vers la position B, tandis que l'action locale du module MA10 provoque le déplacement du sommet A vers la position C. La simple addition de ces déplacements résulte dans la position D, qui est en général irréaliste pour l'animation d'un visage. Le module de composition MC4 utilise un algorithme de pondération permettant de donner comme résultat de la composition des actions des modules MA9 et MA10 sur le sommet A, la position E, qui est plus réaliste.For example, for the vertex A of the three-dimensional mesh represented in FIG. 4, the local action of the module MAΘ causes the displacement of the vertex A towards the position B, whereas the local action of the module MA10 causes the displacement of the vertex A to the C position. The simple addition of these displacements results in the position D, which is generally unrealistic for the animation of a face. The composition module MC4 uses a weighting algorithm to give as a result of the composition of the actions of the modules MA9 and MA10 on the vertex A, the position E, which is more realistic.
Les modules de composition utilisent donc les résultats des actions locales de chacun de leurs modules fils. Afin de permettre aux résultats d'un premier module de composition d'être utilisés par un deuxième module de composition parent de ce premier module, les modules de composition sont activés soit de façon locale, soit de façon globale, comme pour les modules d'animation. Lorsqu'ils sont activés de façon locale, ils retournent les résultats de leur composition sommet par sommet. Les résultats des modules d'animation peuvent ainsi être remontés pour être utilisés itérativement dans l'arborescence du graphe G par leurs différents modules parents.The composition modules therefore use the results of the local actions of each of their child modules. In order to allow the results of a first composition module to be used by a second parent composition module of this first module, the composition modules are activated either locally or globally, as for the modules of animation. When activated locally, they return the results of their top-by-vertex composition. The results of the modules animation can thus be reassembled to be used iteratively in the tree of the graph G by their different parent modules.
De plus les modules de composition sont soit spécifiques à un procédé d'animation, soit indépendants du procédé d'animation utilisé. Dans le premier cas, lors d'un changement du procédé d'animation utilisé, ces modules de composition spécifiques doivent être changés dans le graphe d'animation G, tandis que dans le deuxième cas seuls les modules d'animation doivent être changés.In addition, the composition modules are either specific to an animation method or independent of the animation method used. In the first case, when changing the animation method used, these specific composition modules must be changed in the animation graph G, while in the second case only the animation modules must be changed.
Dans l'exemple de réalisation décrit ici les modules de composition sont très génériques car ils additionnent simplement ou pondèrent les résultats de chacun de leurs modules fils, et sont Indépendants du procédé d'animation utilisé.In the embodiment described here the composition modules are very generic because they simply add or weight the results of each of their son modules, and are independent of the animation process used.
Par ailleurs si certaines parties du visage fonctionnent de manière indépendante, différents procédés d'animation sont utilisables sur chacune de ces parties. Ceci nécessite l'utilisation de deux types de modules d'animation différents, par exemple des modules d'animation musculaires sur une partie du visage et des modules d'animation utilisant une technique de morphose sur l'autre partie du visage.In addition, if certain parts of the face function independently, different animation methods can be used on each of these parts. This requires the use of two different types of animation modules, for example muscular animation modules on one part of the face and animation modules using a morphose technique on the other part of the face.
Différentes configurations du graphe d'animation G sont créées afin de répondre à ces différentes utilisations. Par exemple dans une de ces configurations des modules d'animation et de composition sont masqués afin de ne pas intervenir dans l'animation, bien que leurs positions dans l'organisation du graphe soient conservées pour une animation ultérieure. Le choix d'une configuration pour une utilisation donnée est effectué à l'étape e1 de configuration du moteur d'animation.Different configurations of the animation graph G are created in order to respond to these different uses. For example, in one of these configurations, animation and composition modules are hidden so as not to intervene in the animation, although their positions in the organization of the graph are retained for later animation. The choice of a configuration for a given use is made in step e1 of configuration of the animation engine.
Comme indiqué plus haut, les modules de composition du graphe G sont appliqués aux modules d'animation eux-mêmes et non pas aux objets de la scène en trois dimensions considérée. Ceci permet de réutiliser facilement le graphe d'animation G sur différents visages, en modifiant seulement les paramètres de positionnement des modules d'animation. Ces paramètres sont positionnés lors de l'étape e2 de paramétrage du graphe d'animation.As indicated above, the composition modules of the graph G are applied to the animation modules themselves and not to the objects of the three-dimensional scene considered. This makes it easy to reuse the G animation graph on different faces, modifying only the positioning parameters of the animation modules. These parameters are positioned during step e2 of setting the animation graph.
Certains de ces paramètres sont des valeurs numériques, correspondant par exemple à un point d'attachement d'un muscle pour un module musculaire. D'autres paramètres appelés éléments sont des modules implémentant des algorithmes de détection ou de prétraitement sur le maillage à trois dimensions, nécessaires à certains modules d'animation. En effet, par exemple un module d'animation qui traite le fonctionnement de paupières nécessite de savoir où sont situés les yeux du visage. La détection d'un œil est alors implémentée dans un élément. Ces éléments permettant d'effectuer des prétraitements ou des détections de zones du visage en trois dimensions sont par exemple exécutés lors de l'étape e2 de paramétrage du graphe d'animation G.Some of these parameters are numerical values, corresponding for example to a point of attachment of a muscle for a muscle module. Other parameters called elements are modules implementing detection or pretreatment algorithms on the three-dimensional mesh necessary for certain animation modules. Indeed, for example an animation module that treats the operation of eyelids requires knowing where are the eyes of the face. The detection of an eye is then implemented in an element. These elements making it possible to carry out pretreatments or detections of three-dimensional facial areas are for example performed during step e2 of setting the animation graph G.
D'autres paramètres, également positionnés pendant l'étape e2 de paramétrage du graphe d'animation G, sont nécessaires afin de réaliser l'animation. Ces paramètres de contrôle, définis de manière statique, sont spécifiques à une expression, ils permettent de définir par exemple pour un procédé d'animation musculaire, le degré de contraction à appliquer au muscle modélisé par un module d'animation, lorsque le visage à animer doit sourire. Ces différents paramètres de contrôle sont regroupés en canaux d'animation. Un grand nombre de canaux d'animation sont utilisables, notamment par exemple un canal pour le mouvement des yeux, un canal pour le mouvement des paupières, un canal pour les émotions, un canal pour les emphases, qui sont des marqueurs conversationnels, ou encore un canal pour la parole, plus précisément un canal par langue.Other parameters, also positioned during step e2 for setting the animation graph G, are necessary in order to carry out the animation. These control parameters, defined statically, are specific to an expression, they define for example for a muscular animation process, the degree of contraction to be applied to the muscle modeled by an animation module, when the face to animate must smile. These different control parameters are grouped into animation channels. A large number of animation channels can be used, including for example a channel for the movement of the eyes, a channel for the movement of the eyelids, a channel for emotions, a channel for emphases, which are conversational markers, or a channel for speech, more precisely one channel per language.
Le graphe d'animation ainsi créé et paramétré lors des étapes e1 et e2 est exécuté au moment de l'animation. En fonction du système d'animation désiré et de la puissance de la machine cible, le graphe d'animation G est plus ou moins complexe et intègre des éléments et des modules d'animation différents ne nécessitant pas la même puissance de calcul. Afin de faciliter l'utilisation du moteur d'animation, une interface utilisateur est implémentée dans le moteur pour régler les paramètres des modules d'animation, lors de l'étape e2 de paramétrage du graphe d'animation G. Cette interface est utilisée conjointement ou à la place des fichiers de paramètres utilisés à l'étape e2. L'interface utilisateur est divisée en deux catégories, l'interface de paramétrage et l'interface de contrôle. L'interface de paramétrage permet d'adapter les modules d'animation sur le personnage virtuel en positionnant les paramètres d'entrée de ces modules. L'interface de contrôle est utilisée pour régler les paramètres de contrôle statiques des modules d'animation qui serviront pendant l'étape e3 d'exécution de l'animation.The animation graph thus created and parameterized during steps e1 and e2 is executed at the time of the animation. Depending on the desired animation system and the power of the target machine, the animation graph G is more or less complex and incorporates different elements and animation modules that do not require the same computing power. In order to facilitate the use of the animation engine, a user interface is implemented in the engine to adjust the parameters of the animation modules, during step e2 of setting the animation graph G. This interface is used together or instead of the parameter files used in step e2. The user interface is divided into two categories, the parameterization interface and the control interface. The parameterization interface makes it possible to adapt the animation modules to the virtual character by positioning the input parameters of these modules. The control interface is used to adjust the static control parameters of the animation modules that will be used during the step e3 of executing the animation.
Il est à noter que cette interface utilisateur est destinée à l'homme du métier utilisant le moteur d'animation selon l'invention, et non à un utilisateur quelconque qui utilise un autre type d'interface permettant simplement de définir une suite d'expressions prédéfinies à jouer pour une animation donnée. En effet l'utilisateur quelconque intervient pendant l'étape e3 d'exécution uniquement, en demandant par exemple au moteur d'animation de faire prononcer le mot "Bonjour" au visage. Le moteur d'animation décline alors les paramètres de contrôle dynamiques nécessaires à la prononciation du mot "Bonjour", en utilisant les paramètres de contrôle statiques positionnés par l'homme du métier à l'étape e2 de paramétrage du graphe d'animation G. Pour cela il utilise par exemple un système de synthèse vocal, qui décompose le mot "Bonjour" en phonèmes, chaque phonème ayant un ou plusieurs paramètres de contrôle statiques associés, et déduit les paramètres de contrôle dynamiques à appliquer au visage entre deux phonèmes par une interpolation utilisant les paramètres de contrôle statiques associés à chacun de ces deux phonèmes.It should be noted that this user interface is intended for the skilled person using the animation engine according to the invention, and not for any user who uses another type of interface to simply define a sequence of expressions predefined to play for a given animation. Indeed any user intervenes during the e3 execution stage only, for example by asking the animation engine to pronounce the word "Hello" to the face. The animation engine then declines the dynamic control parameters necessary for the pronunciation of the word "Hello", by using the static control parameters positioned by those skilled in the art at step e2 of setting the animation graph G. For this he uses for example a voice synthesis system, which breaks down the word "Hello" into phonemes, each phoneme having one or more associated static control parameters, and deduces the dynamic control parameters to be applied to the face between two phonemes by a interpolation using the static control parameters associated with each of these two phonemes.
L'interface utilisateur permet donc de positionner les paramètres d'entrée des modules et les paramètres de contrôle en relation avec les modules d'animation correspondant du moteur d'animation. Pour cela chaque catégorie d'interface est organisée en pages afin de pouvoir grouper les paramètres sous une forme pratique. Les pages sont organisées en un ou plusieurs groupes horizontaux ou verticaux d'objets graphiques permettant chacun de décrire et de positionner un paramètre. Ces groupes peuvent être décrits de façon récursive. Par exemple, un groupe vertical peut être composé de plusieurs groupes horizontaux.The user interface thus makes it possible to position the input parameters of the modules and the control parameters in relation with the corresponding animation modules of the animation engine. For this, each The interface category is organized into pages so that the parameters can be grouped into a convenient form. The pages are organized in one or more horizontal or vertical groups of graphic objects, each of which makes it possible to describe and position a parameter. These groups can be described recursively. For example, a vertical group may consist of several horizontal groups.
Ainsi dans l'exemple de la figure 5, l'interface de paramétrage I est composée de trois pages graphiques TAB1 à TAB3. La première page TAB1 contient un groupe vertical GV de quatre objets graphiques:Thus, in the example of FIG. 5, the parameterization interface I is composed of three graphical pages TAB1 to TAB3. The first page TAB1 contains a GV vertical group of four graphic objects:
- L'objet graphique IF1 permet de positionner le paramètre d'entrée "Extra" d'un module d'animation de paupière. Ce paramètre définit la position de la paupière par rapport au rayon de l'œil.- The graphic object IF1 makes it possible to position the input parameter "Extra" of an eyelid animation module. This parameter defines the position of the eyelid relative to the radius of the eye.
- L'objet graphique IF2 permet de positionner le paramètre d'entrée "Atténuation" du même module. Ce paramètre définit l'atténuation du mouvement des sommets de la paupière lorsque celle-ci s'ouvre.- The graphic object IF2 makes it possible to position the input parameter "Attenuation" of the same module. This parameter defines the attenuation of the movement of the apices of the eyelid when it opens.
- L'objet graphique IF3 permet de positionner le paramètre d'entrée "ouvertureMax" du même module, définissant l'ouverture maximale de la paupière lors de l'animation. - L'objet graphique IF4 permet de fournir au module d'animation de paupière un élément de détection "Oeil" correspondant soit à l'œil droit soit à l'œil gauche du visage en trois dimensions.The graphic object IF3 makes it possible to position the input parameter "openMax" of the same module, defining the maximum opening of the eyelid during the animation. The graphic object IF4 makes it possible to provide the eyelid animation module with an "eye" detection element corresponding to either the right eye or the left eye of the face in three dimensions.
L'étape e3 d'exécution du graphe d'animation G est maintenant détaillée. Une fois l'étape e2 de paramétrage effectuée, l'animation est lancée à l'étape e3 d'exécution du graphe d'animation G. L'exécution du graphe d'animation G appelle la fonction "anime" de la séquence S racine de l'arbre du graphe d'animation G. Cette exécution consiste à parcourir le graphe d'animation afin de produire l'animation désirée. Les paramètres de contrôle de chaque module d'animation sont appliqués au module correspondant lors de cette animation, pour produire les expressions qui sont envoyées en instructions au moteur pendant l'étape e3 d'exécution.Step e3 of execution of the animation graph G is now detailed. Once the e2 parameterization step performed, the animation is started in step e3 of the execution of the animation graph G. The execution of the animation graph G calls the "anime" function of the root sequence S of the G animation graph tree. This execution consists of traversing the animation graph to produce the desired animation. The control parameters of each animation module are applied to the module corresponding during this animation, to produce the expressions that are sent as instructions to the engine during the execution step e3.
Il est à noter que chaque canal d'animation fournit ses propres paramètres de contrôle. Lors de l'étape d'exécution e3 ces paramètres sont mixés suivant une technique dite de "mélange" qui permet de coordonner les différentes déformations du visage dues à chaque canal d'animation, afin d'obtenir une animation cohérente. Les modules d'animation ne reçoivent ainsi qu'un jeu de paramètres de contrôle, comme si un seul canal d'animation avait été défini. Par exemple pour un procédé d'animation musculaire, un module d'animation ne reçoit qu'une seule valeur de contraction du muscle qu'il représente à la fois.It should be noted that each animation channel provides its own control parameters. During the execution step e3 these parameters are mixed according to a so-called "mixing" technique which makes it possible to coordinate the different deformations of the face due to each animation channel, in order to obtain a coherent animation. The animation modules thus receive only a set of control parameters, as if only one animation channel had been defined. For example, for a muscular animation method, an animation module receives only one contraction value of the muscle that it represents at a time.
Le fonctionnement de l'étape d'exécution e3 est représenté à la figure 6. La fonction "anime" appliquée à la séquence S appelle tour à tour les fonctions "anime" des phases filles de la séquence S, c'est-à-dire dans cet exemple de réalisation, les fonctions "anime" des phases P1 à P3, afin de les exécuter séquentiellement. Pour plus de clarté le fonctionnement de l'animation de la phase P1 n'est pas représentée sur la figure 6.The operation of the execution step e3 is represented in FIG. 6. The "anime" function applied to the sequence S calls in turn the functions "animates" daughter phases of the sequence S, that is to say say in this embodiment, the functions "animates" phases P1 to P3, in order to execute them sequentially. For the sake of clarity, the operation of the animation of the phase P1 is not shown in FIG.
Chaque phase P1 à P3 possède la liste de leurs modules fils, et les active par la fonction "animeGlobal". La fonction "animeGlobal" permet d'activer un module d'animation ou de composition de manière globale, tandis que la fonction "animeLocal" permet d'activer un module d'animation ou de composition de manière locale.Each phase P1 to P3 has the list of their son modules, and activates them by the function "animeGlobal". The "animeGlobal" function allows you to activate an animation or composition module in a global way, while the "animeLocal" function allows you to activate an animation or composition module locally.
Pour les modules d'animation, la fonction "animeLocal" contient l'algorithme d'animation désiré et ne travaille que sur un seul sommet. Elle renvoie donc le résultat unitaire de son action constitué de la nouvelle position du sommet et d'un ensemble de paramètres utiles pour la composition, par exemple des paramètres de pondération. La fonction "animeGlobal" effectue une itération de la fonction "animeLocal" sur l'ensemble des sommets de la zone d'influence du module d'animation. De façon similaire la fonction "animeLocal" d'un module de composition ne travaille que sur un seul sommet, mais commence par appeler la fonction "animeLocal" de ses modules fils, qui sont des modules de composition ou d'animation. Ensuite la fonction applique l'algorithme de composition désiré et retourne le résultat. La fonction "animeGlobal" d'un module de composition effectue une itération de la fonction "animeLocal" sur l'ensemble des sommets à composer par le module de composition.For animation modules, the "animeLocal" function contains the desired animation algorithm and only works on one vertex. It therefore returns the unit result of its action consisting of the new position of the vertex and a set of parameters useful for the composition, for example weighting parameters. The "animeGlobal" function performs an iteration of the "animeLocal" function on all the vertices of the influence zone of the animation module. Similarly, the "animeLocal" function of a composition module only works on one vertex, but begins by calling the "animeLocal" function of its child modules, which are composition or animation modules. Then the function applies the desired composition algorithm and returns the result. The "animeGlobal" function of a composition module performs an iteration of the "animeLocal" function on all the vertices to be composed by the composition module.
La fonction "anime" appliquée à la phase P2 provoque donc l'animation de son module fils MC2 par l'appel de la fonction "animeGlobal", et la fonction "anime" appliquée à la phase P3 provoque l'animation de son module fils MA3 par l'appel de la fonction "animeGlobal". Il est à noter que les phases ne sont pas des modules de composition, et sont exécutées séquentiellement l'une après l'autre en tenant compte du maillage déformé par la phase d'animation précédente. Les modules fils d'une phase permettent donc le calcul de maillages intermédiaires utilisés lors de l'animation, et sont activés globalement.The "anime" function applied to the phase P2 thus causes the animation of its MC2 son module by the call of the "animeGlobal" function, and the "anime" function applied to the phase P3 causes the animation of its child module MA3 by calling the function "animeGlobal". It should be noted that the phases are not composition modules, and are executed sequentially one after the other taking into account the mesh deformed by the preceding animation phase. The son modules of a phase thus allow the calculation of intermediate meshes used during the animation, and are activated globally.
Le module de composition MC2, à l'appel de la fonction "animeGlobal", appelle à son tour la fonction "animeLocal" sur ses modules fils, qui sont les modules d'animation MA4 et MA5. Pour chacun des sommets de leurs zones respectives d'influence, les modules MA4 et MA5 appliquent alors chacun leur algorithme d'animation en tenant compte de leurs paramètres d'entrée, et de leurs paramètres de contrôle mixés pour tenir compte de l'action de chacun des canaux d'animation. Les modules MA4 et MA5 retournent sommet par sommet les résultats r1 et r2 de leurs actions ainsi que des paramètres utiles pour la composition, à leur module parent MC2.The composition module MC2, when calling the "animeGlobal" function, calls the "animeLocal" function on its child modules, which are the MA4 and MA5 animation modules. For each of the vertices of their respective zones of influence, the modules MA4 and MA5 then each apply their animation algorithm taking into account their input parameters, and their mixed control parameters to take account of the action of each of the animation channels. The MA4 and MA5 modules return vertex by vertex the results r1 and r2 of their actions as well as parameters useful for the composition, to their parent module MC2.
A la réception des résultats fournis par les modules MA4 et MA5, le module de composition MC2 applique son algorithme de composition sur chacun des sommets dans les zones d'influence des modules MA4 et MA5, et retourne les résultats r3 globaux de cette composition à la phase P2. Enfin la phase P2 transmet ces résultats r3 à la séquence S. Le module d'animation MA3, à l'appel de la fonction "animeGlobal", applique son algorithme d'animation en tenant compte de ses paramètres d'entrée, et de ses paramètres de contrôle, qui sont mixés pour tenir compte de l'action de chacun des canaux d'animation, sur tous les sommets de sa zone d'influence. Il retourne les résultats r4 de ses actions sur ces sommets à la phase P3, qui les transmet à la séquence S.On receipt of the results provided by the modules MA4 and MA5, the composition module MC2 applies its composition algorithm on each of the vertices in the influence zones of the modules MA4 and MA5, and returns the global results r3 of this composition to the phase P2. Finally phase P2 transmits these results r3 to the sequence S. The animation module MA3, at the call of the function "animeGlobal", applies its animation algorithm taking into account its input parameters, and its control parameters, which are mixed to take account of the action of each of the animation channels, on all the summits of its zone of influence. It returns the results r4 of its actions on these vertices to the phase P3, which transmits them to the sequence S.
Les résultats des actions de modules d'animation ou de composition transmis par les phases à la séquence S permettent au moteur d'animation de jouer l'animation. Pour cela les résultats des phases sont utilisés phase par phase pour déformer le maillage du visage. Les déformations du maillage dues à la phase courante sont prises en compte par le moteur d'animation pour calculer les déformations du maillage à la phase suivante. Notamment si la première phase par exemple induit un mouvement des paupières, et la deuxième phase un mouvement de la tête, le moteur va combiner ces deux mouvements.The results of the actions of animation modules or composition transmitted by the phases to the sequence S allow the animation engine to play the animation. For this, the results of the phases are used phase by phase to deform the mesh of the face. The deformations of the mesh due to the current phase are taken into account by the animation engine to calculate the deformations of the mesh in the following phase. Especially if the first phase for example induces a movement of the eyelids, and the second phase a movement of the head, the motor will combine these two movements.
Un exemple de profil nécessaire pour permettre au moteur d'animation de réaliser l'animation du visage en trois dimensions est représenté dans le tableau TAB1 de la figure 7. Ce profil est réalisé dans le language XML, d'après l'anglais "extensible Markup Language". La première colonne donne le nom de la balise XML décrite à ligne considérée, la deuxième colonne précise les attributs associés à cette balise, et la troisième colonne précise la valeur à donner à ces attributs.An example of a profile necessary to enable the animation engine to perform the animation of the face in three dimensions is represented in the table TAB1 of FIG. 7. This profile is produced in the XML language, according to the English "extensible Markup Language ". The first column gives the name of the XML tag described on the line considered, the second column specifies the attributes associated with this tag, and the third column specifies the value to give to these attributes.
Ainsi: - La balise "Configuration" permet de décrire toute la configuration du moteur d'animation, en contenant elle-même les balises optionnelles "Moteur" et "lnterface_utilisateur".For example: - The "Configuration" tag is used to describe the entire configuration of the animation engine, including the optional tags "Engine" and "User interface".
- La balise "Moteur" permet de décrire le moteur et contient des balises obligatoires "Canal", "Phase" et "Elément" permettant respectivement de décrire un canal d'animation, une phase et un élément de détection ou de prétraitement sur un mai liage de visage en trois dimensions. Pour une animation donnée, plusieurs de ces balises sont présentes en fonction du nombre de canaux d'animation, de phases et d'éléments nécessaires à l'animation. - La balise "Canal" permet de spécifier les canaux d'animation du moteur d'animation qui seront actifs. Le premier attribut de cette balise, "Nom", permet de donner un nom au canal. Par exemple, pour l'animation faciale, les noms de canaux suivants sont utilisés : o "ManipReplay" désigne un canal manipulateur permettant de rejouer une animation, o "ManipNeck" désigne un canal manipulateur permettant de contrôler la tête, o "ManipEyes" désigne un canal manipulateur permettant de contrôler les yeux, o "ManipEyelids" désigne un canal manipulateur permettant de contrôler les paupières, o "ExpE motion" désigne un canal d'expression permettant de contrôler les émotions, o "ExpMood" désigne un canal d'expression permettant de contrôler les humeurs, o "ConvMarker" désigne un canal d'expression permettant d'activer des marqueurs conversationnels, o "VisemeFrench" désigne un canal de parole pour le français, o "VisemeEnglish" désigne un canal de parole pour l'anglais, o "VisemeSpanish" désigne un canal de parole pour l'espagnol.- The "Engine" tag is used to describe the engine and contains mandatory "Channel", "Phase" and "Element" tags, which respectively make it possible to describe an animation channel, a phase and an element of detection or detection. pretreatment on a may three-dimensional face wrap. For a given animation, several of these tags are present depending on the number of animation channels, phases and elements necessary for the animation. - The "Channel" tag allows you to specify animation channels of the animation engine that will be active. The first attribute of this tag, "Name", allows to give a name to the channel. For example, for facial animation, the following channel names are used: o "ManipReplay" means a manipulator channel for replaying an animation, where "ManipNeck" is a manipulator channel for controlling the head, or "ManipEyes" means a manipulator channel for controlling the eyes, o "ManipEyelids" means a manipulator channel for controlling the eyelids, where "ExpE motion" designates an expression channel for controlling emotions, where "ExpMood" designates an expression channel to control moods, o "ConvMarker" refers to an expression channel to activate conversational markers, where "VisemeFrench" refers to a speech channel for French, where "VisemeEnglish" refers to a speech channel for English , o "VisemeSpanish" means a speech channel for Spanish.
Le deuxième attribut, "Statut", permet de spécifier l'état initial du canal, c'est-à-dire s'il est activé ou non.The second attribute, "Status", allows you to specify the initial state of the channel, that is, whether it is activated or not.
- La balise "Elément" sert à créer des instances d'éléments. Cette balise est composée des attributs suivants : o L'attribut "Type" spécifie le type d'élément utilisé, par exemple un élément de détection d'oeil. Ce type est à mettre en correspondance avec les éléments effectivement mis en œuvre dans le moteur d'animation. o L'attribut "Nom" donne un nom à l'instance de l'élément qui sera créé par le moteur d'animation, ce qui permet de l'identifier pour y faire référence. o L'attribut optionnel "Cote" spécifie le côté droit ou gauche du visage à prendre en compte pour cette instance d'élément, s'il y a lieu. - La balise "Phase" permet de spécifier la phase à laquelle on se réfère. Elle ne dispose que d'un seul attribut, "Numéro", qui est le numéro de phase dans la séquence temporelle de l'animation. La balise "Phase" contient une ou plusieurs balises "Module" correspondant à ses modules fils. - La balise "Module" permet de spécifier le module utilisé. Cela peut être soit un module d'animation, soit un module de composition. La balise- The "Element" tag is used to create element instances. This tag is composed of the following attributes: o The "Type" attribute specifies the type of element used, for example an eye detection element. This type is to be matched with the elements actually implemented in the animation engine. o The "Name" attribute gives a name to the instance of the element that will be created by the animation engine, which allows to identify it for reference. o The optional attribute "Dimension" specifies the right or left side of the face to be considered for this element instance, if any. - The "Phase" tag allows you to specify the phase to which you are referring. It has only one attribute, "Number", which is the phase number in the time sequence of the animation. The "Phase" tag contains one or more "Module" tags corresponding to its child modules. - The "Module" tag is used to specify the module used. This can be either an animation module or a composition module. The tag
"Module" contient elle-même une ou plusieurs balises "Module" correspondant à ses modules fils lorsqu'elle représente un module de composition, ou aucune si elle représente un module d'animation. Elle peut également contenir une liste de balises "Paramètre". La balise "Module" dispose des attributs suivants : o L'attribut "Type" spécifie le type du module utilisé. Ce type est à mettre en correspondance avec les modules effectivement mis en œuvre dans le moteur d'animation. Il peut s'agir par exemple d'un module de type "Muscle", qui est un module d'animation utilisant un procédé d'animation musculaire non spécifique à une partie du visage. o L'attribut "Nom" donne un nom à l'instance du module qui sera créée par le moteur d'animation, ce qui permet de l'identifier pour y faire référence. o L'attribut optionnel "Cote" spécifie le côté droit ou gauche du visage à prendre en compte pour cette instance de module, s'il y a lieu."Module" itself contains one or more "Module" tags corresponding to its child modules when it represents a composition module, or none if it represents an animation module. It can also contain a list of "Parameter" tags. The "Module" tag has the following attributes: o The "Type" attribute specifies the type of module used. This type is to be matched with the modules actually implemented in the animation engine. It may be for example a module of the "Muscle" type, which is an animation module using a method of non-specific muscular animation to a part of the face. o The "Name" attribute gives a name to the instance of the module that will be created by the animation engine, which allows to identify it for reference. o The optional "Dimension" attribute specifies the right or left side of the face to be considered for this module instance, if any.
- La balise "Paramètre" permet de donner des valeurs par défaut à certains paramètres du module. Le premier attribut de cette balise, "Nom", précise le nom du paramètre et le deuxième attribut, "ValeurDefaut", contient la valeur par défaut à utiliser si une valeur correspondante n'est pas fournie à l'étape e2 de paramétrage.- The "Parameter" tag is used to give some parameters of the module default values. The first attribute of this tag, "Name", specifies the name of the parameter and the second attribute, "DefaultValue", contains the default value to use if a corresponding value is not provided in the parametering step e2.
- La balise "lnterface_utilisateur" permet de décrire l'interface utilisateur du moteur, en contenant elle-même les balises optionnelles- The "user interface" tag is used to describe the engine's user interface, including the optional tags.
"lntΘrface_de_parametrage" et "lnterface_de_controle"."lntΘrface_de_parametrage" and "lnterface_de_controle".
- La balise "lnterface_de_parametrage" permet de décrire l'interface de paramétrage. Pour cela elle contient une ou plusieurs balises optionnelles "Page", ou simplement une balise "Groupe_horizontal" ou une balise "Groupe_verticar si tous les paramètres d'entrée des modules peuvent être visualisés sur une seule page graphique.- The "lnterface_de_ammametrage" tag is used to describe the parameterization interface. For this it contains one or more optional tags "Page", or simply a tag "Group_horizontal" or tag "Group_verticar if all input parameters modules can be viewed on a single graphic page.
- La balise "lnterface_de_controle", de façon similaire, permet de décrire l'interface de contrôle. Elle contient une ou plusieurs balises optionnelles "Page", ou simplement une balise "Groupe_horizontal" ou une balise "Groupe_vertical" si tous les paramètres de contrôle peuvent être visualisés sur une seule page graphique.- The tag "Control_Interface", in a similar way, describes the control interface. It contains one or more optional "Page" tags, or simply a "Horizontal_group" tag or a "Vertical_group" tag if all control parameters can be viewed on a single graphic page.
- La balise "Page" permet de spécifier une page graphique dans l'interface de contrôle ou dans l'interface de paramétrage. Cette balise ne contient qu'un seul attribut "Nom" qui donne le nom à la page graphique ainsi spécifiée. Elle contient en outre une balise "Groupe_horizontal" ou une balise "Groupe_vertical", pouvant contenir elles-mêmes d'autres balises "Groupe_horizontal" ou "Groupe_vertical", ce qui permet un grand nombre d'agencements possibles de la page. Les balises "Groupe_vertical" ou "Groupe_horizontal" spécifient en effet respectivement des groupes verticaux ou horizontaux d'objets graphiques permettant à un utilisateur de positionner des paramètres de contrôle ou d'entrée aux modules.- The "Page" tag is used to specify a graphic page in the control interface or in the configuration interface. This tag contains only one attribute "Name" which gives the name to the graphic page thus specified. It also contains a "Group_Horizontal" tag or a "Vertical_Group" tag, which may contain other "Horizontal_Group" or "VerticalGroup" tags, which allows for a large number of possible layouts of the page. The "Vertical_group" or "Horizontal_group" tags specify groups, respectively. vertical or horizontal graphical objects allowing a user to set control or input parameters to the modules.
- La balise "Groupejiorizontal" contient donc une ou plusieurs balises "Interface" qui représente chacune un objet graphique. Les objets graphiques ainsi décrits seront agencés horizontalement. Comme indiqué plus haut la balise "Groupe_hαrizontal" peut elle-même contenir à la place ou en plus de cette liste d'objets graphiques, une ou plusieurs balises "Groupe_horizontal" ou "Groupe_vertical".- The tag "Groupejiorizontal" therefore contains one or more "Interface" tags which each represent a graphic object. The graphic objects thus described will be arranged horizontally. As indicated above, the tag "Groupe_hαrizontal" can itself contain instead of or in addition to this list of graphic objects, one or more tags "Groupe_horizontal" or "Groupe_vertical".
- La balise "Groupe_vertical", de manière similaire, contient une ou plusieurs balises "Interface" représentant des objets graphiques qui seront agencés verticalement. La balise "Groupe_vertical" peut elle-même contenir à la place ou en plus de cette liste d'objets graphiques, une ou plusieurs balises "Groupe_horizontal" ou "Groupe_vertical".- The "Vertical_group" tag, similarly, contains one or more "Interface" tags representing graphical objects that will be arranged vertically. The "Vertical_group" tag can itself contain, instead of or in addition to this list of graphic objects, one or more "Horizontal_group" or "Vertical_group" tags.
- Enfin la balise "Interface" permet de spécifier un objet graphique à utiliser. Cette balise contient deux attributs. Le premier attribut "Type" définit un type d'objet graphique. Ce type doit être mis en correspondance avec les objets graphiques prédéfinis dans le système d'interface graphique. En effet pour chaque type de module ou module spécifique sont implémentés un ou plusieurs objets graphiques, par exemple des listes déroulantes ou des curseurs, permettant de positionner les paramètres du module. Le deuxième attribut, "Référence", contient le nom de l'instance d'élément ou de module que l'objet graphique doit contrôler.- Finally the "Interface" tag allows you to specify a graphic object to use. This tag contains two attributes. The first "Type" attribute defines a type of graphic object. This type must be mapped to the predefined graphical objects in the GUI system. Indeed for each type of module or specific module are implemented one or more graphic objects, for example drop-down lists or sliders, for positioning the parameters of the module. The second attribute, "Reference", contains the name of the element or module instance that the graphical object should control.
La grammaire XML, ou DTD d'après l'anglais "Document Type Définition", du profil ainsi défini est reproduite en Annexe 1.The XML grammar, or DTD according to the English "Document Type Definition", of the profile thus defined is reproduced in Appendix 1.
Un exemple de profit utilisant cette grammaire est aussi reproduit en Annexe 2. ANNEXE 1An example of profit using this grammar is also reproduced in Appendix 2. ANNEX 1
<! — Root élément —><! - Root element ->
<! ELEMENT Configuration (Moteur?, Interface_utilisateur?) ><! ELEMENT Configuration (Engine ?, User Interface?)>
<!-- Moteur élément --> <!ELEMENT Moteur (Canal*, Elément*, Phase*) > <! — Canal élément --><! - Motor element -> <! ELEMENT Motor (Channel *, Element *, Phase *)> <! - Channel element ->
<! ELEMENT Canal EMPTY> < !ATTLIST Canal Nom<! ELEMENT Channel EMPTY> <! ATTLIST Channel Name
(ManipReplay | ManipNeck | ManipEyes | ManipEyelids | ExpEmotion | ExpMood | ConvMarker | VisemeFrench | VisemeEnglish | VisemeSpanish) #REQUIRED> <!ATTLIST Canal Statut (Active | Désactive) #REQUIRED> <!-- Elément élément —>(ManipReplay | ManipNeck | ManipEyes | ManipEyelids | ExpEmotion | ExpMood | ConvMarker | VisemeFrench | VisemeEnglish | VisemeSpanish) #REQUIRED> <! ATTLIST Channel Status (Active | Disable) #REQUIRED> <! - Element Element ->
<! ELEMENT Elément EMPTY><! ELEMENT EMPTY element>
< !ATTLIST Elément Type (ZoneLowerLip | Eye) #REQUIRED><! ATTLIST Element Type (ZoneLowerLip | Eye) #REQUIRED>
< !ATTLIST Elément Nom CDATA #REQUIRED> < !ATTLIST Elément Cote (Gauche | Droit) #IMPLIED><! ATTLIST Element Name CDATA #REQUIRED> <! ATTLIST Element Rating (Left | Right) #IMPLIED>
<! — Phase élément --><! - Phase element ->
<! ELEMENT Phase (Module*) > < !ATTLIST Phase Numéro CDATA #REQUIRED><! ELEMENT Phase (Module *)> <! ATTLIST Phase CDATA Number #REQUIRED>
<! — Module élément --><! - Module element ->
<!ELEMENT Module (Paramètre*, Module*) > < !ATTLIST Module Type<! ELEMENT Module (Parameter *, Module *)> <! ATTLIST Module Type
(Jaw | Neck | Eye | Eyelid | Cheek | Teeth | Wrinkles | CompMuscleAdd | CompMuscl eConj | Muscle | MuscleLow | MuscleHigh | MuscleOO | MuscleOOF | Keyframe) #REQUIRED>(Jaw | Neck | Eye | Eyelid | Cheek | Teeth | Wrinkles | CompMuscleAdd | CompMuscleConj | MuscleLow | MuscleHigh | MuscleOO | MuscleOOF | Keyframe) #REQUIRED>
< !ATTLIST Module Nom CDATA #REQUIRED> < !ATTLIST Module Cote (Gauche | Droit) #IMPLIED><! ATTLIST Module Name CDATA #REQUIRED> <! ATTLIST Module Dimension (Left | Right) #IMPLIED>
<! — Paramètre élément —><! - Element parameter ->
<! ELEMENT Paramètre EMPTY> < !ATTLIST Paramètre Nom CDATA #REQUIRED><! ELEMENT Parameter EMPTY> <! ATTLIST Parameter Name CDATA #REQUIRED>
< !ATTLIST Paramètre ValeurDefaut CDATA #REQUIRED> <!-- Interface_utilisateur élément —><! ATTLIST Parameter Default Value CDATA #REQUIRED> <! - User Interface element ->
<! ELEMENT Interface_utilisateur<! ELEMENT User Interface
(Interface_de_parametrage?, Interface_de_controle?) >(Interface_de_parametrage ?, Interface_de_controle?)>
<!-- Interface_de_parametrage and Interface_de_controle éléments —><! - Interface_de_parametrage and Interface_de_controle elements ->
< ! ELEMENT Interface_de_parametrage (Page* | Groupe_horizontal | groupe_vertical) ><! ELEMENT Parameter_Interface (Page * | Horizontal_group | vertical_group)>
<! ELEMENT Interface_dë_controle (Page* | Groupe_horizontal | groupe_vertical ) ><! ELEMENT Control_Interface (Page * | Horiz_group | Vertical_group)>
<! — Page élément —><! - Element page ->
<! ELEMENT Page (Groupe horizontal | groupe vertical) ><! ELEMENT Page (Horizontal Group | Vertical Group)>
< !ATTLIST Page Nom CDATA #REQUIRED><! ATTLIST Page Name CDATA #REQUIRED>
<! — Groupe horizontal and groupe vertical éléments —><! - Horizontal group and vertical group elements ->
<! ELEMENT Groupe_horizontal (Interface | Groupe_horizontal | groupe_vertical) *><! ELEMENT Horizontal_group (Interface | Horizontal_group | vertical_group) *>
<! ELEMENT groupe_vertical (Interface | Groupe_horizontal | groupe_vertical) *><! ELEMENT vertical_group (Interface | Horizontal_group | vertical_group) *>
<! — Interface élément --><! - Interface element ->
<! ELEMENT Interface EMPTY> < !ATTLIST Interface Type CDATA #REQUIRED><! ELEMENT Interface EMPTY> <! ATTLIST Interface Type CDATA #REQUIRED>
< !ATTLIST Interface Référence CDATA #REQUIRED> <! ATTLIST Interface Reference CDATA #REQUIRED>
ANNEXE 2ANNEX 2
<?xml version="1.0" encoding="iso-8859-l"?> <! DOCTYPE Configuration SYSTEM "FaceEngineCfg.dtd"><? xml version = "1.0" encoding = "iso-8859-l"?> <! DOCTYPE Configuration SYSTEM "FaceEngineCfg.dtd">
<Configuration><Configuration>
<Moteur><Motor>
<Canal Nom="ManipReplay" Statut="Active"/> <Canal Nom="ManipNeck" Statut="Active"/> <Canal Nom="ManipEyes" Statut="Active"/> <Canal Nom="ManipEyelids" Statut="Active"/> <Canal Nom="ExpEmotion" Statut="Active"/><Channel Name = "ManipReplay" Status = "Active" /> <Channel Name = "ManipNeck" Status = "Active" /> <Channel Name = "ManipEyes" Status = "Active" /> <Channel Name = "ManipEyelids" Status = "Active" /> <Channel Name = "ExpEmotion" Status = "Active" />
<Canal Nom="ExpMood" Statut="Active"/> <Canal Nom="ConvMarker" Statut="Active"/> <Canal Nom="VisemeFrench" Statut="Active"/> <Canal Nom="VisemeEnglish" Statut="Active"/> <Canal Nom="VisemeSpanish" Statut="Active"/><Channel Name = "ExpMood" Status = "Active" /> <Channel Name = "ConvMarker" Status = "Active" /> <Channel Name = "VisemeFrench" Status = "Active" /> <Channel Name = "VisemeEnglish" Status = "Active" /> <Channel Name = "VisemeSpanish" Status = "Active" />
<Element Type="ZoneLowerLip" Nom="ZoneLowerLip"/> <Element Type="Eye" Nom="FeatureEyeLeft" Cote="Gauche"/> <Element Type="Eye" Nom="FeatureEyeRight" Cote="Droit"/><Element Type = "ZoneLowerLip" Name = "ZoneLowerLip" /> <Element Type = "Eye" Name = "FeatureEyeLeft" Dimension = "Left" /> <Element Type = "Eye" Name = "FeatureEyeRight" Dimension = "Right" />
<Phase Numero="0"><Phase Numero = "0">
<Module Type="Eye" Nom="Gauche_Eye" Cote="Gauche"><Module Type = "Eye" Name = "Left_Eye" Rating = "Left">
<Parametre Nom="FeatureEye" ValeurDefaut="FeatureEyeLeft"/><Parameter Name = "FeatureEye" DefaultValue = "FeatureEyeLeft" />
</Module></ Module>
<Module Type="Eye" Nom="Droit_Eye" Cote="Droit"><Module Type = "Eye" Name = "Right_Eye" Rating = "Right">
<Parainetre Nom="FeatureEye" ValeurDefaut="FeatureEyeRight"/><Paraineter Name = "FeatureEye" DefaultValue = "FeatureEyeRight" />
</Module></ Module>
<Module Type="Eyelid" Nom="Gauche_Eyelid" Cote="Gauche"> <Parametre Nom="Extra" ValeurDefaut="0.2"/><Module Type = "Eyelid" Name = "Left_Eyelid" Dimension = "Left"> <Parameter Name = "Extra" DefaultValue = "0.2" />
<Parametre Nom="Fade" ValeurDefaut="45.0"/> <Parametre Nom="OpeningMax" ValeurDefaut="45.0"/><Parameter Name = "Fade" DefaultValue = "45.0" /> <Parameter Name = "OpeningMax" DefaultValue = "45.0" />
<Parametre Nom="FeatureEye" ValeurDefaut="FeatureEyeLeft"/><Parameter Name = "FeatureEye" DefaultValue = "FeatureEyeLeft" />
</Module> <Module Type="Eyelid" Nom="Droit_Eyelid" Cote="Droit"></ Module> <Module Type = "Eyelid" Name = "Right_Eyelid" Rating = "Right">
<Parametre Nom="Extra" ValeurDefaut="0.2"/> <Parametre Nom="Fade" ValeurDefaut="45.0"/> <Parametre Nom="OpeningMax"<Parameter Name = "Extra" DefaultValue = "0.2" /> <Parameter Name = "Fade" DefaultValue = "45.0" /> <Parameter Name = "OpeningMax"
ValeurDefaut="45.0"/>DefValue = "45.0" />
<Parametre Nom="FeatureEye" ValeurDefaut="FeatureEyeRight"/><Parameter Name = "FeatureEye" DefaultValue = "FeatureEyeRight" />
</Module></ Module>
</Phase></ Phase>
<Phase Numero="l"> <Module Type="Jaw" Nom="Jaw"><Phase Number = "l"> <Module Type = "Jaw" Name = "Jaw">
<Parametre Nom="FadeAngleDn" ValeurDefaut="20.0"/><Parameter Name = "FadeAngleDn" DefaultValue = "20.0" />
<Parametre Nom="FadeAngleUp" ValeurDefaut="10.0"/> <Parametre Nom="Eκtra" ValeurDefaut="l .0"/><Parameter Name = "FadeAngleUp" DefaultValue = "10.0" /> <Parameter Name = "Ektra" DefaultValue = "l .0" />
</Module></ Module>
</Phase> <Phase Numero="2"></ Phase> <Phase Number = "2">
<Module Type="CompMuscleAdd" Nom="Global_Muscles_Group"> <Module Type="CompMuscleConj "<Module Type = "CompMuscleAdd" Name = "Global_Muscles_Group"> <Module Type = "CompMuscleConj"
Nom="Frontal_Gauche Up Group" Cote="Gauche">Name = "Frontal_Leg Left Up Group" Dimension = "Left">
<Module Type="Muscle"<Module Type = "Muscle"
Nom="Gauche_Frontalis_Outer" Cote="Gauche"> <Parametre Nom="Disp"Name = "Left_Frontalis_Outer" Dimension = "Left"> <Parameter Name = "Disp"
ValeurDefaut="0.0"/>DefValue = "0.0" />
<Parametre Nom="Start" ValeurDefaut="0.8"/><Parameter Name = "Start" DefaultValue = "0.8" />
<Parametre Nom="End" ValeurDefaut="1.2"/><Parameter Name = "End" DefaultValue = "1.2" />
<Parametre Nom="AlphaH" ValeurDefaut="45.0"/><Parameter Name = "AlphaH" DefaultValue = "45.0" />
<Parametre Nom="AlphaV" ValeurDefaut="45.0"/> <Parametre Nom="AlphaZ"<Parameter Name = "AlphaV" DefaultValue = "45.0" /> <Parameter Name = "AlphaZ"
ValeurDefaut="0.0"/>DefValue = "0.0" />
</Module></ Module>
<Module Type="Muscle" Nom="Gauche_Frontalis Major" Cote="Gauche"> <Parametre Nom="Disp" ValeurDefaut="O .0"/><Module Type = "Muscle" Name = "Left_Frontalis Major" Rating = "Left"> <Parameter Name = "Disp" DefaultValue = "O .0"/>
<Parametre Nom="Start" ValeurDefaut="O .8"/> <Parametre Nom="End"<Parameter Name = "Start" DefaultValue = "O .8" /> <Parameter Name = "End"
ValeurDefaut="1.2"/>DefValue = "1.2" />
<Parametre Nom="AlphaH" ValeurDefaut="35.0"/><Parameter Name = "AlphaH" DefaultValue = "35.0" />
<Parametre Nom="AlphaV" ValeurDefaut="35.0"/><Parameter Name = "AlphaV" DefaultValue = "35.0" />
<Parametre Nom="AlphaZ" ValeurDefaut="0.0"/><Parameter Name = "AlphaZ" DefaultValue = "0.0" />
</Module> <Module Type="Muscle"</ Module> <Module Type = "Muscle"
Nom="Gauche_Frontalis_Inner" Cote="Gauche">Name = "Left_Frontalis_Inner" Rating = "Left">
<Parametre Nom="Disp" ValeurDefaut="0.0"/><Parameter Name = "Disp" DefaultValue = "0.0" />
<Parametre Nom="Start" ValeurDefaut="0.8"/><Parameter Name = "Start" DefaultValue = "0.8" />
<Parametre Nom="End" ValeurDefaut="1.2"/><Parameter Name = "End" DefaultValue = "1.2" />
<Parametre Nom="AlphaH" ValeurDefaut="35.0"/> <Parametre Nom="AlphaV"<Parameter Name = "AlphaH" DefaultValue = "35.0" /> <Parameter Name = "AlphaV"
ValeurDefaut="35.0"/>DefValue = "35.0" />
<Parametre Nom="AlphaZ" ValeurDefaut="0.0"/><Parameter Name = "AlphaZ" DefaultValue = "0.0" />
</Module></ Module>
</Module></ Module>
<Module Type="CompMuscleConj " Nom="Frontal_Droit_Up_Group" Cote="Droit"><Module Type = "CompMuscleConj" Name = "Frontal_Law_Up_Group" Dimension = "Right">
<Module Type="Muscle" Nom="Droit_Frontalis_Outer" Cote="Droit"><Module Type = "Muscle" Name = "Right_Frontalis_Outer" Dimension = "Right">
<Parametre Nom="Disp" ValeurDefaut="0.0"/> <Parametre Nom="Start"<Parameter Name = "Disp" DefaultValue = "0.0" /> <Parameter Name = "Start"
ValeurDefaut="0.8"/>DefValue = "0.8" />
<Parametre Nom="End" ValeurDefaut="1.2"/><Parameter Name = "End" DefaultValue = "1.2" />
<Parametre Nom="AlphaH" ValeurDefaut="45.0"/><Parameter Name = "AlphaH" DefaultValue = "45.0" />
<Parametre Nom="AlphaV" ValeurDefaut="45.0"/><Parameter Name = "AlphaV" DefaultValue = "45.0" />
<Parametre Nom="AlphaZ" ValeurDefaut="0.0"/> </Module> <Module Type="Muscle" Nom="Droit_Frontalis_Major" Cote="Droit"><Parameter Name = "AlphaZ" DefaultValue = "0.0"/></Module> <Module Type = "Muscle" Name = "Right_Frontalis_Major" Rating = "Right">
<Parametre Nom="Disp" ValeurDefaut="O.O"/><Parameter Name = "Disp" DefaultValue = "O.O" />
<Parametre Nom="Start" ValeurDefaut="O .8"/><Parameter Name = "Start" DefaultValue = "O .8" />
<Parametre Nom="End" ValeurDefaut="1.2"/> <Parametre Nom="AlphaH"<Parameter Name = "End" DefaultValue = "1.2" /> <Parameter Name = "AlphaH"
ValeurDefaut="35.0"/>DefValue = "35.0" />
<Parametre Nom="AlphaV" ValeurDefaut="35.0"/><Parameter Name = "AlphaV" DefaultValue = "35.0" />
<Parametre Nom="AlphaZ" ValeurDefaut="O.O"/><Parameter Name = "AlphaZ" DefaultValue = "O.O" />
</Module></ Module>
<Module Type="Muscle"<Module Type = "Muscle"
Nom="Droit_Frontalis_Inner" Cote="Droit"> <Parametre Nom="Disp"Name = "Right_Frontalis_Inner" Dimension = "Right"> <Parameter Name = "Disp"
ValeurDefaut="0.0"/>DefValue = "0.0" />
<Parametre Nom="Start" ValeurDefaut="0.8"/><Parameter Name = "Start" DefaultValue = "0.8" />
<Parametre Nom="End" ValeurDefaut="1.2"/><Parameter Name = "End" DefaultValue = "1.2" />
<Parametre Nom="AlphaH" ValeurDefaut="35.0"/><Parameter Name = "AlphaH" DefaultValue = "35.0" />
<Parametre Nom="AlphaV" ValeurDefaut="35.0"/> <Parametre Nom="AlphaZ"<Parameter Name = "AlphaV" DefaultValue = "35.0" /> <Parameter Name = "AlphaZ"
ValeurDefaut="0.0"/>DefValue = "0.0" />
</Module></ Module>
</Module></ Module>
<Module Type="CompMuscleConj " Nom="Frontal_Gauche_Down_Group" Cote="Gauche"><Module Type = "CompMuscleConj" Name = "Front_Leg_Down_Group" Rating = "Left">
<Module Type="Muscle" Nom="Gauche_Lateral_Corrugator" Cote="Gauche"><Module Type = "Muscle" Name = "Left_Lateral_Corrugator" Rating = "Left">
<Parametre Nom="Disp" ValeurDefaut="0.0"/><Parameter Name = "Disp" DefaultValue = "0.0" />
<Parametre Nom="Start" ValeurDefaut="0.8"/> <Parametre Nom="End"<Parameter Name = "Start" DefaultValue = "0.8" /> <Parameter Name = "End"
ValeurDefaut="1.2"/>DefValue = "1.2" />
<Parametre Nom="AlphaH" ValeurDefaut="20.0"/><Parameter Name = "AlphaH" DefaultValue = "20.0" />
<Parametre Nom="AlphaV" ValeurDefaut="20.0"/> <Parametre Nom="AlphaZ" ValeurDefaut="O .0"/><Parameter Name = "AlphaV" DefaultValue = "20.0"/> <Parameter Name = "AlphaZ" DefaultValue = "O .0"/>
</Module> <Module Type="Muscle"</ Module> <Module Type = "Muscle"
Nom="Gauche_Up_Obicularis_Oculi" Cote="Gauche">Name = "Left_Up_Obicularis_Oculi" Rating = "Left">
<Parametre Nom="Disp" ValeurDefaut="O .0"/><Parameter Name = "Disp" DefaultValue = "O .0" />
<Parametre Nom="Start" ValeurDefaut="0.8"/><Parameter Name = "Start" DefaultValue = "0.8" />
<Parametre Nom="End" ValeurDefaut="1.5"/><Parameter Name = "End" DefaultValue = "1.5" />
<Parametre Nom="AlphaH" ValeurDefaut="50.0"/> <Parametre Nom="AlphaV"<Parameter Name = "AlphaH" DefaultValue = "50.0" /> <Parameter Name = "AlphaV"
ValeurDefaut="50.0"/>DefValue = "50.0" />
<Parametre Nom="AlphaZ" ValeurDefaut="O .0"/><Parameter Name = "AlphaZ" DefaultValue = "O .0" />
</Module></ Module>
</Module></ Module>
<Module Type="CompMuscleConj "<Module Type = "CompMuscleConj"
Nom="Frontal_Droit_Down_Group" Cote="Droit">Name = "Frontal_Law_Down_Group" Rating = "Right">
<Module Type="Muscle" Nom="Droit_Lateral_Corrugator" Cote="Droit"><Module Type = "Muscle" Name = "Right_Lateral_Corrugator" Rating = "Right">
<Parametre Nom="Disp" ValeurDefaut="O .0"/> <Parametre Nom="Start"<Parameter Name = "Disp" DefaultValue = "O .0" /> <Parameter Name = "Start"
ValeurDefaut="O .8"/>DefaultValue = "O.8" />
<Parametre Nom="End" ValeurDefaut="1.2"/><Parameter Name = "End" DefaultValue = "1.2" />
<Parametre Nom="AlphaH" ValeurDefaut="20.0"/><Parameter Name = "AlphaH" DefaultValue = "20.0" />
<Parametre Nom="AlphaV" ValeurDefaut="20.0"/><Parameter Name = "AlphaV" DefaultValue = "20.0" />
<Parametre Nom="AlphaZ" ValeurDefaut="O .0"/> </Module><Parameter Name = "AlphaZ" DefaultValue = "O .0" /> </ Module>
<Module Type="Muscle"<Module Type = "Muscle"
Nom=" Droit_Up_Obiculari s_Oculi " Cote="Droit">Name = "Right_Up_Obiculari s_Oculi" Rating = "Right">
<Parametre Nom="Disp" ValeurDefaut=" O . O " /><Parameter Name = "Disp" DefaultValue = "O.O" />
<Parametre Wom=" Start " ValeurDefaut'0 . 0 " /><Parameter Wom = "Start" DefaultValue '0. 0 "/>
<Parametre Nom="End" ValeurDefaut=" 2 . 0 " /> <Parametre Nom="AlphaH" ValeurDefaut="80.0"/><Parameter Name = "End" DefaultValue = "2. 0"/> <Parameter Name = "AlphaH" DefaultValue = "80.0"/>
<Parametre Nom="AlphaV" ValeurDefaut="30.0"/> <Parametre Nom="AlphaZ"<Parameter Name = "AlphaV" DefaultValue = "30.0" /> <Parameter Name = "AlphaZ"
ValeurDefaut="O .0"/>DefaultValue = "O .0" />
</Module></ Module>
</Module></ Module>
<Module Type="CompMuscleConj " Nom="Mouth_Up_Group"><Module Type = "CompMuscleConj" Name = "Mouth_Up_Group">
<Module Type="MuscleHigh" Nom="Med_Levator_Labii"><Module Type = "MuscleHigh" Name = "Med_Levator_Labii">
<Parametre Nom="Disp" ValeurDefaut="l .0"/><Parameter Name = "Disp" DefaultValue = "l .0" />
<Parametre Nom="Start" ValeurDefaut="O .0"/> <Parametre Nom="End"<Parameter Name = "Start" DefaultValue = "O .0" /> <Parameter Name = "End"
ValeurDefaut="3.0"/>DefValue = "3.0" />
<Parametre Nom="AlphaH" ValeurDefaut="50.0"/><Parameter Name = "AlphaH" DefaultValue = "50.0" />
<Parametre Nom="AlphaV" ValeurDefaut="50.0"/><Parameter Name = "AlphaV" DefaultValue = "50.0" />
<Parametre Nom="AlphaZ" ValeurDefaut="O .0"/><Parameter Name = "AlphaZ" DefaultValue = "O .0" />
<Parametre Nom="FeatureLowerLip" ValeurDefaut="ZoneLowerLip"/> </Module><Parameter Name = "FeatureLowerLip" DefaultValue = "ZoneLowerLip" /> </ Module>
<Module Type="MuscleHigh" Nom="Gauche_Levator_Labii" Cote="Gauche"><Module Type = "MuscleHigh" Name = "Left_Levator_Labii" Rating = "Left">
<Parametre Nom="Disp" ValeurDefaut="1.0"/><Parameter Name = "Disp" DefaultValue = "1.0" />
<Parametre Nom="Start" ValeurDefaut="0.0"/><Parameter Name = "Start" DefaultValue = "0.0" />
<Parametre Nom="End" ValeurDefaut="3.0"/> <Parametre Nom="AlphaH"<Parameter Name = "End" DefaultValue = "3.0" /> <Parameter Name = "AlphaH"
ValeurDefaut="40.0"/>DefValue = "40.0" />
<Parametre Nom="AlphaV" ValeurDefaut="40.0" /><Parameter Name = "AlphaV" DefaultValue = "40.0" />
<Parametre Nom="AlphaZ" ValeurDefaut=" O . O " /><Parameter Name = "AlphaZ" DefaultValue = "O.O" />
<Parametre Nom="FeatureLowerLlp"<Parameter Name = "FeatureLowerLlp"
ValeurDefaut"ZoneLowerLip"/>Default value "ZoneLowerLip"/>
</Module> <Module Type="MuscleHigh" Nom="Droit_Levator_Labii" Cote="Droit"></ Module> <Module Type = "MuscleHigh" Name = "Right_Levator_Labii" Dimension = "Right">
<Parametre Nom="Disp" ValeurDefaut="l .0"/> <Parametre Nom="Start"<Parameter Name = "Disp" DefaultValue = "l .0" /> <Parameter Name = "Start"
ValeurDefaut="O .0"/>DefaultValue = "O .0" />
<Parametre Nom="End" ValeurDefaut="3.0"/><Parameter Name = "End" DefaultValue = "3.0" />
<Parametre Nom="AlphaH" ValeurDefaut="40.0"/><Parameter Name = "AlphaH" DefaultValue = "40.0" />
<Parametre Nom="AlphaV" ValeurDefaut="40.0" /><Parameter Name = "AlphaV" DefaultValue = "40.0" />
<Parametre Nom="AlphaZ" ValeurDefaut="0.0"/> <Parametre Nom="FeatureLowerLip"<Parameter Name = "AlphaZ" DefaultValue = "0.0" /> <Parameter Name = "FeatureLowerLip"
ValeurDefaut="ZoneLowerLip"/>DefValue = "ZoneLowerLip" />
</Module></ Module>
<Module Type="Muscle" Nom="Gauche_Zygomatic_Major" Cote="Gauche"><Module Type = "Muscle" Name = "Left_Zygomatic_Major" Rating = "Left">
<Parametre Nom="Disp" ValeurDefaut="0.0"/><Parameter Name = "Disp" DefaultValue = "0.0" />
<Parametre Nom="Start" ValeurDefaut="0.8"/> <Parametre Wom="End"<Parameter Name = "Start" DefaultValue = "0.8" /> <Parameter Wom = "End"
ValeurDefaut="1.2"/>DefValue = "1.2" />
<Parametre Nom="AlphaH" ValeurDefaut="20.0"/><Parameter Name = "AlphaH" DefaultValue = "20.0" />
<Parametre Nom="AlphaV" ValeurDefaut="20.0"/><Parameter Name = "AlphaV" DefaultValue = "20.0" />
<Parametre Wom="AlphaZ" ValeurDefaut="0.0"/><Parameter Wom = "AlphaZ" DefaultValue = "0.0" />
</Module> <Module Type="Muscle"</ Module> <Module Type = "Muscle"
Nom="Droit_Zygomatic_Major" Cote="Droit">Name = "Right_Zygomatic_Major" Rating = "Right">
<Parametre Nom="Disp" ValeurDefaut="0.0"/><Parameter Name = "Disp" DefaultValue = "0.0" />
<Parametre Nom="Start" ValeurDefaut="0.8"/><Parameter Name = "Start" DefaultValue = "0.8" />
<Parametre Nom="End" ValeurDefaut="1.2"/><Parameter Name = "End" DefaultValue = "1.2" />
<Parametre Nom="AlphaH" ValeurDefaut="20.0"/> <Parametre Nom="AlphaV"<Parameter Name = "AlphaH" DefaultValue = "20.0" /> <Parameter Name = "AlphaV"
ValeurDefaut="20.0"/>DefValue = "20.0" />
<Parametre Nom="AlphaZ" ValeurDefaut="0.0"/><Parameter Name = "AlphaZ" DefaultValue = "0.0" />
</Module> </Module></ Module> </ Module>
<Module Type="CompMuscleConj " Nom="Mouth_Down_Group"><Module Type = "CompMuscleConj" Name = "Mouth_Down_Group">
<Module Type="Muscle"<Module Type = "Muscle"
Nom="Gauche_Angular_Depressor" Cote="Gauche">Name = "Left_Angular_Depressor" Rating = "Left">
<Parametre Nom="Disp"<Parameter Name = "Disp"
ValeurDefaut'0.0"/> <Parametre Nom="Start"DefaultValue '0.0 "/><Parameter Name =" Start "
ValeurDefaut="0.8"/>DefValue = "0.8" />
<Parametre Nom="End" ValeurDefaut="l .4 "/><Parameter Name = "End" DefaultValue = "l .4" />
<Parametre Nom="AlphaH" ValeurDefaut="35.0"/><Parameter Name = "AlphaH" DefaultValue = "35.0" />
<Parametre Nom="AlphaV" ValeurDefaut="35.0"/><Parameter Name = "AlphaV" DefaultValue = "35.0" />
<Parametre Nom="AlphaZ" ValeurDefaut="0.0"/> </Module><Parameter Name = "AlphaZ" DefaultValue = "0.0" /> </ Module>
<Module Type="Muscle" Nom="Droit_Angular_Depressor" Cote="Droit"><Module Type = "Muscle" Name = "Right_Angular_Depressor" Rating = "Right">
<Parametre Nom="Disp" ValeurDefaut="O.O"/><Parameter Name = "Disp" DefaultValue = "O.O" />
<Parametre Nom="Start" ValeurDefaut="0.8"/><Parameter Name = "Start" DefaultValue = "0.8" />
<Parametre Nom="End" ValeurDefaut="l .4 "/> <Parametre Nom="AlphaH"<Parameter Name = "End" DefaultValue = "l .4" /> <Parameter Name = "AlphaH"
ValeurDefaut="35.0"/>DefValue = "35.0" />
<Parametre Nom="AlphaV" ValeurDefaut="35.0"/><Parameter Name = "AlphaV" DefaultValue = "35.0" />
<Parametre Nom="AlphaZ" ValeurDefaut="O.O"/><Parameter Name = "AlphaZ" DefaultValue = "O.O" />
</Module></ Module>
<Module Type="MuscleLow"<Module Type = "MuscleLow"
Nom="Gauche_Depressor_Labii" Cote="Gauche"> <Parametre Nom="Disp"Name = "Left_Depressor_Labii" Dimension = "Left"> <Parameter Name = "Disp"
ValeurDefaut="l .0"/>DefaultValue = "l .0" />
<Parametre Nom="Start" ValeurDefaut="0.0"/><Parameter Name = "Start" DefaultValue = "0.0" />
<Parametre Nom="End" ValeurDefaut="3.0"/><Parameter Name = "End" DefaultValue = "3.0" />
<Parametre Wom="AlphaH" ValeurDefaut="20.0"/><Parameter Wom = "AlphaH" DefaultValue = "20.0" />
<Parametre Nom="AlphaV" ValeurDefaut="20.0"/> <Parametre Nom="AlphaZ" ValeurDefaut="O .0"/><Parameter Name = "AlphaV" DefaultValue = "20.0"/> <Parameter Name = "AlphaZ" DefaultValue = "O .0"/>
<Parametre Nom="FeatureLowerLip" ValeurDefaut="ZoneLowerLip"/> </Module><Parameter Name = "FeatureLowerLip" DefaultValue = "ZoneLowerLip" /> </ Module>
<Module Type="MuscleLow" Nom="Droit_Depressor_Labii" Cote="Droit"><Module Type = "MuscleLow" Name = "Right_Depressor_Labii" Dimension = "Right">
<Parametre Nom="Disp" ValeurDefaut="1.0"/><Parameter Name = "Disp" DefaultValue = "1.0" />
<Parametre Nom="Start" ValeurDefaut="0.0"/><Parameter Name = "Start" DefaultValue = "0.0" />
<Parametre Nom="End" ValeurDefaut="3.0"/> <Parametre Nom="AlphaH"<Parameter Name = "End" DefaultValue = "3.0" /> <Parameter Name = "AlphaH"
ValeurDefaut="20.0"/>DefValue = "20.0" />
<Parametre Nom="AlphaV" ValeurDefaut="20.0"/><Parameter Name = "AlphaV" DefaultValue = "20.0" />
<Parametre Nom="AlphaZ" ValeurDefaut="O.O"/><Parameter Name = "AlphaZ" DefaultValue = "O.O" />
<Parametre Nom="FeatureLowerLip" ValeurDefaut="ZoneLowerLip"/><Parameter Name = "FeatureLowerLip" DefaultValue = "ZoneLowerLip" />
</Module> <Module Type="MuscleLow"</ Module> <Module Type = "MuscleLow"
Nom="Med_Depressor_Labii">Name = "Med_Depressor_Labii">
<Parametre Nom="Disp" ValeurDefaut="l .0"/><Parameter Name = "Disp" DefaultValue = "l .0" />
<Parametre Nom="Start" ValeurDefaut="O.O"/><Parameter Name = "Start" DefaultValue = "O.O" />
<Parametre Wom="End" ValeurDefaut="3.0"/><Parameter Wom = "End" DefaultValue = "3.0" />
<Parametre Nom="AlphaH" ValeurDefaut="40.0" /> <Parametre Nom="AlphaV"<Parameter Name = "AlphaH" DefaultValue = "40.0" /> <Parameter Name = "AlphaV"
ValeurDefaut="40.0" />DefaultValue = "40.0" />
<Parametre Nom="AlphaZ" ValeurDefaut="0.0"/><Parameter Name = "AlphaZ" DefaultValue = "0.0" />
<Parametre Nom="FeatureLowerLip" ValeurDefaut="ZoneLowerLip"/><Parameter Name = "FeatureLowerLip" DefaultValue = "ZoneLowerLip" />
</Module></ Module>
</Module> <Module Type="CompMuscleAdd"</ Module> <Module Type = "CompMuscleAdd"
Nom="Others_Group">Name = "Others_Group">
<Module Type="Muscle" Nom="Gauche Down Obicularis Oculi" Cote="Gauche"> <Parametre Nom="Disp" ValeurDefaut="O .0"/><Module Type = "Muscle" Name = "Left Down Obicularis Oculi" Rating = "Left"> <Parameter Name = "Disp" DefaultValue = "O .0"/>
<Parametre Nom="Start" ValeurDefaut="O .8"/> <Parametre Nom="End"<Parameter Name = "Start" DefaultValue = "O .8" /> <Parameter Name = "End"
ValeurDefaut="1.5"/>DefValue = "1.5" />
<Parametre Nom="AlphaH" ValeurDefaut="50.0"/><Parameter Name = "AlphaH" DefaultValue = "50.0" />
<Parametre Nom="AlphaV" ValeurDefaut="50.0"/><Parameter Name = "AlphaV" DefaultValue = "50.0" />
<Parametre Nom="AlphaZ" ValeurDefaut="O .0"/><Parameter Name = "AlphaZ" DefaultValue = "O .0" />
</Module> <Module Type="Muscle"</ Module> <Module Type = "Muscle"
Nom="Droit_Down_Obicularis_Oculi" Cote="Droit">Name = "Right_Down_Obicularis_Oculi" Rating = "Right">
<Parametre Nom="Disp" ValeurDefaut="O .0"/><Parameter Name = "Disp" DefaultValue = "O .0" />
<Parametre Nom="Start" ValeurDefaut="O.O"/><Parameter Name = "Start" DefaultValue = "O.O" />
<Parametre Nom="End" ValeurDefaut="2.0"/><Parameter Name = "End" DefaultValue = "2.0" />
<Parametre Nom="AlphaH"<Parameter Name = "AlphaH"
ValeurDefaut="80.0"/> <Parametre Wom="AlphaV"DefaultValue = "80.0" /> <Parameter Wom = "AlphaV"
ValeurDefaut="30.0"/>DefValue = "30.0" />
<Parametre Nom="AlphaZ" ValeurDefaut="O .0"/><Parameter Name = "AlphaZ" DefaultValue = "O .0" />
</Module></ Module>
<Module Type="Muscle" Nom="Gauche_Nasalis" Cote="Gauche"><Module Type = "Muscle" Name = "Left_Nasalis" Rating = "Left">
<Parametre Nom="Disp" ValeurDefaut="O .0"/> <Parametre Nom="Start"<Parameter Name = "Disp" DefaultValue = "O .0" /> <Parameter Name = "Start"
ValeurDefaut="O .8"/>DefaultValue = "O.8" />
<Parametre Nom="End" ValeurDefaut="1.2"/><Parameter Name = "End" DefaultValue = "1.2" />
<Parametre Nom="AlphaH" ValeurDefaut="20.0"/><Parameter Name = "AlphaH" DefaultValue = "20.0" />
<Parametre Nom="AlphaV" ValeurDefaut="20.0"/><Parameter Name = "AlphaV" DefaultValue = "20.0" />
<Parametre Nom="AlphaZ" ValeurDefaut="O .0"/> </Module><Parameter Name = "AlphaZ" DefaultValue = "O .0" /> </ Module>
<Module Type="Muscle" Nom="Droit_Nasalis" Cote="Droit"><Module Type = "Muscle" Name = "Right_Nasalis" Dimension = "Right">
<Parametre Nom="Disp" ValeurDefaut="O.O"/> <Parametre Nom="Start" ValeurDefaut="O .8"/><Parameter Name = "Disp" DefaultValue = "OO"/> <Parameter Name = "Start" DefaultValue = "O .8"/>
<Parametre Nom="End" ValeurDefaut="1.2"/> <Parametre Nom="AlphaH"<Parameter Name = "End" DefaultValue = "1.2" /> <Parameter Name = "AlphaH"
ValeurDefaut="20.0"/>DefValue = "20.0" />
<Parametre Nom="AlphaV" ValeurDefaut="20.0"/><Parameter Name = "AlphaV" DefaultValue = "20.0" />
<Parametre Nom="AlphaZ" ValeurDefaut="O.O"/><Parameter Name = "AlphaZ" DefaultValue = "O.O" />
</Module></ Module>
<Module Type="Muscle" Nom="Gauche_Risoris" Cote="Gauche"> <Parametre Nom="Disp"<Module Type = "Muscle" Name = "Left_Risoris" Dimension = "Left"> <Parameter Name = "Disp"
ValeurDefaut="l .0"/>DefaultValue = "l .0" />
<Parametre Nom="Start" ValeurDefaut="l .0"/><Parameter Name = "Start" DefaultValue = "l .0" />
<Parametre Nom="End" ValeurDefaut="1.7"/><Parameter Name = "End" DefaultValue = "1.7" />
<Parametre Nom="AlphaH" ValeurDefaut="10.0"/><Parameter Name = "AlphaH" DefaultValue = "10.0" />
<Parametre Nom="AlphaV"<Parameter Name = "AlphaV"
ValeurDefaut="10.0"/> <Parametre Wom="AlphaZ"DefaultValue = "10.0" /> <Parameter Wom = "AlphaZ"
ValeurDefaut="O .0"/>DefaultValue = "O .0" />
</Module></ Module>
<Module Type="Muscle" Nom="Droit_Risoris" Cote="Droit"><Module Type = "Muscle" Name = "Right_Risoris" Rating = "Right">
<Parametre Nom="Disp" ValeurDefaut="l .0"/><Parameter Name = "Disp" DefaultValue = "l .0" />
<Parametre Nom="Start" ValeurDefaut="l .0"/> <Parametre Nom="End"<Parameter Name = "Start" DefaultValue = "l .0" /> <Parameter Name = "End"
ValeurDefaut="l .7 "/>DefaultValue = "l.7" />
<Parametre Nom="AlphaH" ValeurDefaut="10.0"/><Parameter Name = "AlphaH" DefaultValue = "10.0" />
<Parametre Nom="AlphaV" ValeurDefaut="10.0"/><Parameter Name = "AlphaV" DefaultValue = "10.0" />
<Parametre Nom="AlphaZ" ValeurDefaut="0.0"/><Parameter Name = "AlphaZ" DefaultValue = "0.0" />
</Module> <Module Type="MuscleOO"</ Module> <Module Type = "MuscleOO"
Nom="Gauche_Obicularis_Oris" Cote="Gauche">Name = "Left_Obicularis_Oris" Rating = "Left">
<Parametre Nom="Disp" ValeurDefaut="100.0"/><Parameter Name = "Disp" DefaultValue = "100.0" />
<Parametre Nom="Start" ValeurDefaut="1.2"/> <Parametre Nom="End"<Parameter Name = "Start" DefaultValue = "1.2"/> <Parameter Name = "End"
ValeurDefaut=" 1 . 2 " /> <Parametre Nom="AlphaH" ValeurDefaut=" 0 . 3 " /> <Parametre Nom="AlphaV" ValeurDefaut=" 0 . 3 " /> <Parametre Nom="AlphaZ"DefaultValue = "1 .2" /> <Parameter Name = "AlphaH" DefaultValue = "0. 3" /> <Parameter Name = "AlphaV" DefaultValue = "0. 3" /> <Parameter Name = "AlphaZ"
ValeurDefaut="O .0"/>DefaultValue = "O .0" />
<Parametre Nom="FeatureLowerLip" ValeurDefaut="ZoneLowerLip"/><Parameter Name = "FeatureLowerLip" DefaultValue = "ZoneLowerLip" />
</Module></ Module>
<Module Type="MuscleOO" Nom="Droit_Obicularis_Oris" Cote="Droit"><Module Type = "Muscle00" Name = "Right_Obicularis_Oris" Rating = "Right">
<Parametre Nom="Disp" ValeurDefaut="100.0"/><Parameter Name = "Disp" DefaultValue = "100.0" />
<Parametre Nom="Start"<Parameter Name = "Start"
ValeurDefaut="1.2"/> <Parametre Nom="End" ValeurDefaut="1.2"/> <Parametre Nom="AlphaH" ValeurDefaut="0.3"/> <Parametre Nom="AlphaV" ValeurDefaut="0.3"/> <Parametre Nom="AlphaZ"DefaultValue = "1.2" /> <Parameter Name = "End" DefaultValue = "1.2" /> <Parameter Name = "AlphaH" DefaultValue = "0.3" /> <Parameter Name = "AlphaV" DefaultValue = "0.3" /> < Parameter Name = "AlphaZ"
ValeurDefaut="0.0"/>DefValue = "0.0" />
<Parametre Nom="FeatureLowerLip" ValeurDefaut="ZoneLowerLip"/><Parameter Name = "FeatureLowerLip" DefaultValue = "ZoneLowerLip" />
</Module></ Module>
<Module Type="MuscleOOF" Nom="Front_Obicularis_Oris"><Module Type = "MuscleOOF" Name = "Front_Obicularis_Oris">
<Parametre Nom="Disp" ValeurDefaut="100.0"/><Parameter Name = "Disp" DefaultValue = "100.0" />
<Parametre Nom="Start"<Parameter Name = "Start"
ValeurDefaut="0.0"/> <Parametre Nom="End" ValeurDefaut="l .0"/> <Parametre Nom="AlphaH" ValeurDefaut="0.2"/> <Parametre Nom="AlphaV" ValeurDefaut="0.2"/> <Parametre Nom="AlphaZ"DefaultValue = "0.0" /> <Parameter Name = "End" DefaultValue = "l .0" /> <Parameter Name = "AlphaH" DefaultValue = "0.2" /> <Parameter Name = "AlphaV" DefaultValue = "0.2" / > <Parameter Name = "AlphaZ"
ValeurDefaut="0.0"/>DefValue = "0.0" />
<Parametre Nom="FeatureLowerLip" ValeurDefaut="ZoneLowerLip"/><Parameter Name = "FeatureLowerLip" DefaultValue = "ZoneLowerLip" />
</Module></ Module>
</Module> </Module> </Phase> <Phase Numero="3"></ Module> </ Module></Phase><Phase Number = "3">
<Module Type="Cheek" Nom="Gauche_Cheek" Cote="Gauche"><Module Type = "Cheek" Name = "Left_Cheek" Rating = "Left">
<Parametre Nom="Radius" ValeurDefaut="O .15"/> </Module><Parameter Name = "Radius" DefaultValue = "O .15" /> </ Module>
<Module Type="Cheek" Nom="Droit_Cheek" Cote="Droit"><Module Type = "Cheek" Name = "Right_Cheek" Rating = "Right">
<Parametre Nom="Radius" ValeurDefaut="O .15"/> </Module><Parameter Name = "Radius" DefaultValue = "O .15" /> </ Module>
<Module Type="Teeth" Nom="Teeth"/><Module Type = "Teeth" Name = "Teeth" />
<Module Type="Wrinkles" Nom="Gauche_Naso_Wrinkles" Cote="Gauche"/><Module Type = "Wrinkles" Name = "Left_Naso_Wrinkles" Rating = "Left" />
<Module Type="Wrinkles" Nom="Droit_Naso_Wrinkles" Cote="Droit"/> <Module Type="Wrinkles" Nom="Frontal_Wrinkles"/><Module Type = "Wrinkles" Name = "Right_Naso_Wrinkles" Dimension = "Right" /> <Module Type = "Wrinkles" Name = "Frontal_Wrinkles" />
</Phase></ Phase>
<Phase Numero="4"><Phase Number = "4">
<Module Type="Neck" Nom="Neck"> <Parametre Nom="ExtraLeft" ValeurDefaut="O . l"/><Module Type = "Neck" Name = "Neck"> <Parameter Name = "ExtraLeft" DefaultValue = "O.l" />
<Parametre Nom="ExtraRight" ValeurDefaut="0.1"/><Parameter Name = "ExtraRight" DefaultValue = "0.1" />
<Parametre Nom="AlphaLeft" ValeurDefaut="15.0" /><Parameter Name = "AlphaLeft" DefaultValue = "15.0" />
<Parametre Nom="AlphaRight" ValeurDefaut="45.0"/> </Module><Parameter Name = "AlphaRight" DefaultValue = "45.0" /> </ Module>
</Phase></ Phase>
</Moteur></ Motor>
<Interface_utilisateur><Interface_utilisateur>
<Interface_de_parametrage> <Page Nora="Mus cles "> <Groupe_vertical><Parameters_interface><Page Nora = "Muscles"> <Groupe_vertical>
<Interface Type="ZoneLowerLipParam" Reference="ZoneLowerLip"/><Interface Type = "ZoneLowerLipParam" Reference = "ZoneLowerLip" />
<Groupe_horizontal><Groupe_horizontal>
<Interface Tγpe="MuscleParam"<Interface Tγpe = "MuscleParam"
Reference="Gauche_Frontalis_Outer"/> <Interface Tγpe="MuscleParam"Reference = "Left_Frontalis_Outer" /> <Interface Tγpe = "MuscleParam"
Reference="Droit_Frontalis_Outer"/>Reference = "Droit_Frontalis_Outer" />
</Groupe horizontal> <Groupe horizontal></ Horizontal group> <Horizontal group>
<Interface Type="MuscleParam" Reference="Gauche_Frontalis_Maj or"/><Interface Type = "MuscleParam" Reference = "Left_Frontalis_Maj or" />
<Interface Type="MuscleParam" Reference="Droit_Frontalis_Major"/><Interface Type = "MuscleParam" Reference = "Right_Frontalis_Major" />
</Groupe_horizontal> <Groupe_horizontal> <Interface Type="MuscleParam"</ Horizontal_group> <Horizontal_group> <Interface Type = "MuscleParam"
Reference="Gauche_Frontalis_Inner"/>Reference = "Gauche_Frontalis_Inner" />
<Interface Type="MuscleParam" Reference="Droit_Frontalis_Inner"/><Interface Type = "MuscleParam" Reference = "Right_Frontalis_Inner" />
</Groupe_horizontal> <Groupe_horizontal></ Horizontal_group> <Horizontal_group>
<Interface Type="MuscleParam" Reference="Gauche_Lateral_Corrugator"/><Interface Type = "MuscleParam" Reference = "Left_Lateral_Corrugator" />
<Interface Type="MuscleParam" Reference="Droit_Lateral_Corrugator"/> </Groupe_horizontal><Interface Type = "MuscleParam" Reference = "Right_Lateral_Corrugator" /> </ Horizontal_Group>
<Groupe horizontal><Horizontal group>
<Interface Type="MuscleParam" Reference="Gauche_Up_Obicularis_Oculi"/><Interface Type = "MuscleParam" Reference = "Left_Up_Obicularis_Oculi" />
<Interface Type="MuscleParam" Reference="Droit_Up_Obicularis_Oculi" /><Interface Type = "MuscleParam" Reference = "Right_Up_Obicularis_Oculi" />
</Groupe_horizontal> <Groupe_horizontal></ Horizontal_group> <Horizontal_group>
<Interface Type="MuscleParam" Reference="Gauche_Down_Obicularis_Oculi"/> <Interface Type="MuscleParam"<Interface Type = "MuscleParam" Reference = "Left_Down_Obicularis_Oculi" /> <Interface Type = "MuscleParam"
Reference="Droit_Down_Obicularis_Oculi"/>Reference = "Droit_Down_Obicularis_Oculi" />
</Groupe horizontal> <Groupe horizontal></ Horizontal group> <Horizontal group>
<Interface Type="MuscleParam" Reference="Gauche_Nasalis"/><Interface Type = "MuscleParam" Reference = "Left_Nasalis" />
<Interface Type="MuscleParam"<Interface Type = "MuscleParam"
Reference="Droit_Nasalis"/>Reference = "Droit_Nasalis" />
</Groupe_horizontal> <Groupe horizontal> <Interface Tγpe="MuscleParam" Reference="Med_Levator_Labii"/></ Horizontal_group><Horizontalgroup> <Interface Tγpe = "MuscleParam" Reference = "Med_Levator_Labii"/>
</Groupe_horizontal> <Groupe horizontal> <Interface Type="MuscleParam"</ Horizontal_group> <Horizontal group> <Interface Type = "MuscleParam"
Reference="Gauche_Levator_Labii"/>Reference = "Gauche_Levator_Labii" />
<Interface Tγpe="MuscleParam" Reference="Droit_Levator_Labii"/><Interface Tγpe = "MuscleParam" Reference = "Right_Levator_Labii" />
</Groupe_horizontal> <Groupe horizontal></ Horizontal_group> <Horizontal group>
<Interface Type="MuscleParam" Reference="Gauche_Zygoraatic_Major"/><Interface Type = "MuscleParam" Reference = "Left_Zygoraatic_Major" />
<Interface Type="MuscleParam" Reference="Droit_Zygomatic_Major"/> </Groupe_horizontal><Interface Type = "MuscleParam" Reference = "Zygomatic_Major_Right" /> </ Horizontal_Group>
<Groupe_horizontal><Groupe_horizontal>
<Interface Type="MuscleParam" Reference="Gauche_Risoris"/><Interface Type = "MuscleParam" Reference = "Left_Risoris" />
<Interface Type="MuscleParam" Reference="Droit_Risoris"/><Interface Type = "MuscleParam" Reference = "Right_Risoris" />
</Groupe_horizontal> <Groupe horizontal></ Horizontal_group> <Horizontal group>
<Interface Type="MuscleParam" Reference="Gauche_Angular_Depressor"/> <Interface Type="MuscleParam"<Interface Type = "MuscleParam" Reference = "Left_Angular_Depressor" /> <Interface Type = "MuscleParam"
Reference="Droit_Angular_Depressor"/>Reference = "Droit_Angular_Depressor" />
</Groupe_horizontal> <Groupe_horizontal></ Horizontal_group> <Horizontal_group>
<Interface Type="MuscleParam" Reference="Gauche_Depressor_Labii"/><Interface Type = "MuscleParam" Reference = "Left_Depressor_Labii" />
<Interface Type="MuscleParam" Reference="Droit_Depressor_Labii"/><Interface Type = "MuscleParam" Reference = "Right_Depressor_Labii" />
</Groupe horizontal> <Groupe horizontal> <Interface Type="MuscleParam"</ Horizontal group> <Horizontal group> <Interface Type = "MuscleParam"
Reference="Med_Depressor_Labii"/>Reference = "Med_Depressor_Labii" />
</Groupe_horizontal> <Groupe_horizontal></ Horizontal_group> <Horizontal_group>
<Interface Type="MuscleParam" Reference="Gauche_Obicularis_Oris"/><Interface Type = "MuscleParam" Reference = "Left_Obicularis_Oris" />
<Interface Type="MuscleParam" Reference="Droit_Obicularis_Oris"/><Interface Type = "MuscleParam" Reference = "Right_Obicularis_Oris" />
</Groupe horizontal> <Groupe horizontal> <Interface Type="MuscleParam"</ Horizontal group> <Horizontal group> <Interface Type = "MuscleParam"
Reference="Front_Obicularis_Oris"/>Reference = "Front_Obicularis_Oris" />
</Groupe_horizontal></ Groupe_horizontal>
</Groupe_vertical> </Page></ Groupe_vertical> </ Page>
<Page Nora="Jaw"> <Groupe_horizontal><Page Nora = "Jaw"> <Horizontal_Group>
<Interface Type="JawParam" Reference="Jaw"/><Interface Type = "JawParam" Reference = "Jaw" />
</Groupe_horizontal> </Page></ Horizontal_group> </ Page>
<Page Nora="Neck"><Page Nora = "Neck">
<Groupe horizontal> <Interface Type="NeckParam"<Horizontal Group> <Interface Type = "NeckParam"
Reference="Neck"/>Reference = "Neck" />
</Groupe_horizontal></ Groupe_horizontal>
</Page></ Page>
<Page Nom="Cheeks"><Page Name = "Cheeks">
<Groupe horizontal><Horizontal group>
<Interface Type="CheekParam" Reference="Gauche_Cheek"/><Interface Type = "CheekParam" Reference = "Left_Cheek" />
<Interface Type="CheekParam" Reference="Droit_Cheek" /><Interface Type = "CheekParam" Reference = "Right_Cheek" />
</Groupe_horizontal> </Page></ Horizontal_group> </ Page>
<Page Nora="Eyelids "><Page Nora = "Eyelids">
<Groupe horizontal> <Interface Type="EyelidParam"<Horizontal Group> <Interface Type = "EyelidParam"
Reference="Gauche_Eyelid"/>Reference = "Gauche_Eyelid" />
<Interface Type="EyelidParam" Reference="Droit_Eyelid"/><Interface Type = "EyelidParam" Reference = "Right_Eyelid" />
</Groupe_horizontal></ Groupe_horizontal>
</Page></ Page>
</Interface_de_parametrage> <Interface_de_controle></ Control_Interface> <Control_Interface>
<Groupe_vertical><Groupe_vertical>
<Groupe_vertical> <Groupe horizontal><Groupe_vertical> <Horizontal group>
<Interface Type="MuscleControl" Reference="Gauche_Frontalis_Outer"/><Interface Type = "MuscleControl" Reference = "Left_Frontalis_Outer" />
<Interface Type="MuscleControl" Reference="Droit_Frontalis_Outer" /><Interface Type = "MuscleControl" Reference = "Right_Frontalis_Outer" />
</Groupe_horizontal> <Groupe_horizontal></ Horizontal_group> <Horizontal_group>
<Interface Tγpe="MuscleControl" Reference="Gauche_Frontalis_Major"/> <Interface Tγpe="MuscleControl"<Interface Tγpe = "MuscleControl" Reference = "Left_Frontalis_Major" /> <Interface Tγpe = "MuscleControl"
Reference="Droit_Frontalis_Major"/>Reference = "Droit_Frontalis_Major" />
</Groupe horizontal> <Groupe horizontal></ Horizontal group> <Horizontal group>
<Interface Type="MuscleControl" Reference="Gauche_Frontalis_Inner"/><Interface Type = "MuscleControl" Reference = "Left_Frontalis_Inner" />
<Interface Type="MuscleControl" Reference="Droit_Frontalis_Inner"/><Interface Type = "MuscleControl" Reference = "Right_Frontalis_Inner" />
</Groupe_horizontal> <Groupe_horizontal> <Interface Type="MuscleControl"</ Horizontal_group> <Horizontal_group> <Interface Type = "MuscleControl"
Reference="Gauche_Lateral_Corrugator"/>Reference = "Gauche_Lateral_Corrugator" />
<Interface Type="MuscleControl" Reference="Droit_Lateral_Corrugator"/><Interface Type = "MuscleControl" Reference = "Right_Lateral_Corrugator" />
</Groupe_horizontal> <Groupe_horizontal></ Horizontal_group> <Horizontal_group>
<Interface Type="MuscleControl" Reference="Gauche_Up_Obicularis_Oculi"/><Interface Type = "MuscleControl" Reference = "Left_Up_Obicularis_Oculi" />
<Interface Type="MuscleControl" Reference="Droit_Up_Obicularis_Oculi"/> </Groupe_horizontal><Interface Type = "MuscleControl" Reference = "Right_Up_Obicularis_Oculi" /> </ Horizontal_Group>
<Groupe horizontal><Horizontal group>
<Interface Type="MuscleControl" Reference="Gauche_Down_Obicularis_Oculi"/><Interface Type = "MuscleControl" Reference = "Left_Down_Obicularis_Oculi" />
<Interface Type="MuscleControl" Reference="Droit_Down_Obicularis_Oculi"/><Interface Type = "MuscleControl" Reference = "Right_Down_Obicularis_Oculi" />
</Groupe_horizontal> <Groupe_horizontal></ Horizontal_group> <Horizontal_group>
<Interface Type="MuscleControl" Reference="Gauche_Nasalis"/> <Interface Type="MuscleControl"<Interface Type = "MuscleControl" Reference = "Left_Nasalis" /> <Interface Type = "MuscleControl"
Reference="Droit_Nasalis"/>Reference = "Droit_Nasalis" />
</Groupe horizontal> <Groupe horizontal></ Horizontal group> <Horizontal group>
<Interface Type="MuscleControl" Reference="Med_Levator_Labii"/><Interface Type = "MuscleControl" Reference = "Med_Levator_Labii" />
</Groupe_horizontal> <Groupe_horizontal></ Horizontal_group> <Horizontal_group>
<Interface Type="MuscleControl" Reference="Gauche Levator Labii"/> <Interface Tγpe="MuscleControl" Reference="Droit_Levator_Labii"/><Interface Type = "MuscleControl" Reference = "Left Levator Labii"/> <Interface Tγpe = "MuscleControl" Reference = "Right_Levator_Labii"/>
</Groupe_horizontal> <Groupe horizontal> <Interface Type="MuscleControl"</ Horizontal_group> <Horizontal group> <Interface Type = "MuscleControl"
Reference="Gauche_Zygoraatic_Major"/>Reference = "Gauche_Zygoraatic_Major" />
<Interface Tγpe="MuscleControl" Reference="Droit_Zygomatic_Major"/><Interface Tγpe = "MuscleControl" Reference = "Right_Zygomatic_Major" />
</Groupe_horizontal> <Groupe horizontal></ Horizontal_group> <Horizontal group>
<Interface Type="MuscleControl" Reference="Gauche_Risoris"/><Interface Type = "MuscleControl" Reference = "Left_Risoris" />
<Interface Type="MuscleControl" Reference="Droit_Risoris"/> </Groupe_horizontal><Interface Type = "MuscleControl" Reference = "Right_Risoris" /> </ Horizontal_Group>
<Groupe_horizontal><Groupe_horizontal>
<Interface Type="MuscleControl" Reference="Gauche_Angular_Depressor"/><Interface Type = "MuscleControl" Reference = "Left_Angular_Depressor" />
<Interface Type="MuscleControl" Reference="Droit_Angular_Depressor"/><Interface Type = "MuscleControl" Reference = "Right_Angular_Depressor" />
</Groupe_horizontal> <Groupe horizontal></ Horizontal_group> <Horizontal group>
<Interface Type="MuscleControl" Reference="Gauche_Depressor_Labii"/> <Interface Type="MuscleControl"<Interface Type = "MuscleControl" Reference = "Left_Depressor_Labii" /> <Interface Type = "MuscleControl"
Reference="Droit_Depressor_Labii"/>Reference = "Droit_Depressor_Labii" />
</Groupe_horizontal> <Groupe_horizontal></ Horizontal_group> <Horizontal_group>
<Interface Type="MuscleControl" Reference="Med_Depressor_Labii"/><Interface Type = "MuscleControl" Reference = "Med_Depressor_Labii" />
</Groupe horizontal> <Groupe_horizontal></ Horizontal group> <Horizontal_group>
<Interface Type="MuscleControl" Reference="Gauche_Obicularis_Oris"/> <Interface Type="MuscleControl"<Interface Type = "MuscleControl" Reference = "Left_Obicularis_Oris" /> <Interface Type = "MuscleControl"
Reference="Droit_Obicularis_Oris"/>Reference = "Droit_Obicularis_Oris" />
</Groupe_horizontal> <Groupe_horizontal></ Horizontal_group> <Horizontal_group>
<Interface Type="MuscleControl" Reference="Front_Obicularis_Oris"/><Interface Type = "MuscleControl" Reference = "Front_Obicularis_Oris" />
</Groupe_horizontal></ Groupe_horizontal>
</Groupe_vertical> <Groupe_horizontal></ Vertical_group> <Horizontal_group>
<Interface Type="JawControl" Reference="Jaw"/><Interface Type = "JawControl" Reference = "Jaw" />
<Groupe_horizontal><Groupe_horizontal>
<Interface Type="CheekControl" Reference="Gauche Cheek"/> <Interface Type="CheekControl" Reference="Droit_Cheek" /><Interface Type = "CheekControl" Reference = "Left Cheek"/> <Interface Type = "CheekControl" Reference = "Right_Cheek"/>
</Groupe_horizontal> </Groupe horizontal></ Horizontal_group> </ Horizontal group>
<Groupe_horizontal><Groupe_horizontal>
<Interface Tγpe="NeckControl" Reference="Neck"/><Interface Tγpe = "NeckControl" Reference = "Neck" />
<Groupe_horizontal> <Interface Tγpe="EyeControl"<Horizontal_group> <Tγpe interface = "EyeControl"
Reference="Gauche_Eye"/>Reference = "Gauche_Eye" />
<Interface Type="EyeControl" Reference="Droit_Eye" /><Interface Type = "EyeControl" Reference = "Right_Eye" />
</Groupe horizontal> <Groupe_horizontal></ Horizontal group> <Horizontal_group>
<Interface Type="EyelidControl" Reference="Gauche_Eyelid"/><Interface Type = "EyelidControl" Reference = "Left_Eyelid" />
<Interface Type="EyelidControl" Reference="Droit_Eyelid"/> </Groupe_horizontal><Interface Type = "EyelidControl" Reference = "Right_Eyelid" /> </ Horizontal_Group>
</Groupe_horizontal></ Groupe_horizontal>
</Groupe_vertical> </Interface_de_controle></ Vertical_group> </ Control_Interface>
</Interface_utilisateur></ Interface_utilisateur>
</Configurâtion> </ Configuration>

Claims

REVENDICATIONS
1. Procédé d'animation d'un graphe de scène (M) caractérisé en ce qu'il comporte les étapes de:1. A method of animating a scene graph (M), characterized in that it comprises the steps of:
- Création (e1 ) d'une instance de graphe d'animation (G) comportant des modules d'animation (MA1 MA10) et de composition (MC1 MC4) organisés de manière arborescente, les modules d'animation étant des feuilles de sous arbres du graphe et les modules de composition permettant la composition des résultats de leurs modules fils, ceux-ci étant indifféremment des modules d'animation ou de composition,- Creation (e1) of an animation graph instance (G) comprising animation modules (MA1 MA10) and composition modules (MC1 MC4) organized in a tree-like manner, the animation modules being sheets of subtrees of the graph and the composition modules allowing the composition of the results of their son modules, these being indifferently modules of animation or composition,
- Exécution (e3) de l'animation en exécutant successivement les modules d'animation et de composition du graphe, de telle manière que l'exécution d'un module de composition utilise les résultats des exécutions de ses modules fils.Execution (e3) of the animation by successively executing the animation and composition modules of the graph, so that the execution of a composition module uses the results of the executions of its child modules.
2. Procédé d'animation d'un graphe de scène (M) selon la revendication 1 , caractérisé en ce que l'algorithme utilisé par au moins un desdits modules de composition ne dépend pas des parties du maillage sur lesquelles agissent ses modules d'animation fils.2. A method of animating a scene graph (M) according to claim 1, characterized in that the algorithm used by at least one of said composition modules does not depend on the parts of the mesh on which its modules of son animation.
3. Procédé d'animation d'un graphe de scène (M) selon la revendication 1 ou 2, caractérisé en ce que l'algorithme utilisé par au moins un desdits modules de composition du graphe ne dépend pas du procédé d'animation utilisé par ses modules fils.3. A method of animating a scene graph (M) according to claim 1 or 2, characterized in that the algorithm used by at least one of said composition modules of the graph does not depend on the animation method used by its son modules.
4. Procédé d'animation d'un graphe de scène (M) selon l'une quelconque des revendications 1 à 3, caractérisé en ce que l'étape de création (e1 ) d'une instance de graphe d'animation (G) comprend la lecture d'un fichier de configuration décrivant ledit graphe d'animation.4. A method of animating a scene graph (M) according to any one of claims 1 to 3, characterized in that the step of creating (e1) an animation graph instance (G) comprises reading a configuration file describing said animation graph.
5. Graphe d'animation (G) permettant d'exécuter une ou plusieurs phases d'animation (P1 P3) en utilisant le procédé d'animation selon la revendication 1 , caractérisé en ce que:Animation graph (G) for executing one or more animation phases (P1 P3) using the animation method according to claim 1, characterized in that:
- Chaque phase d'animation est décrite par un sous arbre dont elle est la racine dans le graphe d'animation, ledit sous arbre comportant des modules d'animation et éventuellement des modules de composition, - Dans ledit sous arbre les modules d'animation et les éventuels modules de composition sont organisés de manière arborescente, les modules d'animation étant des feuilles dudit sous arbre et les modules de composition permettant la composition des résultats de leurs modules fils, ceux-ci étant indifféremment des modules d'animation ou de composition.Each animation phase is described by a subtree of which it is the root in the animation graph, said subtree comprising animation modules and possibly composition modules. In said subtree the animation modules and the possible composition modules are organized in a tree-like manner, the animation modules being sheets of said sub-tree and the composition modules making it possible to compose the results of their son modules, these being indifferently animation modules or composition.
6. Moteur d'animation caractérisé en ce qu'il comporte des moyens de configuration dynamique utilisant un graphe d'animation selon la revendication 5.6. Animation engine characterized in that it comprises dynamic configuration means using an animation graph according to claim 5.
7. Utilisation d'un graphe d'animation (G) selon la revendication 6 pour l'exécution d'une animation, caractérisée en ce que lorsque le graphe d'animation contient plusieurs phases (P1 ,..., P3), celles-ci sont exécutées séquentiellement.7. Use of an animation graph (G) according to claim 6 for the execution of an animation, characterized in that when the animation graph contains several phases (P1, ..., P3), those These are executed sequentially.
8. Programme d'ordinateur caractérisé en ce qu'il comporte des instructions de mise en œuvre du procédé selon l'une quelconque des revendications 1 à 4, lorsque ledit programme est exécuté dans un système informatique. 8. Computer program characterized in that it comprises instructions for implementing the method according to any one of claims 1 to 4, when said program is executed in a computer system.
EP06726331A 2005-04-11 2006-04-10 Animation method using an animation graph Withdrawn EP1869645A2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0503596 2005-04-11
PCT/FR2006/050325 WO2006108990A2 (en) 2005-04-11 2006-04-10 Animation method using an animation graph

Publications (1)

Publication Number Publication Date
EP1869645A2 true EP1869645A2 (en) 2007-12-26

Family

ID=34955482

Family Applications (1)

Application Number Title Priority Date Filing Date
EP06726331A Withdrawn EP1869645A2 (en) 2005-04-11 2006-04-10 Animation method using an animation graph

Country Status (3)

Country Link
US (1) US20090009520A1 (en)
EP (1) EP1869645A2 (en)
WO (1) WO2006108990A2 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101647045A (en) 2007-03-15 2010-02-10 汤姆森特许公司 Method and system for accessibility and control of parameters in scenegraphs
WO2010129263A2 (en) * 2009-04-27 2010-11-11 Sonoma Data Solutions Llc A method and apparatus for character animation
US9035949B1 (en) * 2009-12-21 2015-05-19 Lucasfilm Entertainment Company Ltd. Visually representing a composite graph of image functions
US20120036483A1 (en) * 2010-08-09 2012-02-09 Infineon Technologies Ag Device, method for displaying a change from a first picture to a second picture on a display, and computer program product

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6215495B1 (en) * 1997-05-30 2001-04-10 Silicon Graphics, Inc. Platform independent application program interface for interactive 3D scene management
US7669129B2 (en) * 2003-04-04 2010-02-23 Avid Technology, Inc. Graphical user interface for providing editing of transform hierarchies within an effects tree

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See references of WO2006108990A2 *

Also Published As

Publication number Publication date
WO2006108990A3 (en) 2007-03-01
US20090009520A1 (en) 2009-01-08
WO2006108990A2 (en) 2006-10-19

Similar Documents

Publication Publication Date Title
Cassell et al. Beat: the behavior expression animation toolkit
EP3915108B1 (en) Real-time generation of speech animation
US5995119A (en) Method for generating photo-realistic animated characters
US20100182325A1 (en) Apparatus and method for efficient animation of believable speaking 3d characters in real time
JP2003530654A (en) Animating characters
WO2006059570A1 (en) Scene modifier generation device and scene modifier generation method
EP1869645A2 (en) Animation method using an animation graph
FR2823585A1 (en) Three dimensional internet interactive person animation having graphical interface base with file real time calculated using 3D motor speech/written word automatically animated.
Geng et al. Reuse of motion capture data in animation: A review
Van Zijl et al. South African sign language machine translation system
US20220165024A1 (en) Transforming static two-dimensional images into immersive computer-generated content
CN116152398B (en) Three-dimensional animation control method, device, equipment and storage medium
Arya et al. Multispace behavioral model for face-based affective social agents
US20220392034A1 (en) Image reenactment with illumination disentanglement
KR102650940B1 (en) Computer implemented method and programmable system for rendering 2D/3D models
WO2023152153A1 (en) Improved avatar creation
KR20230096393A (en) Apparatus and method for generating conversational digital human based on photo
Barakonyi et al. Communicating Multimodal information on the WWW using a lifelike, animated 3D agent
Barakonyi et al. A 3D agent with synthetic face and semiautonomous behavior for multimodal presentations
Yasumoto Resonant Something: Glitch Art Method Using Generative AI
Arya et al. Face As A Multimedia Object
FR2828572A1 (en) Method for creating a virtual three-dimensional person representing a real person in which a database of geometries, textures, expression, etc. is created with a motor then used to manage movement and expressions of the 3-D person
Maldonado et al. Previs: A person-specific realistic virtual speaker
CN117541694A (en) Animation data processing method, device, equipment and readable storage medium
Yang et al. MPML-FLASH: A multimodal presentation markup language with character agent control in flash medium

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20071002

AK Designated contracting states

Kind code of ref document: A2

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LI LT LU LV MC NL PL PT RO SE SI SK TR

17Q First examination report despatched

Effective date: 20080313

DAX Request for extension of the european patent (deleted)
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20101012