复杂3d空间应用中的2d软件消费品的编辑的制作方法

文档序号:6348847阅读:112来源:国知局
专利名称:复杂3d空间应用中的2d软件消费品的编辑的制作方法
技术领域
本公开涉及三维(3D)软件应用的开发和维护,且具体地涉及一种使不具有特定于 3D软件的任何技能的用户能够编辑3D内容的系统和方法。
背景技术
现今,软件应用开发是软件开发和图稿(artwork)开发的组合。当创建表示虚拟环境的应用时,通常使用3D绘图工具创建图稿,并且随后将其保存为栅格化平面文件,其被用作应用的背景图像。问题在于应用不了解图像的3D投影矩阵,并且没有进一步的数据,其仅能将用户接口特征添加到平面2D屏幕。因此,难于在3D空间中组织2D内容。此外,大多数软件应用使用2D坐标表述所有其消费品(consumable)的定位并且在该坐标系统中,不清楚软件开发者(“技术用户”)如何能以未受过3D绘图技术训练的人(“商业用户 (business user)”)能够组织消费品的方式组织其在3D环境中的设置(placement)。例如, 未受过3D绘图技术训练的人可能不理解如何将内容设置到3D虚拟环境中的细节。对于能够设置内容的商业用户,该商业用户将需要学习投影矩阵如何工作以及3D坐标系统如何工作,并且3D工具现今还需要用户限定至少一个3D旋转坐标,而这需要训练。期望提供一种允许商业用户能够在不必学习3D绘图工具等的情况下在3D环境中设置内容的系统和方法。为了创建3D空间应用,需要在每个应用的构造中密切牵涉的极为胜任的工程师。 可替选地,可以训练商业用户使用编程语言工具以自足,然而对于商业用户而言学习完成该任务所需的编程语言的所有方面是难事。此外,当指派技术用户创建3D应用时,由于商业用户通常需要向技术用户解释需求并且技术用户必须随后实现该需求,因此商业用户和技术用户之间的工作流程可能是困难的。这意味着商业用户不是自足的并且当与技术用户谈话时可能存在转换上的细微损失。在现今的世界中,由于受过3D应用设计和开发的专业技术训练的熟练专家的数量有限,因此需要为他们创建3D应用的消费者(“软件客户”)常常需要以比编程团队能够构建该3D应用的速度快的速度来创建软件。出于这些另外的原因,期望提供一种允许商业用户不必学习3D绘图工具等的情况下能够在3D环境中设置内容的系统和方法。为了进一步使3D应用的开发复杂,为了在空间中定位3D元素,存在6个重要变量。然而,最常见的输入设备,即鼠标每次仅能够流畅地控制2个坐标(χ和y),这使得3D 应用的开发更加困难。过去,人们已通过使用3D编辑工具,排列内容使得其与3D背景匹配,并且将内容设置在3D背景上,来在3D空间中组织2D内容。然而,3D编辑工具需要训练,使得典型的商业用户不能使用这些典型的技术在3D空间中组织2D内容。非技术商业用户编辑3D内容的最常见的方法是使编程者一旦创立3D内容,则用户能够编辑其参数。然而,参数由编程者预先确定,因而这不是理想的解决方案。用于在空间中定位和旋转3D元素的现有的解决方案是允许每次进行2维的拖动,随后使用户旋转相机以便于访问第三维的部分。为了在空间中旋转元素,典型地在正被定位的物体附近将3个圆形放在屏幕上,并且使用户拖动这些圆形中的每个。然而,这不能完全解决将内容设置在3D环境中的问题,原因在于用户必须旋转周围的世界以访问所有空间维度并且其需要使用训练。用于在空间中旋转3D元素的另一典型的技术是使用6轴输入设备,其被称为3D 鼠标。这并未完全解决将内容设置在3D环境中的问题,原因在于大多数人不具有该输入设备,因此仅有专业人员能够使用该设备。当前,通过反复试验来定位单个3D消费品并且用户必须调节所添加的每个消费品的定位。由于存在6个必须同时调整的变量(x、y、z、ΘΧ、0y和ΘΖ),因此这是困难的。 因此对于在短时段中创建大量内容是不实际的。因此,期望提供一种用于将内容设置在3D 环境中的系统和方法,其中用户不需要密切熟悉3D工具,并且该系统和方法针对该目的。

