Presentation application programs provide functionality for creating and delivering audiovisual presentations. Typically, presentations take the form of one or more presentation slides. Each presentation slide can include numerous objects, such as text, photographs, lists, tables, charts, shapes, clip art, sound clips, movies, and others. Presentations can be displayed on-screen and navigated through at the command of a user in order to deliver the presentation.
Many presentation application programs provide functionality for animating and applying visual effects to the objects on each presentation slide and for animating and applying visual effects to the transitions between presentation slides. For instance, using the functionality provided by typical presentation application programs, a user could define a path of motion over time (a “motion path”) for an object on a presentation slide. When the presentation slide is displayed, the presentation application program will cause the object to be animated along the defined motion path. A user may manually apply other types of animation properties to a presentation object in a similar manner.
The animation functionality provided by presentation application programs has traditionally been limited in several ways. For instance, animation functionality has typically been limited to the separate application of a static set of animation properties to each object in a presentation, such as the application of a motion path to an object in the manner described above. As a result, it has generally been time-consuming using previous presentation application programs for a user to choreograph the animation of multiple objects on a presentation slide in a visually appealing manner.
It is with respect to these considerations and others that the disclosure made herein is presented.
Technologies are described herein for animating objects through the use of animation schemes. In particular, through the utilization of the technologies and concepts presented herein, an animation scheme can be declaratively defined that includes instructions for choreographing the animation of multiple objects. Moreover, through the technologies provided herein, animations can be defined that are dependent upon the number of objects to be animated, the position of the objects, the type of objects, or other factors. Because a declarative language is utilized to define the animations, users less familiar with programming can easily edit animation schemes or define new animation schemes. The animation schemes may also be easily added to the animation schemes made available by an application program.
According to one aspect presented herein, an animation scheme is defined using a declarative language. The animation scheme includes instructions that define the animations and/or visual effects that should be applied to one or more objects and how the animations or visual effects should be applied. For instance, in one implementation, the animation scheme includes data identifying the animations that should be applied to each object along with data indicating whether the objects should be animated sequentially or concurrently.
In one embodiment, the animation scheme includes rules which, when evaluated, define how the objects are to be animated. For instance, rules may be specified for causing the objects to be animated differently depending upon the number of objects, the type of objects, the position of objects, or other factors. In one implementation, the declarative language utilized to define the animation scheme is the extensible markup language (“XML”). It should be appreciated, however, that other declarative languages and data formats might also be utilized to define the animation scheme.
According to other aspects, an animation scheme engine is provided for evaluating an animation scheme along with other factors to apply the appropriate animation to each of the objects. In particular, in one embodiment the animation scheme engine retrieves an animation scheme to be applied to one or more objects. The animation scheme engine also retrieves data regarding the objects. The data regarding the objects may include data regarding the location of each of the objects, the type of the objects, the quantity of objects, or other environmental variables. The animation scheme engine then evaluates the animation scheme along with the data regarding the objects to determine the animation to be applied to each object. Once the animation scheme engine has determined the animations and visual effects to be applied to each object, the animations and visual effects are applied to the objects. Other effects, such as transitions or sounds may also be defined and applied in a similar manner.
It should also be appreciated that the above-described subject matter may also be implemented as a computer-controlled apparatus, a computer process, a computing system, or as an article of manufacture such as a computer-readable medium. These and various other features will be apparent from a reading of the following Detailed Description and a review of the associated drawings.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended that this Summary be used to limit the scope of the claimed subject matter. Furthermore, the claimed subject matter is not limited to implementations that solve any or all disadvantages noted in any part of this disclosure.
The following detailed description is directed to technologies for animating objects. Through the use of the embodiments presented herein, the application of animations and visual effects to objects can be choreographed through the creation of an animation scheme. The animation scheme may be created through the use of a declarative language, such as XML, and contains rules and instructions regarding how the animations and visual effects should be applied to one or more objects. An application program that embodies the concepts and technologies presented herein utilizes the animation scheme to animate and apply visual effects to the objects. Additional details regarding the various embodiments presented herein will be presented below with reference to
While the subject matter described herein is presented in the general context of program modules that execute in conjunction with the execution of an operating system and application programs on a computer system, those skilled in the art will recognize that other implementations may be performed in combination with other types of program modules. Generally, program modules include routines, programs, components, data structures, and other types of structures that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the subject matter described herein may be practiced with other computer system configurations, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like.
In the following detailed description, references are made to the accompanying drawings that form a part hereof, and which are shown by way of illustration specific embodiments or examples. Referring now to the drawings, in which like numerals represent like elements through the several figures, aspects of a computing system and methodology for laying out images and associated text will be described.
Turning now to
As described herein, the presentation application 102 also includes functionality for animating and applying visual effects to the objects 108A-108C and to transitions between the presentation slides 106A-106C. In this regard, the presentation application 102 includes an animation scheme engine 112. As will be described in greater detail below, the animation scheme engine 112 is operative to determine the animations and visual effects to be applied to the objects 108A-108C on each of the presentation slide 106A-106C using the contents of an animation scheme 110A.
As shown in
As will be described in greater detail below, the animation schemes 110A-110C may be defined using a declarative language, such as XML. Other types of declarative languages may also be similarly utilized. The animation schemes 110A-110C include instructions specified using the declarative language that define the animations and/or visual effects that should be applied to the objects 108A-108C and how the animations or visual effects should be applied. For instance, in one implementation, the animation schemes 110A-110C include data identifying the animations that should be applied to each of the objects 106A-106C along with data indicating whether the objects 108A-108C should be animated sequentially or concurrently. As another example, an animation scheme 110A may be defined that specifies that a rotation animation should be applied to an object 108A and that specifies the degree of rotation. Alternatively, an animation scheme 110A may specify a motion path that an object 108A should follow. The animations defined within each animation scheme 110 may also be stacked together, thereby permitting complex animations made up of combined effects.
In one embodiment, the animation schemes 110A-110C include rules which, when evaluated, define how the objects 106A-106C are to be animated. For instance, rules may be specified for causing the objects to be animated differently depending upon the number of objects 108A-108C. As an example, one set of animations may be defined for the case where there are two objects 108A-108B on the slide 106A while another animation is defined for the case where there are three objects 108A-108C on the slide 106A.
According to another aspect, a rule may be specified that alters the type of animation that is applied based on the type of the objects 108A-108C. For instance, a rule may specify that one animation is to be applied to a text object while another animation is to be applied to an image object. In another implementation, a rule may be specified that animates the objects 108A-108C differently depending upon the position of objects 108A-108C on the slide 106A. For instance, as will be discussed below with respect to
As will be discussed in greater detail below, the animation scheme engine 112 utilizes an animation scheme 110A and data from the presentation document 104 to determine how the objects 108A-108C are to be animated in one embodiment. For instance, the animation scheme engine 112 may retrieve data identifying the type of objects 108A-108C on the slide 106A, the number of objects 108A-108C on the slide 106A, and the position of the objects 108A-108C on the slide 106A. The animation scheme engine 112 utilizes this information to evaluate the rules set forth in the appropriate animation scheme 110A to determine the animations that should be applied to each of the objects 108A-108C. Once the proper animations have been identified, the animations can be applied to the objects 108A-108C. Additional details regarding this process are provided below with respect to
Referring now to
As shown in
The <THEMESPECIFIC> tag 202b encompasses a <ANIMEFFECTS> tag 202C that defines the animation. A <ANIMTIMING> tag 202D is also defined that specifies the timing sequence that should be utilized for performing the defined animations. In the example shown in
The illustrative animation scheme 110A shown in
The <ANIMINFO> tag 202F in conjunction with the encompassed <ROTATEANIM> and <BYDEGREES> tags define a rotation animation by which each of the objects 108A-108C is rotated 45 degrees. The NODETYPE=WITHEFFECT attribute of the <ANIMINFO> tag 202F indicates that the rotation animation should be performed at the same time as any other animations that have been defined. The DURATION=3.0 attribute indicates that the animation specified by the <ANIMINFO> tag 202F should be performed for three seconds.
As discussed above, if a theme entitled “FLOW” has not been applied, the animations defined by the <ANIMEFFECTS> tag 202H will be utilized to animate the objects 108A-108C. In this case, the <ANIMTIMING> tag 2021 specifies that the animations should be applied to each of the objects 108A-108C such that the objects animate sequentially. The <ANIMINFO> tag 202J and the encompassed <ANIMINFO> tag indicate that the objects should be faded in over a period of three seconds. It should be appreciated that the animation scheme 110A is merely illustrative and that other schemas may be utilized to declaratively define rules governing how the objects 108A-108C are to be animated.
Turning now to
Referring now to
The routine 400 begins at operation 402, where the animation schemes 110A-110C are defined and stored. As discussed briefly above, because the animation schemes 110A-110C are specified using a declarative language, a designer can easily define new animations and store them in a location accessible to the animation scheme engine 112. Animation schemes 110A-110C may also be easily customized in a similar manner.
From operation 402, the routine 400 continues to operation 404 where an animation scheme 110A is applied to a slide 106 within a presentation document 104. This may occur, for instance, in response to a user request to apply the animation scheme 110A to a slide 106A. In order to apply the animation scheme 110A to the slide 106A, the routine 400 continues to operation 406, where the animation scheme engine 112 retrieves the animation scheme 110A. The routine 400 then continues to operation 408, where the animation scheme engine 112 retrieves information regarding the presentation document 104 and the objects 108A-108C necessary to evaluate the contents of the animation scheme 110A. For instance, as described above, the animation scheme engine 112 may retrieve data regarding the number and type of the objects 108A-108C or the location of the objects 108A-108C on the slide 106A.
At operation 410, the animation scheme engine 112 uses the retrieved information regarding the presentation document 104 and the objects 108A-108C to evaluate the rules contained in the animation scheme 110A and determine the animations and visual effects that should be applied to each of the objects 108A-108C. Once the animations to be applied to each of the objects 108A-108C have been identified, the routine 400 then continues to operation 412 where the identified animations are applied to each of the objects 108A-108C. Once the animations have been applied to the objects 108A-108C, the routine 400 continues to operation 414, where it ends.
The computer architecture shown in
The mass storage device 510 is connected to the CPU 502 through a mass storage controller (not shown) connected to the bus 504. The mass storage device 510 and its associated computer-readable media provide non-volatile storage for the computer 500. Although the description of computer-readable media contained herein refers to a mass storage device, such as a hard disk or CD-ROM drive, it should be appreciated by those skilled in the art that computer-readable media can be any available computer storage media that can be accessed by the computer 500.
By way of example, and not limitation, computer-readable media may include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. For example, computer-readable media includes, but is not limited to, RAM, ROM, EPROM, EEPROM, flash memory or other solid state memory technology, CD-ROM, digital versatile disks (“DVD”), HD-DVD, BLU-RAY, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by the computer 500.
According to various embodiments, the computer 500 may operate in a networked environment using logical connections to remote computers through a network such as the network 520. The computer 500 may connect to the network 520 through a network interface unit 506 connected to the bus 504. It should be appreciated that the network interface unit 506 may also be utilized to connect to other types of networks and remote computer systems. The computer 500 may also include an input/output controller 512 for receiving and processing input from a number of other devices, including a keyboard, mouse, or electronic stylus (not shown in
As mentioned briefly above, a number of program modules and data files may be stored in the mass storage device 510 and RAM 514 of the computer 500, including an operating system 518 suitable for controlling the operation of a networked desktop, laptop, or server computer. The mass storage device 510 and RAM 514 may also store one or more program modules. In particular, the mass storage device 510 and the RAM 514 may store a presentation application 102 that provides the functionality described herein for animating objects using an animation scheme. The mass storage device 510 and RAM 514 may also store the animation schemes 110 and a presentation document 104, both of which have been described above.
Based on the foregoing, it should be appreciated that technologies for animating objects using an animation scheme are presented herein. Although the subject matter presented herein has been described in language specific to computer structural features, methodological acts, and computer readable media, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features, acts, or media described herein. Rather, the specific features, acts and mediums are disclosed as example forms of implementing the claims.
The subject matter described above is provided by way of illustration only and should not be construed as limiting. Various modifications and changes may be made to the subject matter described herein without following the example embodiments and applications illustrated and described, and without departing from the true spirit and scope of the present invention, which is set forth in the following claims.