积木构件模型的组装说明的自动生成的制作方法

文档序号:6477087阅读:1909来源:国知局
专利名称:积木构件模型的组装说明的自动生成的制作方法
技术领域
本发明涉及积木构件模型的组装说明的生成。

发明内容
有各种已知的机械结构玩具集的模型化概念类型。具体来说,模 块化或半模块化概念非常普遍,因为它们提供有趣的并具有挑战性的 玩的体验。通常,这些概念提供一组预先制造的积木构件,可以通过 预先制造的构件的连接元件,以某种预定的方式彼此互连起来。预先 制造的积木构件类似于适用于完成特定的模型化任务的已知的对象。 如此,例如,在建造房屋的模型时,积木构件可以类似于墙砖、屋瓦、 门,以及窗户。如此,选择积木构件的目的是,与每次要制作新模型 时都对房屋的所有细节进行定义的情况相比,建造房屋的模型涉及的 工作量显著缩小。然而,在建造房屋或另一个对象的完全的自由度与 建造模型的简单性之间是相互对立的。
例如,名为LEGO的名下的玩具积木套装合包括多种不同类型 的可互连的积木构件,具有凸起部和对应的凹槽作为连接构件。根据 规则的网格图案,放置连接构件,从而,在积木构件之间可以产生各 种互连。
通常,这样的玩具积木套装合包括一组适合于创建一个或多个积 木构件模型的一组积木构件,例如,动物、机器人,或另一种生物、 汽车、飞机、宇宙飞船、建筑物等等。通常,积木套装进一步包括打 印的组装说明或组装说明,说明了如何从积木构件建造某一模型。不 用说,这样的积木套装的一个有趣的特点是,它们会激发儿童制作他 们自己的才莫型。
通常,玩具积木套装中包含的组装包括一步一步地说明了如何以及按什么顺序向模型添加积木构件。这样的组装说明的优点是,易于 操作,甚至对于儿童也是如此,无需具有丰富的玩积木的经验,和/ 或无需阅读技巧。
一般而言,模型的组装说明可以被视为组装积木构件的步骤和分 步骤的顺序。序列从一个或多个初始积木构件开始,随着一系列步骤, 发展成为完全组装好的模型的结构。在每一个步骤中,添加了单一积 木构件或者积木构件的子组件。对当前描述来说,术语"子组件"是指 积木构件模型的互连的积木构件的子集。如此,添加子组件而不是单
个积木构件,可能会涉及向主组装说明中添加该子组件的附属组装说 明。对当前描述来说,这样的附属组装说明也叫做"分步骤"。如此, 步骤的序列一般可以表示为步骤的分支树,每一个分支都包含附属组 装说明。
以前,这样的组装说明是手动生成的,例如,通过手动确定合理
的组装步骤,在CAD系统中绘制对应的说明,最后,打印如此生成 的说明。尽管这样的组装说明是高质量的,即,易于操作,但是,上 面的制造过程也具有缺点它们需要的技能较高,并且需要较多的人 工。结果,通常只对于积木构件的制造商设计的积木构件模型,存在 組装说明。具体来说,上面的采用现有技术的用于生成组装说明的方 法不适合于希望为他们自己的模型产生组装说明的儿童,利用儿童自 己的组装说明,使得孩子们与他们的朋友共享他们的模型。
最近,组装说明是以电子方式生成的,而不是以印刷的形式生成。 具体来说,提供了动画形式的组装说明,比较复杂的组装步骤被制成 了动画。然而,这样的组装说明的制作,仍涉及由熟练的设计者设计 和绘制组装步骤/制作其动画。
在诸如LEGO系统之类的复杂系统中,模型的可能的组装说明 的数量随着模型中的积木构件的数量按指数速率增长。因此,从给定 模型的几乎无限数量的可能的組装说明中确定高质量的说明集,对于 自动的组装说明过程来说,是个问题。如此,需要提供一个自动化的 过程,甚至对于复杂的模型,生成切实可行的,操作简便的说明。进
10一步需要提供这样的过程,在合理的计算硬件上在合理的时间内生成 组装说明。
还进一步需要提供用于生成适合于希望为他们自己的模型产生 组装说明的儿童的组装说明的方法,这些组装说明可使孩子们与他们 的朋友共享他们的模型,并进一步改善玩的体验。具体来说,需要提 供几乎不需要用户交互和输入的轻松地对用户可用的方法。
某些研究的主题也讨论了有效的易于理解的一步接一步的組装 说 明 的 i殳 计 。 从
http:〃graphics.stanford.edu/papers/assemblyjnstructioiis/检索至!)的 M. Agrawala等人所著的因特网出版物"Designing Effective Step-by-Step Assembly Instructions"描述了基于认识心理学的有效的 组装说明的设计原则。该文进一步说明基于有关要组装的每一个对象 的信息,组件朝向和用于进行图形呈现的摄影角度,分组信息,有关 紧固件的信息,以及部件的意义,对称性,以及有关对組件的顺序的 约束,来生成组装说明的计算机化系统。基于此输入,系统基于大量 的搜索算法,并考虑给定的约束,计算组装步骤的序列。上面的采用 现有技术的系统的问题是,从计算角度来看,代价大,需要复杂的输 入数据,如此,需要用户有高度的抽象思维。
已公开的国际专利申请WO 2005/124696说明了一种为虚拟模 型生成组装说明的自动化过程,其中,组装说明利用在虚拟組装环境 中组装虛拟模型的过程中用户所使用的组装步骤的顺序确定的步骤 的顺序。尽管此采用现有技术的方法提供了易于使用的自动化过程, 但是,提高自动地生成的組装说明的质量仍是一个问题。
这里说明了 一种计算机实现的生成积木构件模型的组装说明的 方法,模型包括多个积木构件,组装说明表示组装积木构件模型的组 装步骤的顺序,每一个组装步骤都包括向积木构件模型添加至少一个 积木构件;该方法包括
-从积木构件模型的数字表示法,确定用于至少部分地将积木 构件模型分解为若千个积木构件的分解步骤的至少一个序列,每一个分解步骤都包括从积木构件模型中去除至少 一个积木构件;
-基于多个分解步骤中的至少一个步骤,确定组装步骤序列中 的至少一个组装步骤。
因此,认识到,通过确定分解步骤的一个或多个序列,可以有效 地确定组装步骤的序列。
模型的分解可以被视为分解积木构件的步骤和分步骤的序列/迭 代过程。序列从完整的模型开始,并按照一系列步骤进行。在完整的 分解中,过程持续进行,直到所有积木构件都与模型分离,而在部分 分解中,当只有预定的残余部分模型剩余时,过程结束。在每一个步 骤中,单一积木构件或者积木构件的子组件被分离。如此,分离子组 件而不是单个积木构件,可能会涉及与主分解关联的该子组件的附属 分解。这样的附属分解也叫做"子步骤"。如此,类似于组装,分解过 程的步骤的序列一般是步骤的分支树,每一个分支都包含附属分解。
当可以知道如何分解时,此信息可以用于生成組装序列的过程 中。因此,可以响应确定分解序列的步骤,确定组装步骤。此外,利 用合理的计算资源搜索满足某些选择标准的分解序列是可能的,并可 以产生高质量的组装说明。
进一步知道,通过此从计算上来说简单的方法生成的组装说明对
用户来说易于理解,特别是儿童。
此外,因为向组装说明的唯一输入是积木构件模型的数字表示 法,例如,如在虚拟模型生成过程中记录的,组装说明对于用户来说 易于生成,无需用户拥有设计技能或有关几何形状、约束等等的抽象 知识。此外,组装说明的生成还与用户实际组装虛拟模型的顺序无关。 这可能是有益的,因为虚拟组装环境可以允许組装步骤以对于物理的 真实世界的模型可能难以或者甚至不可能执行的顺序来执行。
在某些实施例中,该方法包括
-从积木构件模型的数字表示法,确定用于将积木构件模型分解 为若干个积木构件的分解步骤的顺序,每一个分解步骤都包括从积木 构件模型中去除至少一个积木构件;
12-颠倒确定的分解步骤的顺序,以获得组装步骤的顺序。 如果可以知道如何分解,则可以颠倒,产生组装说明,就如通过 逆方向执行组装说明,可以分解模型那样。因此,通过确定分解步骤 的一个或多个序列,然后颠倒分解步骤的顺序,获得组装步骤的序列, 可以有效地确定组装步骤的序列。优点是,此过程只需要生成单一的 分解序列。
在备选实施例中,该方法包括执行一个迭代过程,其中,迭代过
程的迭代包括
-获得由前一迭代产生的组装步骤的顺序,组装步骤的顺序产 生第一部分模型;
-确定随后的组装步骤,该步骤表示至少一个随后的积木构件 与第一部分模型的连接,导致产生第二部分模型。
-判断积木构件模型是否可以通过用于分解积木构件模型的导 致产生第二部分模型的分解步骤的序列进行分解;
-如果判断积木构件模型可以通过用于分解积木构件模型的导 致产生第二部分模型的分解步骤的序列进行分解,则将确定的随后的 组装步骤附加到获得的组装步骤的顺序中。
因此,在此实施例中,确定每一个組装步骤,以便可以通过完整 的模型的部分分解,获得部分模型。因此,通过组装过程,可以提供 用于生成组装说明的高效的过程,在每一个组装步骤中,模拟从完整 的模型直到当前组装阶段的分解。
此实施例是进行组装的(从砖开始,以完整的模型结束),而不 是完全基于分解。因为这是用户考虑组装说明的比较直观的方式,它 比较易于使用,功能强,允许用户与生成组装说明的过程进行交互。 用户交互的一个示例可以是对任何建议的砖块提出反对意见,并获取 替代的建议。事实上,此简单的交互可使用户在非常短的时间内生成 特别高质量的组装说明,需要的用户交互极少。此外,生成器还可以 确保,绝不会违犯硬约束,因此,无论用户反对什么,只作出合理的 建议。相应地,在一个实施例中,确定随后的组装步骤的步骤可以包括 接收用户输入,例如,以建议、批准,以及拒绝组装步骤这几项中的 至少一个的形式存在的用户输入。
判断积木构件模型是否可以通过用于分解积木构件模型的导致 产生第二部分模型的分解步骤的序列进行分解的步骤可以包括判断 积木构件模型是否可以通过分解步骤的序列进行分解的步骤,其中, 每一个分解步骤是通过一个或多个预定的选择标准集合选择的。因 此,提供了可以提供高质量组装说明的高效的方法。
在某些实施例中,确定分解步骤的顺序的过程包括执行一个迭代
过程,其中,迭代过程的迭代包括
-获得从前一迭代产生的前一部分模型;
-确定要从前一部分模型分离的导致产生新的部分模型的至少 一个积木构件。
因此,从完整的模型开始,通过在每一次迭代中去除一个或多个 积木构件,生成部分模型的序列。鉴于搜索高质量的组装说明一般需 要反向跟踪,如此,从计算上来说,代价非常大,对于比较大的模型, 甚至代价非常惊人,可以通过一遍算法(对计算硬件的要求低得多), 实现组装分解。
一般而言,在复杂的积木系统中,如在LEGO的名下销售的玩 具积木系统中,某些模型也许不可能一个积木构件一个积木构件地分 解,因为某些积木构件可能彼此锁住,而无法分离为单个积木构件。 然而, 一般而言,可以通过在每一个步骤中去除单个积木构件或积木 构件的子组件,分离所有模型。
相应地,在某些实施例中,确定至少一个积木构件的过程包括
-确定前一部分模型的一组候选子組件,每一个候选子组件都 包括前一部分模型的相应的互连的积木构件;
-根据第一组预定的选择标准,选择导致产生新的部分模型的 要从前一部分模型分离的单个积木构件或确定的候选子组件集合中 的一个。
14因此,在某些实施例中,对于分解序列,子组件被当做伪积木构 件。然而,积木构件模型的可能的子組件的数量一般随着模型中的积 木构件的数量按指数速率增长。因此,甚至对于中等大小的模型,给 定某些条件,搜索所有可能的子组件并选择要分离的一个子组件的自 顶向下的方法,从计算上来说,代价非常大,尽管当仅仅考虑单个积 木构件的去除时这样的方法可能是可行的。
在某些实施例中,这里所描述的方法将上面的自顶向下的方法与 用于生成要接受自顶向下搜索的候选子组件的自底向上的方法相结 合。候选子组件的生成可以根据一组一个或多个生成器子过程或第二 组选择标准来执行,如此,产生模型的所有可能的子组件的集合的候 选子组件的子集。因此,在执行从计算上来说代价大的自顶向下的方 法之前,使用自底向上的方法修剪搜索空间。
上面的对自顶向下的搜索的分割以及自底向上的生成导致从计 算上来说代价低一些,编程起来更加容易,并轻松地,例如,通过添 加用于生成候选子组件的额外的生成器子过程来进行扩展。
此外,上面的方法的控制力也得到改善,因为它提供了用于控制 要生成的候选子组件的数量的机制,如此,提供了用于协调计算成本 与所产生的组装说明的质量并针对任何给定硬件和时间要求调节候 选子组件的池的大小的机制。
在某些实施例中,第二组选择标准的至少一个包括确定一个或多 个候选子组件与前一部分模型连接的连接强度。因此,根据与前一部 分模型的其余部分的连接的强度,生成/选择子组件。结果,子组件的 此选择/生成策略导致产生特别高质量的组装说明。
用于有效地选择候选子组件的额外的或备选的选择规则包括确 定组装方向的变化和/或可移动地连接到前一部分模型(例如,通过铰 链或接头、滑块等等)的子组件。
在某些实施例中,方法包括通过表示图形(例如,无向图)的数 据结构来表示前一部分模型,包括表示前一部分模型的相应的积木构 件的节点,以及表示对应的积木构件之间的连接的连接相应节点的边。通过将前一部分模型表示为图形,可以使用从图论已知的图形划
分技术及其他技术(参见,例如,Jonathan L. Gross和Jay Yellen 所著的"Graph Theory and Its Applications", Chapman & Hall/CRC, 第二版,2006)来有效地识别适当的候选子組件,例如,通过识别图 形中的关节节点或关节对,以便识别通过单一关节积木构件或通过一 对积木构件连接到前一部分模型的其余部分的子组件。因此,互连的 积木构件的模型对应于连接图,子组件对应于连接的子图。
图形的节点和/或边可以具有与它们关联的一个或多个相应的属 性,分别对应于对应的积木构件和连接的属性。例如,图形的节点可 以具有一个或多个下面的属性积木构件类型、积木构件体积、积木 构件形状/几何形状、积木构件体积质量、积木构件的边界框、积木构 件在坐标系统中的位置、与积木构件关联的主组装方向、积木构件的 连接元件的位置、类型和/或方向等等。类似地,图形的边可以具有与 它们关联的一个或多个下面的属性连接类型、连接强度、连接的方 向等等。当图形的边具有与它们关联的相应的权重/值(表示连接的相 应的连接强度)时,可以使用特别高效的图形划分法,如用于查找最 少的切断的方法,来获得高质量的组装说明。
在某些实施例中,每一个积木构件都包括一个或多个连接元件, 用于与另 一个积木构件的一个或多个对应的连接元件啮合,以在该积 木构件和另一个积木构件之间提供连接。这样的连接元件可以对积木 构件的可能的放置施加进一步的限制,因为连接只在兼容的连接元件 之间才可以进行,例如,当置于相对于彼此的正确位置时,装入对应 的凹槽中的突出部。每一个连接元件都可以具有与它关联的连接元件 类别,每一个连接元件类别都具有与它关联的连接强度。在某些实施 例中,方法包括根据有助于对应的连接的连接元件的数量和相应的 类,确定对应于两个积木构件之间的连接的边的所述关联的连接强度 值。因此,提供了用于计算/估计积木构件模型中的连接强度的高效而 准确的方法。
在某些实施例中,确定所述关联的连接强度值的过程包括根据有助于对应的连接的连接元件的数量和相应的类,以及根据两个积木构 件的体积,确定连接强度值,从而,不仅考虑连接强度,而且还考虑 积木构件的大小,如此,积木构件在组装过程中是否易于固定和操纵。 在某些实施例中,确定要从前一部分模型分离的导致产生新的部 分模型的至少一个积木构件的过程包括为积木构件的子集和一组积
木构件的候选子组件中的至少一个计算一个或多个加权函数;并基于 计算出的加权函数的比较,选择单个积木构件和子組件两者中的一 个。因此,提供了选择过程的可扩展的并且灵活的框架,可以通过备 选的或附加的加权函数修改或扩展,可以根据它们的重要性/优先级, 为不同选择标准赋予相对于彼此的权重。加权函数可以包括一个或多 个积木构件的一个或多个属性的任何适当的函数。
在某些实施例中, 一个或多个加权函数中的至少一个具有可能的 结果的范围,包括表示分离的适当性的程度的第一子范围和表示分离 的不适当性的程度的第二子范围,从而,允许两者向积木构件和/或子 组件赋予正的和负的4又重。
相应地,在某些实施例中,基于计算出的加权函数的比较而选择 单个积木构件或子组件的过程包括根据一个或多个计算出的加权函 数计算总权重;其中,计算总权重的过程包括,如果至少一个计算出 的加权函数具有第二范围中的结果,则向总权重指定一个第二范围中 的值,从而提供否决策略,防止不满足某些条件的积木构件和/或子组 件被分离,尽管它们可能从其他加权函数获得高权重。
被发现产生高质量组装说明的加权函数的示例包括判断积木构 件或子組件在物理上是否可分离的或判断所述积木构件或子組件的 分离方向是否,例如,被模型的其他部分堵塞的加权函数。例如,可 以通过计算积木构件或子组件的伸展的几何形状,有效地计算这样的 加权函数。
这样的加权函数的另 一个示例包括向包含在积木构件或子组件 的关节对中的关节积木构件和/或积木构件赋予较低的权重的加权函 数,以便避免将模型分离为分离的部分模型。当加权函数包括随着连
17接到的其他积木构件或子组件(直接地或通过其他积木构件),确保 小的不相交的部分快速地从模型去除(如果它们发生的话)。
当其中一个加权函数是子组件的积木构件之间的连接的连接强 度的函数时,可以获得从其余模型轻松地分离的积木构件和子组件。 具体来说,已经发现,加权函数向具有较强的内部连接性和较弱的外 部连接性的积木构件和子组件赋予较高的权重,产生高质量的组装说 明。此外,在这样的加权函数中,连接性强度可以作为相对于互相连 接的积木构件或子组件的体积的强度来计算。
适当的加权函数的进一步的示例包括这样的加权函数至少积木 构件或子组件的属性和在迭代过程的前一迭代中分离的积木构件或 子组件的属性的函数,如此,可以有利于去除对称地放置的积木构件 或子组件,与另一个积木构件或子组件距离很近的积木构件或子组件 等等。这样的属性的示例包括积木构件相对于坐标系统的位置,积木 构件类型等等。在某些实施例中,加权函数还可以进一步是在前面的 迭代中去除的一个以上的积木构件的属性的函数。例如,当比较部分 才莫型时,可以给一个或多个以前的迭代赋予不同的权重;例如,可以 给最新的迭代赋予比以前的迭代较高的权重。
这里所描述的方法的实施例接收积木构件模型的数字表示法。这
样的数字表示法可以通过任何适当的过程提供,例如,计算机实现的 组装环境,和/或用于从, 一个或多个图像(如物理模型或另一个对象 的图像)生成积木构件模型的数字表示法的过程。在美国7,092,899 中描述了一个这样的过程。在此过程中,从CAD模型或一组三维物 体的二维图像,创建物体的积木构件模型的数字表示法。数字表示法
的类型、位置和/或互连等等的信息。数字表示法的实施例还可以进一 步包括有关整体模型属性、单个积木构件的属性(如积木构件类型、 颜色、大小、边界框等等)的信息。
计算机实现的用于交互地组装虚拟积木构件模型的组装环境,可 以包括计算机程序,当该计算机程序在计算机上执行时,提供图形用户界面,供用户操纵虚拟积木构件模型,包括这样的操作,如选择积
木构件、向模型中添加积木构件、从模型中去除积木构件,改变积木
构件的朝向,改变积木构件的属性,例如,颜色、类型、大小等等,
查看模型、保存模型的数字表示法,加载以前保存的模型的数字表示
法等等。虚拟积木构件可以是对应的物理积木构件的虚拟对应物,即,
具有对应的相对大小、形状、颜色等等。
计算机实现的组装环境可以被配置为实施施加于积木构件相对
于彼此的相对位置的预定的限制集合,如积木构件之间的沖突检测。 例如,限制对应于适用于对应的物理积木构件的对应的限制,从而确 保也可以从对应的物理积木构件组装虚拟积木构件模型。因此,优点 是,该方法确保了生成的组装说明实际是可实现的,即,产生所希望 的结果。
在某些实施例中,组装说明是作为诸如图像之类的图形表示的序 列生成的。每一个图形表示都可以包括部分积木构件模型(也被称为 部分模型)的图形呈现,从而,提供操作简便的组装说明,其中,每 一个图形表示都对应于向模型中添加预定数量的积木构件的组装过 程中的步骤。如此,构成确定的组装序列的所有部分模型或只有部分 模型的一个子集可以包括在最后的组装说明中,因为组装序列的一个 或多个步骤可以合并到整个组装说明中。用户可以轻松地通过比较两 个连续的图形表示,确定在每一个步骤中添加哪些积木构件以及如何 添加它们。
当方法进一步包括提供用于查看图形表示的用户界面(其中,用 户界面优选情况下便于对生成的图形表示的用户控制的处理)时,可 以方便地在计算机上查看积木构件模型的数字表示法。具体来说,由 于模型的数字表示法包括生成组装说明所需的所有信息,因此,组装 说明可以方便地从一台计算机传递到另一台计算机,例如,存储在存
储介质上,通过通信网络发送,例如,作为电子邮件连结,在Web服 务器上上传等等。如此,数字表示法的接收者可以查看图形表示,对 它进行操纵,例如,改变视角、缩放、更改查看选项,和/或类似的操作。因此,用户可以轻松地将他们的组装说明传输给朋友。再一个优 点是,数字表示法不需要包括组装说明的每一个步骤的图形呈现,从 而,可以使数字表示法的文件大小小一些。此外,由于数字表示法可 以包括所有相关的模型信息,因此,模型的接收者甚至可以在生成组 装说明之前对模型进行修改。
在某些实施例中,可以以预定的文件格式生成组装说明,从而, 可以生成打印的和/或电子的组装说明。适当的文件格式的示例包括
HTML、 XML、 BMP、 TIFF等等。
在某些实施例中,在按步骤的说明的一个步骤中添加的附加积木 构件的预定数量是用户可选择的,从而可使用户在非常详细的一步一 步的说明(其中,例如,每一个步骤都对应于单个新的积木构件的放 置)和非常简洁的说明(其中,每一个步骤都对应于较大数量的新放 置的积木构件)之间进行选择。在某些实施例中,在每一个步骤中添 加的积木构件的数量在所有步骤中都是相同的。在其他实施例中,添 加的附加积木构件的数量,对于组装说明的不同步骤,可以不同。例 如,对于每一个步骤,可以由用户控制步骤的大小,从而,对于组装 的比较复杂的部分,可以生成比较细微的说明。
本发明可以以不同的方式实现,包括上文和下文所描述的方法、 数据处理系统,以及进一步的产品装置,每一个都会产生与首先提及 方法有关的优点和优点,每一个都具有对应于与首先提及的方法有关 的优选实施例的一个或多个优选实施例,并在相关的从属权利要求中 进行了说明。
具体来说,上文和下文所描述的方法的特点可以以软件来实现, 并在通过执行计算机可执行的指令所导致的数据处理系统或其他处 理装置上实施。指令可以是从存储介质或通过计算机网络从另一台计 算机加载到诸如RAM之类的存储器中的程序代码装置。或者,所描
来实现。
相应地,本发明进一步涉及用于执行上文和下文所描述的方法的
20数据处理系统。本发明进一步涉及一种计算机程序,包括程序代码装 置,当所述程序在计算机上运行时,用于执行上文和下文所描述的方 法的所有步骤。本发明进一步涉及一种计算机程序产品,包括程序代 码装置,当所述计算机程序产品在计算机上运行时,用于执行上文和 下文所描述的方法。程序代码装置可以存储在计算机可读取的介质上 和/或作为传播的数据信号来实现。
在某些实施例中,计算机程序包括用于生成积木构件模型的数字
表示法的第一软件組件;以及用于从生成的数字表示法生成组装说明 的第二软件组件,从而提供用于读取模型的数字表示法并呈现对应的 组装说明的单独的软件组件。因此,当传递组装说明时,用户可以与 第二软件組件一起传递数字表示法,从而,提供组装说明的简单的独
立的表示法,可以由接收者查看,无需另外的软件。然而,应了解, 两个过程,即,生成模型的数字表示法和生成组装说明,可以集成在 单一的软件组件中。


