CN1695111A - Declaratve markup for scoring multiple time-based assets and events within a scene composition system - Google Patents
Declaratve markup for scoring multiple time-based assets and events within a scene composition system Download PDFInfo
- Publication number
- CN1695111A CN1695111A CNA028298462A CN02829846A CN1695111A CN 1695111 A CN1695111 A CN 1695111A CN A028298462 A CNA028298462 A CN A028298462A CN 02829846 A CN02829846 A CN 02829846A CN 1695111 A CN1695111 A CN 1695111A
- Authority
- CN
- China
- Prior art keywords
- media sequence
- time
- sequence
- media
- computer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/40—Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
- G06F16/43—Querying
- G06F16/438—Presentation of query results
- G06F16/4387—Presentation of query results by the use of playlists
- G06F16/4393—Multimedia presentations, e.g. slide shows, multimedia albums
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Processing Or Creating Images (AREA)
Abstract
Description
技术领域technical field
本发明总体上涉及3D图形的模型化语言,并且尤其涉及媒体资产的时间操作。The present invention relates generally to modeling languages for 3D graphics, and more particularly to temporal manipulation of media assets.
背景技术Background technique
实时3D场景再现的常规模型化语言传统上集中在场景结构、几何结构、外部特征以及(在某种程度上)集中在动画和交互性方面。所集中的上述方面受到以下两个因素的影响。第一,已经使3D计算机图形应用适于用户驱动体验,从而其易于在对事件的再现响应的周围被构造。第二,这些应用的大多数采取“尽可能快地来再现它”的方式来进行场景更新,而较少注意时基的保真度。常规的模型化语言无法提供两个媒体资产之间的时间关系的准确性。例如,如果视频资产和音频资产将同时开始,那么这可以通过独立于其它资产为每个资产规定开始时间来实现。这允许开始时间稍有不同。希望由相同的字段来控制每个资产的开始时间,借此达到所述资产的准确同步。媒体资产包括音频媒体、视频媒体、动画、视听媒体、图像或事件。Conventional modeling languages for real-time 3D scene rendering have traditionally focused on scene structure, geometry, external features and (to some extent) on animation and interactivity. The aforementioned aspects of concentration are influenced by the following two factors. First, 3D computer graphics applications have been adapted for user-driven experiences so that they are easily structured around rendered responses to events. Second, most of these applications take a "reproduce it as fast as possible" approach to scene updates, paying less attention to timebase fidelity. Conventional modeling languages cannot provide the accuracy of the temporal relationship between two media assets. For example, if a video asset and an audio asset are to start at the same time, this can be achieved by specifying a start time for each asset independently of the other assets. This allows for slightly different start times. It is desirable to have the same field control the start time of each asset, thereby achieving accurate synchronization of the assets. Media assets include audio media, video media, animation, audiovisual media, images, or events.
由于把全部运动视频和高保真音频并入到混合再现场景中,所以希望递送像高质量电视的观看体验,同时支持观众交互性。希望提供被动的观看体验,它是一种更像电视而不是像网页的观看体验。Due to the incorporation of full motion video and high-fidelity audio into a hybrid rendering scenario, it is desirable to deliver a high-quality television-like viewing experience while supporting viewer interactivity. The hope is to provide a passive viewing experience, one that is more TV-like than web-like.
在说明性的置标语言中,要求达到所想要的输出的语义被隐含在所述输出的描述中。不必提供独立的过程(即,写入一脚本)来获得所想要的输出。说明性语言的一个例子是超级文本标记语言(HTML)。In declarative markup languages, the semantics required to achieve a desired output are implicit in the description of that output. It is not necessary to provide a separate process (ie, write a script) to obtain the desired output. An example of a declarative language is Hypertext Markup Language (HTML).
在其它基于计算机的媒体中先前已经开发的用于计分动画和播放的各种方法,包括Macromedia Director和W3C的同步多媒体集成语言(SMIL)。然而,这些现有的计分系统不允许说明性的合成实时场景,其中动态地合成独立的分数并分级地分解,采用类似空间场景图表的方式来构造时间。例如构造彼此接近的时间块,或构造互相并行(同步)的时间块。常规的计分系统不允许说明性地对变化速率和方向进行分数求值,并且它们也不允许根据标准化“片断完成”输出来说明性地实现模计算策略,其适于迅速汇编并重新使用特性动画。Various methods for scoring animation and playback have been previously developed in other computer-based media, including Macromedia Director and the W3C's Synchronized Multimedia Integration Language (SMIL). However, these existing scoring systems do not allow for the illustrative synthesis of real-time scenes, where independent scores are dynamically synthesized and decomposed hierarchically, employing a spatial scene graph-like fashion to construct time. For example, construct time blocks that are close to each other, or construct time blocks that are parallel (synchronous) to each other. Conventional scoring systems do not allow for declarative evaluation of fractional rates and directions of change, and they do not allow for declarative implementation of modulo calculation strategies in terms of standardized "piece complete" output, which lends itself to rapid compilation and reuse of properties animation.
发明内容Contents of the invention
给出了一种用于说明性置标的系统和方法,其允许对媒体资产进行时间操作。所述媒体资产可以是音频媒体、视频媒体、动画、视听媒体、图像或事件。使用本发明,可以通过采用按顺序、并行或任何其它时间组合播放一个以上媒体来形成媒体序列,其中把媒体插入到另一媒体。使用本发明所创建的媒体序列可以变为新的媒体序列的一部分,并且可以通过与所述新的媒体序列相关联的字段来控制播放所述媒体序列的速率。此外,使用本发明,可以插入媒体序列以便在第一媒体序列结束之前的固定时间开始播放,并且在这种情况下,可以改变第一媒体序列的长度,同时仍然保持距所述第一媒体序列结束的固定时间。A system and method for declarative tagging that allows temporal manipulation of media assets is presented. The media assets may be audio media, video media, animations, audiovisual media, images or events. Using the present invention, a sequence of media can be formed by playing more than one media in sequence, in parallel, or any other time combination, where media is inserted into another media. The media sequence created by using the present invention can become a part of a new media sequence, and the rate of playing the media sequence can be controlled through fields associated with the new media sequence. Furthermore, using the present invention, media sequences can be inserted to start playing at a fixed time before the end of the first media sequence, and in this case, the length of the first media sequence can be changed while still maintaining a distance from said first media sequence A fixed time to end.
附图说明Description of drawings
图1A示出了Blendo的基本体系结构。Figure 1A shows the basic architecture of Blendo.
图1B是举例说明了通过Blendo引擎的内容流的流程图。FIG. 1B is a flow diagram illustrating the flow of content through the Blendo engine.
图2A示出了在分数中媒体序列之间的时间关系。Figure 2A shows the temporal relationship between media sequences in a score.
图2B举例说明了要求预加载的图2的媒体序列的同步。Figure 2B illustrates synchronization of the media sequence of Figure 2 requiring preloading.
图3示出了在交互呈现的各个组成媒体之间的时间关系。Figure 3 shows the temporal relationship between the various constituent media presented interactively.
具体实施方式Detailed ways
Blendo是本发明的示例性实施例,其允许对媒体资产进行时间操作,包括控制动画和可见的成像,并且向正在播放的媒体资产中插入音频媒体、视频媒体、动画和事件数据。图1A示出了基本的Blendo体系结构。在附录A中可以找到Blendo的全面描述。在Blendo体系结构的核心是核心运行时间(Core Runtime)模块10(以下称为核心),其向存在于系统11中的一组对象提供各种应用程序接口(以下为API)元件和对象模型。在正常操作期间,由分析器14把文件解析为原始场景图表16并将其传递到核心10,其中给出其对象的实例并且构建运行时间场景图表。所述对象可以是内置对象18、作者定义的对象20、本地对象24等等。所述对象使用一组可利用的管理器26来获得平台服务32。这些平台服务32包括事件处理、资产加载、媒体播放等等。所述对象使用再现层28来组成用于显示的中间或最终图像。使用页面集成组件30来把Blendo连接到外部环境,所述页面诸如HTML或XML页面。Blendo is an exemplary embodiment of the present invention that allows temporal manipulation of media assets, including controlling animation and visual imaging, and inserting audio media, video media, animation, and event data into the media asset being played. Figure 1A shows the basic Blendo architecture. A comprehensive description of Blendo can be found in Appendix A. At the core of the Blendo architecture is a core runtime (Core Runtime) module 10 (hereinafter referred to as the core), which provides various application program interface (hereinafter referred to as API) elements and object models to a set of objects existing in the system 11. During normal operation, the file is parsed by the analyzer 14 into a raw scene graph 16 and passed to the core 10, where its objects are given instances and a runtime scene graph is built. The objects may be built-in objects 18, author-defined objects 20, native objects 24, and the like. The object obtains platform services 32 using a set of managers 26 available. These platform services 32 include event handling, asset loading, media playback, and more. The object uses the rendering layer 28 to compose an intermediate or final image for display. The page integration component 30 is used to connect Blendo to the external environment, such as HTML or XML pages.
Blendo根据该组管理器26来包含系统对象。每个管理器26提供了API集来控制系统11的某些方面。事件管理器26D提供对由用户输入发起的输入系统事件或环境事件的访问。加载管理器26C使加载Blendo文件和本地节点的实现便于进行。媒体管理器26E提供加载、控制并播放音频、图像和视频媒体资产的能力。再现管理器26G允许创建并管理用于再现场景的对象。场景管理器26A控制场景图表。表面管理器26F允许创建并管理表面,在所述表面上可以合成场景元素及其它资产。线程管理器26B赋予作者产生并控制线程以及在它们之间通信的能力。Blendo contains system objects according to this group manager 26 . Each manager 26 provides a set of APIs to control certain aspects of the system 11 . Event manager 26D provides access to input system events or environmental events initiated by user input. The load manager 26C facilitates the loading of Blendo files and native node implementations. Media manager 26E provides the ability to load, control and play audio, image and video media assets. The rendering manager 26G allows creation and management of objects for rendering scenes. The scene manager 26A controls the scene graph. Surface Manager 26F allows for the creation and management of surfaces upon which scene elements and other assets can be composited. Thread manager 26B gives authors the ability to create and control threads and communicate between them.
图1B在流程图中举例说明了通过Blendo引擎的内容流的概念描述。在块50中,呈现从源开始,所述源包括被带进分析器14(图1A)的内容的文件或流34(图1A)。所述源可以采用像本地VRML的电文格式、本地二进制格式、基于XML的格式等等。不管所述源的格式如何,在块55中,把所述源转换为原始场景图表16(图1A)。所述原始场景图表16可以表示节点、字段及在所述内容中的其它对象,以及字段初始值。在所述流34中还可以包含对象原型的描述、外部原型索引以及路由声明。Figure 1B illustrates a conceptual description of content flow through the Blendo engine in a flowchart. In block 50, rendering begins from a source comprising a file or stream 34 (FIG. 1A) of content brought into analyzer 14 (FIG. 1A). The source may be in a text format like native VRML, a native binary format, an XML-based format, and the like. Regardless of the format of the source, in block 55 the source is converted to the original scene graph 16 (FIG. 1A). The raw scene graph 16 may represent nodes, fields and other objects in the content, as well as field initial values. A description of object prototypes, external prototype indexes, and routing declarations may also be included in the stream 34 .
原始场景图表16的顶层包括节点、顶层字段与函数、原型和包含在所述文件中的路由。除传统的元件之外,Blendo还允许在顶层包括其他字段和函数。使用这些来提供与外部环境的接口,诸如HTML页面。当把流34用作外部原型的内容时,它们还提供对象接口。The top level of the original scene graph 16 consists of nodes, top level fields and functions, prototypes and routes contained in the file. In addition to traditional components, Blendo also allows other fields and functions to be included at the top level. Use these to provide an interface to the external environment, such as HTML pages. They also provide an object interface when streams 34 are used as the content of external prototypes.
每个原始节点包括在其环境内初始化的字段的列表。每个原始字段条目包括该字段的名称、类型(如果给出的话)和数据值。每个数据值包括数字、字符串、原始节点和/或原始字段,其可以表示明确类型的字段值。Each primitive node includes a list of fields initialized within its environment. Each primitive field entry includes the field's name, type (if given), and data value. Each data value includes numbers, strings, primitive nodes, and/or primitive fields, which can represent a field value of an unambiguous type.
在块60中,从原始场景图表16(图1A)的顶层中提取所述原型,并且用于填充可由该场景访问的对象原型的数据库。In block 60, the prototype is extracted from the top level of the original scene graph 16 (FIG. 1A) and used to populate a database of object prototypes accessible by the scene.
然后通过构建遍历来发送原始场景图表16。在该遍历期间,使用对象原型的数据库来构建每个对象(块65)。The raw scene graph 16 is then sent through the build traversal. During this traversal, each object is built using the database of object prototypes (block 65).
在块70中,在流34中建立所述路由。随后在块75中,初始化在所述场景中的每个字段。这是通过把初始事件发送到对象的非默认字段来完成的。由于通过使用节点字段来实现场景图表结构,所以块75还构造了所述场景层级体系。使用按次序的遍历来激发事件。遇到的第一节点对所述节点中的字段进行计数。如果字段是节点,那么首先遍历该节点。In block 70 , the route is established in flow 34 . Then in block 75, each field in the scene is initialized. This is done by sending initial events to non-default fields of the object. Since the scene graph structure is implemented by using node fields, block 75 also constructs the scene hierarchy. Events are fired using in-order traversal. The first node encountered counts the fields in that node. If the field is a node, then that node is traversed first.
结果,初始化在树的特定分支上的节点。然后,把事件发送到具有所述节点字段初始值的节点字段。As a result, nodes on a particular branch of the tree are initialized. Then, send the event to the node field with the initial value of the node field.
在给定节点的字段已经被初始化之后,允许作者向原型对象增加初始化逻辑(块80)以便确保在调用时完全初始化该结点。上述块生成根场景。在块85中,把所述场景递送给为所述场景而创建的场景管理器26A(图1A)。在块90中,使用所述场景管理器26A来隐含地或在作者的控制下再现并执行特性处理。After the fields of a given node have been initialized, the author is allowed to add initialization logic (block 80) to the prototype object to ensure that the node is fully initialized when called. The above blocks generate the root scene. In block 85, the scene is delivered to the scene manager 26A (FIG. 1A) created for the scene. In block 90, the scene manager 26A is used to render and perform property processing either implicitly or under author control.
由所述场景管理器26A再现的场景可以使用来自所述Blendo对象层级体系的对象来构造。附录B示出了对象层级体系并且提供了对Blendo中所述对象的详细说明。对象可以根据它们的双亲对象来导出某些它们的函数性,并且随后扩展或修改它们的函数性。在所述层级体系的基部是对象(Object)。根据所述对象导出的对象的两个主类是节点和字段。其中节点包含再现方法、其作为再现遍历的一部分而被调用。节点的数据属性被称作字段。在Blendo对象层级体系之间是称作定时对象(Timing Object)的对象类,下面将详细描述。如下代码部分是用于示例性的目的。应当注意,在每个代码部分中的行号仅仅表示该特定代码部分的行号,而不表示在原始源编码中的行号。Scenes rendered by the scene manager 26A may be constructed using objects from the Blendo object hierarchy. Appendix B shows the object hierarchy and provides a detailed description of the objects in Blendo. Objects can derive some of their functionality from their parent objects, and subsequently extend or modify their functionality. At the base of the hierarchy is the Object. The two main classes of objects derived from said object are nodes and fields. where the node contains a render method that is called as part of the render traversal. The data attributes of a node are called fields. Between the Blendo object hierarchy are object classes called Timing Objects, described in detail below. The following code sections are for exemplary purposes. It should be noted that the line numbers in each code section only represent the line numbers of that particular code section, not the line numbers in the original source code.
定时对象timing object
定时对象包括TimeBase节点。其作为定时节点的字段被包括并且向所述媒体提供了定时语义的共同集。通过节点实例,所述TimeBase节点可以用于许多相关的媒体节点,以便确保时间同步。Blendo还提供了一组包括Score的节点,利用所述Score来排序媒体事件。所述Score是定时节点并且根据TimeBase来导出其定时。所述Score包括一列插入(Cue)节点,其在指定的时候发出事件。下面描述包括Score在内的各种定时对象。Timing objects include TimeBase nodes. It is included as a field of the Timing node and provides the media with a common set of timing semantics. Through node instances, the TimeBase node can be used for many related media nodes in order to ensure time synchronization. Blendo also provides a set of nodes including Scores, which are used to sort media events. The Score is a timing node and its timing is derived from TimeBase. The Score includes a list of Cue nodes that emit events at specified times. Various timing objects including Score are described below.
TimedNodeTimedNodes
如下代码部分举例说明了TimeNode节点。此后描述了在所述节点中的函数。The following code part illustrates the TimeNode node. Functions in the nodes are described hereafter.
1)TimedNode:ChildNode1) TimedNode: ChildNode
2)field TimeBaseNode timeBase NULL2) field TimeBaseNode timeBase NULL
3)function Time getDuration()3) function Time getDuration()
4)function void updateStartTime(Time now,Time mediaTime,Float rate)4) function void updateStartTime(Time now, Time mediaTime, Float rate)
5)function void updateStopTime(Time now,Time mediaTime,Float rate)5) function void updateStopTime(Time now, Time mediaTime, Float rate)
6)function void updateMediaTime(Time now,Time mediaTime,Float rate)6) function void updateMediaTime(Time now, Time mediaTime, Float rate)
}}
该对象是由TimeBaseNode控制的所有节点的双亲节点。This object is the parent node of all nodes controlled by TimeBaseNode.
在所述代码部分的行2中,TimeBase字段包含控制TimeBaseNode,当所述时基开始、停止或前进时,所述控制TimeBaseNode进行下列适当的函数调用。In line 2 of the code section, the TimeBase field contains the controlling TimeBaseNode which makes the following appropriate function calls when the time base is started, stopped or advanced.
在行3中,getDuration函数返回所述TimedNode的持续时间。如果不可利用的话,那么返回值-1。该函数一般会由导出的对象重写。In line 3, the getDuration function returns the duration of the TimedNode. If not available, then return value -1. This function will normally be overridden by the exported object.
行4列出了updateStartTime函数。当调用时,该函数开始推进其事件或所控制的媒体,具有由mediaTime变量指定的开始偏移。所述updateStartTime函数一般会由导出的对象重写。Line 4 lists the updateStartTime function. When called, the function begins advancing its event or the media it controls, with a start offset specified by the mediaTime variable. The updateStartTime function will generally be overridden by the exported object.
行5列出了updateStopTime函数,当其被调用时,停止推进其事件或所控制的媒体。该函数一般会由导出的对象重写。Line 5 lists the updateStopTime function, which, when called, stops advancing its events or the media it controls. This function will normally be overridden by the exported object.
在行6中,每当由TimeBaseNode更新mediaTime时,调用所述updateMediaTime函数。由导出的对象使用updateMediaTime函数来进一步的控制它们的媒体或发送额外的事件。In line 6, the updateMediaTime function is called whenever mediaTime is updated by the TimeBaseNode. Use the updateMediaTime function by exported objects to further control their media or send additional events.
IntervalSensorIntervalSensor
如下代码部分举例说明了IntervalSensor节点。此后描述了在所述节点中的字段。The following code section illustrates the IntervalSensor node. Fields in the nodes are described hereafter.
1)IntervalSensor:TimedNode1) IntervalSensor: TimedNode
2)field Time cycleInterval 12) field Time cycle Interval 1
3)field Float fraction 03) field Float fraction 0
4)field Float time 04) field Float time 0
}}
随着时间流逝,所述IntervalSensor节点产生事件。As time elapses, the IntervalSensor node generates events.
可以为以下许多目的使用IntervalSensor节点,所述目的包括但不局限于:IntervalSensor nodes can be used for many purposes including but not limited to:
·驱动连续的仿真和动画;Drive continuous simulation and animation;
·控制周期活动(例如,每分钟一次);Controlling periodic activity (e.g., once every minute);
·开始诸如警报钟之类的单个出现的事件。• Start a single occurring event such as an alarm bell.
当调用IntervalSensor节点的updateStartTime()函数时,所述IntervalSensor节点发送最初片断和时间事件。每次调用updateMediaTime()时,该节点还发送一片断和时间事件。最后,当调用updateStopTime()函数时,发送最终片断和时间事件。When the updateStartTime() function of the IntervalSensor node is called, the IntervalSensor node sends the initial segment and time events. The node also sends a fragment and time event each time updateMediaTime() is called. Finally, when the updateStopTime() function is called, the final segment and time events are sent.
在代码部分的行2中,由作者设置cycleInterval字段以便确定按秒计量的时间长度,其使该片断从0前进到1。当调用所述getDuration()函数时返回该值。In line 2 of the code section, the cycleInterval field is set by the author to determine the length of time in seconds that progresses the segment from 0 to 1 . This value is returned when the getDuration() function is called.
行3列出了所述片断字段,其每当TimeBaseNode使用下列方程式(1)来运行时产生事件,所述公式为:Line 3 lists the Fragment fields that generate an event whenever the TimeBaseNode runs using the following equation (1), which is:
fraction=max(min(mediaTime/cycleInterval,1),0) 等式(1)fraction=max(min(mediaTime/cycleInterval, 1), 0) Equation (1)
行4列出了时间字段,其每当TimeBaseNode运行时产生事件。所述时间字段的值是当前挂钟时间。Line 4 lists the Time field, which generates an event whenever the TimeBaseNode runs. The value of the time field is the current wall clock time.
计分(Score)Score
如下代码部分举例说明了Score节点。此后描述了在所述节点中的字段。The following code section illustrates the Score node. Fields in the nodes are described hereafter.
1)Score:TimedNode1) Score: TimedNode
2)field MF CueNode cue[]2) field MF CueNode cue[]
}}
该对象为每个接收的updateStartTime()、updateMediaTime()、updateStopTime()调用来调用所述插入字段中的每个条目。对每个插入条目的调用返回当前累积的相对时间。向随后的插入条目传送该值以便允许计算插入条目之间的相对偏移。This object calls each entry in the insert field for each updateStartTime(), updateMediaTime(), updateStopTime() call received. The call for each inserted entry returns the current accumulated relative time. This value is passed to subsequent inserted entries to allow calculation of relative offsets between inserted entries.
在代码部分的行2中,所述插入字段保存将要随mediaTime的传递来调用的CueNode条目的列表。In line 2 of the code section, the insert field holds a list of CueNode entries to be invoked with the mediaTime passed.
TimeBaseNodeTimeBaseNode
如下代码部分举例说明了TimeBaseNode节点。此后描述了在所述节点中的字段与函数。The following code part illustrates the TimeBaseNode node. Fields and functions in the nodes are described hereafter.
1)TimeBaseNode:Node1) TimeBaseNode: Node
2)rield Time mediaTime 02) rield Time mediaTime 0
3)function void evaluate(Time time)3) function void evaluate(Time time)
4)function void addClient(TimedNode node)4) function void addClient(TimedNode node)
5)function void removeClient(TimedNode node)5) function void removeClient(TimedNode node)
6)function Int32 getNumClients()6) function Int32 getNumClients()
7)function TimedNode getClient(Int32 index)7) function TimedNode getClient(Int32 index)
}}
所述对象是产生media Time的所有节点的双亲节点。The object is the parent node of all nodes that generate media Time.
代码部分的行2列出了mediaTime字段,其每当mediaTime推进时产生事件。一般由导出的对象来控制MediaTime字段。Line 2 of the code section lists the mediaTime field, which generates an event whenever mediaTime advances. Typically the MediaTime field is controlled by the exported object.
行3列出了求值函数,如果该TimeBaseNode登记了对接收时间事件感兴趣,那么当时间推进时、由所述场景管理器调用所述求值函数。Line 3 lists the evaluation function that is called by the Scene Manager when time advances if the TimeBaseNode is registered to be interested in receiving time events.
行4列出了addClient函数,当在其timeBase字段中设置该TimeBaseNode时,由每个TimedNode来调用所述addClient函数。当mediaTime开始、推进或停止时,调用在所述列表中的每个客户端。如果所传送的节点已经是客户端,那么该函数不执行任何操作。Line 4 lists the addClient function that is called by each TimedNode when the TimeBaseNode is set in its timeBase field. Each client in the list is called when mediaTime starts, advances or stops. If the passed node is already a client, this function does nothing.
行5列出了removeClient函数,当在其timeBase字段中不再设置该TimeBaseNode时,由每个TimedNode来调用所述removeClient函数。如果所传送的节点不在所述客户端列表中,那么该函数不执行任何操作。Line 5 lists the removeClient function that is called by each TimedNode when the TimeBaseNode is no longer set in its timeBase field. If the transferred node is not in the client list, then this function does nothing.
行6列出了getNumClients函数,其返回当前在所述客户端列表中客户端的数目。Line 6 lists the getNumClients function, which returns the number of clients currently in the client list.
行7列出了getClient函数,其返回在所传送的索引的客户端。如果所述索引超出了范围,那么返回NULL值。Line 7 lists the getClient function, which returns the client at the passed index. If the index is out of bounds, a NULL value is returned.
TimeBaseTimeBase
如下代码部分举例说明了TimeBase节点。此后描述了在所述节点中的字段。The following code section illustrates the TimeBase node. Fields in the nodes are described hereafter.
1)TimeBase:TimeBaseNode
2)field Bool loop false
3)field Time startTime 0
4)field Time playTime 0
5)field Time stopTime 0
6)field Time mediaStartTime 0
7)field Time mediaStopTime 0
8)field Float rate 1
9)field Time duration 0
10)field Bool enabled true
11)field Bool isActive false
}
1) TimeBase: TimeBaseNode
2) field Bool loop false
3) field Time startTime 0
4) field Time playTime 0
5) field Time stopTime 0
6) field Time mediaStartTime 0
7) field Time mediaStopTime 0
8) field Float rate 1
9) field Time duration 0
10) field Bool enabled true
11) field Bool isActive false
}
该对象控制mediaTime的推进。TimeBase可以开始、停止并恢复该值,并且使mediaTime连续地循环。TimeBase允许mediaTime在其范围的子集内播放。This object controls the advancement of mediaTime. TimeBase can start, stop and resume the value and make mediaTime loop continuously. TimeBase allows mediaTime to play within a subset of its range.
在代码部分的行2中,所述循环字段控制当mediaTime到达其行程的末尾时mediaTime是否重复其推进。In line 2 of the code section, the loop field controls whether mediaTime repeats its advancement when mediaTime reaches the end of its run.
在行3中,所述startTime字段控制mediaTime何时开始推进。当到达采用挂钟时间的单位的startTime时,所述TimeBase开始运行。只要stopTime小于startTime,那么就为真。当这种情况出现时,如果速率大于或等于0,那么把mediaTime设置为mediaStartTime的值。如果mediaStartTime在范围之外(参见对于mediaStartTime有效范围的描述),那么把mediaTime设置为0。如果所述速率小于0,那么把mediaTime设置为mediaStopTime。如果mediaStopTime在范围之外,那么把mediaTime设置为持续时间。TimeBase继续运行直到到达stopTime,或到达mediaStopTime(mediaStartTime,如果速率小于0的话)为止。如果当TimeBase运行时接收了startTime事件,那么将其忽略。In line 3, the startTime field controls when the mediaTime starts advancing. The TimeBase starts running when the startTime in units of wall-clock time is reached. True as long as stopTime is less than startTime. When this happens, if the rate is greater than or equal to 0, set mediaTime to the value of mediaStartTime. If mediaStartTime is out of range (see description for valid ranges of mediaStartTime), then mediaTime is set to 0. If the rate is less than 0, set mediaTime to mediaStopTime. If mediaStopTime is out of range, set mediaTime to the duration. TimeBase continues to run until stopTime is reached, or mediaStopTime (mediaStartTime, if rate is less than 0) is reached. If the startTime event is received while the TimeBase is running, it is ignored.
在行4和5中,playTime字段与startTime同样运作,除了当激活时不复位mediaTime之外。所述playTime字段允许mediaTime在用stopTime停止TimeBase之后继续推进。如果playTime和startTime具有相同的值,那么startTime占主导地位。如果当TimeBase运行时接收了playTime事件,那么将该事件忽略。所述stopTime字段控制所述TimeBase何时停止。In lines 4 and 5, the playTime field works the same as startTime, except mediaTime is not reset when activated. The playTime field allows mediaTime to continue advancing after the TimeBase was stopped with stopTime. If playTime and startTime have the same value, then startTime dominates. If a playTime event is received while the TimeBase is running, the event is ignored. The stopTime field controls when the TimeBase stops.
在行6中,所述mediaStartTime字段设置mediaTime所要运行的媒体持续时间的子范围的开始。mediaStartTime的范围是从零到持续时间的结束(0..持续时间)。如果mediaStartTime字段的值在范围之外,那么在其位置用0代替。In line 6, the mediaStartTime field sets the start of the mediaTime subrange of the media duration to run. The range of mediaStartTime is from zero to the end of the duration (0..duration). If the value of the mediaStartTime field is out of range, then 0 is substituted in its place.
在行7中,所述mediaStopTime字段设置mediaTime将要运行的媒体持续时间的子范围的结束。mediaStopTime的范围是从零到持续时间的结束(0..持续时间)。如果mediaStopTime的值在范围之外,那么在其位置用持续时间代替。In line 7, the mediaStopTime field sets mediaTime to run to the end of the subrange of the media duration. The range of mediaStopTime is from zero to the end of the duration (0..duration). If the value of mediaStopTime is out of range, a duration is substituted in its place.
在行8中,速率字段允许mediaTime以不同于挂钟时间的每秒二分之一的速率运行。在所述速率字段中提供的速率被用作瞬时速率。当调用求值时,自从最后一次调用以来所消逝的时间乘以速率,并且把结果加到当前的mediaTime上。In line 8, the rate field allows mediaTime to run at a rate other than one-half a second of wall-clock time. The rate provided in the rate field is used as the instantaneous rate. When the call evaluates, the time elapsed since the last call is multiplied by the rate, and the result is added to the current mediaTime.
在行9中,当该TimeBase的所有客户端的持续时间确定它们的持续时间时,所述持续时间字段产生事件。所述持续时间字段的值与具有最长持续时间的客户端相同。In line 9, the duration field generates an event when the durations of all clients of this TimeBase determine their duration. The duration field has the same value as the client with the longest duration.
在行10中,所述使能字段允许TimeBase操作。当使能字段变为假时,如果isActive原本为真那么现在变为假,并且mediaTime停止推进。当为假时,忽略startTime和playTime。当使能字段变为真时,求值startTime和playTime以便确定所述TimeBase是否应该开始运行。如果是的话,那么执行如在startTime或playTime中描述的行为。In line 10, the enable field allows TimeBase operation. When the enable field becomes false, isActive becomes false if it was true, and mediaTime stops advancing. When false, startTime and playTime are ignored. When the enable field becomes true, startTime and playTime are evaluated to determine if the TimeBase should start running. If yes, then perform the behavior as described in startTime or playTime.
行11列出了所述isActive字段,当TimeBase变为有效时其产生真事件,并且当timeBase变为无效时其产生假事件。Line 11 lists the isActive field, which generates a true event when TimeBase becomes active, and a false event when timeBase becomes invalid.
CueNodeCueNode
如下代码片断举例说明了CueNode节点。此后描述了在所述节点中的字段。The following code snippet illustrates the CueNode node. Fields in the nodes are described hereafter.
1)CueNode:Node
2)field Float offset-1
3)field Float delay 0
4)field Bool enabled true
5)field Int32 direction 0
6)function void updateStartTime(Time now,TimemediaTime,Float rate)
7)function void updateStopTime(Time now,TimemediaTime,Float rate)
8)function Time evaluate(Time accumulated,Time now,TimemediaTime,
Float rate)
9)function Time getAccumulatedTime(Time accumulated)
10)function void fire(Time now,TimemediaTime)
}
1) CueNode: Node
2) field Float offset-1
3) field Float delay 0
4) field Bool enabled true
5) field Int32 direction 0
6) function void updateStartTime(Time now, TimemediaTime, Float rate)
7) function void updateStopTime(Time now, TimemediaTime, Float rate)
8) function Time evaluate(Time accumulated, Time now, TimemediaTime,
Float rate)
9) function Time getAccumulatedTime(Time accumulated)
10) function void fire(Time now, TimemediaTime)
}
此对象是在Score的插入列表中的所有对象的双亲对象。This object is the parent object of all objects in Score's insertion list.
在代码部分的行2中,偏移字段建立相对于序列开始的0相对偏移。例如,当输入mediaTime到达值5时,值5将激发CueNode。In line 2 of the code section, the offset field establishes a relative offset of 0 from the beginning of the sequence. For example, a value of 5 will fire a CueNode when the input mediaTime reaches a value of 5.
在行3中,在CueNode激发之前,所述延迟字段建立相对延迟。如果偏移是不同于-1(默认)的值,那么根据偏移来测量该延迟。否则,根据先前CueNode的结束或如果这是第一个CueNode时根据0来测量延迟。例如,如果偏移具有值5并且延迟具有值2,那么当mediaTime到达7时该节点将激发。如果偏移具有值-1并且延迟具有值2,那么在先前CueNode结束之后,该节点将激发2秒。In line 3, the delay field establishes the relative delay before the CueNode fires. If offset is a value other than -1 (default), the delay is measured against the offset. Otherwise, the delay is measured against the end of the previous CueNode or against 0 if this is the first CueNode. For example, if the offset has a value of 5 and the delay has a value of 2, then the node will fire when mediaTime reaches 7. If the offset has a value of -1 and the delay has a value of 2, then this node will fire 2 seconds after the previous CueNode ended.
在行4中,如果所述使能字段为假,那么禁止所述CueNode。所述CueNode就好象偏移和延迟是它们的默认值一样运作,并且不激发事件。如果其为真,那么所述CueNode正常运作。In line 4, if the enable field is false, disable the CueNode. The CueNodes behave as if the offset and delay were at their default values, and do not fire events. If it is true, then the CueNode is functioning normally.
在行5中,所述方向字段控制该节点如何相对于mediaTime的行程方向来激发。如果该字段是0,那么当到达该节点的偏移和/或延迟时,该节点激发,无论mediaTime是增加(速率大于零)还是降低(速率小于零)。如果方向字段小于零,那么只有当mediaTime降低,到达所述节点的偏移和/或延迟时,该节点才激发。如果方向字段大于零,那么只有当mediaTime增加,并且到达所述节点的偏移和/或延迟时,所述节点才激发。In line 5, the direction field controls how this node fires relative to the mediaTime's travel direction. If this field is 0, then the node fires when the node's offset and/or delay is reached, regardless of whether mediaTime is increasing (rate greater than zero) or decreasing (rate less than zero). If the direction field is less than zero, then the node will only fire if the mediaTime is lowered, the offset and/or the delay to reach said node. If the direction field is greater than zero, the node fires only when the mediaTime is incremented, and the offset and/or delay to the node is reached.
行6列出了updateStartTime函数,当双亲Score接收updateStartTime()函数调用时,调用所述updateStartTime函数。顺次调用每个CueNode。Line 6 lists the updateStartTime function that is called when the parent Score receives an updateStartTime() function call. Call each CueNode in turn.
行7列出了updateStopTime函数,当双亲Score接收updateStopTime()函数调用时,调用所述updateStopTime函数。顺次调用每个CueNode。Line 7 lists the updateStopTime function that is called when the parent Score receives an updateStopTime() function call. Call each CueNode in turn.
行8列出了求值函数,当双亲Score接收updateMediaTime()函数调用时,调用所述求值函数。顺次调用每个CueNode并且所述CueNode必须返回其累积时间。例如,如果偏移是5并且延迟是2,那么所述CueNode往往返回值7。如果偏移是-1并且延迟是2,那么所述CueNode往往返回输入的累积时间加上2的值。这是默认的行为。某些CueNode(诸如IntervalCue)具有明确定义的持续时间以及激发时间。Line 8 lists the evaluation function that is called when the parent Score receives an updateMediaTime() function call. Each CueNode is called in turn and must return its cumulative time. For example, if the offset is 5 and the delay is 2, then the CueNode will always return a value of 7. If the offset is -1 and the delay is 2, then the CueNode will always return the accumulated time of the input plus 2. This is the default behavior. Certain CueNodes (such as IntervalCues) have well-defined durations and firing times.
在行9中,getAccumulatedTime函数使用与在evaluate()函数中相同的计算来返回累积时间。In line 9, the getAccumulatedTime function returns the accumulated time using the same calculation as in the evaluate() function.
行10列出了激发函数,当所述CueNode到达其激发时间时根据默认evaluate()函数来调用所述激发函数。所述激发函数预定被具体的导出对象重写以便执行适当的动作。Line 10 lists the fire function that is called according to the default evaluate() function when the CueNode reaches its fire time. The activation function is intended to be overridden by a specific derived object in order to perform the appropriate action.
MediaCueMediaCue
如下代码部分举例说明了MediaCue节点。此后描述了在所述节点中的字段。The following code section illustrates the MediaCue node. Fields in the nodes are described hereafter.
1)MediaCue:CueNode TimeBaseNode{1) MediaCue: CueNode TimeBaseNode{
2)field Time mediaStartTime 02) field Time mediaStartTime 0
3)field Time mediaStopTime 03) field Time mediaStopTime 0
4)field Time duration 04) field Time duration 0
5)field Bool is Active false5) field Bool is Active false
}}
当该CueNode有效时,所述对象控制推进mediaTime。MediaCue允许mediaTime在其范围的子集内播放。MediaCue在从由偏移和/或延迟字段确定的时间开始并且在由mediaStopTime减去mediaStartTime确定的时间长度内有效。MediaCue从getAccumulatedTime()返回的值是通过把默认函数添加到mediaStopTime并且减去mediaStartTime来计算的值。当有效时该节点产生mediaTime,这是通过减去已加上来自输入的mediaTime的mediaStartTime的激发时间来计算的。因此MediaCue以与所输入的mediaTime相同的速率推进mediaTime。When this CueNode is active, the object controls advancing mediaTime. MediaCue allows mediaTime to play within a subset of its range. The MediaCue is valid from the time determined by the Offset and/or Delay fields and for the length of time determined by mediaStopTime minus mediaStartTime. The value MediaCue returns from getAccumulatedTime() is the value calculated by adding the default function to mediaStopTime and subtracting mediaStartTime. When active this node generates a mediaTime, which is calculated by subtracting the fire time from which the mediaStartTime from the input mediaTime has been added. So the MediaCue advances the mediaTime at the same rate as the input mediaTime.
在代码部分的行2中,所述mediaStartTime字段设置mediaTime将要运行的媒体持续时间的子范围的开始。mediaStartTime的范围是从零到持续时间的结束(0..持续时间)。如果mediaStartTime字段的值在范围之外,那么在其位置利用0代替。In line 2 of the code section, the mediaStartTime field sets the start of the mediaTime subrange for which the media duration will run. The range of mediaStartTime is from zero to the end of the duration (0..duration). If the value of the mediaStartTime field is out of range, then 0 is used in its place.
在行3中,所述mediaStopTime字段设置mediaTime运行的媒体持续时间的子范围的结束。mediaStopTime的范围是从零到持续时间的结束(0..持续时间)。如果mediaStopTime字段的值在范围之外,那么在其位置利用持续时间来代替。In line 3, the mediaStopTime field sets mediaTime to run to the end of the subrange of media durations. The range of mediaStopTime is from zero to the end of the duration (0..duration). If the value of the mediaStopTime field is out of range, a duration is used in its place instead.
在行4中,当该TimeBaseNode的所有客户端的持续时间确定它们的持续时间时,所述持续时间字段产生事件。所述持续时间字段的值与具有最长持续时间的客户端相同。In line 4, the duration field generates an event when the durations of all clients of this TimeBaseNode determine their duration. The duration field has the same value as the client with the longest duration.
行5列出了isActive字段,当该节点变为有效时其产生真事件,并且当该节点变为无效时其产生假事件。Line 5 lists the isActive field, which generates a true event when the node becomes active, and a false event when the node becomes inactive.
IntervalCueIntervalCue
如下代码部分举例说明了IntervalCue节点。此后描述了在所述节点中的字段。The following code section illustrates the IntervalCue node. Fields in the nodes are described hereafter.
1)IntervalCue:CueNode1) IntervalCue: CueNode
2)field Float period 12) field Float period 1
3)field Bool rampUp true3) field Bool rampUp true
4)field Float fraction 04) field Float fraction 0
5)field Bool isActive false5) field Bool isActive false
}}
随着时间推进,该对象从0到1(或者如果rampUp为假的话从1到0)发送片断事件。As time progresses, this object sends fragment events from 0 to 1 (or from 1 to 0 if rampUp is false).
代码片断的行2列出了周期字段,其在很短的时间内确定时间,在所述时间内片断有斜面地推进。Line 2 of the code snippet lists the period field, which determines the time in which the snippet is ramped.
在行3中,如果rampUp字段为真(默认),那么所述片断在所述IntervalCue的持续时间内从0到1上升。如果为假,那么所述片断从1到0下降。如果mediaTime向后运行(当所述速率小于零时),那么当rampUp字段为真时,所述片断从1到0下降,而当所述rampUp字段为假时,所述片断从0到1上升。In line 3, if the rampUp field is true (default), then the segment ramps up from 0 to 1 for the duration of the IntervalCue. If false, then the slice goes down from 1 to 0. If mediaTime runs backwards (when the rate is less than zero), then the clip goes down from 1 to 0 when the rampUp field is true, and goes up from 0 to 1 when the rampUp field is false .
在行4中,片断字段向evaluate()发送具有每个调用的事件,同时该节点有效。如果mediaTime前进,那么当该节点激发时片断开始输出,并且当该节点到达其加上周期的激发时间时停止输出。把片断值描述为:In line 4, the fragment field sends an event to evaluate() with each call while the node is valid. If mediaTime advances, the fragment starts outputting when the node fires, and stops outputting when the node reaches its firetime plus the period. Describe the fragment value as:
fraction=(mediaTime-firing time)*period 等式(2)fraction=(mediaTime-firing time)*period Equation (2)
行5列出了所述节点isActive字段,当所述节点变为有效时,其发送真事件,并且当所述节点变为无效时其发送假事件。如果mediaTime前进,那么当mediaTime变为大于或等于激发时间时所述节点变为有效。当mediaTime变为大于或等于加上周期的激发时间时,该节点变为无效。如果mediaTime后退,那么当mediaTime变为小于或等于加上周期的激发时间时,所述节点变为有效,而当mediaTime变为小于或等于激发时间时,所述节点变为无效。这些事件的激发受方向字段的影响。Line 5 lists the node isActive field, which sends a true event when the node becomes active, and a false event when the node becomes inactive. If mediaTime advances, the node becomes active when mediaTime becomes greater than or equal to firetime. When the mediaTime becomes greater than or equal to the firing time plus the period, the node becomes invalid. If mediaTime goes backwards, the node becomes active when mediaTime becomes less than or equal to the fire time plus the period, and becomes inactive when mediaTime becomes less than or equal to the fire time. The firing of these events is affected by the direction field.
FieldCueFieldCue
如下代码部分举例说明了FieldCue节点。此后描述了在所述节点中的字段。The following code section illustrates the FieldCue node. Fields in the nodes are described hereafter.
1)FieldCue:CueNode1) FieldCue: CueNode
2)field Field cueValue NULL2) field Field cueValue NULL
3)field Field cueOut NULL3) field Field cueOut NULL
}}
当FieldCue激发时,该对象把cueValue作为事件发送到cueOut。FieldCue允许设置并发出任何字段类型。可以把cueOut值路由至任意类型的字段。如果cueValue的当前类型与所述目的地字段不一致,那么可能出现未定义的结果。When FieldCue fires, this object sends cueValue as an event to cueOut. FieldCue allows setting and emitting any field type. A cueOut value can be routed to any type of field. If the current type of cueValue is inconsistent with the destination field, undefined results may occur.
在代码部分的行2中,所述cueValue字段是编辑的值,当该节点激发时发出所述值。In line 2 of the code section, the cueValue field is the edited value that is emitted when the node fires.
行3列出了cueOut字段,当该节点激发时,所述cueOut字段发送具有cueValue值的事件。Line 3 lists the cueOut field that sends an event with a value of cueValue when this node fires.
TimeCueTimeCue
如列代码部分举例说明了TimeCue节点。此后描述了在所述节点中的字段。The following code section exemplifies the TimeCue node. Fields in the nodes are described hereafter.
1)TimeCue:CueNode1) TimeCue: CueNode
2)field Time cueTime 02) field Time cueTime 0
}}
当TimeCue激发时,该对象把当前挂钟时间作为事件发送到cueTime。When TimeCue fires, this object sends the current wall-clock time as an event to cueTime.
代码部分的行2列出了cueTime字段,当该节点激发时,所述cueTime字段发送具有当前挂钟时间的事件。Line 2 of the code section lists the cueTime field that sends an event with the current wall clock time when this node fires.
在实时场景合成的环境内计分结构使作者能够说明性地描述对于大多数的呈现和播放技术所进行的时间控制,包括:图像动画书和图像合成动画(例如,动画的GIF);视频和音频剪辑和流;几何动画剪辑和流,诸如连锁转化、几何形态和结构坐标;再现参数的动画,诸如亮度、模糊度和透明度;调制用于行为、仿真或再生系统的参数;以及动态控制资产加载、事件路由和逻辑函数。例如,下列例子发出字符串以便预加载图像资产,然后使用该图像执行动画,接下来运行电影。还可以反向(即,首先所述电影向后播放,然后所述动画反向播放继而所述图像消失)运行在下面例子中的字符串。The scoring structure within the context of real-time scene composition enables authors to descriptively describe the timing control for most rendering and playback techniques, including: image flipbooks and image synthesis animations (e.g., animated GIFs); video and Audio clips and streams; geometric animation clips and streams, such as chain transformations, geometry, and structural coordinates; animation of rendering parameters, such as brightness, blur, and transparency; modulation of parameters for behavioral, simulation, or regeneration systems; and dynamic control assets Loading, event routing and logic functions. For example, the following example emits a string to preload an image asset, then performs an animation using that image, and then runs a movie. It is also possible to run the string in the example below in reverse (ie first the movie plays backwards, then the animation plays in reverse and the image disappears).
1) Score {
2) timeBase DEF TB TimeBase {}
3) cue [
4) Fieldcue {
5) cueValue String“ ”
6) cueOut TO ISURF.URL
7) direction -1
8) }
9) FieldCue{
10) cueValue String“imagel.png”
11) cueOut TO ISURF.url
12) direction -10
<!-- SIPO <DP n="14"> -->
<dp n="d14"/>
13) }
14) IntervalCue{
15) delay 0.5
16) period 2.5 #2.5 second animation
17) fraction TO PI.fraction
18) }
19) DEF MC MediaCue {
20) offset 2
21) }
22) Fieldcue {
23) cueValue String“ ”
24) cueOut TO ISURF.URL
25) direction 1
26) delay -0.5
27) }
28) Fieldcue {
29) cueValue String“imagel.png”
30) cueOut TO ISURF.URL
31) direction -1
32) delay -0.5
33) }
34) ]
35) }
36) #Slide out image
37) DEF T Transform {
38) children Shape {
39) appearance Appearance {
40) texture Texture {
41) surface DEF ISURF ImageSurface { }
42) }
43) }
44) geometry IndexedFaceSet {…}
45) }
46) }
47) DEF PI PositionInterpolator {
48) key ...
49) keyValue ...
50) value TO T.translation
51) }
52) #Movie
53) Shape {
54) appearance Appearance{
55) texture Texture{
56) surface MovieSurface {
57) url“myMovie.mpg”
<!-- SIPO <DP n="15"> -->
<dp n="d15"/>
58) timeBase USE MC
59) }
60) }
61) }
62) geometry IndexedFaceSet {…}
63) }
1) Score {
2) timeBase DEF TB TimeBase {}
3) cue [
4) Fieldcue {
5) cueValue String " "
6) cueOut TO ISURF.URL
7) direction-1
8) }
9) FieldCue{
10) cueValue String "imagel.png"
11) cueOut TO ISURF.url
12) direction-10
<!-- SIPO <DP n="14"> -->
<dp n="d14"/>
13) }
14) IntervalCue{
15) delay 0.5
16) period 2.5 #2.5 second animation
17) fraction TO PI. fraction
18) }
19) DEF MC MediaCue {
20) offset 2
twenty one) }
22) Fieldcue {
23) cueValue String " "
24) cueOut TO ISURF.URL
25) direction 1
26) delay -0.5
27) }
28) Fieldcue {
29) cueValue String "imagel.png"
30) cueOut TO ISURF.URL
31) direction-1
32) delay -0.5
33) }
34) ]
35) }
36) #Slide out image
37) DEF T Transform {
38) children Shape {
39) appearance Appearance {
40) texture Texture {
41) surface DEF ISURF ImageSurface { }
42) }
43) }
44) geometry IndexedFaceSet {...}
45) }
46) }
47) DEF PI Position Interpolator {
48) key...
49) keyValue...
50) value TO T. translation
51) }
52) #Movie
53) Shape {
54) appearance Appearance{
55) texture Texture{
56) surface MovieSurface {
57) url "myMovie.mpg"
<!-- SIPO <DP n="15"> -->
<dp n="d15"/>
58) timeBase USE MC
59) }
60) }
61) }
62) geometry IndexedFaceSet {...}
63) }
在Score中所有Cue节点相对于所述TimeBase的媒体时间而激发,提供共同的索引并且借此产生在各个媒体资产的定时之间的准确关系。在上面的代码片断中,一旦TimeBase开始,那么FieldCue(行9)激发,这是因为该FieldCue具有默认偏移和延迟字段,借此使所述图像出现。代码部分的行35-45在表面上加载所述图像(200,图2A)。然后IntervalCue(行13)在0.5秒之后开始并且运行下一个2.5秒,从0到1增加其片断输出。IntervalCue的激发开始所述图像的动画(202,图2A)。行46-50控制所述动画。所述MediaCue(行18)在所述TimeBase开始之后2秒开始,或当IntervalCue是在其动画中的1.5秒时开始,借此开始所述电影。行51-62在所述表面上加载所述电影的第一帧(204,图2A)。当向后播放该字符串时,首先反向播放所述电影。然后在0.5秒之后所述图像出现,并且在所述图像出现0.5秒之后,所述动画开始。当动画停止并且在所述图像消失之后的0.5秒时,反向播放动画2.5秒。该例子示出了能够使Cue彼此偏离或与TimeBase偏离,并且示出了随后的Cue可以在上一个结束之前开始。All Cue nodes in the Score fire relative to the media time of the TimeBase, providing a common index and thereby creating an accurate relationship between the timing of the various media assets. In the code snippet above, once the TimeBase starts, the FieldCue (line 9) fires because the FieldCue has default offset and delay fields whereby the image appears. Lines 35-45 of the code section load the image on the surface (200, Figure 2A). The IntervalCue (line 13) then starts 0.5 seconds later and runs for the next 2.5 seconds, incrementing its segment output from 0 to 1. Firing of the IntervalCue starts animation of the image (202, Figure 2A). Lines 46-50 control the animation. The MediaCue (line 18) starts 2 seconds after the TimeBase starts, or when the IntervalCue is 1.5 seconds into its animation, thereby starting the movie. Lines 51-62 load the first frame of the movie on the surface (204, Figure 2A). When the string is played backwards, first the movie is played in reverse. The image then appears 0.5 seconds later and the animation starts 0.5 seconds after the image appears. When the animation stops and 0.5 seconds after the image disappears, play the animation in reverse for 2.5 seconds. This example shows that Cues can be offset from each other or from a TimeBase, and that a subsequent Cue can start before the previous one ends.
所述MediaCue为作者提供了同步工具。MediaCue是Cue的一种形式,其就像TimeBase一样运作。实际上,在可以使用TimeBase的地方都可以使用MediaCue,如上述例子所示。但是由于把MediaCue嵌入到事件的时间序列中,所以实现中有足够的信息来请求预加载资产。图2B举例说明了要求预加载的图2A的媒体序列的同步。例如,在上述例子中,如果所述实现方式得知电影用0.5秒来预加载并且立即播放,那么在TimeBase开始之后在等待(块210)1.5秒之后,在块215中,向MovieSurface发送“就绪”信号。一旦收到就绪信号,那么在块220中预加载所述电影。这往往给它所要求的0.5秒来预加载。在块225中,接收用于开始的请求,并且一旦收到该用于开始的请求,那么块230立即开始所述电影。The MediaCue provides synchronization tools for authors. MediaCue is a form of Cue that works just like TimeBase. In fact, MediaCue can be used wherever TimeBase can be used, as shown in the above example. But since the MediaCue is embedded in the time sequence of events, there is enough information in the implementation to request a preloaded asset. Figure 2B illustrates synchronization of the media sequence of Figure 2A requiring preloading. For example, in the above example, if the implementation knows that the movie took 0.5 seconds to preload and play immediately, then after the TimeBase starts and after waiting (block 210) 1.5 seconds, in block 215, send a "ready "Signal. Once the ready signal is received, the movie is preloaded in block 220 . This tends to give it the requested 0.5 seconds to preload. In block 225, a request to start is received, and once the request to start is received, block 230 starts the movie immediately.
由于组合了TimeBase和Blendo中所允许的媒体排序能力,使创建具有复杂定时的呈现成为可能。图3示出了Blendo呈现的各个组件的时间关系。当观众选择新闻呈现时(360),所述观众看见其中他可以选择故事的屏幕(362)。当所述用户从五个故事S1、S2、S3、S4和S5的选择中选择故事S3时,显示具有广播员的欢迎屏幕(364)。在所述欢迎屏幕上,观众可以选择切换到另一故事(374),借此中止故事S3。在欢迎陈述之后,所述屏幕变换到故事位置(366)并且播放所选择的故事(368)。在此,所述观众可以转向下一故事、前一故事,回放当前故事或选择播放故事S3的扩展版本(370),或跳转到例如另一故事S5(372)。在播放所选择的故事之后,所述用户可以进行下一选择。It is possible to create presentations with complex timing thanks to the combination of TimeBase and the media sequencing capabilities allowed in Blendo. Figure 3 shows the time relationship of various components presented by Blendo. When the viewer selects a news presentation (360), the viewer sees a screen where he can select a story (362). When the user selects story S3 from a selection of five stories S1, S2, S3, S4 and S5, a welcome screen with the announcer is displayed (364). On the welcome screen, the viewer can choose to switch to another story (374), thereby aborting story S3. After the welcome statement, the screen changes to the story position (366) and the selected story is played (368). Here, the viewer can turn to the next story, previous story, replay the current story or choose to play an extended version of story S3 (370), or jump to eg another story S5 (372). After playing the selected story, the user can make the next selection.
应当理解,本发明不依赖于Blendo,并且它可以是独立于Blendo的实施例的一部分。还应当理解本发明同样适用于2D场景再现和3D场景再现。It should be understood that the present invention is not dependent on Blendo, and that it may be part of a Blendo-independent embodiment. It should also be understood that the present invention is equally applicable to 2D scene rendering and 3D scene rendering.
虽然已经描述了本发明的特定实施例,但是对那些本领域内技术人员来说显而易见的是在不脱离本发明的情况下可以在其更宽的方面进行改变和修改,并且因此,附加权利要求将属于本发明真正精神和范围内的所有这种改变和修改包含在其范围内。While particular embodiments of the invention have been described, it will be obvious to those skilled in the art that changes and modifications may be made in its broader aspects without departing from the invention in its broader aspects, and therefore, the appended claims All such changes and modifications which fall within the true spirit and scope of the invention are intended to be embraced within its scope.
Claims (32)
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/US2002/035211 WO2004042552A1 (en) | 1999-08-03 | 2002-11-01 | Declarative markup for scoring multiple time-based assets and events within a scene composition system |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN1695111A true CN1695111A (en) | 2005-11-09 |
Family
ID=34311704
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CNA028298462A Pending CN1695111A (en) | 2002-11-01 | 2002-11-01 | Declaratve markup for scoring multiple time-based assets and events within a scene composition system |
Country Status (4)
| Country | Link |
|---|---|
| EP (1) | EP1556753A4 (en) |
| JP (1) | JP2006505049A (en) |
| CN (1) | CN1695111A (en) |
| AU (1) | AU2002340358A1 (en) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101662595B (en) * | 2008-08-29 | 2011-09-07 | 索尼株式会社 | Electronic apparatus, method of changing a moving image data section |
| CN105453573A (en) * | 2013-06-27 | 2016-03-30 | 英国电讯有限公司 | Provision of video data |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5751281A (en) * | 1995-12-11 | 1998-05-12 | Apple Computer, Inc. | Apparatus and method for storing a movie within a movie |
-
2002
- 2002-11-01 AU AU2002340358A patent/AU2002340358A1/en not_active Abandoned
- 2002-11-01 CN CNA028298462A patent/CN1695111A/en active Pending
- 2002-11-01 EP EP02778710A patent/EP1556753A4/en not_active Withdrawn
- 2002-11-01 JP JP2004549856A patent/JP2006505049A/en active Pending
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101662595B (en) * | 2008-08-29 | 2011-09-07 | 索尼株式会社 | Electronic apparatus, method of changing a moving image data section |
| CN105453573A (en) * | 2013-06-27 | 2016-03-30 | 英国电讯有限公司 | Provision of video data |
Also Published As
| Publication number | Publication date |
|---|---|
| JP2006505049A (en) | 2006-02-09 |
| AU2002340358A1 (en) | 2004-06-07 |
| EP1556753A1 (en) | 2005-07-27 |
| EP1556753A4 (en) | 2008-03-05 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| RU2580022C2 (en) | Displaying text in natural language | |
| US20020069217A1 (en) | Automatic, multi-stage rich-media content creation using a framework based digital workflow - systems, methods and program products | |
| US20050044499A1 (en) | Method for capturing, encoding, packaging, and distributing multimedia presentations | |
| JP5425322B2 (en) | Event queuing in an interactive media environment | |
| CN101193250A (en) | System, method and medium for generating frame information of moving images | |
| KR101354739B1 (en) | State-based timing for interactive multimedia presentations | |
| CN101193298A (en) | System, method and medium for playing moving images | |
| WO2008100928A1 (en) | Methods and apparatus for processing edits to online video | |
| CN1382288A (en) | Video summarization scheme for efficient overview and browsing and method and system for generating video summarization data | |
| JP2009500911A (en) | Instant messaging with search | |
| CN1975733A (en) | Video content viewing support system and method | |
| CN1205539C (en) | System and method for programmatically generating continuous media representations | |
| US7941739B1 (en) | Timeline source | |
| US20090201290A1 (en) | Methods and Systems for Scoring Multiple Time-Based Assets and Events | |
| CN1875420A (en) | Storage medium and reproducing device storing meta information and subtitle information for enhanced search | |
| CA3198839A1 (en) | Conversion of text to dynamic video | |
| US7934159B1 (en) | Media timeline | |
| US20050035970A1 (en) | Methods and apparatuses for authoring declarative content for a remote platform | |
| CN1639767A (en) | Display control method, information display device and medium | |
| CN1695111A (en) | Declaratve markup for scoring multiple time-based assets and events within a scene composition system | |
| CN1745424A (en) | Information storage medium for storing scenario and device and method for recording the scenario | |
| Jansen et al. | Just-in-time personalized video presentations | |
| CN1474408A (en) | Task-oriented nonlinear super video editing method and device | |
| CN1882996A (en) | Storage medium storing preloading data, and apparatus and method for reproducing information from storage medium | |
| HK1100983A (en) | Storage medium storing meta information for enhanced search and subtitle information, and reproducing apparatus |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| C06 | Publication | ||
| PB01 | Publication | ||
| C10 | Entry into substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| C12 | Rejection of a patent application after its publication | ||
| RJ01 | Rejection of invention patent application after publication |