发明内容
本发明一方面涉及一种用于生成三维应用的系统,包括执行构造工具的计算机系统,技术用户和商业用户使用所述构造工具生成三维应用;仓库,与所述计算机系统相关联,存储与所述构造工具和所述三维应用相关联的数据;应用运行时平台,在运行所述三维应用的计算机系统上执行;终端用户应用,包括所述三维应用和所述应用运行时平台;以及其中所述构造工具进一步包括投影矩阵部件,该投影矩阵部件允许所述技术用户调整投影矩阵以与三维图像对准;以及创作部件,该创作部件允许商业用户将一个或多个消费品设置到所述三维图像上以生成具有所述三维图像和一个或多个消费品的所述三维应用, 其中所述一个或多个消费品相对于所述三维图像维持透视。本发明另一方面涉及一种生成三维应用的方法,包括提供在计算机系统上执行的构造工具,技术用户和商业用户使用所述构造工具生成三维应用;在与所述计算机系统相关联的仓库中存储与所述构造工具和所述三维应用相关联的数据;技术用户使用作为所述构造工具的一部分的投影矩阵部件调整投影矩阵以与三维图像对准;商业用户使用作为所述构造工具的一部分的创作部件将一个或多个消费品设置到所述三维图像上以生成具有所述三维图像和一个或多个消费品的所述三维应用,其中所述一个或多个消费品相对于所述三维图像维持透视。