下面利用优选实施例并参考图形,比较全面地说明了本发明,其

图la-b显示了生成积木构件模型的組装说明的数据处理系统;
图2显示了总的组装说明生成的实施例的流程图3显示了用于生成分解步骤的序列的过程的实施例的流程
图4显示了积木构件以及其连接元件的示例;
图5显示了以数字方式表示积木构件模型的数据结构的实施
例;
图6显示了组装说明应用程序的图形用户界面的实施例;
图7作为无向图显示了积木构件模型的表示;
图8-13显示了选择标准的实施例;
图14显示了总的组装说明生成的另一个实施例的流程图;图15显示了用于生成部分分解的分解步骤的序列的过程的实 施例的流程图16显示了总的组装说明生成的另一个实施例的流程图。
具体实施例方式
图la-b显示了用于生成和操纵几何对象的计算机可读取的模 型的数据处理系统。
图la显示了计算机系统的示例的示意图。计算机系统包括适当 地编程的计算机101,例如,个人计算机,包括显示器120、键盘121 电脑鼠标122和/或另一种指示设备,如触摸板、跟踪球、光笔、触 摸屏等等。
101表示的计算机系统可以从积木构件模型的数字表示法生成 组装说明。计算机系统101还可以进一步促进设计、存储、操纵, 以及共享虛拟积木构件模型以及如这里所描述的生成组装说明。可以 使用计算机系统101作为独立系统或作为客户端/服务器系统中的客 户端。在某些实施例中,计算机系统进一步包括用于将计算机与计算 机网络(例如,因特网)连接的一个或多个接口。
图lb显示了用于生成积木构件模型的组装说明的数据处理系 统的方框图。计算机101包括存储器102,存储器102可以部分地 作为易失性,部分地作为非易失性存储器装置来实现,例如,随机存 取存储器(RAM)和硬盘。存储器上存储了模型代码解释器107、模 型代码生成器108、 UI事件处理程序109、模型化应用程序110, 以及组装说明生成器113,每一个都可由中央处理单元103执行。 此外,存储器上还存储了模型数据111,即,代表积木构件模型的数 字表示法的一组数据结构。
代码解释器107可以读取和解释定义了模型的数字表示法,例 如,代表模型的积木构件的数据结构的代码。在优选实施例中,代码 解释器可以读取模型的数字表示法,并将这样的模型转换为用于在计 算机显示器上呈现的已知的图形格式,优选情况下,模型的3D呈现。
22UI事件处理程序109可以将用户的与用户界面的交互转换为可以 由代码生成器108识别的适当的用户命令。 一组可能的和可识别的 命4、可以包括从元件的库获取积木构件,将积木构件与另一个积木 构件连接,分离积木构件,丢弃积木构件,操纵积木构件, 一组积木 构件,等等,例如,通过启动旋转等等。与每一个命令一起,可以关 联一组相应的参数,例如,相对于显示器坐标系统的光标坐标,积木 构件的类型等等。
代码生成器108还可以进一步响应用户的命令,修改模型的数 据结构。作为同时的或随后的任务,可以执行代码解释器,以便呈现 代码生成器的结果。
模型化应用程序110可以控制存储器、文件、用户界面等等。 在US6,389,375中描述了虚拟现实模型化的实施例。此外,在 已经发布的国际申请WO04104811中描述了交互地将新的虛拟积木 构件放入包括3D结构的场景中。这里全部引用了这两个文件的内容 作为参考。
组装说明应用程序113可以读取模型的数字表示法,并如这里 所描述的,从读取的模型数据,生成组装说明。组装说明应用程序113 还可以进一步提供用户界面,用于根据如这里所描述的组装步骤的存 储的序列,显示部分模型,或生成的组装说明的任何其他适当的输出 格式。組装说明应用程序113可以使用由代码解释器107和UI事 件处理程序109所提供的功能,分别进行模型的读取和图形呈现, 以及接收用户输入。在备选实施例中,组装说明应用程序是独立的, 即,不依赖于外部软件组件。在某些实施例中,组装说明应用程序以 适当的文件格式,例如,以可以打印的形式,生成组装说明。
用户105能够通过用户界面106与计算机系统101进行交 互,优选情况下,包括计算机屏幕上显示的图形用户界面,以及诸如 键盘和/或指示设备之类的一个或多个输入设备。为了加载、保存或传 递模型、几何描述或其他数据,计算机系统包括输入/输出单元(I/O) 104。输入/输出单元可以用作与不同类型的存储介质和不同类型的计算机网络(例如,因特网)的接口。此外,输入/输出单元(1/0)104可 以用于,例如,交互地,与其他用户交换模型。存储器102、中央处 理单元(CPU) 103、用户界面(UI)106,以及输入/输出单元104之 间的数据交换是通过数据总线112来完成的。
值得注意的是,图1的数据处理系统可以被配置为执行模型化 应用程序和组装说明应用程序两者。然而,在其他实施例中,数据处 理系统可以被配置为只基于从另 一 台计算机(在其上面运行模型化应 用程序或用于生成数字模型表示的另 一 个应用程序的计算机)接收到 的模型数据,执行组装说明应用程序。同样,在所述另一台计算机上, 模型化应用程序可以独自安装,或与组装说明应用程序相结合地安 装。
图2显示了组装说明生成的实施例的流程图。在步骤Sl中, 接收积木构件模型的数字表示法,例如,由模型生成模块(例如,图 lb的模型化应用程序110)或由任何其他适当的进程所创建的。
可以从存储介质203中检索数字表示法,例如,运行组装说明 应用程序的计算机的本地硬盘,CDROM、磁盘等等。或者,或另外, 模型的数字表示法可以远程存储,例如,从存储了它的计算机网络的 另一台计算机接收。例如,可以从Web服务器下载数字表示法,在 Web服务器上数字表示法可以对一个或多个用户可用。下面将描述 数字表示法的数据结构的示例。
在后面的步骤S2-S4中,组装说明应用程序从加栽的数字表示 法生成组装说明205。在一个实施例中,组装说明应用程序生成部分 模型的3D视图的序列,其中,每一个部分模型与紧前面的部分模型 不同之处在于,根据如这里所描述的组装说明进程确定的组装步骤的 序列,向模型中添加预定数量的附加积木构件。可以以电子方式呈现、 打印,或以另一种适当的方式呈现组装说明205。在某些实施例中, 组装说明的生成可以由用户204进行控制。例如,用户可以选择要 在每一个步骤中添加的附加积木构件的数量。此外,用户还可以操纵 生成的3D视图,包括改变摄影机的方位等等,正如下面所描述的。
24用户204可以是与用户202相同的用户,也可以是不同的用户。
具体来说,在步骤S2中,从接收到的模型的数字表示法生成分 解序列,例如,以积木构件的连续列表和/或模型的子组件的形式。进 一步生成连续列表的子组件的从属分解序列。在一个实施例中,进程 将分解序列表示为步骤的分支树,其中,每一个分支都可以包含从属 分解。下面将比较详细地描述生成分解序列的过程的实施例。 在步骤S3中,颠倒生成的分解序列,以获得组装序列。 在步骤S4中,从生成的组装序列生成组装说明,例如,作为部 分模型的图像的序列或其他表示方法,其中,在每一个部分模型中, 与前一部分模型相比,添加了来自生成的列表的一个或多个积木构件 和子组件。可以存储生成的说明和/或以如这里所描述的任何适当的形 式将它们输出。
图3显示了模型M的分解过程的示例的流程图。分解过程根 据完整的模型M的数字表示法,对模型M进行分解,包括模型中 的所有积木构件(步骤301)。模型M的输入包括有关单个积木构 件的信息,如大小/尺寸、旋钮的数量,诸如积木构件的铰链、栓、轴 等等之类的特点。数字表示法还包括有关将每一个积木构件放在模型 中的什么位置的信息,例如,通过指定积木构件相对于适当的坐标系 统的相应的(x,y,z)位置。
在步骤302中,分解过程测试在模型M(或前一迭代产生的部 分模型)是否留下了要分离的积木构件。如果模型中仍有积木构件, 则执行步骤303,选择/生成用于从模型M中去除的一个或多个候选 子组件。候选子组件包括互连的积木构件。在随后的步骤304中, 根据第一组预定的选择标准,选择要分离的积木构件或其中一个生成 的候选子组件(E)。此第一组预定的选择标准根据预定的加权函数, 向每个积木构件和生成的子组件分配权重,下面将比较详细地描述它
们的示例。因此,从候选项的池中确定积木构件或子组件,池包括所 有单个积木构件和生成的候选子组件。因此,对选择过程来说,子组
件可以被视为除实际积木构件之外的伪积木构件。对当前描述来说,积木构件和候选子组件的成员也被称为待移去候选项。
在步骤303中,通过第二组选择标准(确定如何分隔/切断模 型),发现/选择候选子组件。下面将比较详尽地描述这样的选择标 准的示例。
在步骤305中,从模型中分离在步骤304中选择的积木构件或 子组件E,即,生成新的部分模型M' = M\E,其中,选定的候选子 组件的所有积木构件的选定积木构件都被去除。维持表示分解序列的 数据结构,并利用有关分离的子组件/积木构件的信息更新数据结构。 存储序列,如此,然后,可以将它颠倒,以获得组装说明。
如果选择要分离的子组件,则可以通过在步骤307中以递归方 式执行分解过程(即,以选定的子组件E充当输入模型M),然后, 返回到步骤302,继续迭代分解过程,查找下一个要与其余的部分模 型(即,模型M' = M\E。)分离的积木构件,对选定的子组件进行 分解。
当模型中没有更多的积木构件时,模型被完全分解,在步骤308 中,分解过程停止。
因此,上文所描述的分解过程的实施例可以通过下面的伪代码来
表达
Deconstruct model M:
Let Candic ates be the set of all bricks in M Let Jesuit be an empty sequence of bricks
While (Cancfidates is not empty)
Let D be the subset of Candidates that are detachable
Let i) be the "best detachable" brick from
Add i> to i esuJt
Remove i from C"a/ didates
Return Resuit
在上面的伪代码中,选择"最佳可分离的"砖,对应于在上面的步骤304中执行的选择,即,基于一组预定的选择标准的选择,例如, 下面所描述的一个或多个选择标准。
优选情况下,首先选择可以从模型中分离的候选子组件,然后, 根据分离的优先程度,给每一个候选项指定权重,从计算角度来看, 当分为多个步骤时,处理这种选择是可能的,因为给子組件指定权重 只是对模型的所有可能的子组件的子集预先形成的。
在 2006 年 6 月 University of Southern Denmark , Department of Mathematics and Computer Science 的 Jacob AlIereHi 所著的论文 "Computer-aided generation of building instructions for LEGO models"中,其中一个发明人描述了分解过程 的示例,在此引用了该论文作为参考。下面,将比较详细地描述用于 在步骤303中确定候选子组件的第二组选择标准的选择规则的示 例。这些选择标准也将4皮称为"启发式切断(cut heuristics )"。
最少切断/图形划分
已经认识到,通过使用将图形划分为子图形的图形划分技术,可 以有效地确定适当的候选子组件。为此,在表示无向图(包括节点和 连接节点的边)的数据结构中表示模型,其中,节点表示积木构件, 边表示积木构件之间的连接。这样的图形也被称为连接性图形。图7 显示了连接性图形的一个示例。图7a显示了包括积木构件a、 b、 c、 d,以及e的积木构件模型的示例。图7b显示了带有节点a、 b、 c、 d、 e的对应的连接性图形。
图形数据结构的边数据项可以包括表示由边表示的连接所连接 的积木构件之间的对应的连接的(物理)连接强度的属性。如此,用 于识别图形的最小的权重cut的图形划分过程产生子组件,以致于分 离子组件所需的物理强度/力度至少大致被最小化。这样,选择连接最 松散的子组件。下面将比较详细地描述确定积木构件之间的连接强度 的示例。
组装方向变化优选情况下,切断组装方向发生变化的模型。当积木构件沿着至 少两个组装方向互连时,可以发生组装方向的变化。可以通过在连接 性图形中进行本地图形搜索来查找组装方向的变化的位置。可以通过 将方向属性与每一个积木构件关联,来定义组装方向。或者或另外, 可以通过将方向属性指派到积木构件之间的连接,来定义组装方向。 为此,连接性图形的节点和/或边可以具有与其关联的表示对应的连接 的组装方向的属性。
单一积木构件关节切断
将两个或更多子组件/积木构件互连的积木构件叫做"关节积木 构件",可以是分离模型的好的切断点/节点。 一旦被识别,关节积木 构件可以包括在分离的子组件中,即,被去除,或者,可以从分离的 子组件中排除关节积木构件,即,不被去除。在图形中,关节积木构 件可以,例如,;陂标记出来-例如,通过所谓的图形着色-,从而, 可以被轻松地定位。连接性图形的关节节点可以通过任何适当的用于 发现图形的关节节点的算法来查找,例如,基于深度优先搜索(参见, 例如,"Graph Theory and Its Applications", Jonathan L. Gross和 JayYellen著,Chapman & Hall/CRC,第二版,2006)。
积木构件关节对切断
术语"关节对"是指将两个或更多不相交的子组件互连在一起的 两个积木构件,即,其去除导致模型分解为两个或更多不相交的子组 件的积木构件的对。通过关节积木构件或关节对连接到模型的其余部 分的子组件,对于生成组装说明,可以是有用的候选子组件。
关节对可以通过一个过程查找,其中,保存了连接性图形G中 的所有关节节点的列表A。然后,生成图形G',其中,去除了 G中 的非关节节点n。保存了 G'中的所有关节节点的列表B。对于B\A 中的每个节点m,找到下面的关节对(n, m),对于图形G中的所 有非关节节点n,重复此过程。
28铰链或接合连接
铰链连接是围绕铰链方向的一个或多个积木构件之间的铰链。积
链连接的铰链连接元件。通过铰链连接连接到模型的其余部分的子组 件,对于生成组装说明,可以是有用的候选子组件。当图形的边具有 表示铰链结构的存在的关联的属性时,可以在连接性图形中识别这样 的组件。例如,可以搜索连接性图形的只通过一个或多个铰链连接连 接到连接性图形的其余部分的子图。图12b显示了具有用于提供铰 链连接的连接元件1201的积木构件。应该理解,其他类型的可移动 的连接也可以用于识别候选子组件,例如,接合连接、等等。
特殊情况
某些积木构件在它们可连接到其他积木构件的方式上只在某一 点上特殊。这些积木构件的示例是在图的基座下具有单一连接元件、 在窗户中有玻璃,轮子上有轮胎,铁轨上有车皮的图。因此,这些特 殊积木构件在它们的外部连接(即,在它们连接到不同于它们的对应
的积木构件的任意积木构件的位置)中从模型中切除的候选项。
因此,在上文中,说明了用于识别候选子组件的许多启发式切断。 如此,在分解过程中,可以使用如上文所描述的一个启发式切断或更 多启发式切断的组合,有效地在^f莫型的所有可能的子组件之间发现候 选子组件。
如上文所描述的,在一个实施例中,每一个去除候选项-即, 模型的每一个积木构件和通过上面的或备选的启发式切断 (cut-heuristics)过程选择的每一个候选子组件,通过一个或多个加 权函数,被赋予权重,以便发现带有最高权重的去除候选项,即,最 适合于从模型中去除的去除候选项E (步骤304),然后,分离此选 定的去除候选项(步骤305)。
在一个实施例中,如此选择加权函数,以便根据它实现的条件,
29每一个加权函数要么增强积木构件/子組件;陂选择的可能性,或者它将 拒绝积木构件/子组件被选择。将对于每一个积木构件/子组件的所有 加权函数的结果组合起来,以便获得积木构件/子组件的总的权重。然 后,可以选择带有最高权重的积木构件/子组件。当根据均匀的加权方 式选捧单个加权函数时,加权函数组可轻;^地改变。
例如,在一个实施例中,每一个加权函数都导致一个权重。权重 要么是范围[0,…,1I中的实数,要么是负整数(-1,-2,-3,...)。如果 分离积木构件/子组件是有利的,在分配给积木构件/子组件的权重位 于范围[0 1,当分离积木构件/子组件既不反对,也不提倡时,指 定0,当分离最恰当时,指定1。这两个极值之间的实数表示两者之 间的分离有利。如果分离是不利的,则加权函数给积木构件/子组件分 配范围(-1,-2,-3,)中的负的权重,其中,不同负值表示分离不利 的程度。应了解,可以定义具有不同范围的其他加权函数集合。
可以使用具有两个单独的范围的加权函数来实现否决方案,例 々口, ^p下面所4苗述的
对于每一个积木构件/子组件x,对一组加;^又函数中的每一个加 权函数进行评估,相应的单个权重按如下方式组合起来如果在x的 指定的权重之间没有负的权重(所谓的"否决"),则将所有权重累加 起来,获得总权重。另一方面,如果在指定的权重之间有一个或多个 "否决",则所有非"否决,,权重都丟弃,即,设置为0。根据此,好的 要分离的积木构件/子组件是无"否决"的并且具有高累加权重的那一 个。另一方面, 一旦积木构件/子组件被赋予了"否决",则直到分解过 程中的下一次迭代之前,它不能离开"否决"状态。如果所有积木构件 /子组件都获得负的权重,则可以选择带有具有最小绝对值的总的负的 权重的积木构件。或者,可以反向跟踪一个或多个迭代,试图选择不 同的积木构件/子组件,请求用户交互,或以另一种适当的方式继续进 行。
结果,当发现分解过程(在每一个步骤中,至少有一个无"否决" 的积木构件/子组件)时,上面的加权方式导致产生高质量的组装说明。现在比较详细地描述加权函数的许多示例 分离策略
加权函数的一个示例判断要分离的积木构件/子组件是否在物理 上可以从模型的其余部分接触和分离。为此,加权函数验证是否满足 下面的两个要求中的一个或多个
1) 积木构件/子组件可分离的/可连接的所沿着的所有方向都是 平4亍的。如此,此加外又函数可以确定组装方向和/或积木构件的所有连 接的方向,例如,基于与连接性图形中的对应的节点和/或边关联的属 性。如果所有方向都是平行的,则可以通过平移运动来分离积木构件。 例如,图8a的积木构件803具有两个不平4亍的连接方向它们连 接到轴802和积木元件804。与轴802的连接具有平行于轴802 的关联的方向,因为从轴802拆卸积木构件803需要在沿着轴802 的方向移动积木构件803。另一方面,与积木构件804的连接,具 有垂直于轴的方向,即,在旋钮从积木构件804的顶表面中凸出的 方向。因此,拆卸积木构件803可能导致模型拉紧,对于,例如, 儿童,在没有同时分离模型的其他连接的情况下,难以执行。图12显 示了带有利用箭头表示可分离性的相应的方向的积木构件的示例。
2) 在连接的方向移动积木构件/子组件,不会导致与模型的其他 积木构件沖突。例如,加权函数可以确定积木构件/子组件的边界框, 判断在连接的方向将边界框平移预先确定的距离是否导致与另一个 积木构件冲突/交叉。图13显示了积木构件1301沿着其可分离的方 向可移动的模型。或者,加权函数可以计算在连接的方向伸展的积木 构件/子组件几何形状,判断伸展的几何形状是否与任何其他积木构件 /子组件冲突。积木构件占用多少空间可以通过简单几何体积来表示。 例如,如图4所示的带有2x4个旋钮的积木构件可以具有与它关联 的9个冲突盒子 一个冲突盒子填充除8个之外的整个积木构件, 而8个旋钮分别填充一个冲突盒子。此信息可以用来估计积木构件 是否冲突/重叠。冲突盒子信息可以用来计算伸展的几何形状,该几何 形状表示为了分离积木构件所需的空间。
31如何计算伸展的几何形状的示例可以包括发现积木构件可以分
离的方向,是矢量d。积木构件具有N个冲突量(例如,如在上面 的带有2x4个旋钮的积木构件的示例中)和位置(x,y,z)。
具有积木构件BE、矢量d和模型M,分离过程可以包括下列 步骤对于BE中的每个冲突量,pl表示k的位置。当BE沿着 矢量d从pl移动时,p2表示k的位置。由于每个冲突量是带有8 个角的盒子,在pl将有8个点,在p2将有8个点。在一组点中, 总计将有16个点。当冲突量是凸面时,此组点将构成凸面图f。
过程测试图f是否与模型M中的任何积木构件沖突。如果图 f与模型M中的任何积木构件冲突,则积木构件BE不能被分离。 如果图f不与模型M中的任何积木构件沖突,则可以测试下一个冲 突量。
最后,如果N个冲突量中没有一个图f与模型M中的任何积 木构件冲突,则根据分离策略,可以分离积木构件BE。
此策略的效果是,它确保了积木构件/子组件的分解(如此,反 向结构)在物理上是可能的,而不会对模型施加物理劳损。
加权函数的下面的示例避免了在物理上不可分离(或至少只轻松 地可分离的)积木构件/子组件的分离
Weight(x) = -1, if at least one of the above conditions 1) and 2) is not fulfilled forx,
0, otherwise
关节策略
如上文所提及的,其去除导致模型分解为两个或更多不相交的部 件的积木构件/子组件叫做关节积木构件/子组件。分离关节积木构件/ 子组件可能导致这样的组装说明,显示了看来似乎在组装说明的3D 呈现中浮动/飞行的不相交的构件/子组件。这可能是不希望发生的, 因为会使分解过程复杂化,从而,也使组装说明复杂化。
下面的加权函数避免了关节积木构件/子组件的分离Weight(x) = -1 if x is an articulation building element/sub-assembly0 if not
因此,坚决不赞成去除关节积木构件,如此会避免"悬空,,的积木构件/子组件。
在备选实施例中,如果x是关节积木构件/子组件,加权函数指定中性的权重,例如,权重=0,如果x不是关节积木构件/子组件,则指定正的权重,例如,权重=1。因此,在此实施例中,关节构件的分离既不反对,也不提倡。这显示了,可以调节不同的权重,以便使加权方式适应不同的期望效果。在再一个实施例中,根据是否为单个积木构件或子组件计算加权函数,指定不同权重。例如,在一个实施例中,如果x是子组件,对于关节子组件,weight(x)被设置为-1,如果x不是关节子组件,则设置为0,而在x是单个积木构件的情况下,对于关节积木构件,weight(x)被设置为0,否则,设置为+1。因此,在此实施例中,防止了关节子组件的分离,而分离关节积木构件仅仅是不赞成。
集成策略
有这样的情况在其余的部分模型中不可能避免分离的(或"悬空")积木构件/子组件。图8a显示了这样的情况的示例,显示了位于轴802上的齿轮构件801,它通过积木构件803的对应的空穴凸出。当分解模型时,轴802可以去除,导致齿轮构件801与模型的其余部分分离,如图8b所示。
在这样的情况下,可能希望尽可能快地从模型中去除分离的构件801,导致如图8c所示的情况。
快速去除分离的构件可以通过加权函数向(直接或间接地)连接
到较少的其他积木构件的积木构件/子组件指定增大的权重来实现这
样的加权函数的一个示例是
Weight(x) = 1 / (number—of_building elementS-Connected—to_x + 1) for allbuilding elements/sub-assemblies x
在图8b的示例中,上面的加权函数向小齿轮801指定权重1,因为它不连接到任何其他积木构件或子组件。另一方面,给其他
积木构件指定了权重1/6,因为它们是包括表示为803、 804和805的五个构件的组件的一部分。
如此,集成策略减少了在所产生的组装说明中显示不可避免的"悬空"的积木构件或子组件的步骤的数量。
相似度策略
相似度策略涉及组装/分解中的对称性。当在组装过程中使用相似度策略时,结构可能变为对称的,这将筒化分解过程。为了基于此执行分解,表示两个积木构件A和B是"相似的"的函数可以按如下方式确定。
加才又函数确定A和B在坐标系统中的坐标,其中,y轴对应于原则的组装方向,例如,垂直方向。x轴和z轴对应于其他主要的组装方向例如,水平方向。
如果B是分离的最后一个积木构件,那么,用于判断A和B是否相似的加权函数可以具有下面的形式
Weight(x) = sum of
a if A and B is the same type of building element
b if A and B have the same x coordinate or the same z
coordinate in the coordinate system
c if A and B are having the same attributes (such as color,
decoration etc.)
for predetermined weights a, b, c where a+b+c-1.
高于0的权重反映了某种相似度。也可以考虑替代的和/或另外的条件。
策略是分离积木构件/子组件,类似于分离的最后的积木构件或子组件。此策略的影响是,包含对称件的模型,常常被对称地分解。
图9给出了针对分解的相似度的示例,分别说明图9a)- c)中的三个连续的分解步骤的示例。从图9可以看出,在模型的左边部分,首先分离长方形积木构件卯l,然后,分离与第一长方形积木构
34件对称的相似的长方形积木构件902。下一个步骤可以是分离模型的右边部分的两个相似的长方形积木构件903。
基础策略
特殊的积木构件或子组件,如大的板或形状不规则的板,常常是模型的基础/起始积木构件,因此,是最后一个分离的积木构件。为了检查板或其他积木构件是否是起始积木构件,可以将它的类型和/或尺寸与其他积木构件的类型/大小进行比较,或将其与表示积木构件比较大的阈值进行比较,因为起始积木构件常常比较大,因为它构成了模型的基础。此外,也可以通过分析放置在模型中的位置有多低来检查大的积木构件是否是起始积木构件。积木构件比较大并且放置在模型的底部很可能是起始积木构件。为此,连接性图形的节点可以具有与它们关联的表示积木构件的尺寸/体积的相应的属性。或者,组装说明过程可以允许用户指出起始积木构件,例如,通过利用鼠标或另一个指示设备,指出起始积木构件。相应地,防止起始积木构件被从模型
中去除的加权函数可以具有下面的形式Weight(x) = -1 if x is a starter building element0 if not.
或者,如果x是起始积木构件/子组件,加权函数可以指定权重0,如此表示,x的分离是不利的,如果x不是起始积木构件/子组件,指定高的正的权重,例如,权重=1,因为,这样分离是有利的。
这样的效果是,在所产生的组装说明中,某些共同的基础积木构件或子组件将在最初连接或在组装过程的初期连接。
分步骤完整性策略
根据一个实施例,对于每一个候选子组件x,有两个反映/有助于连接性的质量的有贡献的方面。第一方面是子组件x的积木构件之间的内部连接性的强度,而第二方面是子组件x的积木构件的外部连接性的强度。如果内部连接性相对来说比较强,而外部连接性相对来说比较弱,则可以期待子组件可轻;^地拆卸,因为子组件中的积
35木构件强连接到该子组件中的其他积木构件,并且只弱连接到模型的其余部分。相应地,在组装过程中,具有强内部连接的以及与模型的其余部分的弱连接的子组件,可能作为稳定的子组件,相对来说容易组装,并连接到模型的其余部分,没有在组装过程子组件分解的风险。
为了研究子组件在内部连接的坚固程度,即,子组件的不同的积木构件如何彼此连接,可以使用连接性图形或所有积木构件之间的连接性的另一种适当的表示法。连接性图形可以包括反映积木构件之间的物理强度的权重,如上文所描述的,例如,当每一个边都具有与它关联的表示对应的连接的强度的属性/权重。
例如,每一个积木构件都可以包括一个或多个连接元件,用于啮合其他积木构件的对应的连接元件,以便在多个积木构件之间提供连
接。例如,图4显示了带有呈现旋钮的形式的突出部(用于啮合另一个积木构件的空穴(也被称为反旋钮)的积木构件的示例。 一般而言,积木构件可以具有一个或多个不同类别的连接元件,每一个连接元件类别,或每一对连接元件类别,都可以提供对应强度的连接。如此,可以有助于两个积木构件之间的连接的连接元件的数量/协作的连接元件对的数量,以及根据起作用的连接元件的相应的类另U/类型,确定/估计两个积木构件之间的连接的总强度。例如,可以将单个连接强度相加,获得总的连接强度。有关有助于连接的连接元件的数量和类型的信息可以从积木构件模型的数字表示法中获取,和/或包括在连接性图形的节点和/或边中。WO 04/034333中描述了支持连接元件的定义的数据结构的示例。
例如,积木构件x和y之间的连接的强度可以按如下方式计

<formula>formula see original document page 36</formula>
其中,总和遍及所有连接类别C,Se是连接类别C的连接强度,
而N(c)是有助于x和y之间的连接的类别c的连接元件的数下面给出了如何确定如图4所示的类型的两个积木构件x和
y(具有呈现旋钮/反旋钮(或空穴)对的形式的连接元件、栓和轴)之
间的连接的物理强度的示例<formula>formula see original document page 37</formula>
应了解,上面的示例中的数值只作为示例。
当计算有效强度时进一步考虑积木构件的几何形状时,可以更加
准确地估计连接性的有效强度。
例如,图10显示了两个子组件,每一个子组件都包括通过参考 图4所描述的形式的单一连接元件互相连接的两个积木构件。然而, 图10a的子组件连接得结实,即,难以分解,而图10b的子组件不, 用户非常容易将积木构件1001从基板1002中拆卸。还可以通过合
并相对于其连接的强度的最小的/最轻的积木构件的体积或质量针对 此差异进行调整。或者,或另外,也可以使用表示积木构件的几何属 性的另一个适当的数量。这模拟了,例如,用户利用用户的手指抓取 积木构件的容易程度,因为大的积木构件比小的积木构件更加容易抓 取。
因此,这样的经过修改的加权函数可以表达为 Connection(x,y) = Strenght(x,y) / Minimum(volume of x, volume of y)
如此,在如图10所示的示例中,两个子组件在多个积木构件之 间具有相同强度,因为在两种情况下,小的积木构件以一个旋钮-反旋 钮对连接在一起。然而,在图10a的子組件中,最小的积木构件1003 具有较小的体积,而在图10b的子组件中,最小的积木构件1001具 有较大的体积,如此,函数connection(x,y)对于图10a的子组件将 是最大的。
基于上面的连接性度量的加冲又函数的示例可以如下Weight(x) - -1 if x is a sub-assembly and
its weakest internal connection < internal threshold
V3lU6
-1 if x is a sub-assembly and
its strongest external connection > external threshold value
0 otherwise
内部和外部连接的阈值可以是预定的,用户控制的,凭经验发现 的或以别的方式适当地设置的。调节阈值是调节所产生的组装说明的 分步骤的数量和质量的有效方式。通过将阈值设置为比较高的值,可 以获得不多的高质量的候选子組件,而不是获得许多较低质量的候选 子组件。这使得分解过程更加容易并更快。
最接近策略
也可以根据与以前分离的积木构件/子组件的距离,给积木构件/ 子组件赋予权重。更具体地说,weight(x)可以是距离、距离的平方、 或x的质心与以前分离的积木构件/子组件的质心的另一个适当的距 离测度的函数。应该理解,也可以使用积木构件/子組件的另一个适当 的参考点代替质心。
可以给与以前分离的积木构件/子组件更靠近的积木构件赋予较 高的权重。当积木构件至少在一个点彼此接触时,则它们之间的距离 可以设置为0。最接近策略可以区分表面彼此相邻的积木构件,积木 构件只是在它们的角落彼此接触,分别如图lla和图lib所示。如 此,在一个实施例中,加权函数可以是两个积木构件之间邻接的面积 的大小的递增函数。可以基于作为数字表示法的一部分存储的边界框 或其他几何信息,确定积木构件是否彼此毗邻,或以别的方式彼此接 触。求这样的度量的近似值的一种方式是通过计算相应的积木构件的 点之间最大距离。 一般而言,此距离越大,邻接的面积越小,如图11 所显示的。
层叠策略
38当组装模型时,优选情况下,常常从底部向上进行组装。因此, 可以根据与模型中的最低的积木构件的距离,向积木构件/子组件分配 权重。积木构件/子组件与底部的距离越远,在分解过程内被赋予的权 重就越高。因此, 一般而言,加权函数可以是积木构件沿着坐标系统 的一个或多个方向的坐标的递增函数。
因此,在上文中,描述了加权函数的许多示例,每一个都对应于 对应的模型分解策略。应该理解,分解过程可以包括备选的或附加的 加权函数和/或备选的或附加的分解策略。此外,还可以定义对应于这 里所描述的分解策略的备选的和/或附加加权函数。
还将进一步认识到,这里所描述的某些策略具有一个或多个参 数,这些参数可以改变,以增强结果的一个方面或另一个方面,从而,
使框架成为通过人的交互生成组装说明的工具,而不是black-box。 发明人已经利用对应于下面的策略的加权函数的组合,获得了特
别好的结果,确保了分解的完整性。它们一起可以构成提供好的结果
的自动组装说明生成器的实施例的骨干,无需用户交互
-分离策略只允许分离在物理上可以去除的积木构件或子组
件,给定了积木构件或子组件的几何形状和连接性。
-分步骤完整性策略只允许分离在内部强连接的并且在外部
弱连接的组件。
如上文所描述的,准确的要求可以改变,以确保所希望的质量的 分步骤。
-关节策略只允许分离不会将模型拆分为两个或更多分离的 组件的子组件。此外,不赞成分离将模型拆分为两个或更多分离的子 组件的单个积木构件。
-集成策略如果去除了单个关节积木构件,则尽可能快地去 除分离的积木构件或子组件。
在一个实施例中,上文所提及的四个策略-分离、分步骤集成、 关节和集成-用于所有組装/分解中,而一个或多个进一步的策略, 例如,这里所描述的其余的策略的一个或多个,例如,相似度、基础、
39最接近和层叠策略,可以在不同的情况下用于调节结果。这样的策略
可以由用户进行选择。图4显示了积木构件以及其连接元件的示例。 具体来说,图4显示了积木构件401的透视图。积木构件401具 有顶表面402,上面带有八个旋钮403a-h,可以与另一个积木构件 的对应的空穴啮合,例如,另一个积木构件的底面上的空穴。相应地, 积木构件401包括带有对应的空穴的底表面(未显示)。积木构件 401进一步包括没有任何连接元件的侧面404。
一般而言,连接元件可以分为连接元件的不同类别,例如,连接 件、受纳体,以及混合构件。连接件是可以由另一个积木构件的受纳 体接纳的连接元件,从而在积木构件之间提供连接。例如,连接件可 以在另一个构件的部件之间装入空穴中。受纳体是可以接纳另一个积 木构件的连接件的连接元件。混合构件是既可以充当受纳体又可以充 当连接件的部件,通常取决于其他积木构件的协作的连接元件的类 型。
在LEGO的名下有图4中所显示的类型的积木构件可用,有 许多形状、尺寸,和颜色。此外,还有的这样的积木构件带有各种不 同的连接元件。应该理解,上面的积木构件只作为可能的积木构件的 示例。
图5显示了以数字方式表示积木构件模型的数据结构的实施 例。数据结构501可以包括一个或多个数据记录502,包括与整体 模型有关的总体模型参数。这样的模型参数的示例包括^f莫型名称、模 型创作者的姓名、模型化应用程序的程序版本号,创建日期等等。模 型数据结构501进一步包括列表503或积木构件数据记录的其他 适当的结构。在图5的示例中,列表包括N个数据记录"积木构件 1"、"积木构件2"、...,"积木构件J"、…,"积木构件N"。列表503 的每一个积木构件数据记录都具有"积木构件J"的数据结构504所
显示的结构。
具体来说,每一个积木构件数据记录都包括积木构件ID 505, 表示对应于积木构件类型的标识符。积木构件ID可以唯一地标识积
40木构件的属性或积木构件的类型。
积木构件数据记录还可以进一步包括许多积木构件属性506,表 示积木构件的一个或多个属性,如颜色、紋理、装饰等等。
此外,积木构件数据记录504还包括分别表示积木构件的内坐 标系统的位置和方向的数据项507和508。积木构件的位置和方向 通过积木构件的内坐标系统的原点相对于全球"world"坐标系统的坐 标来进行定义,并由内坐标系统相对于全球坐标系统的朝向来进行定 义。
在美国专利no. 6,389,375中说明了包括坐标系统的层次结构
的用于存储积木构件模型的数据格式的示例。
此外,积木构件数据记录504还可以包括分别表示积木构件的 一个或多个边界框和连接性数据的数据项509和510,用于检测积 木构件与其他积木构件的连接性属性。如图4所示的积木构件的类
型的连接性数据的一种表示法的实施例包括表示通过积木构件的边 界框的表面定义的平面的数据结构。积木构件的连接元件位于这些平 面上,每一个连接元件都具有与它关联的轴。同一个平面上的所有连 接元件的轴都对应于规则网格(例如,正交网格)的相应的网格点, 相邻网格点之间的距离是固定的。图4的与积木构件401关联的平 面彼此成对地平行,它们包括一组对应于积木构件的顶部和底部表面 的水平面和许多对应于积木构件的侧面的垂直平面。相邻网格点之间 的距离在所有水平面上可以相同。在某些实施例中,垂直平面中的相 邻网格点之间的距离不同于水平面中的相邻网格点之间的距离。在 WO 04/034333中说明了如图4所示的类型的积木构件的连接性属 性的数字表示法,在此引用该申请的全部内容作为参考。
应该理解,数字表示法可以以任何适当的数据或文件格式进行编 码,例如,作为二进制文件,作为根据预定的模型花描述语言的文本 文件等等。应该进一步理解,数字信息的其他实施例可以利用替代的 或另外的数据结构,和/或表示替代的或另外的模型数据。
图6显示了组装说明应用程序的图形用户界面的实施例。用户
41界面包括查看区域701,说明了一组一步接一步的组装说明的步骤的 图形表示。图形表示显示了从预定的摄像位置显示的部分模型702 的3D视图。部分模型701包括完整的模型的所有积木构件的子集, 其中,该子集包括最初定位的积木构件。查看区域701进一步包括 最近放置的积木构件的图形表示703,即,区别当前部分模型702与 前面的步骤的部分模型的积木构件。在此示例中,这些是部分模型 702的积木构件714、 715,以及716。
用户界面进一步包括滑块控制元件709,可以通过利用鼠标进行 的对应的拖动操作,以单独的间隔移动,可使用户选择一步一步的说 明的任何一个步骤。在图6的示例中,在说明的每一个步骤中添加 了三个新的积木构件。
用户界面进一步包括按钮控制元件705,可使用户调用许多常用 的功能,如分别在正方向和反方向按顺序浏览图形表示,跳转到说明 的第一个步骤和最后一个步骤,改变摄像位置,打印生成的组装说明, 以及启动"自动播放"功能。自动播放功能一个一个地显示部分模型的 序列,以便将每一个部分模型显示预定的时间长度。优选情况下,用 户可以用自动播放功能配置每一个部分模型的查看时间。
最后,用户界面还包括许多下拉菜单704,可使用户启动诸如帮 助功能、改变摄像位置的功能、图像放大功能之类的功能。由组装说 明应用程序提供的进一步的功能包括加载数字表示法,用于打印部分 模型的图形表示的打印功能,以及用于导出部分模型的图形表示的序 列的导出功能,例如,以HTML格式,或任何其他适当的图形文件 格式,如TIF、 JPG、 BMP等等,进行导出。
由组装说明应用程序提供的功能的进一步的示例包括材料清单 功能,可使用户查看或打印模型中的所有积木构件的列表。
图14显示了组装说明生成的另一个实施例的流程图。在步骤 Sl中,接收积木构件模型的数字表示法M,例如,如参考图2的 步骤Sl所描述的。
在后面的步骤S2- S12中,组装说明应用程序从加载的数字表
42示法生成组装说明205。生成的组装说明205可以是如参考图2所 描述的形式。
在步骤S2中,过程初始化。具体来说,初始化数据结构 用于保留要生成的组装序列。将序列Result初始化为空序列。进一 步将表示为Candidates的一组候选积木构件初始化为模型M中的 所有积木构件和子组件的集合。因此,如在前面的实施例中那样,可 以确定要从模型M中去除的一个或多个候选子组件,并将子组件当 做一般性的积木构件。可以通过一组选择标准(确定如何分隔/切断模 型),可以发现/选择候选子组件。上面比较详尽地描述了这样的选择 标准的示例,特别是,参考图3的步骤303所描述的第二组选择标 准。应了解,在其他实施例中,可以只考虑积木构件。
在步骤S3中,判断集合Cam/iV/a,"是否是空的,即,是否已 经处理完所有积木构件。如果是这种情况,则执行步骤S12;否则, 执行步骤S4。
在步骤S4-S11中,判断是否可以找到导致产生新的部分模型的 组装步骤6,以便可以将完整的模型AT分解为此新的部分模型。
具体来说,在步骤S4中,作为集合Om力'dWes的副本,生成 积木构件和子组件的辅助集合C。
在步骤S5中,判断集合C是否是空的,即,是否识别了一个 候选项6。如果是这种情况,则返回到步骤S3;否则,执行步骤S6。
在步骤S6中,从集合C中选择候选积木构件b或候选子组件。
本实施例中的候选项的选择可以以与前面的实施例的分解情况 中的选择去除积木构件类似的方式来完成,即,通过一组选择标准。 具体来说,选择标准可以基于表示不同的组装策略的一个或多个加权 函数,如上文所描述的一个或多个加权函数,特别是参考图3的步 骤304所描述的第一组选择标准的加权函数。某些加权函数分别在 組装和分解版本中相同或基本上相同,例如,如上面比较详细地描述 的加权函数。例如, 一个策略可以根据它们与在前面的步骤中添加的积木构件的距离,向积木构件分配一个权重。然后,可以选择与前面 添加的积木构件最靠近的积木构件。其他加权函数可以十分不同。例 如,上文所描述的分解情况的"关节策略"避免了拆散连接性图形,而 在本实施例的组装情况下,只是确保了选择实际连接到任何前面选择 的积木构件的积木构件。尽管如此,在这两种情况下,都避免了
"flying"积木构件。由于这里所描述的加权函数可以给子组件(伪积 木构件)以及简单的积木构件赋予权重,因此,组装和分解两种过程 都可以一般化为处理子组件。如在纯粹的分解情况下,这不仅是切实 可行的,有时候,还是需要的。
或者,或另外,候选项的选择可以部分地或完全地基于用户输入 /交互。例如,可以接收表示候选项b的用户输入。或者,可以,例 如,随机地或基于上文所描述的加权函数,选择一个或多个可能的候 选项,并向用户指出候选项。然后,可以接收表示批准或拒绝一个或 多个建议的候选项的用户输入。
在步骤S7中,从接收到的模型的数字表示法生成部分分解序 列,直到可通过当前组装序列和选定的候选项6的联合获得 的剩余的模型。可以以模型的积木构件和/或子組件的连续列表的形式 生成分解序列。还可以进一步生成连续列表的子组件的从属分解序 列。在一个实施例中,进程将分解序列表示为步骤的分支树,其中, 每一个分支都可以包含附属的分解。
下面将比较详细地描迷生成部分分解序列的过程的实施例。
在步骤S8中,判断是否可以找到分解序列。如果步骤S7的 分解过程成功确定分解序列,则继续执行步骤S9;否则,继续执行 步骤SIO。
在步骤S9中,更新集合CVw /iV/Wm、以及C。具体来 说,将选定的候选项6添加到当前结果序列i "w"中,从候选项的 集合C" &V/ &s中去除候选项6,从辅助集合C去除所有构件(随 着识别成功的候选项)。然后,返回到S5。
在步骤S10中,从辅助的候选项的集合C中去除6进行尝
44中是否仍有候选项留下。如果是这种情 况,返回到步骤S5,以识别备选的候选项;否则,过程结束,例如, 带有指出生成组装说明失败的适当的错误标记或消息。例如,如果模 型被过度地约束和/或如果在分解过程中所使用的加权函数表示模型 的组装约束太强/限制性太强,则可能发生这种情况。因此,在这样的 情况下,在分解过程中所使用的某些或全部加权函数可以被弱化,例 如,自动地或通过用户交互,可以利用弱化的加4又函数重新开始该过 程。
在步骤S12中,从生成的组装序列Result生成组装说明,例 如,作为部分模型的图像的序列或其他表示方法,其中,在每一个部 分模型中,与前一部分模型相比,添加了来自生成的列表的一个或多 个积木构件和子组件。可以存储生成的说明和/或以如这里所描述的任 何适当的形式将它们输出。
图15显示了模型AT直到剩余的模型TV的部分分解过程的 示例的流程图。分解过程根据完整的模型AT的数字表示法,对模型 M进行分解,包括模型中的所有积木构件(步骤301)。模型AT的 输入包括有关单个积木构件的信息,如大小/尺寸、旋钮的数量,诸如 积木构件的铰链、栓、轴等等之类的特点。数字表示法还包括有关将 每一个积木构件放在模型中的什么位置的信息,例如,通过指定积木
构件相对于适当的坐标系统的相应的f^V力位置。进一步接收有关 剩余集合iV(即,模型M的子模型)的信息。部分分解过程生成分 解步骤的序列,其中,在每一个分解步骤中,去除M\N的一个或多 个积木构件(即,模型M的未包括在内在剩余的模型N中的积木 构件),直到只留下剩余的模型N。
在步骤302中,分解过程测试在模型MUV(或前一迭代产生的 部分模型MUV;是否留下了要分离的积木构件。如果在该模型中仍有 要去除的积木构件,则继续执行步骤303,在该步骤中,选择/生成要 从模型MWV (或由前一迭代产生的部分模型MUV)去除的一个或多 个候选子组件。候选子组件包括互连的积木构件。在随后的步骤304
45中,根据第一组预定的选择标准,例如,如参考图3所描述的,选 择要分离的积木构件或其中一个生成的候选子組件(E)。可以在步骤 303中,通过第二组选择标准(确定如何分隔/切断模型),可以发现 /选择候选子组件。上面比较详尽地描述了这样的选择标准的示例。在步骤305中,从模型中分离在步骤304中选择的积木构件或 子组件E,即,生成新的部分模型M' = M\E,其中,选定的候选子 组件的所有积木构件的选定积木构件都被去除。可以维持表示分解序 列的数据结构,并利用有关分离的子组件/积木构件的信息更新数据结 构。如果选择要分离的子组件,则可以通过在步骤307中以递归方 式执行分解过程(即,以选定的子组件五和剩余的模型充当输 入),然后,返回到步骤302,继续迭代分解过程,查找下一个要与 其余的部件模型(即,模型ww-wa^;。)分离的积木构件,对选定 的子组件进行分解。当没有更多的积木构件(也不是剩余的模型W的一部分)要从 模型中去除时,完成模型M的部分分解,直到剩余的模型见 在步骤308中,分解过程停止。因此, 一般而言,给定^^型M,如果M可以分解为N,那么, N可以组装为M。换句话说,N阶段的结构是组装步骤序列过程中 的适当的中间的模型,当(且仅当)完整的模型M可以被分解为N。用于生成参考图14和15所描述的组装序列的过程的实施例 可以通过下面的伪代码来表达Construct model M:Let Candidates be the set of all bricks and sub-assemblies in M Let Result be an empty sequence of bricksWhile (Candidates is not empty) Let C be a copy of CandidatesWhile (C is not empty》 Let b be a brick from CIf (Deconstruct M down to (union of Result and b))Remove all bricks from CCandidates = Candidates \ bAdd b to Result ElseRemove b from C工f (C is empty)Deconstruct model M down toLet Candidates be the set of all bricks in M/W/While (Cancii(ia亡es is not empty)Let D be the subset of Candidates that are detachable If (D is empty) Return False,' ElseLet i) be the 、、best detachable" brick from £), Remove b from Candied tes,, Return True,'在上面的伪代码中,选择"最佳可分离的"砖,对应于在上面的步骤304中执行的选择,即,基于一组预定的选择标准的选择,例如, 上文所描述的一个或多个选择标准。Error:Construction was not possibleReturnFalse47过程的实施例也可以通过下面的伪代码来表达;图16显示了此 实施例的流程图Construct modelLet Candidates be the set of all bricks and sub-assemblies in M Let Result be an empty sequence of bricksWhile (Candidates is not empty) Let C be a copy of Candidates 工f (Find construction step b from C)Add b to ResultCandidates - Candidates \ fc> ElseError: "constructive Building instruction notpossible" Return FalseReturn TrueFind construction step b from C:While (C is not empty)Let b be a 、goocT brick from CIf (Deconstruct M down to (union of Result and b))Return True ElseRemove b from CReturn False*因此,在此实施例中,就是否可以知道下一个组装步骤b的判 断是作为单独的函数实现的。图i6a显示了全过程,而图16b显示从参考图14所描述的输入步骤Sl和初始化步骤S2开始。 在步骤S3中,判断集合Om力V/fl^ 是否是空的,即,是否已经处 理完所有积木构件。如果是这种情况,则执行步骤S12,如上文所描 述的,生成组装说明;否则,执行步骤S4。在步骤S4中,作为集合Qm力V/fl&s的副本,生成积木构件和 子组件的辅助集合C。在步骤S20中,判断是否可以查找到有效的下一个组装步骤 6。如果是这种情况,则通过向数据结构附加识别的步骤6, 以及通过从Oz/i力V/tf/^数据结构中去除对应的积木构件(或子组 件),更新和数据结构;然后,返回到步骤S3。 如果无法找到有效的组装步骤,则过程结束,例如,带有表示生成组 装说明失败的错误标记或消息,如参考图14所描述的。图16a显示了实现步骤S20的子过程的示例的流程图首先, 判断集合C是否是空的,即,是否已经处理完所有候选项b。如果 是这种情况,则返回表示无法查找到有效的候选项b的值;否则, 执行步骤S6。在步骤S6中,从集合C中选择候选积木构件6或候选子组 件,例如,如参考图14的步骤S6所描述的。在步骤S7中,从接收到的模型的数字表示法生成部分分解序 列,直到可通过当前组装序列和选定的候选项b的联合获得 的剩余的模型,如参考图14的步骤S7所描述的。如果步骤S7的分解过程成功确定分解序列,则返回表示过程成 功的值;否则,继续执行步骤SIO。在步骤S10中,从辅助的候选项的集合C中去除6进行尝 试,并返回到子过程的开始,判断C是否是空的。在此示例中,函数"Deconstruct model Af down to7V"可以是上面 的示例中的相同函数。在参考图14-16所描述的实施例中,带有TV个积木构件的模 型的组装需要iV个组装步骤, 一般而言,对于每一个组装步骤,可49能必须进行多次分解,以便发现有效的候选砖6。
可以按如下方式估计所需的迭代的数量iV块砖的完整的组装 说明大致需要iV个组装步骤。每一个组装步骤都可能需要大致iV/2 次分解。每一次分解都包括大致N个分解步骤。每一个分解步骤都 需要大致iV/2次砖加权。总起来,完整的组装说明可能需要大致 (7V八"//积木构件的加权。这仍比纯粹的反向跟踪搜索所需的jca7V 加权好得多。类似地,参考图2和3所描述的完整的分解过程需要 大致(7VA"/2次加4又。
权利要求
1.一种计算机实现的生成积木构件模型的组装说明的方法,所述积木构件模型包括多个积木构件,所述组装说明表示组装所述积木构件模型的组装步骤的顺序,每一个组装步骤都包括向所述积木构件模型添加至少一个积木构件;所述方法包括-根据所述积木构件模型的数字表示法,确定用于至少部分地将所述积木构件模型分解为若干个积木构件的分解步骤的至少一个序列,每一个分解步骤都包括从所述积木构件模型中去除至少一个积木构件;-基于多个分解步骤中的至少一个步骤,确定组装步骤顺序中的至少一个组装步骤。
2. 根据权利要求1所述的方法,其中,确定分解步骤的至少一个序列的过程包括确定用于将所述积木构件模型分解为积木构件的分解步骤的顺序,每一个分解步骤都包括从所述积木构件模型中去除至少一个积木构件;并且其中,确定组装步骤的顺序的至少一个组装步骤的过程包括颠倒确定的分解步骤的顺序,以获得组装步骤的顺序。
3. 根据权利要求1所述的方法,包括执行一个迭代过程,其中,所述迭代过程的迭代包括-获得由前一迭代产生的组装步骤的顺序,所述组装步骤的顺序产生第一部分模型;-确定随后的组装步骤,该步骤表示至少一个随后的积木构件与笫一部分模型的连接,导致产生第二部分模型。-判断所述积木构件模型是否可以通过导致产生第二部分模型的分解所述积木构件模型的分解步骤的序列进行分解;-如果判断所述积木构件模型可以通过导致产生第二部分模型的分解所述积木构件模型的分解步骤的序列进行分解,则将确定的随后的组装步骤附加到获得的组装步骤的顺序中。
4. 根据权利要求1到3中任一权利要求所述的方法,其中,积木构件是互相连接的。
5. 根据权利要求1到4中任一权利要求所述的方法,其中,确定分解步骤的顺序的过程包括执行一个迭代过程,其中,所述迭代过程的迭代包括-获得从前一迭代产生的前一部分模型;-确定要从前一部分模型分离的导致产生新的部分模型的至少一个积木构件。
6. 根据权利要求5所述的方法,其中,确定要从前一部分模型分离的至少一个积木构件的过程包括-确定前一部分模型的一组候选子组件,每一个候选子组件都包括前一部分模型的相应的互连的积木构件;-根据第一组预定的选择标准,选择单个积木构件,或选择导致产生新的部分模型的要从前一部分模型分离的确定的候选子组件集合中的一个。
7. 根据权利要求6所述的方法,其中,确定候选子组件的集合的过程包括根据第二組选择标准,选择候选子组件。
8. 根据权利要求7所述的方法,其中,第二组选择标准的至少一个包括确定一个或多个候选子组件与前一部分模型连接的连接强度。
9. 根据权利要求7或8所述的方法,其中,积木构件沿着至少两个组装方向是可互连的;并且其中,所述第二组选择标准中的至少一个包括确定前一部分模型中的组装方向发生变化的一个或多个位置。
10. 根据权利要求7到9中任一权利要求所述的方法,其中,一个或多个积木构件包括用于围绕至少一个方向提供可活动连接的连接件;并且其中,所述第二組选择标准的至少一个包括确定可移动地连接到前一部分模型的一个或多个子组件。
11. 根据权利要求6到10中任一权利要求所述的方法,进一步包括在迭代过程中的一次迭代中确定被选择去除的每一个子组件的分解步骤的序列。
12. 根据权利要求5到11中任一权利要求所述的方法,包括通过表示图形的数据结构来表示前一部分模型,所述图形包括表示前一部分模型的相应的积木构件的节点,以及表示对应的积木构件之间的连接的连接相应节点的边。
13. 根据权利要求12所述的方法,其中,所述图形的边具有关联的连接强度值,所述连接强度值表示对应于由所述边连接的节点的积木构件之间的连接的连接强度。
14. 根据权利要求13所述的方法,其中,每一个积木构件都包括一个或多个连接元件,用于与另 一个积木构件的一个或多个对应的连接元件啮合,以在该积木构件和另一个积木构件之间提供连接,每一个连接元件都具有与它关联的连接元件类别,每一个连接元件类别都具有与它关联的连接强度;并且其中,所述方法包括根据至少有助于对应的连接的连接元件的数量和相应的类,确定对应于两个积木构件之间的连接的边的所述关联的连接强度值。
15. 根据权利要求13或14所述的方法,其中,确定所述关联的连接强度值的过程包括根据有助于对应的连接的连接元件的数量和相应的类,以及根据两个积木构件的体积,确定连接强度。
16. 根据权利要求12到15中任一权利要求所述的方法,包括执行图形划分过程,以确定前一部分模型的一组候选子组件。
17. 根据权利要求12到16中任一权利要求所述的方法,其中,所迷图形的边具有表示对应于由所述边连接的节点的积木构件之间的连接的组装方向的关联的值。
18. 根据权利要求12到17中任一权利要求所述的方法,包括识别所述图形的 一 个或多个关节节点,以便确定前 一 部分模型的 一 组候选子组件。
19. 根据权利要求12到18中任一权利要求所述的方法,包括识别所述图形的一个或多个关节节点对,以便确定前一部分模型的一组候选子组件。
20. 根据权利要求12到19中任一权利要求所述的方法,其中, 一个或多个积木构件包括用于围绕至少一个方向提供可活动连接的连接件;并且其中,所述图形的节点和边两者中至少一个具有表示可活动连接存在的关联的值。
21. 根据权利要求5到20中任一权利要求所述的方法,其中,确定要从前一部分模型分离的导致产生新的部分模型的至少一个积木构件的过程包括,为积木构件的子集和一组积木构件的候选子组件中的至少一个计算一个或多个加权函数;并基于计算出的加权函数的比较,选择单个积木构件和子组件两者中的一个。
22. 根据权利要求21所述的方法,其中,所述一个或多个加权函数中的至少一个具有可能的结果的范围,所述范围包括表示分离的适当性的程度的第一子范围和表示分离的不适当性的程度的第二子范围。
23. 根据权利要求22所述的方法,其中,基于计算出的加权函数的比较而选择单个积木构件或子组件的过程包括根据一个或多个计算出的加权函数计算总权重;其中,计算所述总权重的过程包括,如果至少一个计算出的加权函数具有第二范围中的结果,则向总权重指定一个第二范围中的值。
24. 根据权利要求21到23中任一权利要求所述的方法,其中,每一个积木构件都包括一个或多个连接元件,用于与另一个积木构件的一个或多个对应的连接元件啮合;其中,每一个连接元件都定义了分离的方向,沿着该方向,积木构件可与另一个积木构件分离;并且其中,计算积木构件或子组件的一个或多个加权函数中的第一个加权函数的过程包括,判断积木构件或子组件的连接到前一部分模型的一个或多个其他积木构件的所有连接件的相应的分离方向是否彼此平行。
25. 根据权利要求24所述的方法,其中,计算积木构件或子组件的第一加权函数的过程进一步包括,确定积木构件或子组件与前一部分模型的任何其他积木构件或子組件之间在分离方向的最小距离。
26. 根据权利要求24所述的方法,其中,计算积木构件或子组件的第一加权函数的过程包括-确定积木构件或子组件的伸展的几何形状,其中,所述伸展的几何形状在分离的方向伸展,以及-判断伸展的几何形状是否与前一部分模型的任何其他积木构件或子组件交叉。
27. 根据权利要求21到26中任一权利要求所述的方法,其中,计算积木构件或子组件的一个或多个加权函数中的第二加权函数的过程进一步包括,判断积木构件或子组件是否是关节积木构件或子组件。
28. 根据权利要求21到27中任一权利要求所述的方法,其中,计算积木构件或子组件的一个或多个加权函数中的第三加权函数的过程进一步包括,判断积木构件或子組件是否是积木构件或子组件的关节对的一部分。
29. 根据权利要求21到28中任一权利要求所述的方法,其中,积木构件或子组件的一个或多个加权函数中的第四加权函数是随着积木构件或子组件所连接到的其他积木构件的数量减小的函数。
30. 根据权利要求21到29中任一权利要求所述的方法,其中,所述一个或多个加权函数中的第五加权函数是子组件的积木构件之间的连接的连接强度的函数。
31. 根据权利要求30所述的方法,其中,计算第五加权函数的过程包括确定子组件的互相连接的积木构件之间的最弱的连接强度,并且其中,第五加权函数是确定的最弱的连接强度的递减函数。
32. 根据权利要求21到31中任一权利要求所述的方法,其中,所述一个或多,个加权函数中的第六加权函数是子組件的积木构件与前一部分模型的其他积木构件的连接的连接强度的函数。
33. 根据权利要求32所述的方法,其中,计算所述第六加权函数的过程包括确定子组件的积木构件和前一部分模型的未包括在所述子组件内的一个或多个其他积木构件之间的最强的连接强度,并且其中,所述第六加权函数是所述确定的最强的连接强度的递减函数。
34. 根据权利要求21到33中任一权利要求所述的方法,其中,积木构件或子组件的所述一个或多个加权函数中的第七加权函数是积木构件或子组件的沿着相对于坐标系统的预定方向的位置坐标的函数。
35. 根据权利要求21到34中任一权利要求所述的方法,其中,积木构件和子组件的所述一个和多个加权函数中的第八加权函数是至少积木构件和子组件的属性和在所述迭代过程的前一迭代中分离的积木构件或子组件的属性的函数。
36. 根据权利要求35所述的方法,其中,所述第八加权函数是积木构件或子组件和在所述迭代过程的前一迭代中分离的积木构件或子組件之间的距离的函数。
37. 根据权利要求35或36所述的方法,其中,所述第八加权函数是至少表示积木构件或子组件和在所述迭代过程的前一迭代中度量,以及与积木构件或子组件和在所述迭代过程的前一迭代中分离的积木构件或子组件关联的一个或多个属性的比较的函数。
38. 根据权利要求1到37中任一权利要求所述的方法,其中,所述数字表示法包括每一个积木构件相对于预定坐标系统的相应的位置坐标。
39. 根据权利要求1到38中任一权利要求所述的方法,进一步包括通过计算机实现的用于交互地组装虚拟积木构件模型的组装环境,生成所述积木构件模型的所述数字表示法。
40. 根据权利要求1到39中任一权利要求所述的方法,包括生成包括初始部分模型的部分模型的对应的序列、增量式部分模型的序列、以及完整的模型的图形表示的序列;其中,每一个增量式部分模型都包括序列的紧前面的增量式部分模型的所有积木构件,以及来自多个积木构件的预定数量的附加积木构件,其中,所述附加积木构件是由确定的组装步骤的序列确定的。
41. 根据权利要求40所述的方法,进一步包括提供用户界面,便于对生成的图形表示进行用户控制的处理。
42. —种数据处理系统,在其上存储了程序代码装置,当所述程序代码装置在所述数据处理系统上执行时,用于使数据处理系统执行根据权利要求1到41中任一权利要求所述的方法的步骤。
43. —种计算机程序产品,包括程序代码装置,当所述程序代码装置在所述数据处理系统上执行时,用于使所述数据处理系统执行根据权利要求1到41中任一权利要求所述的方法的步骤。
44. 根据权利要求43所述的计算机程序产品,包括在其上存储了所述程序代码装置的计算机可读取的介质。
45. 在载波中实现的并表示指令序列的计算机数据信号,当由数据处理系统执行指令序列时,使所述数据处理系统执行根据权利要求1到41中任一权利要求所述的方法的步骤。
全文摘要
计算机实现的生成积木构件模型的组装说明的方法,该模型包括多个积木构件,组装说明表示建造积木构件模型的组装步骤的顺序,每一个组装步骤都包括向积木构件模型中添加至少一个积木构件。该方法包括,从积木构件模型的数字表示法,确定将积木构件模型分解为若干个积木构件的分解步骤的顺序,每一个分解步骤都包括从积木构件模型中去除至少一个积木构件;并颠倒确定的分解步骤的顺序,以获得组装步骤的顺序。
文档编号G06T17/40GK101675458SQ200880014715
公开日2010年3月17日 申请日期2008年3月14日 优先权日2007年3月16日
发明者J·M·厄恩斯特文, J·S·雅各布森, J·阿勒瑞利, O·J·克里斯滕森 申请人:乐高公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1