WO2006108990A2 - Procede d'animation utilisant un graphe d'animation - Google Patents

Procede d'animation utilisant un graphe d'animation Download PDF

Info

Publication number
WO2006108990A2
WO2006108990A2 PCT/FR2006/050325 FR2006050325W WO2006108990A2 WO 2006108990 A2 WO2006108990 A2 WO 2006108990A2 FR 2006050325 W FR2006050325 W FR 2006050325W WO 2006108990 A2 WO2006108990 A2 WO 2006108990A2
Authority
WO
WIPO (PCT)
Prior art keywords
animation
modules
defaultvalue
module
graph
Prior art date
Application number
PCT/FR2006/050325
Other languages
English (en)
Other versions
WO2006108990A3 (fr
Inventor
Gaspard Breton
David Cailliere
Danielle Pele
Original Assignee
France Telecom
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 filed Critical France Telecom
Priority to EP06726331A priority Critical patent/EP1869645A2/fr
Priority to US11/918,286 priority patent/US20090009520A1/en
Publication of WO2006108990A2 publication Critical patent/WO2006108990A2/fr
Publication of WO2006108990A3 publication Critical patent/WO2006108990A3/fr

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.

Abstract

L'invention concerne un procédé d'animation d'un graphe de scène (M) caractérisé en ce qu'il comporte les étapes de: 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, 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.

Description

Procédé d'animation utilisant un graphe d'animation
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.
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.
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é.
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.
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.
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:
- 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,
- 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.
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.
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.
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.
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.
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.
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.
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.
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,
- 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.
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.
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.
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é.
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,
- la figure 2 représente les étapes du procédé selon l'invention,
- la figure 3 représente le mai liage d'un visage en trois dimensions, destiné à être animé,
- la figure 4 représente la composition de résultats d'animation par un module de composition,
- la figure 5 représente une interface utilisateur,
- la figure 6 représente l'étape d'exécution du procédé selon l'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.
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.
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.
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.
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.
Les paramètres des modules d'animation, ainsi que l'étape e3 d'exécution, seront plus amplement détaillés dans la suite.
La structure du graphe d'animation G, ainsi que les différents modules le composant, sont maintenant détaillés.
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.
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.
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.
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.
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:
- 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.
- 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.
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:
- Le module de composition MC1 permet de composer le résultat des modules de composition MC3 et MC4,
- 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,
- 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.
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.
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.
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.
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é.
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.
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.
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.
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.
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.
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.
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.
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.
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:
- 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.
- 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.
- 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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".
- 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.
Le deuxième attribut, "Statut", permet de spécifier l'état initial du canal, c'est-à-dire s'il est activé ou non.
- 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
"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.
- 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.
- La balise "lnterface_utilisateur" permet de décrire l'interface utilisateur du moteur, en contenant elle-même les balises optionnelles
"lntΘrface_de_parametrage" et "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.
- 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.
- 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.
- 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".
- 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".
- 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.
La grammaire XML, ou DTD d'après l'anglais "Document Type Définition", du profil ainsi défini est reproduite en Annexe 1.
Un exemple de profit utilisant cette grammaire est aussi reproduit en Annexe 2. ANNEXE 1
<! — Root élément —>
<! ELEMENT Configuration (Moteur?, Interface_utilisateur?) >
<!-- Moteur élément --> <!ELEMENT Moteur (Canal*, Elément*, Phase*) > <! — Canal élément -->
<! ELEMENT Canal EMPTY> < !ATTLIST Canal Nom
(ManipReplay | ManipNeck | ManipEyes | ManipEyelids | ExpEmotion | ExpMood | ConvMarker | VisemeFrench | VisemeEnglish | VisemeSpanish) #REQUIRED> <!ATTLIST Canal Statut (Active | Désactive) #REQUIRED> <!-- Elément élément —>
<! ELEMENT Elément EMPTY>
< !ATTLIST Elément Type (ZoneLowerLip | Eye) #REQUIRED>
< !ATTLIST Elément Nom CDATA #REQUIRED> < !ATTLIST Elément Cote (Gauche | Droit) #IMPLIED>
<! — Phase élément -->
<! ELEMENT Phase (Module*) > < !ATTLIST Phase Numéro CDATA #REQUIRED>
<! — Module élément -->
<!ELEMENT Module (Paramètre*, Module*) > < !ATTLIST Module Type
(Jaw | Neck | Eye | Eyelid | Cheek | Teeth | Wrinkles | CompMuscleAdd | CompMuscl eConj | Muscle | MuscleLow | MuscleHigh | MuscleOO | MuscleOOF | Keyframe) #REQUIRED>
< !ATTLIST Module Nom CDATA #REQUIRED> < !ATTLIST Module Cote (Gauche | Droit) #IMPLIED>
<! — Paramètre élément —>
<! ELEMENT Paramètre EMPTY> < !ATTLIST Paramètre Nom CDATA #REQUIRED>
< !ATTLIST Paramètre ValeurDefaut CDATA #REQUIRED> <!-- Interface_utilisateur élément —>
<! ELEMENT Interface_utilisateur
(Interface_de_parametrage?, Interface_de_controle?) >
<!-- Interface_de_parametrage and Interface_de_controle éléments —>
< ! ELEMENT Interface_de_parametrage (Page* | Groupe_horizontal | groupe_vertical) >
<! ELEMENT Interface_dë_controle (Page* | Groupe_horizontal | groupe_vertical ) >
<! — Page élément —>
<! ELEMENT Page (Groupe horizontal | groupe vertical) >
< !ATTLIST Page Nom CDATA #REQUIRED>
<! — Groupe horizontal and groupe vertical éléments —>
<! ELEMENT Groupe_horizontal (Interface | Groupe_horizontal | groupe_vertical) *>
<! ELEMENT groupe_vertical (Interface | Groupe_horizontal | groupe_vertical) *>
<! — Interface élément -->
<! ELEMENT Interface EMPTY> < !ATTLIST Interface Type CDATA #REQUIRED>
< !ATTLIST Interface Référence CDATA #REQUIRED>
ANNEXE 2
<?xml version="1.0" encoding="iso-8859-l"?> <! DOCTYPE Configuration SYSTEM "FaceEngineCfg.dtd">
<Configuration>
<Moteur>
<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"/>
<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"/>
<Element Type="ZoneLowerLip" Nom="ZoneLowerLip"/> <Element Type="Eye" Nom="FeatureEyeLeft" Cote="Gauche"/> <Element Type="Eye" Nom="FeatureEyeRight" Cote="Droit"/>
<Phase Numero="0">
<Module Type="Eye" Nom="Gauche_Eye" Cote="Gauche">
<Parametre Nom="FeatureEye" ValeurDefaut="FeatureEyeLeft"/>
</Module>
<Module Type="Eye" Nom="Droit_Eye" Cote="Droit">
<Parainetre Nom="FeatureEye" ValeurDefaut="FeatureEyeRight"/>
</Module>
<Module Type="Eyelid" Nom="Gauche_Eyelid" Cote="Gauche"> <Parametre Nom="Extra" ValeurDefaut="0.2"/>
<Parametre Nom="Fade" ValeurDefaut="45.0"/> <Parametre Nom="OpeningMax" ValeurDefaut="45.0"/>
<Parametre Nom="FeatureEye" ValeurDefaut="FeatureEyeLeft"/>
</Module> <Module Type="Eyelid" Nom="Droit_Eyelid" Cote="Droit">
<Parametre Nom="Extra" ValeurDefaut="0.2"/> <Parametre Nom="Fade" ValeurDefaut="45.0"/> <Parametre Nom="OpeningMax"
ValeurDefaut="45.0"/>
<Parametre Nom="FeatureEye" ValeurDefaut="FeatureEyeRight"/>
</Module>
</Phase>
<Phase Numero="l"> <Module Type="Jaw" Nom="Jaw">
<Parametre Nom="FadeAngleDn" ValeurDefaut="20.0"/>
<Parametre Nom="FadeAngleUp" ValeurDefaut="10.0"/> <Parametre Nom="Eκtra" ValeurDefaut="l .0"/>
</Module>
</Phase> <Phase Numero="2">
<Module Type="CompMuscleAdd" Nom="Global_Muscles_Group"> <Module Type="CompMuscleConj "
Nom="Frontal_Gauche Up Group" Cote="Gauche">
<Module Type="Muscle"
Nom="Gauche_Frontalis_Outer" Cote="Gauche"> <Parametre Nom="Disp"
ValeurDefaut="0.0"/>
<Parametre Nom="Start" ValeurDefaut="0.8"/>
<Parametre Nom="End" ValeurDefaut="1.2"/>
<Parametre Nom="AlphaH" ValeurDefaut="45.0"/>
<Parametre Nom="AlphaV" ValeurDefaut="45.0"/> <Parametre Nom="AlphaZ"
ValeurDefaut="0.0"/>
</Module>
<Module Type="Muscle" Nom="Gauche_Frontalis Major" Cote="Gauche"> <Parametre Nom="Disp" ValeurDefaut="O .0"/>
<Parametre Nom="Start" ValeurDefaut="O .8"/> <Parametre Nom="End"
ValeurDefaut="1.2"/>
<Parametre Nom="AlphaH" ValeurDefaut="35.0"/>
<Parametre Nom="AlphaV" ValeurDefaut="35.0"/>
<Parametre Nom="AlphaZ" ValeurDefaut="0.0"/>
</Module> <Module Type="Muscle"
Nom="Gauche_Frontalis_Inner" Cote="Gauche">
<Parametre Nom="Disp" ValeurDefaut="0.0"/>
<Parametre Nom="Start" ValeurDefaut="0.8"/>
<Parametre Nom="End" ValeurDefaut="1.2"/>
<Parametre Nom="AlphaH" ValeurDefaut="35.0"/> <Parametre Nom="AlphaV"
ValeurDefaut="35.0"/>
<Parametre Nom="AlphaZ" ValeurDefaut="0.0"/>
</Module>
</Module>
<Module Type="CompMuscleConj " Nom="Frontal_Droit_Up_Group" Cote="Droit">
<Module Type="Muscle" Nom="Droit_Frontalis_Outer" Cote="Droit">
<Parametre Nom="Disp" ValeurDefaut="0.0"/> <Parametre Nom="Start"
ValeurDefaut="0.8"/>
<Parametre Nom="End" ValeurDefaut="1.2"/>
<Parametre Nom="AlphaH" ValeurDefaut="45.0"/>
<Parametre Nom="AlphaV" ValeurDefaut="45.0"/>
<Parametre Nom="AlphaZ" ValeurDefaut="0.0"/> </Module> <Module Type="Muscle" Nom="Droit_Frontalis_Major" Cote="Droit">
<Parametre Nom="Disp" ValeurDefaut="O.O"/>
<Parametre Nom="Start" ValeurDefaut="O .8"/>
<Parametre Nom="End" ValeurDefaut="1.2"/> <Parametre Nom="AlphaH"
ValeurDefaut="35.0"/>
<Parametre Nom="AlphaV" ValeurDefaut="35.0"/>
<Parametre Nom="AlphaZ" ValeurDefaut="O.O"/>
</Module>
<Module Type="Muscle"
Nom="Droit_Frontalis_Inner" Cote="Droit"> <Parametre Nom="Disp"
ValeurDefaut="0.0"/>
<Parametre Nom="Start" ValeurDefaut="0.8"/>
<Parametre Nom="End" ValeurDefaut="1.2"/>
<Parametre Nom="AlphaH" ValeurDefaut="35.0"/>
<Parametre Nom="AlphaV" ValeurDefaut="35.0"/> <Parametre Nom="AlphaZ"
ValeurDefaut="0.0"/>
</Module>
</Module>
<Module Type="CompMuscleConj " Nom="Frontal_Gauche_Down_Group" Cote="Gauche">
<Module Type="Muscle" Nom="Gauche_Lateral_Corrugator" Cote="Gauche">
<Parametre Nom="Disp" ValeurDefaut="0.0"/>
<Parametre Nom="Start" ValeurDefaut="0.8"/> <Parametre Nom="End"
ValeurDefaut="1.2"/>
<Parametre Nom="AlphaH" ValeurDefaut="20.0"/>
<Parametre Nom="AlphaV" ValeurDefaut="20.0"/> <Parametre Nom="AlphaZ" ValeurDefaut="O .0"/>
</Module> <Module Type="Muscle"
Nom="Gauche_Up_Obicularis_Oculi" Cote="Gauche">
<Parametre Nom="Disp" ValeurDefaut="O .0"/>
<Parametre Nom="Start" ValeurDefaut="0.8"/>
<Parametre Nom="End" ValeurDefaut="1.5"/>
<Parametre Nom="AlphaH" ValeurDefaut="50.0"/> <Parametre Nom="AlphaV"
ValeurDefaut="50.0"/>
<Parametre Nom="AlphaZ" ValeurDefaut="O .0"/>
</Module>
</Module>
<Module Type="CompMuscleConj "
Nom="Frontal_Droit_Down_Group" Cote="Droit">
<Module Type="Muscle" Nom="Droit_Lateral_Corrugator" Cote="Droit">
<Parametre Nom="Disp" ValeurDefaut="O .0"/> <Parametre Nom="Start"
ValeurDefaut="O .8"/>
<Parametre Nom="End" ValeurDefaut="1.2"/>
<Parametre Nom="AlphaH" ValeurDefaut="20.0"/>
<Parametre Nom="AlphaV" ValeurDefaut="20.0"/>
<Parametre Nom="AlphaZ" ValeurDefaut="O .0"/> </Module>
<Module Type="Muscle"
Nom=" Droit_Up_Obiculari s_Oculi " Cote="Droit">
<Parametre Nom="Disp" ValeurDefaut=" O . O " />
<Parametre Wom=" Start " ValeurDefaut'0 . 0 " />
<Parametre Nom="End" ValeurDefaut=" 2 . 0 " /> <Parametre Nom="AlphaH" ValeurDefaut="80.0"/>
<Parametre Nom="AlphaV" ValeurDefaut="30.0"/> <Parametre Nom="AlphaZ"
ValeurDefaut="O .0"/>
</Module>
</Module>
<Module Type="CompMuscleConj " Nom="Mouth_Up_Group">
<Module Type="MuscleHigh" Nom="Med_Levator_Labii">
<Parametre Nom="Disp" ValeurDefaut="l .0"/>
<Parametre Nom="Start" ValeurDefaut="O .0"/> <Parametre Nom="End"
ValeurDefaut="3.0"/>
<Parametre Nom="AlphaH" ValeurDefaut="50.0"/>
<Parametre Nom="AlphaV" ValeurDefaut="50.0"/>
<Parametre Nom="AlphaZ" ValeurDefaut="O .0"/>
<Parametre Nom="FeatureLowerLip" ValeurDefaut="ZoneLowerLip"/> </Module>
<Module Type="MuscleHigh" Nom="Gauche_Levator_Labii" Cote="Gauche">
<Parametre Nom="Disp" ValeurDefaut="1.0"/>
<Parametre Nom="Start" ValeurDefaut="0.0"/>
<Parametre Nom="End" ValeurDefaut="3.0"/> <Parametre Nom="AlphaH"
ValeurDefaut="40.0"/>
<Parametre Nom="AlphaV" ValeurDefaut="40.0" />
<Parametre Nom="AlphaZ" ValeurDefaut=" O . O " />
<Parametre Nom="FeatureLowerLlp"
ValeurDefaut"ZoneLowerLip"/>
</Module> <Module Type="MuscleHigh" Nom="Droit_Levator_Labii" Cote="Droit">
<Parametre Nom="Disp" ValeurDefaut="l .0"/> <Parametre Nom="Start"
ValeurDefaut="O .0"/>
<Parametre Nom="End" ValeurDefaut="3.0"/>
<Parametre Nom="AlphaH" ValeurDefaut="40.0"/>
<Parametre Nom="AlphaV" ValeurDefaut="40.0" />
<Parametre Nom="AlphaZ" ValeurDefaut="0.0"/> <Parametre Nom="FeatureLowerLip"
ValeurDefaut="ZoneLowerLip"/>
</Module>
<Module Type="Muscle" Nom="Gauche_Zygomatic_Major" Cote="Gauche">
<Parametre Nom="Disp" ValeurDefaut="0.0"/>
<Parametre Nom="Start" ValeurDefaut="0.8"/> <Parametre Wom="End"
ValeurDefaut="1.2"/>
<Parametre Nom="AlphaH" ValeurDefaut="20.0"/>
<Parametre Nom="AlphaV" ValeurDefaut="20.0"/>
<Parametre Wom="AlphaZ" ValeurDefaut="0.0"/>
</Module> <Module Type="Muscle"
Nom="Droit_Zygomatic_Major" Cote="Droit">
<Parametre Nom="Disp" ValeurDefaut="0.0"/>
<Parametre Nom="Start" ValeurDefaut="0.8"/>
<Parametre Nom="End" ValeurDefaut="1.2"/>
<Parametre Nom="AlphaH" ValeurDefaut="20.0"/> <Parametre Nom="AlphaV"
ValeurDefaut="20.0"/>
<Parametre Nom="AlphaZ" ValeurDefaut="0.0"/>
</Module> </Module>
<Module Type="CompMuscleConj " Nom="Mouth_Down_Group">
<Module Type="Muscle"
Nom="Gauche_Angular_Depressor" Cote="Gauche">
<Parametre Nom="Disp"
ValeurDefaut'0.0"/> <Parametre Nom="Start"
ValeurDefaut="0.8"/>
<Parametre Nom="End" ValeurDefaut="l .4 "/>
<Parametre Nom="AlphaH" ValeurDefaut="35.0"/>
<Parametre Nom="AlphaV" ValeurDefaut="35.0"/>
<Parametre Nom="AlphaZ" ValeurDefaut="0.0"/> </Module>
<Module Type="Muscle" Nom="Droit_Angular_Depressor" Cote="Droit">
<Parametre Nom="Disp" ValeurDefaut="O.O"/>
<Parametre Nom="Start" ValeurDefaut="0.8"/>
<Parametre Nom="End" ValeurDefaut="l .4 "/> <Parametre Nom="AlphaH"
ValeurDefaut="35.0"/>
<Parametre Nom="AlphaV" ValeurDefaut="35.0"/>
<Parametre Nom="AlphaZ" ValeurDefaut="O.O"/>
</Module>
<Module Type="MuscleLow"
Nom="Gauche_Depressor_Labii" Cote="Gauche"> <Parametre Nom="Disp"
ValeurDefaut="l .0"/>
<Parametre Nom="Start" ValeurDefaut="0.0"/>
<Parametre Nom="End" ValeurDefaut="3.0"/>
<Parametre Wom="AlphaH" ValeurDefaut="20.0"/>
<Parametre Nom="AlphaV" ValeurDefaut="20.0"/> <Parametre Nom="AlphaZ" ValeurDefaut="O .0"/>
<Parametre Nom="FeatureLowerLip" ValeurDefaut="ZoneLowerLip"/> </Module>
<Module Type="MuscleLow" Nom="Droit_Depressor_Labii" Cote="Droit">
<Parametre Nom="Disp" ValeurDefaut="1.0"/>
<Parametre Nom="Start" ValeurDefaut="0.0"/>
<Parametre Nom="End" ValeurDefaut="3.0"/> <Parametre Nom="AlphaH"
ValeurDefaut="20.0"/>
<Parametre Nom="AlphaV" ValeurDefaut="20.0"/>
<Parametre Nom="AlphaZ" ValeurDefaut="O.O"/>
<Parametre Nom="FeatureLowerLip" ValeurDefaut="ZoneLowerLip"/>
</Module> <Module Type="MuscleLow"
Nom="Med_Depressor_Labii">
<Parametre Nom="Disp" ValeurDefaut="l .0"/>
<Parametre Nom="Start" ValeurDefaut="O.O"/>
<Parametre Wom="End" ValeurDefaut="3.0"/>
<Parametre Nom="AlphaH" ValeurDefaut="40.0" /> <Parametre Nom="AlphaV"
ValeurDefaut="40.0" />
<Parametre Nom="AlphaZ" ValeurDefaut="0.0"/>
<Parametre Nom="FeatureLowerLip" ValeurDefaut="ZoneLowerLip"/>
</Module>
</Module> <Module Type="CompMuscleAdd"
Nom="Others_Group">
<Module Type="Muscle" Nom="Gauche Down Obicularis Oculi" Cote="Gauche"> <Parametre Nom="Disp" ValeurDefaut="O .0"/>
<Parametre Nom="Start" ValeurDefaut="O .8"/> <Parametre Nom="End"
ValeurDefaut="1.5"/>
<Parametre Nom="AlphaH" ValeurDefaut="50.0"/>
<Parametre Nom="AlphaV" ValeurDefaut="50.0"/>
<Parametre Nom="AlphaZ" ValeurDefaut="O .0"/>
</Module> <Module Type="Muscle"
Nom="Droit_Down_Obicularis_Oculi" Cote="Droit">
<Parametre Nom="Disp" ValeurDefaut="O .0"/>
<Parametre Nom="Start" ValeurDefaut="O.O"/>
<Parametre Nom="End" ValeurDefaut="2.0"/>
<Parametre Nom="AlphaH"
ValeurDefaut="80.0"/> <Parametre Wom="AlphaV"
ValeurDefaut="30.0"/>
<Parametre Nom="AlphaZ" ValeurDefaut="O .0"/>
</Module>
<Module Type="Muscle" Nom="Gauche_Nasalis" Cote="Gauche">
<Parametre Nom="Disp" ValeurDefaut="O .0"/> <Parametre Nom="Start"
ValeurDefaut="O .8"/>
<Parametre Nom="End" ValeurDefaut="1.2"/>
<Parametre Nom="AlphaH" ValeurDefaut="20.0"/>
<Parametre Nom="AlphaV" ValeurDefaut="20.0"/>
<Parametre Nom="AlphaZ" ValeurDefaut="O .0"/> </Module>
<Module Type="Muscle" Nom="Droit_Nasalis" Cote="Droit">
<Parametre Nom="Disp" ValeurDefaut="O.O"/> <Parametre Nom="Start" ValeurDefaut="O .8"/>
<Parametre Nom="End" ValeurDefaut="1.2"/> <Parametre Nom="AlphaH"
ValeurDefaut="20.0"/>
<Parametre Nom="AlphaV" ValeurDefaut="20.0"/>
<Parametre Nom="AlphaZ" ValeurDefaut="O.O"/>
</Module>
<Module Type="Muscle" Nom="Gauche_Risoris" Cote="Gauche"> <Parametre Nom="Disp"
ValeurDefaut="l .0"/>
<Parametre Nom="Start" ValeurDefaut="l .0"/>
<Parametre Nom="End" ValeurDefaut="1.7"/>
<Parametre Nom="AlphaH" ValeurDefaut="10.0"/>
<Parametre Nom="AlphaV"
ValeurDefaut="10.0"/> <Parametre Wom="AlphaZ"
ValeurDefaut="O .0"/>
</Module>
<Module Type="Muscle" Nom="Droit_Risoris" Cote="Droit">
<Parametre Nom="Disp" ValeurDefaut="l .0"/>
<Parametre Nom="Start" ValeurDefaut="l .0"/> <Parametre Nom="End"
ValeurDefaut="l .7 "/>
<Parametre Nom="AlphaH" ValeurDefaut="10.0"/>
<Parametre Nom="AlphaV" ValeurDefaut="10.0"/>
<Parametre Nom="AlphaZ" ValeurDefaut="0.0"/>
</Module> <Module Type="MuscleOO"
Nom="Gauche_Obicularis_Oris" Cote="Gauche">
<Parametre Nom="Disp" ValeurDefaut="100.0"/>
<Parametre Nom="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"
ValeurDefaut="O .0"/>
<Parametre Nom="FeatureLowerLip" ValeurDefaut="ZoneLowerLip"/>
</Module>
<Module Type="MuscleOO" Nom="Droit_Obicularis_Oris" Cote="Droit">
<Parametre Nom="Disp" ValeurDefaut="100.0"/>
<Parametre Nom="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"
ValeurDefaut="0.0"/>
<Parametre Nom="FeatureLowerLip" ValeurDefaut="ZoneLowerLip"/>
</Module>
<Module Type="MuscleOOF" Nom="Front_Obicularis_Oris">
<Parametre Nom="Disp" ValeurDefaut="100.0"/>
<Parametre Nom="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"
ValeurDefaut="0.0"/>
<Parametre Nom="FeatureLowerLip" ValeurDefaut="ZoneLowerLip"/>
</Module>
</Module> </Module> </Phase> <Phase Numero="3">
<Module Type="Cheek" Nom="Gauche_Cheek" Cote="Gauche">
<Parametre Nom="Radius" ValeurDefaut="O .15"/> </Module>
<Module Type="Cheek" Nom="Droit_Cheek" Cote="Droit">
<Parametre Nom="Radius" ValeurDefaut="O .15"/> </Module>
<Module Type="Teeth" Nom="Teeth"/>
<Module Type="Wrinkles" Nom="Gauche_Naso_Wrinkles" Cote="Gauche"/>
<Module Type="Wrinkles" Nom="Droit_Naso_Wrinkles" Cote="Droit"/> <Module Type="Wrinkles" Nom="Frontal_Wrinkles"/>
</Phase>
<Phase Numero="4">
<Module Type="Neck" Nom="Neck"> <Parametre Nom="ExtraLeft" ValeurDefaut="O . l"/>
<Parametre Nom="ExtraRight" ValeurDefaut="0.1"/>
<Parametre Nom="AlphaLeft" ValeurDefaut="15.0" />
<Parametre Nom="AlphaRight" ValeurDefaut="45.0"/> </Module>
</Phase>
</Moteur>
<Interface_utilisateur>
<Interface_de_parametrage> <Page Nora="Mus cles "> <Groupe_vertical>
<Interface Type="ZoneLowerLipParam" Reference="ZoneLowerLip"/>
<Groupe_horizontal>
<Interface Tγpe="MuscleParam"
Reference="Gauche_Frontalis_Outer"/> <Interface Tγpe="MuscleParam"
Reference="Droit_Frontalis_Outer"/>
</Groupe horizontal> <Groupe horizontal>
<Interface Type="MuscleParam" Reference="Gauche_Frontalis_Maj or"/>
<Interface Type="MuscleParam" Reference="Droit_Frontalis_Major"/>
</Groupe_horizontal> <Groupe_horizontal> <Interface Type="MuscleParam"
Reference="Gauche_Frontalis_Inner"/>
<Interface Type="MuscleParam" Reference="Droit_Frontalis_Inner"/>
</Groupe_horizontal> <Groupe_horizontal>
<Interface Type="MuscleParam" Reference="Gauche_Lateral_Corrugator"/>
<Interface Type="MuscleParam" Reference="Droit_Lateral_Corrugator"/> </Groupe_horizontal>
<Groupe horizontal>
<Interface Type="MuscleParam" Reference="Gauche_Up_Obicularis_Oculi"/>
<Interface Type="MuscleParam" Reference="Droit_Up_Obicularis_Oculi" />
</Groupe_horizontal> <Groupe_horizontal>
<Interface Type="MuscleParam" Reference="Gauche_Down_Obicularis_Oculi"/> <Interface Type="MuscleParam"
Reference="Droit_Down_Obicularis_Oculi"/>
</Groupe horizontal> <Groupe horizontal>
<Interface Type="MuscleParam" Reference="Gauche_Nasalis"/>
<Interface Type="MuscleParam"
Reference="Droit_Nasalis"/>
</Groupe_horizontal> <Groupe horizontal> <Interface Tγpe="MuscleParam" Reference="Med_Levator_Labii"/>
</Groupe_horizontal> <Groupe horizontal> <Interface Type="MuscleParam"
Reference="Gauche_Levator_Labii"/>
<Interface Tγpe="MuscleParam" Reference="Droit_Levator_Labii"/>
</Groupe_horizontal> <Groupe horizontal>
<Interface Type="MuscleParam" Reference="Gauche_Zygoraatic_Major"/>
<Interface Type="MuscleParam" Reference="Droit_Zygomatic_Major"/> </Groupe_horizontal>
<Groupe_horizontal>
<Interface Type="MuscleParam" Reference="Gauche_Risoris"/>
<Interface Type="MuscleParam" Reference="Droit_Risoris"/>
</Groupe_horizontal> <Groupe horizontal>
<Interface Type="MuscleParam" Reference="Gauche_Angular_Depressor"/> <Interface Type="MuscleParam"
Reference="Droit_Angular_Depressor"/>
</Groupe_horizontal> <Groupe_horizontal>
<Interface Type="MuscleParam" Reference="Gauche_Depressor_Labii"/>
<Interface Type="MuscleParam" Reference="Droit_Depressor_Labii"/>
</Groupe horizontal> <Groupe horizontal> <Interface Type="MuscleParam"
Reference="Med_Depressor_Labii"/>
</Groupe_horizontal> <Groupe_horizontal>
<Interface Type="MuscleParam" Reference="Gauche_Obicularis_Oris"/>
<Interface Type="MuscleParam" Reference="Droit_Obicularis_Oris"/>
</Groupe horizontal> <Groupe horizontal> <Interface Type="MuscleParam"
Reference="Front_Obicularis_Oris"/>
</Groupe_horizontal>
</Groupe_vertical> </Page>
<Page Nora="Jaw"> <Groupe_horizontal>
<Interface Type="JawParam" Reference="Jaw"/>
</Groupe_horizontal> </Page>
<Page Nora="Neck">
<Groupe horizontal> <Interface Type="NeckParam"
Reference="Neck"/>
</Groupe_horizontal>
</Page>
<Page Nom="Cheeks">
<Groupe horizontal>
<Interface Type="CheekParam" Reference="Gauche_Cheek"/>
<Interface Type="CheekParam" Reference="Droit_Cheek" />
</Groupe_horizontal> </Page>
<Page Nora="Eyelids ">
<Groupe horizontal> <Interface Type="EyelidParam"
Reference="Gauche_Eyelid"/>
<Interface Type="EyelidParam" Reference="Droit_Eyelid"/>
</Groupe_horizontal>
</Page>
</Interface_de_parametrage> <Interface_de_controle>
<Groupe_vertical>
<Groupe_vertical> <Groupe horizontal>
<Interface Type="MuscleControl" Reference="Gauche_Frontalis_Outer"/>
<Interface Type="MuscleControl" Reference="Droit_Frontalis_Outer" />
</Groupe_horizontal> <Groupe_horizontal>
<Interface Tγpe="MuscleControl" Reference="Gauche_Frontalis_Major"/> <Interface Tγpe="MuscleControl"
Reference="Droit_Frontalis_Major"/>
</Groupe horizontal> <Groupe horizontal>
<Interface Type="MuscleControl" Reference="Gauche_Frontalis_Inner"/>
<Interface Type="MuscleControl" Reference="Droit_Frontalis_Inner"/>
</Groupe_horizontal> <Groupe_horizontal> <Interface Type="MuscleControl"
Reference="Gauche_Lateral_Corrugator"/>
<Interface Type="MuscleControl" Reference="Droit_Lateral_Corrugator"/>
</Groupe_horizontal> <Groupe_horizontal>
<Interface Type="MuscleControl" Reference="Gauche_Up_Obicularis_Oculi"/>
<Interface Type="MuscleControl" Reference="Droit_Up_Obicularis_Oculi"/> </Groupe_horizontal>
<Groupe horizontal>
<Interface Type="MuscleControl" Reference="Gauche_Down_Obicularis_Oculi"/>
<Interface Type="MuscleControl" Reference="Droit_Down_Obicularis_Oculi"/>
</Groupe_horizontal> <Groupe_horizontal>
<Interface Type="MuscleControl" Reference="Gauche_Nasalis"/> <Interface Type="MuscleControl"
Reference="Droit_Nasalis"/>
</Groupe horizontal> <Groupe horizontal>
<Interface Type="MuscleControl" Reference="Med_Levator_Labii"/>
</Groupe_horizontal> <Groupe_horizontal>
<Interface Type="MuscleControl" Reference="Gauche Levator Labii"/> <Interface Tγpe="MuscleControl" Reference="Droit_Levator_Labii"/>
</Groupe_horizontal> <Groupe horizontal> <Interface Type="MuscleControl"
Reference="Gauche_Zygoraatic_Major"/>
<Interface Tγpe="MuscleControl" Reference="Droit_Zygomatic_Major"/>
</Groupe_horizontal> <Groupe horizontal>
<Interface Type="MuscleControl" Reference="Gauche_Risoris"/>
<Interface Type="MuscleControl" Reference="Droit_Risoris"/> </Groupe_horizontal>
<Groupe_horizontal>
<Interface Type="MuscleControl" Reference="Gauche_Angular_Depressor"/>
<Interface Type="MuscleControl" Reference="Droit_Angular_Depressor"/>
</Groupe_horizontal> <Groupe horizontal>
<Interface Type="MuscleControl" Reference="Gauche_Depressor_Labii"/> <Interface Type="MuscleControl"
Reference="Droit_Depressor_Labii"/>
</Groupe_horizontal> <Groupe_horizontal>
<Interface Type="MuscleControl" Reference="Med_Depressor_Labii"/>
</Groupe horizontal> <Groupe_horizontal>
<Interface Type="MuscleControl" Reference="Gauche_Obicularis_Oris"/> <Interface Type="MuscleControl"
Reference="Droit_Obicularis_Oris"/>
</Groupe_horizontal> <Groupe_horizontal>
<Interface Type="MuscleControl" Reference="Front_Obicularis_Oris"/>
</Groupe_horizontal>
</Groupe_vertical> <Groupe_horizontal>
<Interface Type="JawControl" Reference="Jaw"/>
<Groupe_horizontal>
<Interface Type="CheekControl" Reference="Gauche Cheek"/> <Interface Type="CheekControl" Reference="Droit_Cheek" />
</Groupe_horizontal> </Groupe horizontal>
<Groupe_horizontal>
<Interface Tγpe="NeckControl" Reference="Neck"/>
<Groupe_horizontal> <Interface Tγpe="EyeControl"
Reference="Gauche_Eye"/>
<Interface Type="EyeControl" Reference="Droit_Eye" />
</Groupe horizontal> <Groupe_horizontal>
<Interface Type="EyelidControl" Reference="Gauche_Eyelid"/>
<Interface Type="EyelidControl" Reference="Droit_Eyelid"/> </Groupe_horizontal>
</Groupe_horizontal>
</Groupe_vertical> </Interface_de_controle>
</Interface_utilisateur>
</Configurâtion>

Claims

REVENDICATIONS
1. Procédé d'animation d'un graphe de scène (M) caractérisé en ce qu'il comporte les étapes de:
- 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,
- 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.
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.
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.
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.
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:
- 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.
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.
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.
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.
PCT/FR2006/050325 2005-04-11 2006-04-10 Procede d'animation utilisant un graphe d'animation WO2006108990A2 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
EP06726331A EP1869645A2 (fr) 2005-04-11 2006-04-10 Procede d'animation utilisant un graphe d'animation
US11/918,286 US20090009520A1 (en) 2005-04-11 2006-04-10 Animation Method Using an Animation Graph

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0503596 2005-04-11
FR0503596 2005-04-11

Publications (2)

Publication Number Publication Date
WO2006108990A2 true WO2006108990A2 (fr) 2006-10-19
WO2006108990A3 WO2006108990A3 (fr) 2007-03-01

Family

ID=34955482

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2006/050325 WO2006108990A2 (fr) 2005-04-11 2006-04-10 Procede d'animation utilisant un graphe d'animation

Country Status (3)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008115196A1 (fr) * 2007-03-15 2008-09-25 Thomson Licensing Procédé et système d'accessibilité et de gestion de paramètres dans les graphes de scènes

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120026174A1 (en) * 2009-04-27 2012-02-02 Sonoma Data Solution, Llc 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
CN112156461A (zh) * 2020-10-13 2021-01-01 网易(杭州)网络有限公司 动画处理方法及装置、计算机存储介质、电子设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040207665A1 (en) * 2003-04-04 2004-10-21 Shailendra Mathur Graphical user interface for providing editing of transform hierarchies within an effects tree

Family Cites Families (1)

* 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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040207665A1 (en) * 2003-04-04 2004-10-21 Shailendra Mathur Graphical user interface for providing editing of transform hierarchies within an effects tree

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CASSELL J ET AL: "BEAT: the Behavior Expression Animation Toolkit" COMPUTER GRAPHICS PROCEEDINGS. SIGGRAPH 2001 ACM NEW YORK, NY, USA, 2001, pages 477-486, XP007237909 ISBN: 1-58113-374-X *
COURTY N ET AL: "Embodied in a look: bridging the gap between humans and avatars" INTELLIGENT VIRTUAL AGENTS. 4TH INTERNATIONAL WORKSHOP, IVA 2003. PROCEEDINGS (LECTURE NOTES IN ARTIFICIAL INTELLIGENCE VOL.2792) SPRINGER-VERLAG BERLIN, GERMANY, 2003, pages 111-118, XP009053640 ISBN: 3-540-20003-7 *
G. BRETON, C. BOUVILLE, D PELE: "FaceEngine a 3D Facial Animation Engine for Real Time Applications" PROC. 6TH INT. CONF. ON 3D WEB TECHNOLOGY, 2001, pages 15-22, XP002344591 Paderbon - Germany *
WOJDEL A ET AL: "A performance based parametric model for facial animation" 2000 IEEE INTERNATIONAL CONFERENCE ON MULTIMEDIA AND EXPO. ICME2000. PROCEEDINGS. LATEST ADVANCES IN THE FAST CHANGING WORLD OF MULTIMEDIA (CAT. NO.00TH8532) IEEE PISCATAWAY, NJ, USA, vol. 1, 2000, pages 419-422 vol.1, XP010511486 ISBN: 0-7803-6536-4 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008115196A1 (fr) * 2007-03-15 2008-09-25 Thomson Licensing Procédé et système d'accessibilité et de gestion de paramètres dans les graphes de scènes
US9292964B2 (en) 2007-03-15 2016-03-22 Gvbb Holdings S.A.R.L. Method and system for accessibility and control of parameters in scenegraphs
US9911227B2 (en) 2007-03-15 2018-03-06 Gvbb Holdings S.A.R.L. Method and system for accessibility and control of parameters in scenegraphs
US10311632B2 (en) 2007-03-15 2019-06-04 Gvbb Holdings S.A.R.L. Method and system for accessibility and control of parameters in scenegraphs
US11087530B2 (en) 2007-03-15 2021-08-10 Grass Valley Canada Method and system for accessibility and control of parameters in scenegraphs
US11734881B2 (en) 2007-03-15 2023-08-22 Grass Valley Canada Method and system for accessibility and control of parameters in scenegraphs

Also Published As

Publication number Publication date
WO2006108990A3 (fr) 2007-03-01
US20090009520A1 (en) 2009-01-08
EP1869645A2 (fr) 2007-12-26

Similar Documents

Publication Publication Date Title
US7663628B2 (en) Apparatus and method for efficient animation of believable speaking 3D characters in real time
Cassell et al. Beat: the behavior expression animation toolkit
US5966691A (en) Message assembler using pseudo randomly chosen words in finite state slots
US5995119A (en) Method for generating photo-realistic animated characters
EP3915108B1 (fr) Génération en temps réel d&#39;animation de parole
WO2006059570A1 (fr) Dispositif générateur de modificateur de scène et procédé générateur de modificateur de scène
JP2003530654A (ja) キャラクタのアニメ化
WO2006108990A2 (fr) Procede d&#39;animation utilisant un graphe d&#39;animation
KR20210119441A (ko) 텍스트 및 오디오 기반 실시간 얼굴 재연
CA3180427A1 (fr) Sequences de synthese de geometries 3d pour un rendement axe sur le mouvement
KR20190112428A (ko) 통합 3d 객체모델 생성 및 의미론적 스타일전이 장치 및 방법
Geng et al. Reuse of motion capture data in animation: A review
FR2823585A1 (fr) Procede et systeme d&#39;animation d&#39;une personnage en trois dimensions
Arya et al. Multispace behavioral model for face-based affective social agents
WO2022221042A1 (fr) Production d&#39;une représentation d&#39;image numérique d&#39;un corps
US20220165024A1 (en) Transforming static two-dimensional images into immersive computer-generated content
WO2023152153A1 (fr) Création perfectionnée d&#39;un avatar
CN116152398B (zh) 一种三维动画控制方法、装置、设备及存储介质
KR20230096393A (ko) 사진 기반 대화형 디지털 휴먼 생성 장치 및 방법
Barakonyi et al. Communicating Multimodal information on the WWW using a lifelike, animated 3D agent
KR102650940B1 (ko) 2d/3d 모델을 렌더링하기 위한 컴퓨터 구현 방법 및 프로그래밍 가능한 시스템
US20220392034A1 (en) Image reenactment with illumination disentanglement
WO2024057905A1 (fr) Programme, procédé de traitement d&#39;informations et dispositif de traitement d&#39;informations
CN117541694A (zh) 一种动画数据处理方法、装置、设备以及可读存储介质
Yang et al. MPML-FLASH: A multimodal presentation markup language with character agent control in flash medium

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 2006726331

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE

WWW Wipo information: withdrawn in national office

Country of ref document: DE

NENP Non-entry into the national phase

Ref country code: RU

WWW Wipo information: withdrawn in national office

Country of ref document: RU

WWP Wipo information: published in national office

Ref document number: 2006726331

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 11918286

Country of ref document: US