图1图示了用于将内容设置在3D环境中的系统和方法的基于计算机的实现方案的示例;
图2图示了如图1中所示的用于将内容设置在3D环境中的工具的更多细节; 图3图示了用于将内容设置在3D环境中的方法的方法工作流程的示例; 图4图示了图2中所示的方法的矩阵过程(matrix process)的用户接口的示例; 图5图示了用于调整图4中所示的投影网格的用户接口的示例; 图6图示了用于创建、命名和定位图4中示出的每个表面的用户接口的示例; 图7和8图示了图2中示出的方法的接口过程的示例; 图9图示了图2中示出的方法的接口过程的弹出窗口 ;图10和11图示了用于将内容设置在3D环境中的系统的对象模型;以及图12图示了用于将内容设置在3D环境中的系统中的数据仓库和用户动作的更多细节。
具体实施例方式该系统和方法特别适用于诸如0M4公司商业上提供的事件呈现系统并且将在该背景下描述该系统和方法。然而,将认识到,该系统和方法具有较大的效用,因为该系统和方法可以与其中期望能够将内容设置在3D环境中的任何系统一起使用,其中用户不需要密切熟悉3D工具。除了作为该系统的实现方案而在下文描述的系统之外,该系统还可以结合如下系统使用1)工作流程系统(在允许系统的下一部分运行之前需要完成特定数据点的系统), 其用于确保如图3中所示的工作流程按所描述的顺序进行;2)许可系统(不允许用户访问该工具的对于他们的任务不是必需的部分的系统),其尤其用于将用户限制于他们在图3中所示的工作流程中的相应的部分;3)源控制和“wiki型(wiki-like)”系统(签入/签出、还原变化、比较变化等),用于管理3D应用和消费品的开发;4)协作工具,用于使多个用户能够在实时地编辑3D应用项目的同时彼此交互;5)时间线和中间计算(tweening)系统,以使得能够预先限定幻灯片显示,富媒体呈现和动画和/或使其与用户交互组合。例如,软件消费品可以(但不限于)渐强、移入、或放大。再者例如,可以开发精密系统,其限定由时间线上的特定时间标记触发的进入和离开视域的许多消费品的特定序列;以及6)软件模块加载, 用于使得在运行时仅能够加载使用中的消费品。例如,如果软件编程者已使得特定消费品可用(图3,过程52),并且商业用户从未选择添加该特定的消费品(图3,过程62),则所创建的运行时应用(图3,过程68)将不加载由编程者限定的类(Class)(图3,过程52),由此当运行时应用执行时,使应用的尺寸最小并且减少不必要的带宽和加载时间。图1图示了用于将内容设置在3D环境中的系统30和方法的基于计算机的实现方案的示例。系统30可以在任何基于处理单元的系统上实现,该系统诸如例如,执行多行计算机代码的诸如图1中所示的计算机系统。该系统也可以以硬件(基于集成电路的系统)、 软件(驻留在诸如DVD、CD、闪速存储器等的存储设备上的多行计算机代码)的形式实现或者通过如图1中所示的软件和硬件的组合实现。该系统还可以在服务器计算机上或者以托管模型实现,在其中系统的功能在诸如互联网的链路上被递送到用户。图1中所示的实现方案可以包括显示设备32、机架34以及允许用户与系统交互的一个或多个输入/输出设备36。例如,一个或多个输入/输出设备可以包括(图1中示出的)键盘36a和鼠标36b以及图1中未示出的但是公知的其他输入/输出设备。机架34 (其可以是个人计算机或服务器计算机的机架,但是也可以是笔记型计算机的外壳)可以容纳执行计算机指令的处理单元38、存储软件或操作系统的持久存储设备40 (诸如硬盘驱动器、闪速存储器、光盘驱动器等)以及存储正由处理单元执行的多行计算机代码的存储器42 (诸如动态随机存取存储器或者静态随机存取储存器),这些设备均彼此电连接并且能够彼此通信。当基于处理单元的系统正在用于实现用于将内容设置在3D环境中的系统和方法时,存储器42可以存储操作系统44和工具46 (在一个实施例中其可以被称为构造应用(construction application)),工具46包括多行计算机代码,其实现用于将内容设置在 3D环境中的系统和方法。图2图示了如图1中所示的用于将内容设置在3D环境中的工具46的更多细节。 工具46可以由技术用户(其具有创建和/或编辑3D环境的技能)以及商业用户(其可以将内容设置到3D环境上)使用。在一个实施例中,内容可以是软件消费品、诸如纯文本或图像的静态内容块、或者诸如交互微件(widget)或者使用该工具构建的软件应用的部件的动态内容块。工具46可以包括投影矩阵部件46a,其允许按照需要识别和编辑投影矩阵(下文更详细描述);表面编辑部件46b,其允许技术用户添加、移动、编辑和/或删除3D环境的表面;以及关于内容的创作(authoring)计算机46c,其允许商业用户添加、移动、编辑或删除诸如软件消费品的内容块。现在,将更详细地描述用于将内容设置在3D环境中的方法。图3图示了用于将内容设置在3D环境中的方法的方法工作流程50的示例。编程者(其不需要具有3D技能)可以创建普通2D软件消费品,它们随后被输入/存储在参数定义仓库(52)中。软件消费品可以是可由包括任何事物的终端用户通过用户接口消费的软件控制的任何事物,诸如Twitter微件、数据网格、聊天窗口、富文本或者待显示图像。软件消费品与“软件模块”、“用户接口部件” “显示对象”等同义。在该系统中,内容或软件消费品可以依照任何语言并且该系统允许用户将内容或软件消费品设置到3D环境中而与内容或软件消费品的语言无关。图形艺术家随后可以创建背景图稿或者摄影师拍摄将用作背景图像的照片(54)。技术用户随后可以使用工具46 (从例如图形艺术家或摄影师)导入3D背景图像并且进入工具的“矩阵模式”(投影矩阵部件46a) (56)。技术用户随后可以调整投影矩阵,直至网格与背景图像中的自然的平行和垂直线对齐(58),如图4和5中所示并且下文更详细描述的那样。技术用户随后可以使用用户接口添加表面并且调整表面的定位,诸如一个实现方案中的拖动垫(Drag Pad),以及如图6中所示和下文更详细描述的数字输入控制框(60)。一旦设定了投影矩阵和表面,在一个实现方案中商业用户随后可以使用用户接口,诸如通过拖动和放下图标来添加消费品,和/或选择先前添加的消费品(62 ),如图7和 8中所示和下文更详细描述的那样。商业用户随后可以输入关于新的消费品的参数(64)并且随后重复添加消费品并且按照需要输入它们的参数以使消费品落定(populate)。该系统随后可以确定作为商业用户的活动结果是否需要任何表面变化(66)并且如果需要任何表面变化,则循环回到过程60。如果不需要表面变化,则具有消费品的3D应用准备好运送 (shipping) (68)。用于生成具有消费品的3D应用的工作流程已完成。现在,更详细描述每个上述过程。投影矩阵/矩阵配置樽式
投影矩阵是将三维点映射到二维平面的方法中使用的(如数学中定义的)方形矩阵。概念上有助于理解该投影的机制牵涉将二维(2D)投影视为被通过相机取景器观看。相机的位置、取向和视场帮助限定各投影矩阵。投影矩阵允许将二维图片描述为三维(3D)对象, 这样允许其他系统或程序能够与2D图像交互,如同其是全3D的。系统使用投影矩阵获得3D图稿并且使用3D图稿创建3D软件。为此,该软件必须校准到与图稿相同的投影矩阵。当被适当校准时,应用中的平行线将完美地与背景图像中的平行线重叠。
当构造应用/工具46处于矩阵配置模式(使用投影矩阵部件46A)时,技术用户可以调整影响投影矩阵的参数。为了使技术用户操纵清楚的、可理解的参数,构造应用使用用于将简化的数据点转化成相对更复杂的投影矩阵(其最终包括如4X4矩阵网格的16个数值)的系统。在一个实施例中,由技术用户控制的参数可以包括矩阵规模(Matrix Scale), 矩阵偏移X和矩阵偏移Y。这些参数借助于常见的数学变换被转化为投影矩阵的数字值。 该变换不会保持或实现投影矩阵中牵涉的所有数值的用户控制,因此对于用于构造投影矩阵和后继的裁剪和缩放操作的一些数值,使用缺省值。投影矩阵得自相机的X、Y、Z位置, 相机的旋转X、Y、Z位置以及观看者相对于显示表面的X、Y、Z位置。后继的裁剪和缩放操作可以得自(但不限于)视场、近裁剪平面和远裁剪平面。例如,投影矩阵的标准的“近平面距离”和“远平面距离”分量被设定为合理的常数值。这些所述的简化方法的目的在于使得 3D投影矩阵操纵技术不熟练的技术用户可以极快速地理解和操纵使应用中的平行线与背景图像中的平行线校准所需的控制。此外,当构造应用处于矩阵配置模式时,用户可以调整“世界(world)”的偏移,即与调整相机的位置和旋转相似的功能。这有效地向所有表面坐标添加6个世界偏移数值 (x、y、z、ΘΧ、和ΘΖ)(直接由技术用户控制)。此外,当构造应用处于矩阵配置模式时,技术用户可以看到和操纵出于视觉参考的目的已重叠在场景(stage)上的网格和投影中心点。该网格存在的目的在于协助技术用户使应用中的平行线与背景图像中的平行线对齐。用户可以调整网格的位置和旋转直至网格中的特定的线与背景图像中的特定的线重叠。调整网格的位置不影响用于计算最终投影矩阵的任何数值;其仅是由投影矩阵变换的引导以向技术用户显示平行和垂直线,以确定其线是否与背景图像中的线匹配。此外,当构造应用处于矩阵配置模式时,可以添加附加的参考形式以协助技术用户观看投影矩阵的效果。在屏幕上同时可以存在多个交叉网格以协助对齐背景图像中的多个表面。还可以存在修改的鼠标光标,其具有成90度相对角度的3条线(在x、y和ζ轴上), 从而用户可以快速地停留在任意点以查看投影矩阵如何影响鼠标光标与背景图像对齐的能力。存在技术用户可以使用来执行对准的各种技术。例如,如果网格上的垂直角 (perpendicular angle)比背景图像的垂直角更锐,则技术用户应增加矩阵规模属性(使投影矩阵放大;使投影矩阵具有较小的视场;使以接近90度的角度投影垂直角)。此外,如果网格上的垂直角比背景图像的垂直角更钝,则技术用户应降低矩阵规模属性(使投影矩阵缩小;使投影矩阵具有较宽的视场;使以更扭曲的角度投影垂直角)。作为另一示例,当背景图像具有在空间中形成90度角的2条自然线,并且这两条线的投影是180度,并且θ y偏移被设定为0时,则这些线的纬度表示投影中心的y分量。假设通过特定背景图像的特定方面,许多其他技术将变得明显,并且构造应用具体地实现这些技术的发现,因为其减少了技术用户当构造投影矩阵时考虑的变量数目。在使网格与图像对准的过程期间,技术用户具体地查看牵涉网格中的线以及匹配背景图像中的线的3D鼠标光标的前述因素,并且智能地调整数值(使用展示(Exhibit)4和 5的左侧上的拖动垫和数字输入控制)直至如展示5中所示网格匹配。这些是技术用户在该过程期间可以应用的特定技术,诸如找到被投影为水平的图像中的线,以及首先使投影中心与该线对齐,随后调整缩放直至直角与图像匹配。如图示了图2中所示的方法的矩阵过程的用户接口的示例的图4中所示,示出了具有网格72的3D图片70,在该应用创建阶段期间(图3,过程56)网格72重叠到3D图片 70上。用户接口还示出了投影中心点74。网格可以是彩色的(并且用户可以选择颜色),从而网格最佳地与背景图片70对比。用户接口还可以包括显示用于调整投影矩阵的最常见的参数的部分76。在部分76中,每个参数可以具有与特定参数相关联的拖动垫78以及一个或多个数字输入框80,其允许用户调整投影矩阵的每个参数。如图4中所示的“拖动垫” 78通过使1或2个变量能够由用户同时拖动而使用户能够控制变量的值,即便在这些变量不一定可按他们的性质而被拖动时。为了将拖动垫安装在应用中,编程者将拖动垫设置到应用中,并且向特定的拖动垫指派1或2个变量以允许用户使用拖动垫操纵1或2个变量。当安装了拖动垫时(其中拖动垫被示出为安装在图4 中),这些1或2个变量中的每个被指配给拖动垫的χ分量或拖动垫的y分量,意味着用户使用拖动垫的顶部和底部控制一个变量(y分量)并且使用拖动垫的左侧和右侧控制另一变量(χ分量)。为了使用拖动垫,用户使光标(其可以由例如鼠标控制)停留在屏幕上的拖动垫上。随后,用户按下鼠标并且用户移动光标以设定变量改变的速率。随后,将光标移动到鼠标被首先按下的点的左侧将使指配给X坐标的变量以与距起点的距离成比例的速率减少。 相似地,将鼠标移动到该点的右侧将使指配给X坐标的变量以与距起点的距离成比例的速率增加。左/右移可以被称为第一变量/参数的第一控制轴。相似地,从起点向上和向下移动光标将执行相同的操作,不同之处在于这将改变指配给y坐标而非X坐标的变量。在拖动期间,垫自身将不移动;其将仅移动附于指配给拖动垫的χ和y分量的变量的元素的位置。上/下移可以被称为第二变量/参数的第二控制轴。返回图4,由于技术用户仍未使网格与图像对齐并且网格线不与图像中的自然线平行,因此投影矩阵被示出处于缺省位置。例如,网格72a的远左侧与图像中的附近的自然黑线交叉(而非保持与其平行)。图5图示了用于调整图4中所示的投影网格的用户接口的示例,显著不同之处在于技术用户已使网格72与图像70对齐(表示图3,过程58的完成)。在该图中,在部分76 中投影矩阵的参数值不同,反映了网格72已与图像70对准,从而图像中的平行线与网格中的平行线匹配并且图像中的垂直线与网格中的垂直线匹配,保持90度角的投影角。此外, 如果网格将上升(通过调整其y坐标),则网格线将继续与图片中的适当的自然线平行和垂直。在图像左侧附近的天花板水平上,将注意到包括3条不同的线的3D微件82,每条线表示特定的3D轴(χ、y和ζ)。在一个实施例中,这是当光标停留在图片上时其呈现的样子。 当光标(诸如通过正在移动的诸如鼠标的输入设备)来回移动时,3条线将总是指向表示相对该点的投影角度的方向,由此使用户能够停留在背景图像的特定物品上以进一步确保对准是适当的。表面/表面编辑
返回图3,技术用户添加/删除/修改图像表面并且使用如图6中更详细示出的诸如拖动垫和数字输入框控件的输入设备来调整每个表面的定位。在该系统的一些实施例中,在系统中的商业用户的任务之前技术用户使用构造应用限定表面(图3,过程60)。表面是商业用户可以将消费品拖动到其上的目标区域。当构造应用/工具46处于表面配置模式(如图6中所示,例如使用表面编辑部件46B)时,技术用户可以在应用中添加、删除、移动和旋转表面。在该系统中,表面以特定序列分层并且该序列确定表面彼此的前后顺序(在计算机科学中还被称为ζ顺序)。在该系统中,表面可以是2D层并且由于特定的ζ顺序,表面可以用于将掩蔽 (masking)层放在3D层前面。该掩蔽层可以是背景图像的重叠,使得如果背景图像包含前景特征,则前景特征将保持在商业用户拖动到其下面的软件消费品上面。此外,表面可以被限定为具有曲率而非是平坦的。曲线(curve)可以通过向每个表面添加属性来限定,该属性限定了 Bezier曲线、圆曲线、或者其他算法曲线以符合背景图像中呈现的曲线表面。曲线可以在其Y轴、X轴或此两者上限定。图6图示了用于创建、命名和定位图4中示出的每个表面的用户接口的示例。该用户接口允许技术用户创建每个表面、命名每个表面,并且定位每个表面,使得在将消费品设置在其上时,其将呈现为消费品被直接设置到背景图像中的表面上。用户接口可以包括 3D图像70和表面编辑部分84。表面编辑部分84可以进一步包括表面命名和添加部分86 (其允许用户添加/命名/选择用于编辑的表面),以及表面参数部分88 (其具有如上文所述的相同的拖动垫78和数字输入框80),其允许用户调整每个表面的一个或多个参数。如图6中所示,当用户在表面命名和添加部分86中选择/添加表面时,其与3D图像70同步,使得表面90的图形表示(在该示例中诸如左墙)呈现在图像70上面。此外,当用户点击表面命名和添加部分86中的表面90或者表面的名称时,此两者将被突出显示。当表面被选择时,该表面的细节(由于它们当前存在)呈现在表面参数部分88中的标志“编辑所选表面(Edit Selected Surface)”下方。在该状态下,用户可以使用与上文所述相同的拖动垫78和数字输入框80来编辑名称和3D坐标以对其进行定位。如下文所述,商业用户随后使用每个表面来定位消费品。然而,当3D应用完成时,这些表面通常不可见并且在构造应用生成的最终应用中将是不可见的。消费品/编辑消费品
返回图3,商业用户可以通过拖动和放下来针对3D环境添加/删除/编辑/移动一个或多个消费品或者商业用户选择先前添加的消费品,如图7和8中所示的那样(62)。消费品编辑部件的用户接口 100可以包括3D图像70 (其已与投影矩阵对准并且具有技术用户添加的表面)和消费品部分102。消费品部分102可以包括编辑表面部分104 (其允许用户添加或编辑表面)和消费品列表部分106,消费品列表部分106列出编程者预先限定的软件消费品定义的集合(诸如一般文本消费品、图像消费品、视频弹出消费品等)。在该系统中, 没有针对可以被限定的消费品的类别的限制并且系统不限于图7中示出的消费品。例如, 实现构造应用的系统的编程者可以创建,但不限于视频显示、网络摄影显示、交互对象、数据库驱动数据网格、可拖动面板、聊天框、使用标准客户端-服务器架构的Q&A部件等。消费品列表部分106具有拖放系统,其使得商业用户能够通过将消费品从列表 106拖到场景/图像70上来添加新的消费品。用户接口还可以包括参数定义系统(图7中未示出),其使得消费品的编程者能够限定什么参数用于该消费品,并且使商业用户能够填入关于该消费品的值。使用创作部件46C,消费品可以被这样设置即使得其跨越多个表面。为此,创建检测相邻表面的系统,并且当商业用户将消费品这样设置即使得其在2个或更多个不同表面之间配合(fit)时,部分消费品将被设置在一个表面上,而部分将被设置在另一表面上。 在使用该特征的一实施例中,所设置的消费品数据结构(图11)将不仅包含一个字段集合: {父id (parent id), χ, y},而且包含含有相同字段的阵列,以及用于描述每个表面上裁切设置的消费品的部分的另外4个更多字段,因此新的字段集合将是[{父id,χ, y,左裁 (cropleft),右裁(cropright),顶裁(croptop),底裁(cropbottom) }, ···,…]。图7和8图示了图2中示出的方法的接口过程的示例。图7示出了在所有先前的步骤(其中技术用户建立矩阵和表面)之后,商业用户最初将交互的接口模式。在该状态下, 商业用户可以将任何可用的软件消费品(在此展示中标有“贴花(Decals)”)拖放到任何表面上。绿色箭头108 (仅出于说明的目的重叠,因为其未呈现在用户接口中)示出了商业用户将消费品拖放到表面上的鼠标路径,并且得到的呈现在表面上的消费品在箭头的指向末端出示出。图8示出了当编辑已由商业用户创建的消费品时商业用户将交互的接口模式。在消费品部分102中,显示根据消费品在哪个表面上而编组的所设置消费品(设置在图像70 中的消费品)的列表110。该示了通过鼠标停留的软件消费品。其使用与图4中使用的相似的同步选择方法,使得当用户停留在设置消费品的列表中的消费品或者如图像70上示出的实际消费品上时,此两者被突出显示。当商业用户点击消费品时,将打开表单(图9), 其提示商业用户输入呈现在该表单上的关于该消费品的参数(诸如标题、描述和参数)值。图10和11图示了用于将内容设置在3D环境中的系统的对象模型110,其中图10 图示了示出应用如何存储和处置消费品定义的对象模型。该仓库可以以任何面向对象的记法(诸如但不限于XML)表述。图11示出了如何将设置的消费品存储在应用中并且随着商业用户与系统交互而增长并且基本上描述了由商业用户执行的所有活动的结果。图11 中所示的“父id”字段指的是父表面,然而构造应用可以用于构造如下最终应用,其中消费品不仅可以设置在表面上,而且实际上消费品可以设置到另一消费品上,在该情况下,父id 指的是父消费品的存储器地址(ID)。图11还示出了关于消费品/内容块的语言代码参数, 其允许在对象模型中限定消费品/内容块的语言,而且还允许在不必重新限定关于消费品 /内容块的对象模型的情况下容易地改变消费品/内容块的语言。图12图示了用于将内容设置在3D环境中的系统中的数据仓库和用户动作的更多细节。构造应用和最终应用两者均使用数据结构存储应用了解做什么所需的信息并且数据结构在这两个应用之间共享。仓库可以使用在也主控上述工具46的计算机上运行的基于软件的数据库系统实现,但是也可以通过硬件实现。仓库120可以包括项目数据仓库122、 表面仓库124、消费品定义和类定义126以及消费品仓库128。存储消费品的定义的仓库1 在编程者执行应用之前创立并且在商业用户可以开始使用系统之前必须包含至少一个限定的消费品。仓库126在应用运行时是固定的,并且在应用运行期间不应改变。为了使用该仓库126,首先消费品的编程者编写实现如期望的特定消费品的(如计算机科学中定义的)类。随后,编程者创建定义所实现的消费品的新对象,并且将该对象添加到消费品仓库128,该消费品仓库1 可以包含数目无限制的消费品。每个消费品应定义将显示给用户的名称和描述并且限定每个参数,用于创立表单,提示用户适当的参数,提供与每个参数相关联的正确的表单控件,并且使系统了解在商业用户完成表单录入之后如何存储数据。如上在图3中所述,当商业用户编辑消费品时,构造存储商业用户针对系统的输入的仓库。图12还图示了在用户动作(如参照图3描述的过程52至62)、数据仓库122至 128、呈现引擎130、用于上述技术用户和商业用户的用户接口 132以及用于递送到客户的完成的3D应用(最终应用)的用户接口 134之间的交互。由于构造应用(132)是WYSIWYG 编辑器,因此最终应用134在视觉上是构造应用的子集。然而,由于软件消费品可以具有与 “释放模式”功能不同的“设计模式”功能,因此在最终应用中可能获得更多功能。完成的最终应用的示例可以是聊天室,其包含聊天面板和具有按钮形式的相关选项以及其他常见的用户接口控件。项目数据仓库122存储关于所有用户工作以产生的应用的所有数据和元数据,而表面仓库1 存储所有表面数据。消费品定义仓库126存储源代码或者具有类定义形式的编译二进制软件,以及图10和11中概述的数据。消费品仓库128存储由商业用户添加的所有消费品的设置和参数以及数据。呈现引擎130消耗并且聚集来自所有数据源的数据并且所有应用使用呈现引擎 130用于以交互方式在屏幕上显示完成的结果。呈现引擎通过原样呈现122中的背景图像而启动。随后,呈现引擎查看所有表面并且在消费品将去往的屏幕上创建不可见的(或者如果构造应用处于表面编辑模式,则可见的)视口(矩形区域)。通过以下来计算这些视口的3D 或2D位置查看124中的表面的坐标,并且计入122中的投影矩阵,并且使用标准的3D投影计算机算法用于将视口投影到2D计算机监视显示器上。随后,呈现引擎查看来自与每个表面(其现在由视口表示)相关联的128的每个消费品。其将消费品设置到视口上,再次使用标准3D算法来了解如何将每个消费品变换到显示监视器的各像素上,条件是给定视口的位置和设置的消费品的位置。在该过程期间,呈现引擎还通过创建126中定义的(多个) 类的实例并且随后将由设置的消费品定义的参数设置到消费品实例中,使来自1 的设置的消费品与来自126的消费品定义组合。最后,呈现引擎指令消费品实例将其自身呈现到具有由商业用户62给出的参数的视口的计算位置上。用户接口 132表示用于构造如上所述的应用的应用逻辑和用户接口逻辑并且用户接口 134表示建议构造应用创建的并且由最终应用的软件客户和所有终端用户使用的最终应用。上述系统和方法可用于生成3D应用(最终应用),该3D应用能够嵌入到协作系统中,使得许多终端用户同时注意到虚拟事件。在一个实施例中,构造应用或最终应用或此两者可以使用富互联网应用平台实现,其包括但不限于Adobe Flash和Microsoft Silverlight (业界中最常见的两个平台)。这样做的优点在于(多个)应用变为非下载的无处不在的解决方案。然而,该系统也可以使用其他技术实现。作为上述系统和方法的结果,非技术用户能够简单地通过拖放来添加、编辑和删除3D世界中设置的内容,从而应用可以由需要它们的用户创建,而不需要编程者干预。该系统还提供了元编程环境,其使得能够通过限定高级建模方面而非源代码来从头开始创建应用,其中元编程环境是拖放和表单编辑的系统。此外,为使用构造应用构建的应用创建的软件消费品可以在其他应用中可互换地重新使用。例如,如果存在特定的媒体播放器(其由编程者编写并且包括在出于一个特定应用的目的而向用户提供的管理工具中),则在其他商业用户创建的其他应用中可以重新使用该媒体播放器,不需要编程者采取使该媒体播放器可重新使用的动作。该系统还提供了用于在不逐行编写代码的情况下创建应用的方式并且缩短了传统的编辑-编译-测试-运行开发周期。此外,开发者和商业用户容易地共享和修改消费品并且改进彼此的工作。此外,创建(由商业用户使用的)软件消费品的软件编程者不需要具有3D编程专门技术并且商业用户不需要具有任何3D专门技术;拖动到3D表面不需要比计算机软件应用中的普通拖放更多的技能。应用运行时平台在运行三维应用的计算机系统上执行。该应用运行时平台是被描述为上文的构造应用的应用的功能子集。应用运行时在概念上类似于Adobe PDF Reader 如何在你创建PDF文件时准确地显示与你在Microsoft Word或其他编辑器中可看到的相同的事物。使此分离为另一应用的一点是减少代码尺寸,这有利于加快应用的加载时间并且减少错误和安全弱点。再者,应用运行时可以被实现为可重新使用的平台,从而如果使用构造应用创建多个应用,则该运行时平台仅需被加载一次并且可以支持使用本发明创建的所有应用。以上系统和方法的实施例的示例将允许商业用户与(使用3D图像实现的)虚拟显示交互并且将一个或多个软件消费品/内容添加到虚拟显示。在图4至8中示出了该实施例的示例,其示出了虚拟显示的休息室,其被修改以将一个或多个软件消费品/内容添加到虚拟显示中。尽管前文参照本发明的特定的实施例,但是本领域的技术人员将认识到,在不偏离由所附权利要求限定其范围的本发明的原理和精神的情况下,可以在该实施例中进行各种改变。
权利要求
1.一种用于生成三维应用的系统,包括执行构造工具的计算机系统,技术用户和商业用户使用所述构造工具生成三维应用;仓库,与所述计算机系统相关联,存储与所述构造工具和所述三维应用相关联的数据;应用运行时平台,在运行所述三维应用的计算机系统上执行;终端用户应用,包括所述三维应用和所述应用运行时平台;以及其中所述构造工具进一步包括投影矩阵部件,该投影矩阵部件允许所述技术用户调整投影矩阵以与三维图像对准;以及创作部件,该创作部件允许商业用户将一个或多个消费品设置到所述三维图像上以生成具有所述三维图像和一个或多个消费品的所述三维应用,其中所述一个或多个消费品相对于所述三维图像维持透视。
2.根据权利要求1所述的系统,其中所述仓库进一步包括关于每块内容的消费品对象,其中所述消费品对象进一步包括语言代码参数,所述语言代码参数包含关于所述消费品对象的语言,其中所述语言代码参数允许在不改变所述消费品对象的一个或多个其他参数的情况下改变所述消费品对象的语言。
3.根据权利要求1所述的系统,其中所述投影矩阵部件进一步包括拖动垫,所述拖动垫是控制所述投影矩阵的一个或多个变量的工具。
4.根据权利要求1所述的系统,其中所述构造工具进一步包括拖动垫,其中所述拖动垫具有第一控制轴和第二控制轴,其中第一变量被指配给所述第一控制轴,从而使用所述拖动垫使用所述第一控制轴控制所述第一变量的值,并且第二变量被指配给所述第二控制轴,从而使用所述拖动垫使用所述第二控制轴控制所述第二变量的值。
5.根据权利要求4所述的系统,其中所述拖动垫进一步包括所述构造工具的用户接口部件,其中所述第一控制轴进一步包括由用户操纵来改变所述第一变量的值的所述用户接口部件的右侧和左侧,而所述第二控制轴进一步包括由用户操纵来改变所述第二变量的值的所述用户接口部件的顶侧和底侧。
6.根据权利要求1所述的系统,其中所述三维图像是虚拟显示的图像,以及其中所述一个或多个消费品是被设置到所述虚拟显示中的对象,从而用户可以与所述虚拟显示交互。
7.根据权利要求1所述的系统,其中所述三维应用进一步包括不需要下载的Flash实现的三维应用。
8.根据权利要求1所述的系统,其中所述构造工具进一步包括表面编辑部件,该表面编辑部件允许所述技术用户在所述三维图像上面添加一个或多个表面,以及其中所述创作部件允许所述商业用户将所述一个或多个消费品设置到所述一个或多个表面上以生成具有三维图像、一个或多个表面以及所述一个或多个消费品的所述三维应用。
9.根据权利要求8所述的系统,其中所述表面编辑部件进一步包括拖动垫,所述拖动垫是控制使用所述表面编辑部件正在编辑的一个或多个表面的一个或多个变量的工具。
10.根据权利要求1所述的系统,其中所述创作部件允许用户进行添加、删除和修改所述一个或多个软件消费品中的一项。
11.一种生成三维应用的方法,包括提供在计算机系统上执行的构造工具,技术用户和商业用户使用所述构造工具生成三维应用;在与所述计算机系统相关联的仓库中存储与所述构造工具和所述三维应用相关联的数据;技术用户使用作为所述构造工具的一部分的投影矩阵部件调整投影矩阵以与三维图像对准;商业用户使用作为所述构造工具的一部分的创作部件将一个或多个消费品设置到所述三维图像上以生成具有所述三维图像和一个或多个消费品的所述三维应用,其中所述一个或多个消费品相对于所述三维图像维持透视。
12.根据权利要求11所述的方法,进一步包括使用拖动垫控制所述投影矩阵的一个或多个变量。
13.根据权利要求11所述的方法,进一步包括使用拖动垫控制一个或多个变量,其中所述拖动垫具有第一控制轴和第二控制轴,其中第一变量被指配给所述第一控制轴,从而使用所述拖动垫使用所述第一控制轴控制所述第一变量的值,并且第二变量被指配给所述第二控制轴,从而使用所述拖动垫使用所述第二控制轴控制所述第二变量的值。
14.根据权利要求11所述的方法,进一步包括由技术用户使用作为所述构造工具的一部分的表面编辑部件在所述三维图像上面添加一个或多个表面,以及其中所述创作部件允许所述商业用户将所述一个或多个消费品设置到所述一个或多个表面上以生成具有三维图像、一个或多个表面以及所述一个或多个消费品的所述三维应用。
15.根据权利要求14所述的方法,进一步包括使用拖动垫来控制使用所述表面编辑部件正在编辑的一个或多个表面的一个或多个变量。
全文摘要
描述了允许用户与二维(2D)照片或图像交互如同照片或图像是三维(3D)照片图像的方法和工具的集合。
文档编号G06F9/44GK102388362SQ201080015632
公开日2012年3月21日 申请日期2010年4月9日 优先权日2009年4月9日
发明者B. 加兰 H. 申请人:翁24公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1