A portion of the disclosure of this patent document contains material to which a claim for copyright is made. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but reserves all other copyright rights whatsoever.
This disclosure relates to the field of digital video compositing, including editing or post-production. Specifically, this disclosure relates to methods and systems for establishing and applying rules in the context of authoring, editing or processing video compositions. Even more particularly, this disclosure relates to methods and systems for establishing and applying temporal sculpting rules in the context of compositing, authoring, editing or processing video compositions where the rules may be useful in the context of, for example, content development for digital signage, broadcast graphics, ecommerce video, personalized video messaging or localization of video content, among others.
Digital compositing is the process of digitally assembling multiple pieces of content to make a final piece of content (referred to as a composition), typically for motion pictures (i.e., video). It is the digital analogue of optical film compositing. In particular, layer-based compositing represents each piece of digital content (e.g., media object) in a composite (or composition) as a separate layer within a timeline, each with its own time bounds, effects, keyframes, etc. All the layers are stacked, one above the next, in any desired order; and the bottom layer is usually rendered as a base in the resultant final content, with each higher layer being progressively rendered on top of the previously composited of layers, moving upward until all layers have been rendered into the final composite content.
Layer-based compositing sometimes becomes complex in the cases where a large number of layers are utilized. A partial solution to this problem is the ability of some digital compositing programs to view the composite-order of elements (such as images, effects, or other attributes) with a visual diagram to nest compositions, or “comps,” directly into other compositions, thereby adding complexity to the render-order by first compositing layers in the beginning composition, then combining that resultant image with the layered images from the proceeding composition, and so on. Thus, each digital video composition can have a series of layers—one stacked on atop another—resting in a timeline.
A digital compositing platform that allows users to digitally composite content, and include nested compositions, is Adobe's After Effects product. Other examples of digital compositing programs or platforms are Blender, Cinelerra, Kdenlive, Natron, OpenShot, Shotcut, Apple Motion, Autodesk 3ds Max, Autodesk Inferno, Flame and Flint (IFF), Autodesk Maya, Autodesk Smoke, CompTime (ILM), FXhome HitFilm, Saber (ILM), Houdini, Blackmagic Fusion, Mistika, Nuke, Piranha, SilhouetteFX, Assimilate, Scratch, Sony Vegas Pro, or the like.
In the main, these types of digital compositing platforms (also known as post-production or editing applications or platforms) present a user with an interface by which a user may select and define layers, and the corresponding source of content for each layer. The interface may also present a graphical depiction of the time line of the composition and allow a user of the digital compositing program to order the layers. Additionally, when a digital compositor (e.g., user) works with a post-production application, the application typically offers a suite of effects that can be applied to the various individual layers that are in the composition's timeline. These effects may be applied or defined using, for example, a “plug-in” to the digital compositing platform. Such plug-ins may be a component that provides a particular feature (e.g., one or more effects) in association with a computing program (e.g., a digital compositing platform). These plug-ins may utilize an extensible architecture offered by the “host” computing program (e.g., a plug-in architecture such as a set of Application Programming Interfaces (API) or the like).
There are a number of complexities when it comes to layer-based digital compositing, however. These complexities result at least in part from the fact that each layer of a composition may include content with no inherent duration (e.g., an image or text) or, conversely, may include content that does have inherent duration (e.g., a video file). Thus, for layers including content with inherent duration there may be a start and end to the content comprising that layer, but there may also be an in-point and out-point defined with respect to the content for that layer, where the in-pint and out-point may not be the same as the start point or end point of the content. Accordingly, the entire duration of the content of the layer may not be shown in the resulting (rendered) composition.
Additionally, problems may arise because digital compositing platforms may allow different pieces of content to be easily swapped. Thus, once a composition is defined (e.g., the set of layers, the content for each of the set of layers, the in-point and out-points for each layer, the temporal arrangement of each layer and the like defined), another source of content may be “swapped” for the current source for the layer, or the original content may be modified. As may be imagined, in the case of content with a particular duration, the original content for a layer may not be of the same duration as the swapped or modified content that replaces it. This situation can cause a number of adverse effects, including dead space in a composition, improper or unwanted display of certain layers together in the composite, the curtailing of the display of the composition, or other undesirable effects. These adverse effects may be exacerbated when layers of a composition are nested, such that one or more layers of a composition is itself a composition comprised of layers having content with an inherent duration.
What is desired therefore, are digital compositing platforms enabled to allow automatic temporal adjustment of a composition or layers thereof.
To those ends, among many others, systems and methods for implementing rules in a digital compositing platform are disclosed herein. Specifically, certain embodiments provide for the implementation of time-sculpting rules that enable the layers of a video composition to be temporally linked or modified in a content agnostic manner. In this way, content can easily be manipulated, substituted, altered, etc. and the composition automatically modified by the digital compositing platform based on the set of time-sculpting rules to ensure that the resulting composition is coherent and cogent, despite the alterations to the layers or the source of content thereof. These types of rules may thus be advantageously utilized in the authoring, editing or processing video compositions, including in the context of content development for digital signage, broadcast graphics, ecommerce video, personalized video messaging, localization of video content, among others.
In particular, embodiments disclosed herein provide systems, methods, and computer program products for a digital video compositing platform for automatic temporal adjustment of a digital composition may include a data store with a project defining a composition arranged according to a first temporal arrangement including a timeline and having a set of layers. The set of layers of the composition are arranged according to the first temporal arrangement and each layer is associated with corresponding digital content. The digital compositing platform may also include a temporal sculpting module for allowing a user to define a set of temporal sculpting rules including a first temporal sculpting rule associated with a first layer of the composition. The first temporal rule may be one of a target rule establishing a temporal link between the first layer and a target layer or a cropping rule establishing a temporal link between the composition and the first layer.
The set of temporal rules can be stored in the data store in association with the composition, including storing the first temporal sculpting rule in association with the first layer. The temporal sculpting module includes a rules engine for determining that the digital content corresponding to the first layer or the digital content corresponding to the target layer has changed and automatically adjusting the composition from the first temporal arrangement to a second temporal arrangement to conform with the first temporal sculpting rule without user involvement. Adjusting the temporal arrangement can comprise modifying the project to temporally arrange the first layer or target layer within the composition based on the temporal link between the first layer and target layer or cropping the timeline of the composition based on the temporal link between the composition and the first layer.
In one embodiment, the first temporal sculpting rule is a shifting rule and temporally arranging the first layer or target layer within the composition comprises shifting the first layer relative to the timeline based on a target point in the target layer specified in the first temporal sculpting rule.
In another embodiment, the first temporal sculpting rule is a trimming rule and temporally arranging the first layer or target layer within the composition comprises modifying an in-point or out-point of the first layer relative to the timeline based on a target point in the target layer specified in the first temporal sculpting rule.
In other embodiments, the first temporal sculpting rule is a stretching rule and temporally arranging the first layer or target layer within the composition comprises modifying a playback speed of the first layer based on a target point in the target layer or the composition specified in the first temporal sculpting rule.
In certain embodiments, the first temporal sculpting rule is a time cropping rule and temporally cropping the timeline of the composition based on the temporal link between the composition and the first layer comprises modifying a start time or end time of the composition based on a target point in the first layer specified in the temporal sculpting rule.
In a particular embodiment, automatically adjusting the first temporal arrangement to a second temporal arrangement of the composition may be accomplished by determining an ordered set of dynamic layers of the composition, including the first layer and the target layer, resetting the playback speed of each of the set of dynamic layers and arranging the set of dynamic layers according to the set of temporal sculpting rules. The arrangement of the set of dynamic layers may include determining a maximum nested depth of the composition, evaluating each of the ordered set of dynamic layers sequentially in a forward order according to the set of temporal sculpting rules, evaluating each of the ordered set of dynamic layers in reverse order according to the set of temporal sculpting rules, and repeating both these evaluation steps a number of times equal to the maximum nested depth of the composition.
Thus, in one embodiment, the set of rules that may be utilized by a user are target (or anchor) point based rules that link one layer to another layer through the use of target points in the linked layer. In particular, these target based rules may allow one layer to be time shifted, stretched or trimmed based on one or more target points defined with respect to another layer. The set of rules may also include time cropping rules that allow a user to define time cropping points with respect to a layer, such that when a layer changes, the in-point and out-point of the entire composition are altered based on the in-point or out-point of the layer.
Accordingly, in certain embodiments, if a video composition contains a layer that is itself a separate composition which contains a layer marked for variable footage duration, then the timeline of the video composition can be reconfigured according to the duration of the footage layers. Users may consequently have the capability to nest dynamic layers of variable time duration within each other. The cumulative effect of processing content utilizing rules applicable to nested layers of variable time duration is that the overall length of the output changes based on the variable length of sub-layers.
Accordingly, embodiments may provide advantages by allowing users of digital compositing platforms to be able to define time-sculpting rules with respect to one or more layers of a composition, where those time-sculpting rules enable the layers to be temporally linked or modified in a content agnostic manner. In this way, content can easily be manipulated, substituted, altered, etc. and the composition automatically modified based on the set of time-sculpting rules to ensure that the resulting composition is coherent and cogent, despite the alterations to the layers or the source of content thereof.
Moreover, embodiments may provide advantages related to the speed and processing efficiency of computer systems, including digital processing platforms that implement such time-sculpting rules. Such efficiencies may be especially realized in the context of applying such time-sculpting rules to video compositions that are nested (e.g., where a layer of the composition is itself a composition) and particularly in the context of video compositions that include multiple levels of nesting. These efficiencies may result at least from an initial determination of the level or depth of nesting of such video composition (e.g., before time-sculpting rules are applied) and the use of this depth of nesting as a parameter in determining the processing of the layers of the video composition. Specifically, in certain embodiments, these efficiencies may result from limiting the number of times the layers of a composition are processes based on the depth of the nesting of a video composition.
These, and other, aspects of the disclosure will be better appreciated and understood when considered in conjunction with the following description and the accompanying drawings. It should be understood, however, that the following description, while indicating various embodiments of the disclosure and numerous specific details thereof, is given by way of illustration and not of limitation. Many substitutions, modifications, additions and/or rearrangements may be made within the scope of the disclosure without departing from the spirit thereof, and the disclosure includes all such substitutions, modifications, additions and/or rearrangements.
The drawings accompanying and forming part of this specification are included to depict certain aspects of the invention. A clearer impression of the invention, and of the components and operation of systems provided with the invention, will become more readily apparent by referring to the exemplary, and therefore nonlimiting, embodiments illustrated in the drawings, wherein identical reference numerals designate the same components. Note that the features illustrated in the drawings are not necessarily drawn to scale.
The disclosure and various features and advantageous details thereof are explained more fully with reference to the exemplary, and therefore non-limiting, embodiments illustrated in the accompanying drawings and detailed in the following description. It should be understood, however, that the detailed description and the specific examples, while indicating the preferred embodiments, are given by way of illustration only and not by way of limitation. Descriptions of known programming techniques, computer software, hardware, operating platforms and protocols may be omitted so as not to unnecessarily obscure the disclosure in detail. Various substitutions, modifications, additions and/or rearrangements within the spirit and/or scope of the underlying inventive concept will become apparent to those skilled in the art from this disclosure.
A brief discussion of a context in which embodiments as disclosed herein may be effectively utilized may be useful before delving into embodiments in more detail. As will be recalled from the above discussion, digital compositing is the process of digitally assembling multiple pieces of content to make a composition, typically for motion pictures (i.e., video). In particular, layer-based compositing represents each piece of content (e.g., media object) in a composite (or composition) as a separate layer within a timeline, each with its own time bounds, effects, keyframes, etc. All the layers are stacked, one above the next, in any desired order; and the bottom layer is usually rendered as a base in the resultant final content, with each higher layer being progressively rendered on top of the previously composited of layers, moving upward until all layers have been rendered into the final composite content. In addition, compositions may be nested, where the layer of a composition is itself a composition including layers, where these layers may, in turn, include a composition, etc.
There are a number of complexities when it comes to layer-based digital compositing, however. These complexities result at least in part from the fact that each layer may include content with no inherent duration (e.g., an image or text) or that does have inherent duration (e.g., a video file). Thus, for content layers with inherent duration there may be a start and end to the content comprising a layer, but there may also be a “in-point” and “out-point” defined with respect to the content for that layer, where the in-pint and out-point may not be the same as the start point or end of the content. Accordingly, the entire duration of the content may not be shown in the resulting composition.
Additionally, problems may arise because digital compositing platforms may allow different pieces of content to be easily swapped. Thus, once a composition is defined (e.g., the set of layers, the content for each of the set of layers, the in-point and out-points for each layer, the temporal arrangement of each layer and the like defined), another piece of content may be “swapped” for the current source for the layer or the original content may be modified. As may be imagined, in the case of content with a particular duration, the original content for a layer may not be of the same duration as the swapped or modified content that replaces it. This situation can cause a number of adverse effects, including dead space in a composition, improper or unwanted display of certain layers together in the compositing, the curtailing of the display of the composition, or other undesirable effects. These adverse effects may be exacerbated when layers of a composition are nested, such that one or more layers of a composition is itself a composition comprised of layers having content with an inherent duration.
What is desired therefore, is to allow users of digital compositing platforms to be able to define time-sculpting rules with respect to one or more layers of a composition, where those time-sculpting rules enable the layers to be temporally linked or modified in a content agnostic manner. In this way, content can easily be manipulated, substituted, altered, etc. and the composition automatically modified based on the set of time-sculpting rules to ensure that the resulting composition is coherent and cogent, despite the alterations to the layers or the source of content thereof.
Embodiments of the systems and method for implementing time-sculpting rules in a layer based digital compositing application as disclosed herein may do just that, among other advantages and capabilities. Embodiments of these time-sculpting rules may be modifiers a user may assign to one or more layers that exist within the timeline of a video composition. The time-sculpting rules provided by embodiments may allow users to define video composition templates with layers of variable time duration. These rules can be evaluated when a digital compositing platform creates a composition based on the layers and rules defined for the composition. In this manner, the time sculpting of digital compositions can be automated by applying those rules to the layers (including nested compositions) of a composition. This automated time sculpting may be especially useful in cases where the content comprising a layer (e.g., the source of content for the layer) has been altered.
For example, in one embodiment, the set of rules that may be utilized by a user are target (or anchor) point based rules that link one layer to another layer through the use of target points in the linked layer. In particular, these target based rules may allow one layer to be time shifted, stretched or trimmed based on one or more target points defined with respect to another layer.
In other embodiments, the set of rules are time cropping rules that allow a user to define time cropping points with respect to a layer of a composition, such that when a layer changes, the in-point and out-point of the entire composition are altered based on the in-point or out-point of the layer.
Accordingly, in certain embodiments, if a video composition contains a layer that is itself a separate composition which includes a layer to which a rule has been applied, the timeline of the video composition can be reconfigured according to the duration of the layers. Users may consequently have the capability to nest dynamic layers of variable time duration within each other. The cumulative effect of processing content utilizing rules applicable to nested layers of variable time duration is that the overall length of the composition may change based on the variable length of sub-layers.
In certain embodiments, these rules may be incorporated into a host digital compositing platform. For example, in certain embodiments, a temporal sculpting module may be, included in, or installed as an addition or plug-in to a digital compositing program such as Adobe's After Effects. In particular, when a digital compositor works with their post-production application, they typically have a suite of effect plug-ins they can apply to various, individual, layers that exist in a composition's timeline. A typical compositor's workstation will have a suite of plug-ins installed and each have a unique set of controls. Users may install a temporal sculpting module as a plug-in to an existing or pre-installed video compositing platform. Users can then apply the temporal sculpting plug-in effect to any layer in a video composition being composited in the host compositing platform. The effect's “controls” are where the user's configure rules. These controls may be thought of as styling declarations not unlike those found in a Cascading Style Sheet (CSS) for a website.
By installing a temporal sculpting module as plug-in to a digital compositing program such as After Effects, or providing a temporal sculpting module in such a digital compositing platform, embodiments of the systems and methods disclosed may allow a user of such a program to utilize an “effect” to mark variable footage layers in a manner that follows and fits into the normal workflow to which digital compositors are accustomed. That is, a user can select a layer, apply an effect to the layer, and then configure the effect's controls. Accordingly, the user experience of setting up the system of time sculpting rules according to embodiments may be intuitive, as it operates within a framework with which users are accustomed to interacting.
In one embodiment, when compositing, the user may define a template based on the time-sculpting rules using the plug-in for the digital compositing platform. The template may follow the format of the host digital compositing platform. Thus, for example, in one embodiment the template file format may follow the After Effects Project (.aep) file format specification. In other words, the definition of time-sculpting rules for one or layers of a composition of a project file may result in the definition of a template. A template may thus be an instance of, or included within, a project file. It will be understood that the term project as used herein is used in a general sense to refer to any file or storage format for a digital video composition or a template and in should not in any way be taken as a limitation on the embodiments as disclosed herein.
Once the templates are created, they are processed to alter the composition or layers thereof to ensure that the rules are met. This processing of the template may also be triggered by another event, such as the modification, alteration, substitution, removal, etc. of one or more layers of the composition. For example, in one embodiment, a user sets up versioning data and prepares a template for versioning data. The user can then link the versioning data to a particular project (e.g., .aep) file. User then selects a “target” composition to re-version and render. A rendering operation (e.g., a batch rendering operation) can then be initiated. During the rendering process, a processing loop can occur where the versioning data is ingested and the host digital compositing application's project and compositions are invalidated with new data (e.g., text, footages, and solid colors). The host digital compositing application (e.g., After Effects) can then render the target composition. This loop is repeated and may be recursive or nested such that compositions that comprise layers of a deeper, nested, level may be processed or rendered in accordance with the rules before higher-level layers. In some embodiments, the processing may be repeated according to a depth of nesting of compositions within the project.
It will now be helpful to discuss embodiments of such a digital compositing platform with a temporal sculpting module. Turning then
Digital compositing platform 110 may present a user with an interface 112 by which a user may select and define layers, and the corresponding source of content for each layer. The interface may also present a graphical depiction of the time line of the composition and allow a user of the digital compositing program 110 to temporally order the layers. Additionally, when a digital compositor (e.g., user) works with their post-production application, they typically have a suite of effect plug-ins they can apply to the various individual layers that are in the composition's timeline.
In particular, when a user is utilizing the digital compositing platform 110 he may be presented with an interface which allows him to see a timeline for a composition he is editing along with depictions of the various layers within that composition. The user can use the interface to associate content 128 (stored locally in data store 130 or remotely on sources accessible across computer network 160) with each of the layers. This association may be defined by a supplying a source for the content 128 to associate with the layer. The visual interface may also allow the user to nest compositions, directly into other compositions. Thus, each video composition can have a series of layers—one stacked one atop another—according to a timeline, where those layers may themselves be compositions.
The digital compositing platform 110 may define and store one or more files 126 (generally referred to herein as projects) associated with the composition being defined by the user. A project file may store one or more compositions (e.g., collection of layers) and references to the content 128 (e.g., the source of content 128) for each of the layers of the composition. Moreover, the project 126 may include data regarding the compositions or layers comprising the compositions, including, for example, a temporal arrangement of the layers such as the duration, playback speed, in-point, out-points or other data regarding the layers and compositions.
Users can apply temporal sculpting rules (or effects) (e.g., which may be named Templater Settings or the like) to any layer in a video composition being composited using digital compositing platform 110 utilizing temporal sculpting module 120. Specifically, an interface 124 of the temporal sculpting module may be presented in association with the interface of the digital compositing platform 110. The interface 124 of the temporal sculpting module 120 may include a set of “controls” where the user may configure such rules. Embodiments may, for example, be usefully utilized in association with the Templater product of Dataclay, LLC of Austin, Tex.
In particular, in one embodiment, the temporal sculpting module 120 may have an interface component 124 which allows a menu to be presented in association with the interface of the digital compositing platform 110 to present the user with controls for the temporal sculpting module 120. Using this interface 124 the user may specify rules associated with the composition of the project 126 and thus define a template 125 for the composition of the project file 126 including one or more rules for the composition. The project 126 may thus include the defined template 125, or set of rules. In one embodiment, the set of rules defined by the user may be stored in the project 126 being edited by the user through the digital compositing platform 110. In this manner, the template 125 may be included in the project 126, or stored in association with the project 126, as the defined set of rules. These rules may establish temporal links between one or more layers or between a composition and a layer.
The rules engine 122 of the temporal sculpting module 120 can then evaluate the composition (e.g., the project file 126 for the composition) based on the template 125 associated with the project 126 to conform the project 126 to those rules such that when the digital compositing platform 110 renders the composition of the project 126 it is rendered in accordance with those rules to temporally sculpt the resulting rendered composition. Specifically, in one embodiment, the rules engine 122 may evaluate the rules defined in the template 125 and adjust the temporal arrangement of the composition by adjusting the data (e.g., the in-point, out-point, start time, end time, playback speed, etc.) associated with one or more dynamic layers in, or the composition of, the project 126. Such an adjustment may, for example, be done automatically without further user involvement based on one or more occurrences such as replacement or alteration of the source of content of a layer, or another occurrence. In this manner, layers within a composition can be made to automatically interact with one another in a final composition with respect to start or end time, playback speed, in-point, out-points or other data regarding the layers and compositions.
In one embodiment, the rules engine 122 may evaluate the layers of a composition in a number of passes based on a depth of nesting of layers of the composition when applying the rules of the template 125 to the layers of the composition(s) of the project 126. Specifically, in one embodiment, to adjust the temporal arrangement of the composition or layers to conform the layers of the project 126 to the template 125, the rules engine 122 may process the project file to determine the layers of the composition(s) of the project that are dynamic. These dynamic layers (which may themselves be a composition) are those layers in the composition of the project 126 which have one or more associated time-sculpting rules as defined in template 125 using temporal sculpting module 120. Each of these dynamic layers may be placed in an array or other data structure (generically referred to herein as an array). In one embodiments, placing the layer in the array may include placing a reference to the layer in the project 126 in the array. The array thus includes references to each dynamic layer and the associated data or properties of that layer such as the start time, end time, in-point, out-point, playback speed, etc.
Each of the dynamic layers referenced in the array may be initialized and reset by the rules engine 122 by defining the layer's playback to normal speed (e.g., 100%) and setting the in-points or out-points of the layer if needed. The maximum nested depth of the composition of the project 126 can then be determined by the rules engine 122. For each level of depth, the layers of the project 126 can then be arranged according to the time-sculpting rules defined for those layers according to the template 125. This arrangement may include trimming one or more of the layers (e.g., setting a layer's in-point or out-point in the project based on a target layer's in-point or out-point); shifting one or more of the layers (e.g., setting a layer's start time or end time in the project so the layer's in-point or out-point reaches a target layer's in-point or out-point); cropping one or more layers (which may be compositions) (e.g., by adjusting the duration of the composition in the project where the beginning of a composition starts at a layer's in-point or the end of a composition ends at a layer's out-point, or both); or stretching one or more layers (e.g., by changing the duration of a layer in the project by adjusting the layer's playback speed until the layer's out-point reached the in-point or out-point of a target layer, or the end of the layer's containing composition).
It is useful at this point to illustrate types of rules that may be implemented by embodiments of the temporal sculpting module and digital compositing platform described herein. Before discussing these rules in detail, attention is directed to
With those depictions and representations in mind, attention is now directed to the types of rules that may be implemented by embodiments of the temporal sculpting module and digital compositing platform described herein. As discussed, a layer which has a time-sculpting rule assigned to it, or associated with it, may be referred to as a “dynamic layer”. In other words, the layer (or an associated layer) may change based on some criteria. A target layer can also be dynamic or have other target layers. In one embodiment, the set of rules that may be utilized by a user are target (or anchor) point based rules that link one layer to another layer through the use of target points in the linked or targeted layer. The anchors or targets within a target layer could be start points or end points, in-points or out-points, key-frames within a layer, etc. Generally, a target point may be some reference point within a target layer that could be identified (e.g., in the case where one layer is replaced with another layer). These target based rules may allow one layer to be time shifted, stretched, trimmed or otherwise temporally arranged based on one or more target points defined with respect to another layer. Additionally, an “overlap” may be specified (usually with respect to a target point). This overlap may include a number of frames or time period (e.g., later or earlier) than a target point.
Specifically, in one embodiment, time shifting rules may allow a layer to be temporally arranged by being moved along a composition's timeline based on a temporal link established with a target point within a target layer such that when a layer is modified (e.g., altered, substituted, swapped, etc.) a layer may be time shifted based on the modified layer. Embodiments of these types of shifting rules may be better understood with reference to
First, referring to
Similarly, in
Moving to
Similarly, in
It will be noted that while the overlap of a certain number of frames has been defined as being plus or minus that number of frames with respect to certain rules this should not be taken as a limitation on other embodiments of similar rules and that whether an overlap is defined to be plus or minus the defined number of frames may depend on the rule or another condition such as a user selection. Additionally, it should be noted that while overlap has been specified according to certain embodiments based on a number of frames, other methods of specifying overlap (e.g., amount of time) may also be utilized and are fully contemplated herein.
Now looking at
Referring to
Similarly, in
The type of time-sculpting rules discussed above with respect to
Turning first to
Similarly, in
Notice here that the application of the in-point trims to in-point with overlap rule shifts the in-point of layer b 1380 to cause the in-point of layer b 1380 to match (e.g., be the same point in time in the composition as) layer a's in-point plus a number of frames (here 15). Notice as well, that the in-point of layer b has just been moved to match the in-point of layer a 1370 plus the overlap number of frames (e.g., 15); layer b 1380 has not shifted. Accordingly, layer b 1380 has been trimmed by leaving a portion 1382 of layer b 1380 that will not be displayed in composition 1360 when rendered. When comparing with the application of an in-point trims to in-point rule in a similar composition containing similar layers as depicted in
Moving to
Notice here that the application of the in-point trims to out-point with overlap rule shifts the in-point of layer b 1580 to cause the in-point of layer b 1580 to match (e.g., be the same point in time in the composition as) layer a's out-point minus a number of frames (here 15). Notice as well, that the in-point of layer b has just been moved to match the out-point of layer a 1570 plus the overlap number of frames (e.g., 15); layer b 1580 has not shifted. Accordingly, layer b 1580 has been trimmed by leaving a portion 1582 of layer b 1580 that will not be displayed in composition 1560 when rendered. When comparing with the application of an in-point trims to out-point rule in a similar composition containing similar layers as depicted in
In
Notice here that the application of the out-point trims to out-point with overlap rule shifts the out-point of layer b 1780 to cause the out-point of layer b 1780 to match (e.g., be the same point in time in the composition as) layer a's out-point minus a number of frames (here 15). Notice as well, that the out-point of layer b has just been moved to match the out-point of layer a 1770 minus the overlap number of frames (e.g., 15); layer b 1780 has not shifted. Accordingly, layer b 1780 has been trimmed by leaving a portion 1782 of layer b 1780 that will not be displayed in composition 1760 when rendered. When comparing with the application of an out-point trims to out-point rule in a similar composition containing similar layers as depicted in
Notice here that the application of the out-point trims to in-point with overlap rule shifts the out-point of layer b 1980 to cause the out-point of layer b 1980 to match (e.g., be the same point in time in the composition as) layer a's in-point plus a number of frames (here 15). Notice as well, that the out-point of layer b 1980 has just been moved to match the in-point of layer a 1970 plus the overlap number of frames (e.g., 15); layer b 1980 has not shifted. Accordingly, layer b 1980 has been trimmed by leaving a portion 1982 of layer b 1980 that will not be displayed in composition 1960 when rendered. When comparing with the application of an out-point trims to in-point rule in a similar composition containing similar layers as depicted in
The type of time-sculpting rules discussed above with respect to
Looking first then at
Thus, for example, a rules engine of a temporal sculpting module may evaluate the rules associated with composition 2060 as defined in the project for the composition when the source of content for layer b 2080 changes, and apply the stretch to in-point rule specified for layer b 2080 in the project for composition 2060 (e.g., by changing the data associated with layer b 2080 in the project). The application of the rule may entail determining a new playback speed (or playback speed percentage) for layer b 2080 based on, for example, the length of layer b 2080, the in-point of layer b 2080, the in-point of layer a 2070 or other data. The playback speed (or percentage) can be associated with layer b 2080 in the project for the composition. Note that this playback speed (or percentage) may be greater than, or less than, a full or normal speed playback. Notice here that the application of the stretch to in-point rule changes the playback speed of layer b 2080 (if needed) to cause the out-point of layer b 2080 to match (e.g., be the same point in time in the composition as) layer a's in-point.
Similarly, in
Thus, for example, a rules engine of a temporal sculpting module may evaluate the rules associated with composition 2160 as defined in the project for the composition when the source of content for layer b 2180 changes, and apply the stretch to in-point rule plus overlap specified for layer b 2180 in the project for composition 2160 (e.g., by changing the data associated with layer b 2180 in the project). The application of the rule may entail determining a new playback speed (or playback speed percentage) for layer b 2180 based on, for example, the length of layer b 2180, the in-point of layer b 2180, the in-point of layer a 2170, the number of frames specified for the control layer (here layer b), or other data. The playback speed (or percentage) can be associated with layer b 2180 in the project for the composition. Notice here that the application of the stretch to in-point rule plus overlap changes the playback speed of layer b 2180 (if needed) to cause the out-point of layer b 2180 to match (e.g., be the same point in time in the composition as) layer a's in-point plus the number of frames (here 15).
Thus, for example, a rules engine of a temporal sculpting module may evaluate the rules associated with composition 2260 as defined in the project for the composition when the source of content for layer b 2280 changes, and apply the stretch to out-point rule specified for layer b 2280 in the project for composition 2260 (e.g., by changing the data associated with layer b 2280 in the project). The application of the rule may entail determining a new playback speed (or playback speed percentage) for layer b 2280 based on, for example, the length of layer b 2280, the in-point of layer b 2280, the out-point of layer a 2270 or other data. The playback speed (or percentage) can be associated with layer b 2280 in the project for the composition. Note that this playback speed (or percentage) may be greater than, or less than, a full or normal speed playback. Notice here that the application of the stretch to in-point rule changes the playback speed of layer b 2280 (if needed) to cause the out-point of layer b 2280 to match (e.g., be the same point in time in the composition as) layer a's out-point.
In
Thus, for example, a rules engine of a temporal sculpting module may evaluate the rules associated with composition 2360 as defined in the project for the composition when the source of content for layer b 2380 changes, and apply the stretch to out-point rule plus overlap specified for layer b 2380 in the project for composition 2360 (e.g., by changing the data associated with layer b 2380 in the project). The application of the rule may entail determining a new playback speed (or playback speed percentage) for layer b 2380 based on, for example, the length of layer b 2380, the in-point of layer b 2380, the out-point of layer a 2370, the number of frames specified for the control layer (here layer b), or other data. The playback speed (or percentage) can be associated with layer b 2380 in the project for the composition. Notice here that the application of the stretch to in-point rule plus overlap changes the playback speed of layer b 2380 (if needed) to cause the out-point of layer b 2380 to match (e.g., be the same point in time in the composition as) layer a's out-point plus the number of frames (here 15).
While the above embodiments of stretching rules have utilized a target point in another layer, embodiments of stretching rules may also utilize target points in the composition itself. For example, in one embodiment, the target for a control layer in a stretching rule may be the end time of a containing composition.
Thus, for example, a rules engine of a temporal sculpting module may evaluate the rules associated with composition 2460 as defined in the project for the composition when the source of content for layer b 2480 changes, and apply the stretch to end of comp rule specified for layer b 2480 in the project for composition 2460 (e.g., by changing the data associated with layer b 2480 in the project). The application of the rule may entail determining a new playback speed (or playback speed percentage) for layer b 2480 based on, for example, the length of layer b 2480, the in-point of layer b 2480, the end time of the composition 2460, or other data. The playback speed (or percentage) can be associated with layer b 2480 in the project for the composition. Note that this playback speed (or percentage) may be greater than, or less than, a full or normal speed playback. Notice here that the application of the stretch to end of comp rule changes the playback speed of layer b 2480 (if needed) to cause the out-point of layer b 2480 to match (e.g., be the same point in time in the composition as) the end of the composition 2460.
The type of time-sculpting rules discussed above with respect to
Looking at
Thus, for example, a rules engine of a temporal sculpting module may evaluate the rules associated with composition 2560 as defined in the project for the composition when the source of content for layer b 2580 changes, and apply the crop to in-point rule specified for layer b 2580 in the project for composition 2560 (e.g., by changing the data associated with layer b 2580 or the composition 2560 in the project). The application of the rule may entail determining a start time for the composition 2560 based on, for example, the in-point of layer b 2580. Notice here that the application of the crop to in-point rule changes the start time of composition 2560 to cause the start time of composition 2560 to match (e.g., be the same point in time in as) the in-point of layer b 2580.
Thus, for example, a rules engine of a temporal sculpting module may evaluate the rules associated with composition 2660 as defined in the project for the composition when the source of content for layer b 2680 changes, and apply the crop to out-point rule specified for layer b 2680 in the project for composition 2660 (e.g., by changing the data associated with layer b 2680 or the composition 2660 in the project). The application of the rule may entail determining an end time for the composition 2660 based on, for example, the out-point of layer b 2680. Notice here that the application of the crop to out-point rule changes the end time of composition 2660 to cause the end time of composition 2660 to match (e.g., be the same point in time in as) the out-point of layer b 2670.
Here, a rules engine of a temporal sculpting module may evaluate the rules associated with composition 2760 as defined in the project for the composition when the source of content for layer b 2780 changes, and apply the crop to out-point and crop to in-point rules specified for layer b 2780 in the project for composition 2760 (e.g., by changing the data associated with layer b 2780 or the composition 2760 in the project). The application of the rules may entail determining both a start time and an end time for the composition 2760 based on, for example, the in-point and out-point of layer b 2780. Notice here that the application of the crop to out-point and crop to in-point rules changes both the start time and end time of composition 2660 to cause the start time of composition 2760 to match (e.g., be the same point in time in as) the in-point of layer b 2780 and the end time of composition 2760 to match the out-point of layer b 2780.
These cropping rules may also usefully be applied to different or distinct layers of a composition to similar effect.
Here, a rules engine of a temporal sculpting module may evaluate the rules associated with composition 2860 as defined in the project for the composition when the source of content for layer b 2880 changes, and apply the crop to out-point and crop to in-point rules specified for layer b 2880 and layer a 2870 in the project for composition 2860 (e.g., by changing the data associated with layer b 2880, layer a 2870 or the composition 2860 in the project). The application of the rules may entail determining both a start time and an end time for the composition 2860 based on, for example, the in-point of layer a 2870 and the out-point of layer b 2880. Notice here that the application of the crop to out-point and crop to in-point rules changes both the start time and end time of composition 2860 to cause the start time of composition 2860 to match (e.g., be the same point in time in as) the in-point of layer a 2870 and the end time of composition 2860 to match the out-point of layer b 2880. Notice as well that the change in layer b 2880 caused the application of both the crop to in-point rule associated with layer a 2870 and the crop to out-point rule associated with layer b 2880 (despite the fact that layer a 2870 may not have changed).
It may now be useful to illustrate other applications and uses of embodiments of time-sculpting rules for digital compositions as described herein. The examples and applications and uses may reflect real-world applications and uses for the time-sculpting rules and illustrate the efficacy and usefulness of such time-sculpting rules. For example, it is often the case that digital editors may desire to have a composition with a layers that include a dynamic intro, a main segment and a trailing outro. As noted above, however, the content of the layers may change (sometimes often) when creating the composition. Using embodiments of the time-sculpting rules as discussed then, a digital editor may define rules for the layers of such a composition so that the desired temporal relationships between certain layers of the composition may be maintained.
For the above described scenario, in which a composition includes a dynamic intro, a main segment and a trailing outro,
Here, a rules engine of a temporal sculpting module may evaluate the rules associated with composition 2960 as defined in the project for the composition when the source of content for intro layer 2980 or main layer 2990 changes, and apply the shift in-point to out-point rules with overlap specified for the main layer 2990 and outro layer 2970 and the crop to out-point rule specified for the outro layer 2970 in the project for composition 2960 (e.g., by changing the data associated with main layer 2990, outro layer 2970 or the composition 2960 in the project). Notice here that the application of the shift to in-point rule with overlap specified for the for the main layer 2990 causes the in-point of main layer 2990 to be a point in time in the composition defined by intro layer's (the target layer) out-point minus the number of frames specified as the overlap (e.g., 15 frames). In other words, the in-point of main layer 2990 may be defined to be the number of overlap frames earlier than the out-point of intro layer 2980. Similarly, the application of the shift to in-point rule with overlap specified for the for the outro layer 2970 causes the in-point of outro layer 2970 to be a point in time in the composition defined by main layer's (the target layer) out-point minus the number of frames specified as the overlap (e.g., 15 frames). In other words, the in-point of outro layer 2970 may be defined to be the number of overlap frames earlier than the out-point of main layer 2990. Additionally, the application of the crop to out-point rule associated with outro layer 2970 causes the end point of composition 2960 to be the same as the out-point of outro layer 2970.
Now suppose that a composition includes an intro layer, a main layer and an outro layer, and a digital editor wishes to include a graphic layer that is displayed as long as the main layer is displayed in the composition. To ensure that this temporal arrangement is maintained in such a scenario, a digital editor may utilize embodiments of the time-sculpting rules presented herein for their composition.
A rules engine of a temporal sculpting module may evaluate the rules associated with composition 3060 as defined in the project for the composition when the source of content for main layer 3080 or outro layer 3070 changes, and apply the shift in-point to out-point rules with overlap and the crop to out-point rule specified for the outro layer 3070, and the in-point trim to in-point rule and out-point trims to out-point rule specified for graphic layer 3050 in the project for composition 3060 (e.g., by changing the data associated with main layer 3080, outro layer 3070 or the composition 3060 in the project). Notice here that the application of the in-point trims to in-point and out-point trims to out-point rules specified for the graphic layer 3050 causes the in-point of the graphic layer 3050 to be the same point in time as the in-point of the main layer 3080 and the out-point of graphic layer 3050 to be the same point in time as the out-point of main layer 3080 (e.g., the graphic layer 3050 will be displayed in the composition at the same time as main layer 3080). Moreover, the in-point shifts to out-point rule plus overlap specified for the outro layer 3070 causes the in-point of outro layer 3070 to be a point in time in the composition defined by main layer's (the target layer) out-point minus the number of frames specified as the overlap (e.g., 15 frames). In other words, the in-point of outro layer 3070 may be defined to be the number of overlap frames earlier than the out-point of main layer 3080. Additionally, the application of the crop to out-point rule associated with outro layer 3070 causes the end point of composition 3060 to be the same as the out-point of outro layer 3070.
Generally then, embodiments of time sculpting rules as disclosed may be utilized to ensure that a desired temporal arrangement between layer of a composition is maintained, irrespective of alterations to certain layers. As a more general scenario suppose that a composition includes an intro, with a number of clips it is desired to display sequentially, followed by an outro. To ensure that this temporal arrangement is maintained in such a scenario, with introducing dead space or other artifacts, a digital editor may utilize embodiments of the time-sculpting rules presented herein for their composition.
Specifically,
In
Here, a rules engine of a temporal sculpting module may evaluate the rules associated with composition 3160 as defined in the project for the composition when the source of content for one of the clip (1, 2, 3, or 4) layers 3172, 3174, 3176, 3178 changes and apply the shift in-point to out-point rules with overlap specified for clip (1, 2, 3, or 4) layers 3172, 3174, 3176, 3178 and outro layer 3170 and the crop to out-point rule specified for the outro layer 3170 in the project for composition 3160 (e.g., by changing the data associated with clip (1, 2, 3, or 4) layers 3172, 3174, 3176, 3178, outro layer 3170 or the composition 3160 in the project). Notice here that the application of the shift to in-point with overlap rules specified for clip (1, 2, 3, or 4) layers 3172, 3174, 3176, 3178 and outro layer 3170 causes the in-point of clip 1 layer 3172 to be a point in time in the composition defined by intro layer's (the target layer) out-point minus the number of frames specified as the overlap (e.g., 15 frames); the in-point of clip 2 layer 3174 to be a point in time in the composition defined by clip 1 layer's (the target layer) out-point minus the number of frames specified as the overlap (e.g., 15 frames); the in-point of clip 3 layer 3176 to be a point in time in the composition defined by clip 2 layer's (the target layer) out-point minus the number of frames specified as the overlap (e.g., 15 frames); the in-point of clip 4 layer 3178 to be a point in time in the composition defined by clip 3 layer's (the target layer) out-point minus the number of frames specified as the overlap (e.g., 15 frames); and the in-point of outro layer 3170 to be a point in time in the composition defined by clip 4 layer's (the target layer) out-point minus the number of frames specified as the overlap (e.g., 15 frames). Additionally, the application of the crop to out-point rule associated with outro layer 3170 causes the end point of composition 3160 to be the same as the out-point of outro layer 3170.
Now that embodiments of the time-sculpting rules implemented a temporal sculpting module of a digital compositing platform have been presented, it will be useful to discuss examples of the use of embodiments of such a temporal sculpting module in the context of the use of a digital compositing platform. Attention is therefore directed to
Interface 3200 of a digital compositing platform may include a composition timeline area 3210, a composition layer display area 3220, a layer source asset area 3230 and a composition viewer area 3240. The interface 3200 may also include temporal sculpting module interface areas 3250, 3260. In particular, these areas may include a timeline utility area 3250 and a layer effects control area 3260.
Timeline invalidation (e.g., a change in the content of a layer, as a result of either a change of the original content or the substitution of different content) may occur in a variety of manners, as elaborated on above. The composition (e.g., including the layers with the changed content) can then be altered according to the defined template (e.g., the set of temporal sculpting rules for at least one layer) so that the layers and the composition adhere to the set of temporal sculpting rules. In one embodiment, it may be desired by users to apply the template (e.g., the set of rules) to instances of the composition that include multiple sources of content for each layer. To facilitate this approach, embodiments of the digital compositing platform including the temporal sculpting module as described may allow the definition of multiple sources for one or more of the layers of the composition and the ability to process a composition according to each definition of the layers.
For example, as depicted in
The user can then initiate a timeline invalidation using timeline utility area 3250 as depicted in
As the content of one or more layers of the composition have been altered, the temporal sculpting module may apply the time-sculpting rules of the composition as defined for one or more of the layers in the project. Specifically, the layers of the composition may be rearranged (e.g., by shifting, trimming, stretching or cropping) the appropriate layers of composition as discussed above according to the rules specified for the layers of the composition. This rearrangement may adjust the data (e.g., the in-point, out-point, start time, end time, playback speed, etc.) associated with one or more layers in the project. Such rearrangement may thus be done automatically without further user involvement. In this manner, layers within a composition can be made to automatically interact with one another in a composition with respect to, for example, start or end time, playback speed, in-point, out-point or other points associated with the layers or compositions. The composition layer display area 3220 will display the timeline and layers of the composition based on the rearranged layers as depicted in the embodiment of
This process may then be repeated, as depicted in
A user may also cause the digital compositing platform to render each instance of the composition as defined in a data file (e.g., data file 3294) for the composition. In this case, a user may hit a “Render” button in the timeline utility area 3250. For each instance of the composition defined in the data file (e.g., data file 3294), the layers may be rearranged according to the set of time sculpting rules and the resulting composition queued for rendering by the digital compositing platform. Specifically, in one embodiment, the temporal sculpting module may iterate through each row of data in the data file linked to the project (e.g., data file 3294) and read the sources for the layers as defined in the row of the read data file. The sources for the layers as defined in the retrieved row of data can then be updated in the project file for the composition, changing the content of these layers (while layers that have not changed or are not specified in the data file may be as previously defined in the project for the composition). The temporal sculpting module may then queue that instance of the composition for rendering by the digital compositing platform and read the next row of the data file (if another row is present). The digital compositing platform can then render each instance of the composition and save the resulting output file (e.g., the resulting .mov, .mp4, .avi, etc). The resulting compositions will thus contain the content specified for each layer arranged according to the specified time-sculpting rules.
Now that embodiments of digital compositing platforms that include temporal sculpting modules that implement time-sculpting rules have been explained, attention is now directed to embodiments of methods for applying those time-sculpting rules. In particular,
Looking first at
Using the array, then, each of the dynamic layers may be initialized and reset if needed (STEP 3320). Based on the set of rules of the template, the resetting process may (re)set the playback speed of all the dynamic layers to 100% (e.g., normal playback speed) for all layers (e.g., if a layer's playback speed it not already at 100%). During this step it can also be determined if any of the rules for a layer specify that the end point or start point of a layer is to be preserved. If so, the in-point of the layer may be set to the start time (if the start of the layer is to be preserved) or the out-point of the layer set to the end point of the layer (if the start of the layer is to be preserved).
Once the dynamic layers are initialized and reset, the layers may be arranged according to the set of rules of the template (STEP 3330). The arrangement of the layers may be done according to a nested depth of the composition of the project (referred to as the top-most or overall composition). In particular, in one embodiment, the maximum nested depth of the overall composition can be determined. For each level of depth, the layers can then be arranged according to the rules defined for those layers according to the template. This arrangement may include trimming one or more of the layers (e.g., setting a layer's in-point or out-point in the project based on a target layer's in-point or out-point); shifting one or more of the layers (e.g., setting a layer's start time or end time in the project so the layer's in-point or out-point reaches a target layer's in-point or out-point); cropping one or more layers (which may be compositions) (e.g., by adjusting the duration of the a containing composition where the beginning of a composition starts at a layer's in-point or the end of a composition ends at a layer's out-point, or both); or stretching one or more layers (e.g., by changing the duration of a layer in the project by adjusting the layer's playback speed until the layer's out-point reached the in-point or out-point of a target layer, or the end of the layer's containing composition).
Each of the steps of
Each layer of the project may be inspected (STEP 3410) to determine if that layer is a dynamic layer (STEP 3420). In one embodiment, for a particular layer the rules of the template may be obtained and evaluated to determine if that layer is referenced by any of the rules of the template. If the layer is referenced it can be determined that the layer is marked as dynamic, while if no rule of the template references that layer it can be determined that the layer is not dynamic. If the layer is determined not to be a dynamic layer (NO branch of STEP 3420), it can be determined if the last layer of the project has been evaluated (STEP 3470). If it is the last layer, the harvesting of the layers may be complete (NO branch of STEP 3470), otherwise (YES branch of STEP 3470) the next layer of the project may be evaluated to determine if it is a dynamic layer (STEP 3420).
If, however, the layer is determined to be dynamic (e.g., is referenced by a rule) (YES branch of STEP 3420) the layer may be added to an array of dynamic layers (referred to in the following FIGURES as the “Dynamic Layers Array”) (STEPS 3430, 3440). In one embodiment, the adding of the layer as a dynamic layer to the Dynamic Layer Array may comprise pushing or putting an object for that layer into the array. This object may be a reference to the layer in the project and thus may reference or include the associated data or properties of that layer, including, for example, the start time, end time, in-point, out-point, playback speed, containing or sub compositions or layers (composition(s) which contain the layer or compositions or layers which the layer includes), etc.
Once layer is determined to be dynamic and added to the Dynamic Layer Array, it can further be determined if that dynamic layer has a footage (e.g., not a still image) source (STEP 3450). If the layer has a footage source (YES branch of STEP 3450) the layer's footage source may be invalidated and updated to the new source (STEP 3460). In one embodiment, this determination may entail determining if the footage source for that layer has changed or been altered from a source of content currently associated with that layer in the project. Thus, for example, as discussed above a data file may include footage sources for one or more layers of the composition of the project or the user may have otherwise specified footage sources for one or more layers of the composition. From the footage sources specified (e.g., the data file, row of the data file, user specification, etc.) it can be determined if there is a footage source for the layer different than the footage source currently associated with the layer in the project. In one embodiment, if the dynamic layer has a footage source (regardless of whether the source has changed or not), the footage source of the layer may be invalidated and updated (e.g., in the Dynamic Layer Array), such that any changes in the footage source may be accounted for (e.g., duration, location, etc.). It will be understood, that, in some embodiments, as the Dynamic Layer Array may include objects that reference the corresponding layer in the project, an update of the data associated with the layer in the Dynamic Layer Array may serve to (or may actually be) an update of the data associated with the layer in the project itself.
If the dynamic layer is determined not to have a footage source (NO branch of STEP 3450), it can be determined if the last layer of the project has been evaluated (STEP 3470). If it is the last layer of the project, the harvesting of the layers may be complete (NO branch of STEP 3470), otherwise (YES branch of STEP 3470) the next layer may be evaluated to determine if it is a dynamic layer (STEP 3420).
Using the Dynamic Layer Array, then, each of the dynamic layers found may be initialized and reset if needed.
More specifically, in one embodiment, each dynamic layer of the Dynamic Layer Array (STEP 3510) may be iterated through to (re)set the playback speed of that dynamic layers to 100% (STEP 3512) (e.g., each layer's associated playback speed in the Dynamic Layer Array may be set to 100%). Once the last layer of the Dynamic Layer Array has been processed (YES branch of STEP 3514), each layer of the Dynamic Layer Array may be iterated through again (STEP 3520). In this loop, for each layer, it can be determined if the layer has a finite duration (STEP 3522). For example, videos or compositions may be of a finite duration, while still images may not have a finite duration. Other examples are possible. If the dynamic layer has a finite duration (YES branch of STEP 3522) it can be determined if a rule of the template for the project indicates that the head of that layer is to be preserved (e.g., a user has checked the “Preserve Start” box when setting the control parameter for that layer in the Trim menu of an interface) (STEP 3526). If a rule indicates that the head (or start) of the layer is to be preserved, the layer's associated in-point may be set to the layer's start time (e.g., the layer's associated in-point in the Dynamic Layer Array may be set to the layer's start time) (STEP 3530).
Similarly, it can be determined if a rule of the template for the project indicates that the tail of that layer is to be preserved (e.g., a user has checked the “Preserve End” box when setting the control parameter for that layer in the Trim menu of an interface). If a rule indicates that the tail (or end) of the layer is to be preserved (YES branch of STEP 3532), the layer's associated out-point may be set to the layer's end time (e.g., the layer's associated out-point in the Dynamic Layer Array may be set to the layer's end time) (STEP 3538). If the last layer in the Dynamic Layer Array has been processed, the reset and initialization of the layers may end (YES branch of STEP 3540). Otherwise, the next layer may be processed (NO branch of STEP 3540).
If a dynamic layer does not have a finite duration (NO branch of STEP 3522) it can be determined if a rule of the template for the project indicates that the head of that layer is to be preserved (e.g., a user has checked the “Preserve Start” box when setting the control parameter for that layer in the Trim menu of an interface) (STEP 3524). If a rule indicates that the head (or start) of the layer is to be preserved, in this case the layer's associated in-point may be set to the start time of the composition that contains that layer (e.g., the layer's associated in-point in the Dynamic Layer Array may be set to the containing composition's start time) (STEP 3528).
It can also be determined if a rule of the template for the project indicates that the tail of that layer is to be preserved (e.g., a user has checked the “Preserve End” box when setting the control parameter for that layer in the Trim menu of an interface). If a rule indicates that the tail (or end) of the layer is to be preserved (YES branch of STEP 3534), the layer's associated out-point may be set to the end time or the composition that contains that layer (e.g., the layer's associated out-point in the Dynamic Layer Array may be set to the containing composition's end time) (STEP 3536). If the last layer in the Dynamic Layer Array has been processed, the reset and initialization of the layers may end (YES branch of STEP 3540). Otherwise, the next layer may be processed (NO branch of STEP 3540).
Once the dynamic layers are initialized and reset, the layers may be arranged according to the set of rules of the template. The arrangement of the layers may be done according to a nested depth of the composition of the project (referred to as the top-most or overall composition). In particular, in one embodiment, the maximum nested depth of the overall composition can be determined. For each level of depth, the layers can then be arranged according to the rules defined for those layers according to the template. In one embodiment, this may include iterating through the layers in both a forward direction and performing arrangement of the layers, followed by iterating through the layers at that depth in the reverse direction and performing arrangement of the layers. The arrangement of the layers in each direction may include trimming, shifting; cropping or stretching one or more layers.
Once the depth level (N) is determined, a loop may be executed for each depth level (e.g., 1 to N) (STEP 3612), where for each level the layers (e.g., all layers at each level) can be arranged in a forward direction and arranged in a reverse direction. Accordingly, as will be recalled from the above discussion, the layers may be ordered according to depth in the Dynamic Layer Array, with layers a higher depth (e.g., less nested) appearing before those at a greater depth (more nested). In other words, using the tree structure of a composition for analogy again, the layers of a composition may be ordered in the Dynamic Layer Array such that layers at a higher level of the tree (e.g., shorter length path to the root node) appear before layers at a lower level of the tree (e.g. longer length path to the root node). The layers are thus initially iterated through for a depth level starting with the first layer in the Dynamic Layer Array and iterating through them sequentially (STEP 3614) (referred to as being processed in an “upstream” or forward direction). For each layer, that layer can then be trimmed (if needed) (STEP 3616) by setting the layer's in-point or out-point based on a target layer's in-point or out-point; shifted (if needed) (STEP 3618) by setting the layer's start time or end time so the layer's in-point or out-point reaches a target layer's in-point or out-point; cropped (if needed) (STEP 3620) by adjusting the duration of the a containing composition; or stretched (if needed) (STEP 3638) by changing the duration of a layer in the project by adjusting the layer's playback speed until the layer's out-point reached the in-point or out-point of a target layer, or the end of the layer's containing composition. Each layer of the Dynamic Layer Array can thus be iterated through sequentially until it is determined (STEP 3622) that there are no more layers in the Dynamic Layer Array to be arranged in an upstream order (NO branch of STEP 3622).
When it is determined that all the layers of the Dynamic Layer Array have been iterated through in an upstream or forward direction (e.g., from higher level to lower levels) ((NO branch of STEP 3622) the layers of the Dynamic Layer Array can then be iterated through in a downstream or reverse direction (e.g., from lower levels to higher levels). Again, remember the layers may be in the order according to depth in the Dynamic Layer Array, with layers at a higher depth (e.g., less nested) appearing before those at a greater depth (more nested). Thus, in this embodiment, the layers are now iterated through for the depth level starting with the last layer in the Dynamic Layer Array and iterating through them in reverse sequential order (STEP 3624) (referred to as being processed in a “downstream” direction). Again, for each layer, that layer can then be trimmed (if needed) (STEP 3626); shifted (if needed) (STEP 3628); cropped (if needed) (STEP 3630); or stretched (if needed) (STEP 3632). Each layer of the Dynamic Layer Array can thus be iterated through in reverse sequential order until it is determined (STEP 3634) that there are no more layers in the Dynamic Layer Array to be arranged in an downstream order (NO branch of STEP 3622). If, at this point it is determined that a number of iterations equal to the depth level (N) have been performed (YES branch of STEP 3636) the arrangement of the layers according to the time-sculpting rules may be complete. If, however, a number of iterations is not equal to the depth level (N), the Dynamic Layer Array may again be iterated through in a forward and reverse direction (NO branch of STEP 3636).
If no rule indicates that the head (or start) of the layer is to be preserved (NO branch of STEP 3710), it can be determined if a rule of the template specifies that the in-point of this layer is to be trimmed to in-point of a target (sibling) layer. If such a rule exists (YES branch of STEP 3720) the layer's associated in-point may be set to the same point in time as the sibling layer's in-point (e.g., the layer's associated in-point in the Dynamic Layer Array may be set to the sibling layer's in-point) (STEP 3740). At this point, any overlap designated in the rule may also be accounted for (e.g., if an overlap of a number of frames is specified in the rule, the layer's associated in-point may be set to the same point in time as the sibling layer's in-point with the amount of overlap designated by the rule). While not shown, similar steps may be performed for the in-point of the layer and the out-point of any sibling layer.
It can then be determined if a rule of the template for the project indicates that the tail; of that layer is to be preserved (e.g., a user has checked the “Preserve End” box when setting the control parameter for that layer in the Trim menu of an interface) (STEP 3750). If a rule indicates that the tail (or end) of the layer is to be preserved (YES branch of STEP 3750), the layer's associated out-point may be set to the same point in time as the layer's end time (e.g., the layer's associated out-point in the Dynamic Layer Array may be set to the end time of the layer) (STEP 3760). It will be noted here again, that in certain embodiments, these steps or similar steps may occur in the reset and initialization of layers of the composition and may not need to be repeated when trimming the layer.
If no rule indicates that the tail (or end) of the layer is to be preserved (NO branch of STEP 3750), it can be determined if a rule of the template specifies that the out-point of this layer is to be trimmed to an out-point of a target (sibling) layer. If such a rule exists (YES branch of STEP 3780) the layer's associated out-point may be set to the same point in time as the sibling layer's out-point (e.g., the layer's associated out-point in the Dynamic Layer Array may be set to the sibling layer's out-point) (STEP 3770). At this point, any overlap designated in the rule may also be accounted for (e.g., if an overlap of a number of frames is specified in the rule, the layer's associated out-point may be set to the same point in time as the sibling layer's out-point with the amount of overlap designated by the rule). While not shown, similar steps may be performed for the out-point of the layer and the in-point of any sibling layer.
Moving now to
If no rule specifies that the in-point of this layer is to be trimmed to an in-point of a target (sibling) layer (NO branch of STEP 3810), it can be determined if a rule specifies that the in-point of this layer is to be trimmed to an out-point of a sibling layer. If such a rule exists (YES branch of STEP 3820) the layer may be shifted with respect to the time line of the containing composition until the layer's in-point is the same time as the sibling layer's out-point (STEP 3822). In one embodiment, the amount of time needed to add (or subtract) to (or from) the current in-point of the layer to cause the in-point of the layer to be the same as the out-point of the sibling layer may be determined and this amount of time added to (or subtracted from) both the in-point and the out-point of the layer (e.g., the amount of time added to (or subtracted from) the layer's associated in-point and out-point in the Dynamic Layer Array). At this point, any overlap designated in the rule may also be accounted for (e.g., if an overlap of a number of frames is specified in the rule, the amount of time added (or subtracted) may account for the amount of overlap designated by the rule).
If no rule specifies that the in-point of this layer is to be trimmed to an out-point of a target (sibling) layer (NO branch of STEP 3820), it can be determined if a rule specifies that the out-point of this layer is to be trimmed to an in-point of a sibling layer. If such a rule exists (YES branch of STEP 3830) the layer may be shifted with respect to the time line of the containing composition until the layer's out-point is the same time as the sibling layer's in-point (STEP 3832). In one embodiment, the amount of time needed to add (or subtract) to (or from) the current out-point of the layer to cause the out-point of the layer to be the same as the in-point of the sibling layer may be determined and this amount of time added to (or subtracted from) both the in-point and the out-point of the layer (e.g., the amount of time added to (or subtracted from) the layer's associated in-point and out-point in the Dynamic Layer Array). At this point, any overlap designated in the rule may also be accounted for (e.g., if an overlap of a number of frames is specified in the rule, the amount of time added (or subtracted) may account for the amount of overlap designated by the rule).
If no rule specifies that the out-point of this layer is to be trimmed to an in-point of a sibling layer (NO branch of STEP 3830), it can be determined if a rule specifies that the out-point of this layer is to be trimmed to an out-point of a sibling layer. If such a rule exists (YES branch of STEP 3840) the layer may be shifted with respect to the time line of the containing composition until the layer's out-point is the same time as the sibling layer's out-point (STEP 3842). In one embodiment, the amount of time needed to add (or subtract) to (or from) the current out-point of the layer to cause the out-point of the layer to be the same as the out-point of the sibling layer may be determined and this amount of time added to (or subtracted from) both the in-point and the out-point of the layer (e.g., the amount of time added to (or subtracted from) the layer's associated in-point and out-point in the Dynamic Layer Array). At this point, any overlap designated in the rule may also be accounted for (e.g., if an overlap of a number of frames is specified in the rule, the amount of time added (or subtracted) may account for the amount of overlap designated by the rule).
For each of the layers, it can be determined if there is a rule designating that layer's out-point as the end of the containing composition (STEP 3922). If there is such a rule (YES branch of STEP 3922), the duration or end time of the containing composition may be set to the out-point of that layer (STEP 3924) (e.g., the composition's associated end time may be set to the same time as the out-point of that layer in the Dynamic Layer Array). If the last layer of the composition has been processed at this point (YES branch of STEP 3926) the cropping of the composition may be complete.
If no rule indicates that the layer is to be stretched to the in-point of a target layer (NO branch of STEP 4014), it can be determined if a rule of the template for the project indicates that the layer is to be stretched to the out-point of a target layer (STEP 4016). If a rule indicates that the layer is to be stretched to an out-point of a target layer a stretch factor may be calculated. This stretch factor may include, or may be used to determine, a playback speed (e.g., a percentage) based on the layer's duration and the target layer's out-point, such that the layer's out-point is the same as the target layer's out-point (STEP 4022). The layer's playback speed can then be set to the determined playback speed (e.g., the layer's associated playback speed in the Dynamic Layer Array may be set to the determined playback speed) (STEP 4076).
If no rule indicates that the layer is to be stretched to an out-point of a target layer (NO branch of STEP 4016), it can be determined if a rule of the template for the project indicates that the layer is to be stretched to the end time of the composition which contains the layer (STEP 4018). If a rule indicates that the layer is to be stretched to an end of the containing composition, a stretch factor may be calculated. This stretch factor may include, or may be used to determine, a playback speed (e.g., a percentage) based on the layer's duration and the containing composition's end time, such that the layer's out-point is the same as the composition's end time (STEP 4024). The layer's playback speed can then be set to the determined playback speed (e.g., the layer's associated playback speed in the Dynamic Layer Array may be set to the determined playback speed) (STEP 4076).
Although the invention has been described with respect to specific embodiments thereof, these embodiments are merely illustrative, and not restrictive of the invention. The description herein of illustrated embodiments of the invention, including the description in the Abstract and Summary, is not intended to be exhaustive or to limit the invention to the precise forms disclosed herein (and in particular, the inclusion of any particular embodiment, feature or function within the Abstract or Summary is not intended to limit the scope of the invention to such embodiment, feature or function). Rather, the description is intended to describe illustrative embodiments, features and functions in order to provide a person of ordinary skill in the art context to understand the invention without limiting the invention to any particularly described embodiment, feature or function, including any such embodiment feature or function described in the Abstract or Summary. While specific embodiments of, and examples for, the invention are described herein for illustrative purposes only, various equivalent modifications are possible within the spirit and scope of the invention, as those skilled in the relevant art will recognize and appreciate. As indicated, these modifications may be made to the invention in light of the foregoing description of illustrated embodiments of the invention and are to be included within the spirit and scope of the invention. Thus, while the invention has been described herein with reference to particular embodiments thereof, a latitude of modification, various changes and substitutions are intended in the foregoing disclosures, and it will be appreciated that in some instances some features of embodiments of the invention will be employed without a corresponding use of other features without departing from the scope and spirit of the invention as set forth. Therefore, many modifications may be made to adapt a particular situation or material to the essential scope and spirit of the invention.
Reference throughout this specification to “one embodiment”, “an embodiment”, or “a specific embodiment” or similar terminology means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment and may not necessarily be present in all embodiments. Thus, respective appearances of the phrases “in one embodiment”, “in an embodiment”, or “in a specific embodiment” or similar terminology in various places throughout this specification are not necessarily referring to the same embodiment. Furthermore, the particular features, structures, or characteristics of any particular embodiment may be combined in any suitable manner with one or more other embodiments. It is to be understood that other variations and modifications of the embodiments described and illustrated herein are possible in light of the teachings herein and are to be considered as part of the spirit and scope of the invention.
In the description herein, numerous specific details are provided, such as examples of components and/or methods, to provide a thorough understanding of embodiments of the invention. One skilled in the relevant art will recognize, however, that an embodiment may be able to be practiced without one or more of the specific details, or with other apparatus, systems, assemblies, methods, components, materials, parts, and/or the like. In other instances, well-known structures, components, systems, materials, or operations are not specifically shown or described in detail to avoid obscuring aspects of embodiments of the invention. While the invention may be illustrated by using a particular embodiment, this is not and does not limit the invention to any particular embodiment and a person of ordinary skill in the art will recognize that additional embodiments are readily understandable and are a part of this invention.
Embodiments discussed herein can be implemented in a computer communicatively coupled to a network (for example, the Internet), another computer, or in a standalone computer. As is known to those skilled in the art, a suitable computer can include a central processing unit (“CPU”), at least one read-only memory (“ROM”), at least one random access memory (“RAM”), at least one hard drive (“HD”), and one or more input/output (“I/O”) device(s). The I/O devices can include a keyboard, monitor, printer, electronic pointing device (for example, mouse, trackball, stylus, touch pad, etc.), or the like. In embodiments of the invention, the computer has access to at least one database over the network.
ROM, RAM, and HD are computer memories for storing computer-executable instructions executable by the CPU or capable of being compiled or interpreted to be executable by the CPU. Suitable computer-executable instructions may reside on a computer readable medium (e.g., ROM, RAM, and/or HD), hardware circuitry or the like, or any combination thereof. Within this disclosure, the term “computer readable medium” not limited to ROM, RAM, and HD and can include any type of data storage medium that can be read by a processor. For example, a computer-readable medium may refer to a data cartridge, a data backup magnetic tape, a floppy diskette, a flash memory drive, an optical data storage drive, a CD-ROM, ROM, RAM, HD, or the like. The processes described herein may be implemented in suitable computer-executable instructions that may reside on a computer readable medium (for example, a disk, CD-ROM, a memory, etc.). Alternatively, the computer-executable instructions may be stored as software code components on a direct access storage device array, magnetic tape, floppy diskette, optical storage device, or other appropriate computer-readable medium or storage device.
Any suitable programming language can be used to implement the routines, methods or programs of embodiments of the invention described herein, including C, C++, Java, JavaScript, HTML, or any other programming or scripting code, etc. Other software/hardware/network architectures may be used. For example, the functions of the disclosed embodiments may be implemented on one computer or shared/distributed among two or more computers in or across a network. Communications between computers implementing embodiments can be accomplished using any electronic, optical, radio frequency signals, or other suitable methods and tools of communication in compliance with known network protocols.
Different programming techniques can be employed such as procedural or object oriented. Any particular routine can execute on a single computer processing device or multiple computer processing devices, a single computer processor or multiple computer processors. Data may be stored in a single storage medium or distributed through multiple storage mediums, and may reside in a single database or multiple databases (or other data storage techniques). Although the steps, operations, or computations may be presented in a specific order, this order may be changed in different embodiments. In some embodiments, to the extent multiple steps are shown as sequential in this specification, some combination of such steps in alternative embodiments may be performed at the same time. The sequence of operations described herein can be interrupted, suspended, or otherwise controlled by another process, such as an operating system, kernel, etc. The routines can operate in an operating system environment or as stand-alone routines. Functions, routines, methods, steps and operations described herein can be performed in hardware, software, firmware or any combination thereof.
Embodiments described herein can be implemented in the form of control logic in software or hardware or a combination of both. The control logic may be stored in an information storage medium, such as a computer-readable medium, as a plurality of instructions adapted to direct an information processing device to perform a set of steps disclosed in the various embodiments. Based on the disclosure and teachings provided herein, a person of ordinary skill in the art will appreciate other ways and/or methods to implement the invention.
It is also within the spirit and scope of the invention to implement in software programming or code an of the steps, operations, methods, routines or portions thereof described herein, where such software programming or code can be stored in a computer-readable medium and can be operated on by a processor to permit a computer to perform any of the steps, operations, methods, routines or portions thereof described herein. The invention may be implemented by using software programming or code in one or more general purpose digital computers, by using application specific integrated circuits, programmable logic devices, field programmable gate arrays, optical, chemical, biological, quantum or nanoengineered systems, components and mechanisms may be used. In general, the functions of the invention can be achieved by any means as is known in the art. For example, distributed, or networked systems, components and circuits can be used. In another example, communication or transfer (or otherwise moving from one place to another) of data may be wired, wireless, or by any other means.
A “computer-readable medium” may be any medium that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, system or device. The computer readable medium can be, by way of example only but not by limitation, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, system, device, propagation medium, or computer memory. Such computer-readable medium shall generally be machine readable and include software programming or code that can be human readable (e.g., source code) or machine readable (e.g., object code). Examples of non-transitory computer-readable media can include random access memories, read-only memories, hard drives, data cartridges, magnetic tapes, floppy diskettes, flash memory drives, optical data storage devices, compact-disc read-only memories, and other appropriate computer memories and data storage devices. In an illustrative embodiment, some or all of the software components may reside on a single server computer or on any combination of separate server computers. As one skilled in the art can appreciate, a computer program product implementing an embodiment disclosed herein may comprise one or more non-transitory computer readable media storing computer instructions translatable by one or more processors in a computing environment.
A “processor” includes any, hardware system, mechanism or component that processes data, signals or other information. A processor can include a system with a general-purpose central processing unit, multiple processing units, dedicated circuitry for achieving functionality, or other systems. Processing need not be limited to a geographic location, or have temporal limitations. For example, a processor can perform its functions in “real-time,” “offline,” in a “batch mode,” etc. Portions of processing can be performed at different times and at different locations, by different (or the same) processing systems.
It will also be appreciated that one or more of the elements depicted in the drawings/figures can also be implemented in a more separated or integrated manner, or even removed or rendered as inoperable in certain cases, as is useful in accordance with a particular application. Additionally, any signal arrows in the drawings/Figures should be considered only as exemplary, and not limiting, unless otherwise specifically noted.
As used herein, the terms “comprises,” “comprising,” “includes,” “including,” “has,” “having,” or any other variation thereof, are intended to cover a non-exclusive inclusion. For example, a process, product, article, or apparatus that comprises a list of elements is not necessarily limited only those elements but may include other elements not expressly listed or inherent to such process, product, article, or apparatus.
Furthermore, the term “or” as used herein is generally intended to mean “and/or” unless otherwise indicated. For example, a condition A or B is satisfied by any one of the following: A is true (or present) and B is false (or not present), A is false (or not present) and B is true (or present), and both A and B are true (or present). As used herein, a term preceded by “a” or “an” (and “the” when antecedent basis is “a” or “an”) includes both singular and plural of such term (i.e., that the reference “a” or “an” clearly indicates only the singular or only the plural). Also, the meaning of “in” includes “in” and “on” unless the context clearly dictates otherwise.
This application is a continuation of, and claims a benefit of priority under 35 U.S.C. 120 of the filing date of U.S. patent application Ser. No. 15/689,752, filed Aug. 29, 2017, entitled “SYSTEM AND METHOD FOR AUTOMATING THE CONFIGURATION AND SEQUENCING OF TEMPORAL ELEMENTS WITHIN A DIGITAL VIDEO COMPOSITION,” which claims the benefit of priority under 35 U.S.C. § 119 to U.S. Provisional Application No. 62/381,882, filed Aug. 31, 2016, entitled “SYSTEM AND METHOD FOR AUTOMATING THE CONFIGURATION AND SEQUENCING OF TEMPORAL ELEMENTS WITHIN A VIDEO COMPOSITION,” the entire contents of which are hereby expressly incorporated by reference for all purposes.
Number | Name | Date | Kind |
---|---|---|---|
5872564 | Snibbe et al. | Feb 1999 | A |
5917549 | Simons et al. | Jun 1999 | A |
5919249 | Herbstman et al. | Jul 1999 | A |
5929867 | Herbstman et al. | Jul 1999 | A |
6084597 | Herbstman et al. | Jul 2000 | A |
6115051 | Simons et al. | Sep 2000 | A |
6683613 | Herbstman et al. | Jan 2004 | B1 |
6809745 | O'Donnell et al. | Oct 2004 | B1 |
7102652 | O'Donnell et al. | Sep 2006 | B2 |
7103839 | Natkin et al. | Sep 2006 | B1 |
7446781 | O'Donnell et al. | Nov 2008 | B2 |
8290253 | Wang et al. | Oct 2012 | B1 |
8358691 | Wang et al. | Jan 2013 | B1 |
8520975 | Wang et al. | Aug 2013 | B2 |
8532421 | Wang et al. | Sep 2013 | B2 |
8666226 | Kalish et al. | Mar 2014 | B1 |
8731329 | Simons et al. | May 2014 | B2 |
8792718 | Bai et al. | Jul 2014 | B2 |
8831348 | Wilk et al. | Sep 2014 | B2 |
8897562 | Bai et al. | Nov 2014 | B2 |
8971584 | Wang et al. | Mar 2015 | B2 |
9208577 | Acquavelta et al. | Dec 2015 | B2 |
9299160 | Acquavella et al. | Mar 2016 | B2 |
9697229 | Masinter et al. | Jul 2017 | B2 |
10515665 | Stavchansky | Dec 2019 | B1 |
20140255009 | Svendsen et al. | Sep 2014 | A1 |
Entry |
---|
Xerox XMPie®, retrieved from <<https://www.xerox.com/digital-printing/workflow/printing-software/xmpie/enus.html>>, 4 pages, Copyright 2017. |
CompsFromSpreadsheets, retrieved from <<http://aescripts.com/compsfromspreadsheet/>>, 4 pages, Copyright 2017. |
Open Sesame, retrieved from <<http://aescripts.com/pt_opensesame/>>, 3 pages, Copyright 2017. |
Office Action issued for U.S. Appl. No. 15/689,752, dated Oct. 30, 2018, 6 pages. |
Office Action issued for U.S. Appl. No. 15/689,752, dated May 15, 2019, 6 pages. |
Notice of Allowance issued for U.S. Appl. No. 15/689,752, dated Aug. 16, 2019, 16 pages. |
Number | Date | Country | |
---|---|---|---|
20200020359 A1 | Jan 2020 | US |
Number | Date | Country | |
---|---|---|---|
62381882 | Aug 2016 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 15689752 | Aug 2017 | US |
Child | 16582571 | US |