CN101675458A - 积木构件模型的组装说明的自动生成 - Google Patents
积木构件模型的组装说明的自动生成 Download PDFInfo
- Publication number
- CN101675458A CN101675458A CN200880014715A CN200880014715A CN101675458A CN 101675458 A CN101675458 A CN 101675458A CN 200880014715 A CN200880014715 A CN 200880014715A CN 200880014715 A CN200880014715 A CN 200880014715A CN 101675458 A CN101675458 A CN 101675458A
- Authority
- CN
- China
- Prior art keywords
- block structural
- structural unit
- sub
- component
- model
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/10—Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2219/00—Indexing scheme for manipulating 3D models or images for computer graphics
- G06T2219/20—Indexing scheme for editing of 3D models
- G06T2219/2008—Assembling, disassembling
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Geometry (AREA)
- Architecture (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Processing Or Creating Images (AREA)
- Electrophonic Musical Instruments (AREA)
- Toys (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Stored Programmes (AREA)
Abstract
计算机实现的生成积木构件模型的组装说明的方法,该模型包括多个积木构件,组装说明表示建造积木构件模型的组装步骤的顺序,每一个组装步骤都包括向积木构件模型中添加至少一个积木构件。该方法包括,从积木构件模型的数字表示法,确定将积木构件模型分解为若干个积木构件的分解步骤的顺序,每一个分解步骤都包括从积木构件模型中去除至少一个积木构件;并颠倒确定的分解步骤的顺序,以获得组装步骤的顺序。
Description
技术领域
本发明涉及积木构件模型的组装说明的生成。
发明内容
有各种已知的机械结构玩具集的模型化概念类型。具体来说,模块化或半模块化概念非常普遍,因为它们提供有趣的并具有挑战性的玩的体验。通常,这些概念提供一组预先制造的积木构件,可以通过预先制造的构件的连接元件,以某种预定的方式彼此互连起来。预先制造的积木构件类似于适用于完成特定的模型化任务的已知的对象。如此,例如,在建造房屋的模型时,积木构件可以类似于墙砖、屋瓦、门,以及窗户。如此,选择积木构件的目的是,与每次要制作新模型时都对房屋的所有细节进行定义的情况相比,建造房屋的模型涉及的工作量显著缩小。然而,在建造房屋或另一个对象的完全的自由度与建造模型的简单性之间是相互对立的。
例如,名为LEGO的名下的玩具积木套装合包括多种不同类型的可互连的积木构件,具有凸起部和对应的凹槽作为连接构件。根据规则的网格图案,放置连接构件,从而,在积木构件之间可以产生各种互连。
通常,这样的玩具积木套装合包括一组适合于创建一个或多个积木构件模型的一组积木构件,例如,动物、机器人,或另一种生物、汽车、飞机、宇宙飞船、建筑物等等。通常,积木套装进一步包括打印的组装说明或组装说明,说明了如何从积木构件建造某一模型。不用说,这样的积木套装的一个有趣的特点是,它们会激发儿童制作他们自己的模型。
通常,玩具积木套装中包含的组装包括一步一步地说明了如何以及按什么顺序向模型添加积木构件。这样的组装说明的优点是,易于操作,甚至对于儿童也是如此,无需具有丰富的玩积木的经验,和/或无需阅读技巧。
一般而言,模型的组装说明可以被视为组装积木构件的步骤和分步骤的顺序。序列从一个或多个初始积木构件开始,随着一系列步骤,发展成为完全组装好的模型的结构。在每一个步骤中,添加了单一积木构件或者积木构件的子组件。对当前描述来说,术语“子组件”是指积木构件模型的互连的积木构件的子集。如此,添加子组件而不是单个积木构件,可能会涉及向主组装说明中添加该子组件的附属组装说明。对当前描述来说,这样的附属组装说明也叫做“分步骤”。如此,步骤的序列一般可以表示为步骤的分支树,每一个分支都包含附属组装说明。
以前,这样的组装说明是手动生成的,例如,通过手动确定合理的组装步骤,在CAD系统中绘制对应的说明,最后,打印如此生成的说明。尽管这样的组装说明是高质量的,即,易于操作,但是,上面的制造过程也具有缺点:它们需要的技能较高,并且需要较多的人工。结果,通常只对于积木构件的制造商设计的积木构件模型,存在组装说明。具体来说,上面的采用现有技术的用于生成组装说明的方法不适合于希望为他们自己的模型产生组装说明的儿童,利用儿童自己的组装说明,使得孩子们与他们的朋友共享他们的模型。
最近,组装说明是以电子方式生成的,而不是以印刷的形式生成。具体来说,提供了动画形式的组装说明,比较复杂的组装步骤被制成了动画。然而,这样的组装说明的制作,仍涉及由熟练的设计者设计和绘制组装步骤/制作其动画。
在诸如LEGO系统之类的复杂系统中,模型的可能的组装说明的数量随着模型中的积木构件的数量按指数速率增长。因此,从给定模型的几乎无限数量的可能的组装说明中确定高质量的说明集,对于自动的组装说明过程来说,是个问题。如此,需要提供一个自动化的过程,甚至对于复杂的模型,生成切实可行的,操作简便的说明。进一步需要提供这样的过程,在合理的计算硬件上在合理的时间内生成组装说明。
还进一步需要提供用于生成适合于希望为他们自己的模型产生组装说明的儿童的组装说明的方法,这些组装说明可使孩子们与他们的朋友共享他们的模型,并进一步改善玩的体验。具体来说,需要提供几乎不需要用户交互和输入的轻松地对用户可用的方法。
某些研究的主题也讨论了有效的易于理解的一步接一步的组装说明的设计。从http://graphics.stanford.edu/papers/assemblyjnstructions/检索到的M.Agrawala等人所著的因特网出版物“Designing EffectiveStep-by-Step Assembly Instructions”描述了基于认识心理学的有效的组装说明的设计原则。该文进一步说明基于有关要组装的每一个对象的信息,组件朝向和用于进行图形呈现的摄影角度,分组信息,有关紧固件的信息,以及部件的意义,对称性,以及有关对组件的顺序的约束,来生成组装说明的计算机化系统。基于此输入,系统基于大量的搜索算法,并考虑给定的约束,计算组装步骤的序列。上面的采用现有技术的系统的问题是,从计算角度来看,代价大,需要复杂的输入数据,如此,需要用户有高度的抽象思维。
已公开的国际专利申请WO 2005/124696说明了一种为虚拟模型生成组装说明的自动化过程,其中,组装说明利用在虚拟组装环境中组装虚拟模型的过程中用户所使用的组装步骤的顺序确定的步骤的顺序。尽管此采用现有技术的方法提供了易于使用的自动化过程,但是,提高自动地生成的组装说明的质量仍是一个问题。
这里说明了一种计算机实现的生成积木构件模型的组装说明的方法,模型包括多个积木构件,组装说明表示组装积木构件模型的组装步骤的顺序,每一个组装步骤都包括向积木构件模型添加至少一个积木构件;该方法包括:
-从积木构件模型的数字表示法,确定用于至少部分地将积木构件模型分解为若干个积木构件的分解步骤的至少一个序列,每一个分解步骤都包括从积木构件模型中去除至少一个积木构件;
-基于多个分解步骤中的至少一个步骤,确定组装步骤序列中的至少一个组装步骤。
因此,认识到,通过确定分解步骤的一个或多个序列,可以有效地确定组装步骤的序列。
模型的分解可以被视为分解积木构件的步骤和分步骤的序列/迭代过程。序列从完整的模型开始,并按照一系列步骤进行。在完整的分解中,过程持续进行,直到所有积木构件都与模型分离,而在部分分解中,当只有预定的残余部分模型剩余时,过程结束。在每一个步骤中,单一积木构件或者积木构件的子组件被分离。如此,分离子组件而不是单个积木构件,可能会涉及与主分解关联的该子组件的附属分解。这样的附属分解也叫做“子步骤”。如此,类似于组装,分解过程的步骤的序列一般是步骤的分支树,每一个分支都包含附属分解。
当可以知道如何分解时,此信息可以用于生成组装序列的过程中。因此,可以响应确定分解序列的步骤,确定组装步骤。此外,利用合理的计算资源搜索满足某些选择标准的分解序列是可能的,并可以产生高质量的组装说明。
进一步知道,通过此从计算上来说简单的方法生成的组装说明对用户来说易于理解,特别是儿童。
此外,因为向组装说明的唯一输入是积木构件模型的数字表示法,例如,如在虚拟模型生成过程中记录的,组装说明对于用户来说易于生成,无需用户拥有设计技能或有关几何形状、约束等等的抽象知识。此外,组装说明的生成还与用户实际组装虚拟模型的顺序无关。这可能是有益的,因为虚拟组装环境可以允许组装步骤以对于物理的真实世界的模型可能难以或者甚至不可能执行的顺序来执行。
在某些实施例中,该方法包括:
-从积木构件模型的数字表示法,确定用于将积木构件模型分解为若干个积木构件的分解步骤的顺序,每一个分解步骤都包括从积木构件模型中去除至少一个积木构件;
-颠倒确定的分解步骤的顺序,以获得组装步骤的顺序。
如果可以知道如何分解,则可以颠倒,产生组装说明,就如通过逆方向执行组装说明,可以分解模型那样。因此,通过确定分解步骤的一个或多个序列,然后颠倒分解步骤的顺序,获得组装步骤的序列,可以有效地确定组装步骤的序列。优点是,此过程只需要生成单一的分解序列。
在备选实施例中,该方法包括执行一个迭代过程,其中,迭代过程的迭代包括:
-获得由前一迭代产生的组装步骤的顺序,组装步骤的顺序产生第一部分模型;
-确定随后的组装步骤,该步骤表示至少一个随后的积木构件与第一部分模型的连接,导致产生第二部分模型。
-判断积木构件模型是否可以通过用于分解积木构件模型的导致产生第二部分模型的分解步骤的序列进行分解;
-如果判断积木构件模型可以通过用于分解积木构件模型的导致产生第二部分模型的分解步骤的序列进行分解,则将确定的随后的组装步骤附加到获得的组装步骤的顺序中。
因此,在此实施例中,确定每一个组装步骤,以便可以通过完整的模型的部分分解,获得部分模型。因此,通过组装过程,可以提供用于生成组装说明的高效的过程,在每一个组装步骤中,模拟从完整的模型直到当前组装阶段的分解。
此实施例是进行组装的(从砖开始,以完整的模型结束),而不是完全基于分解。因为这是用户考虑组装说明的比较直观的方式,它比较易于使用,功能强,允许用户与生成组装说明的过程进行交互。用户交互的一个示例可以是对任何建议的砖块提出反对意见,并获取替代的建议。事实上,此简单的交互可使用户在非常短的时间内生成特别高质量的组装说明,需要的用户交互极少。此外,生成器还可以确保,绝不会违犯硬约束,因此,无论用户反对什么,只作出合理的建议。
相应地,在一个实施例中,确定随后的组装步骤的步骤可以包括接收用户输入,例如,以建议、批准,以及拒绝组装步骤这几项中的至少一个的形式存在的用户输入。
判断积木构件模型是否可以通过用于分解积木构件模型的导致产生第二部分模型的分解步骤的序列进行分解的步骤可以包括判断积木构件模型是否可以通过分解步骤的序列进行分解的步骤,其中,每一个分解步骤是通过一个或多个预定的选择标准集合选择的。因此,提供了可以提供高质量组装说明的高效的方法。
在某些实施例中,确定分解步骤的顺序的过程包括执行一个迭代过程,其中,迭代过程的迭代包括:
-获得从前一迭代产生的前一部分模型;
-确定要从前一部分模型分离的导致产生新的部分模型的至少一个积木构件。
因此,从完整的模型开始,通过在每一次迭代中去除一个或多个积木构件,生成部分模型的序列。鉴于搜索高质量的组装说明一般需要反向跟踪,如此,从计算上来说,代价非常大,对于比较大的模型,甚至代价非常惊人,可以通过一遍算法(对计算硬件的要求低得多),实现组装分解。
一般而言,在复杂的积木系统中,如在LEGO的名下销售的玩具积木系统中,某些模型也许不可能一个积木构件一个积木构件地分解,因为某些积木构件可能彼此锁住,而无法分离为单个积木构件。然而,一般而言,可以通过在每一个步骤中去除单个积木构件或积木构件的子组件,分离所有模型。
相应地,在某些实施例中,确定至少一个积木构件的过程包括:
-确定前一部分模型的一组候选子组件,每一个候选子组件都包括前一部分模型的相应的互连的积木构件;
-根据第一组预定的选择标准,选择导致产生新的部分模型的要从前一部分模型分离的单个积木构件或确定的候选子组件集合中的一个。
因此,在某些实施例中,对于分解序列,子组件被当做伪积木构件。然而,积木构件模型的可能的子组件的数量一般随着模型中的积木构件的数量按指数速率增长。因此,甚至对于中等大小的模型,给定某些条件,搜索所有可能的子组件并选择要分离的一个子组件的自顶向下的方法,从计算上来说,代价非常大,尽管当仅仅考虑单个积木构件的去除时这样的方法可能是可行的。
在某些实施例中,这里所描述的方法将上面的自顶向下的方法与用于生成要接受自顶向下搜索的候选子组件的自底向上的方法相结合。候选子组件的生成可以根据一组一个或多个生成器子过程或第二组选择标准来执行,如此,产生模型的所有可能的子组件的集合的候选子组件的子集。因此,在执行从计算上来说代价大的自顶向下的方法之前,使用自底向上的方法修剪搜索空间。
上面的对自顶向下的搜索的分割以及自底向上的生成导致从计算上来说代价低一些,编程起来更加容易,并轻松地,例如,通过添加用于生成候选子组件的额外的生成器子过程来进行扩展。
此外,上面的方法的控制力也得到改善,因为它提供了用于控制要生成的候选子组件的数量的机制,如此,提供了用于协调计算成本与所产生的组装说明的质量并针对任何给定硬件和时间要求调节候选子组件的池的大小的机制。
在某些实施例中,第二组选择标准的至少一个包括确定一个或多个候选子组件与前一部分模型连接的连接强度。因此,根据与前一部分模型的其余部分的连接的强度,生成/选择子组件。结果,子组件的此选择/生成策略导致产生特别高质量的组装说明。
用于有效地选择候选子组件的额外的或备选的选择规则包括确定组装方向的变化和/或可移动地连接到前一部分模型(例如,通过铰链或接头、滑块等等)的子组件。
在某些实施例中,方法包括通过表示图形(例如,无向图)的数据结构来表示前一部分模型,包括表示前一部分模型的相应的积木构件的节点,以及表示对应的积木构件之间的连接的连接相应节点的边。通过将前一部分模型表示为图形,可以使用从图论已知的图形划分技术及其他技术(参见,例如,Jonathan L.Gross和Jay Yellen所著的“Graph Theory and Its Applications”,Chapman & Hall/CRC,第二版,2006)来有效地识别适当的候选子组件,例如,通过识别图形中的关节节点或关节对,以便识别通过单一关节积木构件或通过一对积木构件连接到前一部分模型的其余部分的子组件。因此,互连的积木构件的模型对应于连接图,子组件对应于连接的子图。
图形的节点和/或边可以具有与它们关联的一个或多个相应的属性,分别对应于对应的积木构件和连接的属性。例如,图形的节点可以具有一个或多个下面的属性:积木构件类型、积木构件体积、积木构件形状/几何形状、积木构件体积质量、积木构件的边界框、积木构件在坐标系统中的位置、与积木构件关联的主组装方向、积木构件的连接元件的位置、类型和/或方向等等。类似地,图形的边可以具有与它们关联的一个或多个下面的属性:连接类型、连接强度、连接的方向等等。当图形的边具有与它们关联的相应的权重/值(表示连接的相应的连接强度)时,可以使用特别高效的图形划分法,如用于查找最少的切断的方法,来获得高质量的组装说明。
在某些实施例中,每一个积木构件都包括一个或多个连接元件,用于与另一个积木构件的一个或多个对应的连接元件啮合,以在该积木构件和另一个积木构件之间提供连接。这样的连接元件可以对积木构件的可能的放置施加进一步的限制,因为连接只在兼容的连接元件之间才可以进行,例如,当置于相对于彼此的正确位置时,装入对应的凹槽中的突出部。每一个连接元件都可以具有与它关联的连接元件类别,每一个连接元件类别都具有与它关联的连接强度。在某些实施例中,方法包括根据有助于对应的连接的连接元件的数量和相应的类,确定对应于两个积木构件之间的连接的边的所述关联的连接强度值。因此,提供了用于计算/估计积木构件模型中的连接强度的高效而准确的方法。
在某些实施例中,确定所述关联的连接强度值的过程包括根据有助于对应的连接的连接元件的数量和相应的类,以及根据两个积木构件的体积,确定连接强度值,从而,不仅考虑连接强度,而且还考虑积木构件的大小,如此,积木构件在组装过程中是否易于固定和操纵。
在某些实施例中,确定要从前一部分模型分离的导致产生新的部分模型的至少一个积木构件的过程包括为积木构件的子集和一组积木构件的候选子组件中的至少一个计算一个或多个加权函数;并基于计算出的加权函数的比较,选择单个积木构件和子组件两者中的一个。因此,提供了选择过程的可扩展的并且灵活的框架,可以通过备选的或附加的加权函数修改或扩展,可以根据它们的重要性/优先级,为不同选择标准赋予相对于彼此的权重。加权函数可以包括一个或多个积木构件的一个或多个属性的任何适当的函数。
在某些实施例中,一个或多个加权函数中的至少一个具有可能的结果的范围,包括表示分离的适当性的程度的第一子范围和表示分离的不适当性的程度的第二子范围,从而,允许两者向积木构件和/或子组件赋予正的和负的权重。
相应地,在某些实施例中,基于计算出的加权函数的比较而选择单个积木构件或子组件的过程包括根据一个或多个计算出的加权函数计算总权重;其中,计算总权重的过程包括,如果至少一个计算出的加权函数具有第二范围中的结果,则向总权重指定一个第二范围中的值,从而提供否决策略,防止不满足某些条件的积木构件和/或子组件被分离,尽管它们可能从其他加权函数获得高权重。
被发现产生高质量组装说明的加权函数的示例包括判断积木构件或子组件在物理上是否可分离的或判断所述积木构件或子组件的分离方向是否,例如,被模型的其他部分堵塞的加权函数。例如,可以通过计算积木构件或子组件的伸展的几何形状,有效地计算这样的加权函数。
这样的加权函数的另一个示例包括向包含在积木构件或子组件的关节对中的关节积木构件和/或积木构件赋予较低的权重的加权函数,以便避免将模型分离为分离的部分模型。当加权函数包括随着连接到的其他积木构件或子组件(直接地或通过其他积木构件),确保小的不相交的部分快速地从模型去除(如果它们发生的话)。
当其中一个加权函数是子组件的积木构件之间的连接的连接强度的函数时,可以获得从其余模型轻松地分离的积木构件和子组件。具体来说,已经发现,加权函数向具有较强的内部连接性和较弱的外部连接性的积木构件和子组件赋予较高的权重,产生高质量的组装说明。此外,在这样的加权函数中,连接性强度可以作为相对于互相连接的积木构件或子组件的体积的强度来计算。
适当的加权函数的进一步的示例包括这样的加权函数:至少积木构件或子组件的属性和在迭代过程的前一迭代中分离的积木构件或子组件的属性的函数,如此,可以有利于去除对称地放置的积木构件或子组件,与另一个积木构件或子组件距离很近的积木构件或子组件等等。这样的属性的示例包括积木构件相对于坐标系统的位置,积木构件类型等等。在某些实施例中,加权函数还可以进一步是在前面的迭代中去除的一个以上的积木构件的属性的函数。例如,当比较部分模型时,可以给一个或多个以前的迭代赋予不同的权重;例如,可以给最新的迭代赋予比以前的迭代较高的权重。
这里所描述的方法的实施例接收积木构件模型的数字表示法。这样的数字表示法可以通过任何适当的过程提供,例如,计算机实现的组装环境,和/或用于从,一个或多个图像(如物理模型或另一个对象的图像)生成积木构件模型的数字表示法的过程。在美国7,092,899中描述了一个这样的过程。在此过程中,从CAD模型或一组三维物体的二维图像,创建物体的积木构件模型的数字表示法。数字表示法的某些实施例可以包括以任何适当的数据格式存在的表示积木构件的类型、位置和/或互连等等的信息。数字表示法的实施例还可以进一步包括有关整体模型属性、单个积木构件的属性(如积木构件类型、颜色、大小、边界框等等)的信息。
计算机实现的用于交互地组装虚拟积木构件模型的组装环境,可以包括计算机程序,当该计算机程序在计算机上执行时,提供图形用户界面,供用户操纵虚拟积木构件模型,包括这样的操作,如选择积木构件、向模型中添加积木构件、从模型中去除积木构件,改变积木构件的朝向,改变积木构件的属性,例如,颜色、类型、大小等等,查看模型、保存模型的数字表示法,加载以前保存的模型的数字表示法等等。虚拟积木构件可以是对应的物理积木构件的虚拟对应物,即,具有对应的相对大小、形状、颜色等等。
计算机实现的组装环境可以被配置为实施施加于积木构件相对于彼此的相对位置的预定的限制集合,如积木构件之间的冲突检测。例如,限制对应于适用于对应的物理积木构件的对应的限制,从而确保也可以从对应的物理积木构件组装虚拟积木构件模型。因此,优点是,该方法确保了生成的组装说明实际是可实现的,即,产生所希望的结果。
在某些实施例中,组装说明是作为诸如图像之类的图形表示的序列生成的。每一个图形表示都可以包括部分积木构件模型(也被称为部分模型)的图形呈现,从而,提供操作简便的组装说明,其中,每一个图形表示都对应于向模型中添加预定数量的积木构件的组装过程中的步骤。如此,构成确定的组装序列的所有部分模型或只有部分模型的一个子集可以包括在最后的组装说明中,因为组装序列的一个或多个步骤可以合并到整个组装说明中。用户可以轻松地通过比较两个连续的图形表示,确定在每一个步骤中添加哪些积木构件以及如何添加它们。
当方法进一步包括提供用于查看图形表示的用户界面(其中,用户界面优选情况下便于对生成的图形表示的用户控制的处理)时,可以方便地在计算机上查看积木构件模型的数字表示法。具体来说,由于模型的数字表示法包括生成组装说明所需的所有信息,因此,组装说明可以方便地从一台计算机传递到另一台计算机,例如,存储在存储介质上,通过通信网络发送,例如,作为电子邮件连结,在Web服务器上上传等等。如此,数字表示法的接收者可以查看图形表示,对它进行操纵,例如,改变视角、缩放、更改查看选项,和/或类似的操作。因此,用户可以轻松地将他们的组装说明传输给朋友。再一个优点是,数字表示法不需要包括组装说明的每一个步骤的图形呈现,从而,可以使数字表示法的文件大小小一些。此外,由于数字表示法可以包括所有相关的模型信息,因此,模型的接收者甚至可以在生成组装说明之前对模型进行修改。
在某些实施例中,可以以预定的文件格式生成组装说明,从而,可以生成打印的和/或电子的组装说明。适当的文件格式的示例包括HTML、XML、BMP、TIFF等等。
在某些实施例中,在按步骤的说明的一个步骤中添加的附加积木构件的预定数量是用户可选择的,从而可使用户在非常详细的一步一步的说明(其中,例如,每一个步骤都对应于单个新的积木构件的放置)和非常简洁的说明(其中,每一个步骤都对应于较大数量的新放置的积木构件)之间进行选择。在某些实施例中,在每一个步骤中添加的积木构件的数量在所有步骤中都是相同的。在其他实施例中,添加的附加积木构件的数量,对于组装说明的不同步骤,可以不同。例如,对于每一个步骤,可以由用户控制步骤的大小,从而,对于组装的比较复杂的部分,可以生成比较细微的说明。
本发明可以以不同的方式实现,包括上文和下文所描述的方法、数据处理系统,以及进一步的产品装置,每一个都会产生与首先提及方法有关的优点和优点,每一个都具有对应于与首先提及的方法有关的优选实施例的一个或多个优选实施例,并在相关的从属权利要求中进行了说明。
具体来说,上文和下文所描述的方法的特点可以以软件来实现,并在通过执行计算机可执行的指令所导致的数据处理系统或其他处理装置上实施。指令可以是从存储介质或通过计算机网络从另一台计算机加载到诸如RAM之类的存储器中的程序代码装置。或者,所描述的特点可以通过硬连线的电路代替软件或以与软件相结合的方式来实现。
相应地,本发明进一步涉及用于执行上文和下文所描述的方法的数据处理系统。本发明进一步涉及一种计算机程序,包括程序代码装置,当所述程序在计算机上运行时,用于执行上文和下文所描述的方法的所有步骤。本发明进一步涉及一种计算机程序产品,包括程序代码装置,当所述计算机程序产品在计算机上运行时,用于执行上文和下文所描述的方法。程序代码装置可以存储在计算机可读取的介质上和/或作为传播的数据信号来实现。
在某些实施例中,计算机程序包括用于生成积木构件模型的数字表示法的第一软件组件;以及用于从生成的数字表示法生成组装说明的第二软件组件,从而提供用于读取模型的数字表示法并呈现对应的组装说明的单独的软件组件。因此,当传递组装说明时,用户可以与第二软件组件一起传递数字表示法,从而,提供组装说明的简单的独立的表示法,可以由接收者查看,无需另外的软件。然而,应了解,两个过程,即,生成模型的数字表示法和生成组装说明,可以集成在单一的软件组件中。
附图说明
下面利用优选实施例并参考图形,比较全面地说明了本发明,其中:
图1a-b显示了生成积木构件模型的组装说明的数据处理系统;
图2显示了总的组装说明生成的实施例的流程图;
图3显示了用于生成分解步骤的序列的过程的实施例的流程图;
图4显示了积木构件以及其连接元件的示例;
图5显示了以数字方式表示积木构件模型的数据结构的实施例;
图6显示了组装说明应用程序的图形用户界面的实施例;
图7作为无向图显示了积木构件模型的表示;
图8-13显示了选择标准的实施例;
图14显示了总的组装说明生成的另一个实施例的流程图;
图15显示了用于生成部分分解的分解步骤的序列的过程的实施例的流程图;
图16显示了总的组装说明生成的另一个实施例的流程图。
具体实施方式
图1a-b显示了用于生成和操纵几何对象的计算机可读取的模型的数据处理系统。
图1a显示了计算机系统的示例的示意图。计算机系统包括适当地编程的计算机101,例如,个人计算机,包括显示器120、键盘121电脑鼠标122和/或另一种指示设备,如触摸板、跟踪球、光笔、触摸屏等等。
101表示的计算机系统可以从积木构件模型的数字表示法生成组装说明。计算机系统101还可以进一步促进设计、存储、操纵,以及共享虚拟积木构件模型以及如这里所描述的生成组装说明。可以使用计算机系统101作为独立系统或作为客户端/服务器系统中的客户端。在某些实施例中,计算机系统进一步包括用于将计算机与计算机网络(例如,因特网)连接的一个或多个接口。
图1b显示了用于生成积木构件模型的组装说明的数据处理系统的方框图。计算机101包括存储器102,存储器102可以部分地作为易失性,部分地作为非易失性存储器装置来实现,例如,随机存取存储器(RAM)和硬盘。存储器上存储了模型代码解释器107、模型代码生成器108、UI事件处理程序109、模型化应用程序110,以及组装说明生成器113,每一个都可由中央处理单元103执行。此外,存储器上还存储了模型数据111,即,代表积木构件模型的数字表示法的一组数据结构。
代码解释器107可以读取和解释定义了模型的数字表示法,例如,代表模型的积木构件的数据结构的代码。在优选实施例中,代码解释器可以读取模型的数字表示法,并将这样的模型转换为用于在计算机显示器上呈现的已知的图形格式,优选情况下,模型的3D呈现。UI事件处理程序109可以将用户的与用户界面的交互转换为可以由代码生成器108识别的适当的用户命令。一组可能的和可识别的命令可以包括:从元件的库获取积木构件,将积木构件与另一个积木构件连接,分离积木构件,丢弃积木构件,操纵积木构件,一组积木构件,等等,例如,通过启动旋转等等。与每一个命令一起,可以关联一组相应的参数,例如,相对于显示器坐标系统的光标坐标,积木构件的类型等等。
代码生成器108还可以进一步响应用户的命令,修改模型的数据结构。作为同时的或随后的任务,可以执行代码解释器,以便呈现代码生成器的结果。
模型化应用程序110可以控制存储器、文件、用户界面等等。
在US 6,389,375中描述了虚拟现实模型化的实施例。此外,在已经发布的国际申请WO04104811中描述了交互地将新的虚拟积木构件放入包括3D结构的场景中。这里全部引用了这两个文件的内容作为参考。
组装说明应用程序113可以读取模型的数字表示法,并如这里所描述的,从读取的模型数据,生成组装说明。组装说明应用程序113还可以进一步提供用户界面,用于根据如这里所描述的组装步骤的存储的序列,显示部分模型,或生成的组装说明的任何其他适当的输出格式。组装说明应用程序113可以使用由代码解释器107和UI事件处理程序109所提供的功能,分别进行模型的读取和图形呈现,以及接收用户输入。在备选实施例中,组装说明应用程序是独立的,即,不依赖于外部软件组件。在某些实施例中,组装说明应用程序以适当的文件格式,例如,以可以打印的形式,生成组装说明。
用户105能够通过用户界面106与计算机系统101进行交互,优选情况下,包括计算机屏幕上显示的图形用户界面,以及诸如键盘和/或指示设备之类的一个或多个输入设备。为了加载、保存或传递模型、几何描述或其他数据,计算机系统包括输入/输出单元(I/O)104。输入/输出单元可以用作与不同类型的存储介质和不同类型的计算机网络(例如,因特网)的接口。此外,输入/输出单元(I/O)104可以用于,例如,交互地,与其他用户交换模型。存储器102、中央处理单元(CPU)103、用户界面(UI)106,以及输入/输出单元104之间的数据交换是通过数据总线112来完成的。
值得注意的是,图1的数据处理系统可以被配置为执行模型化应用程序和组装说明应用程序两者。然而,在其他实施例中,数据处理系统可以被配置为只基于从另一台计算机(在其上面运行模型化应用程序或用于生成数字模型表示的另一个应用程序的计算机)接收到的模型数据,执行组装说明应用程序。同样,在所述另一台计算机上,模型化应用程序可以独自安装,或与组装说明应用程序相结合地安装。
图2显示了组装说明生成的实施例的流程图。在步骤S1中,接收积木构件模型的数字表示法,例如,由模型生成模块(例如,图1b的模型化应用程序110)或由任何其他适当的进程所创建的。
可以从存储介质203中检索数字表示法,例如,运行组装说明应用程序的计算机的本地硬盘,CD ROM、磁盘等等。或者,或另外,模型的数字表示法可以远程存储,例如,从存储了它的计算机网络的另一台计算机接收。例如,可以从Web服务器下载数字表示法,在Web服务器上数字表示法可以对一个或多个用户可用。下面将描述数字表示法的数据结构的示例。
在后面的步骤S2-S4中,组装说明应用程序从加载的数字表示法生成组装说明205。在一个实施例中,组装说明应用程序生成部分模型的3D视图的序列,其中,每一个部分模型与紧前面的部分模型不同之处在于,根据如这里所描述的组装说明进程确定的组装步骤的序列,向模型中添加预定数量的附加积木构件。可以以电子方式呈现、打印,或以另一种适当的方式呈现组装说明205。在某些实施例中,组装说明的生成可以由用户204进行控制。例如,用户可以选择要在每一个步骤中添加的附加积木构件的数量。此外,用户还可以操纵生成的3D视图,包括改变摄影机的方位等等,正如下面所描述的。用户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 Candidates be the set of all bricks in M
Let Result be an empty sequence of bricks
While(Candidates is not empty)
Let D be the subset of Candidates that are
detachable
Let b be the″best detachable″brick from D
Add b to Result
Remove b from Candidates
Return Result
在上面的伪代码中,选择“最佳可分离的”砖,对应于在上面的步骤304中执行的选择,即,基于一组预定的选择标准的选择,例如,下面所描述的一个或多个选择标准。
优选情况下,首先选择可以从模型中分离的候选子组件,然后,根据分离的优先程度,给每一个候选项指定权重,从计算角度来看,当分为多个步骤时,处理这种选择是可能的,因为给子组件指定权重只是对模型的所有可能的子组件的子集预先形成的。
在2006年6月University of Southern Denmark,Department of Mathematics and Computer Science的JacobAllerelli所著的论文“Computer-aided generation of buildinginstructions for LEGO models”中,其中一个发明人描述了分解过程的示例,在此引用了该论文作为参考。下面,将比较详细地描述用于在步骤303中确定候选子组件的第二组选择标准的选择规则的示例。这些选择标准也将被称为“启发式切断(cut heuristics)”。
最少切断/图形划分:
已经认识到,通过使用将图形划分为子图形的图形划分技术,可以有效地确定适当的候选子组件。为此,在表示无向图(包括节点和连接节点的边)的数据结构中表示模型,其中,节点表示积木构件,边表示积木构件之间的连接。这样的图形也被称为连接性图形。图7显示了连接性图形的一个示例。图7a显示了包括积木构件a、b、c、d,以及e的积木构件模型的示例。图7b显示了带有节点a、b、c、d、e的对应的连接性图形。
图形数据结构的边数据项可以包括表示由边表示的连接所连接的积木构件之间的对应的连接的(物理)连接强度的属性。如此,用于识别图形的最小的权重cut的图形划分过程产生子组件,以致于分离子组件所需的物理强度/力度至少大致被最小化。这样,选择连接最松散的子组件。下面将比较详细地描述确定积木构件之间的连接强度的示例。
组装方向变化:
优选情况下,切断组装方向发生变化的模型。当积木构件沿着至少两个组装方向互连时,可以发生组装方向的变化。可以通过在连接性图形中进行本地图形搜索来查找组装方向的变化的位置。可以通过将方向属性与每一个积木构件关联,来定义组装方向。或者或另外,可以通过将方向属性指派到积木构件之间的连接,来定义组装方向。为此,连接性图形的节点和/或边可以具有与其关联的表示对应的连接的组装方向的属性。
单一积木构件关节切断:
将两个或更多子组件/积木构件互连的积木构件叫做“关节积木构件”,可以是分离模型的好的切断点/节点。一旦被识别,关节积木构件可以包括在分离的子组件中,即,被去除,或者,可以从分离的子组件中排除关节积木构件,即,不被去除。在图形中,关节积木构件可以,例如,被标记出来-例如,通过所谓的图形着色-,从而,可以被轻松地定位。连接性图形的关节节点可以通过任何适当的用于发现图形的关节节点的算法来查找,例如,基于深度优先搜索(参见,例如,“Graph Theory and Its Applications”,Jonathan L.Gross和Jay Yellen著,Chapman & Hall/CRC,第二版,2006)。
积木构件关节对切断:
术语“关节对”是指将两个或更多不相交的子组件互连在一起的两个积木构件,即,其去除导致模型分解为两个或更多不相交的子组件的积木构件的对。通过关节积木构件或关节对连接到模型的其余部分的子组件,对于生成组装说明,可以是有用的候选子组件。
关节对可以通过一个过程查找,其中,保存了连接性图形G中的所有关节节点的列表A。然后,生成图形G′,其中,去除了G中的非关节节点n。保存了G ′中的所有关节节点的列表B。对于B\A中的每个节点m,找到下面的关节对:(n,m),对于图形G中的所有非关节节点n,重复此过程。
铰链或接合连接:
铰链连接是围绕铰链方向的一个或多个积木构件之间的铰链。积木构件可以包括内部铰链或用于在两个或更多积木构件之间提供铰链连接的铰链连接元件。通过铰链连接连接到模型的其余部分的子组件,对于生成组装说明,可以是有用的候选子组件。当图形的边具有表示铰链结构的存在的关联的属性时,可以在连接性图形中识别这样的组件。例如,可以搜索连接性图形的只通过一个或多个铰链连接连接到连接性图形的其余部分的子图。图12b显示了具有用于提供铰链连接的连接元件1201的积木构件。应该理解,其他类型的可移动的连接也可以用于识别候选子组件,例如,接合连接、等等。
特殊情况:
某些积木构件在它们可连接到其他积木构件的方式上只在某一点上特殊。这些积木构件的示例是在图的基座下具有单一连接元件、在窗户中有玻璃,轮子上有轮胎,铁轨上有车皮的图。因此,这些特殊积木构件在它们的外部连接(即,在它们连接到不同于它们的对应的积木构件的任意积木构件的位置)中从模型中切除的候选项。
因此,在上文中,说明了用于识别候选子组件的许多启发式切断。如此,在分解过程中,可以使用如上文所描述的一个启发式切断或更多启发式切断的组合,有效地在模型的所有可能的子组件之间发现候选子组件。
如上文所描述的,在一个实施例中,每一个去除候选项-即,模型的每一个积木构件和通过上面的或备选的启发式切断(cut-heuristics)过程选择的每一个候选子组件,通过一个或多个加权函数,被赋予权重,以便发现带有最高权重的去除候选项,即,最适合于从模型中去除的去除候选项E(步骤304),然后,分离此选定的去除候选项(步骤305)。
在一个实施例中,如此选择加权函数,以便根据它实现的条件,每一个加权函数要么增强积木构件/子组件被选择的可能性,或者它将拒绝积木构件/子组件被选择。将对于每一个积木构件/子组件的所有加权函数的结果组合起来,以便获得积木构件/子组件的总的权重。然后,可以选择带有最高权重的积木构件/子组件。当根据均匀的加权方式选择单个加权函数时,加权函数组可轻松地改变。
例如,在一个实施例中,每一个加权函数都导致一个权重。权重要么是范围[0,...,1]中的实数,要么是负整数(-1,-2,-3,...)。如果分离积木构件/子组件是有利的,在分配给积木构件/子组件的权重位于范围[0 1],当分离积木构件/子组件既不反对,也不提倡时,指定0,当分离最恰当时,指定1。这两个极值之间的实数表示两者之间的分离有利。如果分离是不利的,则加权函数给积木构件/子组件分配范围(-1,-2,-3,...)中的负的权重,其中,不同负值表示分离不利的程度。应了解,可以定义具有不同范围的其他加权函数集合。
可以使用具有两个单独的范围的加权函数来实现否决方案,例如,如下面所描述的:
对于每一个积木构件/子组件x,对一组加权函数中的每一个加权函数进行评估,相应的单个权重按如下方式组合起来:如果在x的指定的权重之间没有负的权重(所谓的“否决”),则将所有权重累加起来,获得总权重。另一方面,如果在指定的权重之间有一个或多个“否决”,则所有非“否决”权重都丢弃,即,设置为0。根据此,好的要分离的积木构件/子组件是无“否决”的并且具有高累加权重的那一个。另一方面,一旦积木构件/子组件被赋予了“否决”,则直到分解过程中的下一次迭代之前,它不能离开“否决”状态。如果所有积木构件/子组件都获得负的权重,则可以选择带有具有最小绝对值的总的负的权重的积木构件。或者,可以反向跟踪一个或多个迭代,试图选择不同的积木构件/子组件,请求用户交互,或以另一种适当的方式继续进行。
结果,当发现分解过程(在每一个步骤中,至少有一个无“否决”的积木构件/子组件)时,上面的加权方式导致产生高质量的组装说明。
现在比较详细地描述加权函数的许多示例:
分离策略:
加权函数的一个示例判断要分离的积木构件/子组件是否在物理上可以从模型的其余部分接触和分离。为此,加权函数验证是否满足下面的两个要求中的一个或多个:
1)积木构件/子组件可分离的/可连接的所沿着的所有方向都是平行的。如此,此加权函数可以确定组装方向和/或积木构件的所有连接的方向,例如,基于与连接性图形中的对应的节点和/或边关联的属性。如果所有方向都是平行的,则可以通过平移运动来分离积木构件。例如,图8a的积木构件803具有两个不平行的连接方向:它们连接到轴802和积木元件804。与轴802的连接具有平行于轴802的关联的方向,因为从轴802拆卸积木构件803需要在沿着轴802的方向移动积木构件803。另一方面,与积木构件804的连接,具有垂直于轴的方向,即,在旋钮从积木构件804的顶表面中凸出的方向。因此,拆卸积木构件803可能导致模型拉紧,对于,例如,儿童,在没有同时分离模型的其他连接的情况下,难以执行。图12显示了带有利用箭头表示可分离性的相应的方向的积木构件的示例。
2)在连接的方向移动积木构件/子组件,不会导致与模型的其他积木构件冲突。例如,加权函数可以确定积木构件/子组件的边界框,判断在连接的方向将边界框平移预先确定的距离是否导致与另一个积木构件冲突/交叉。图13显示了积木构件1301沿着其可分离的方向可移动的模型。或者,加权函数可以计算在连接的方向伸展的积木构件/子组件几何形状,判断伸展的几何形状是否与任何其他积木构件/子组件冲突。积木构件占用多少空间可以通过简单几何体积来表示。例如,如图4所示的带有2x4个旋钮的积木构件可以具有与它关联的9个冲突盒子:一个冲突盒子填充除8个之外的整个积木构件,而8个旋钮分别填充一个冲突盒子。此信息可以用来估计积木构件是否冲突/重叠。冲突盒子信息可以用来计算伸展的几何形状,该几何形状表示为了分离积木构件所需的空间。
如何计算伸展的几何形状的示例可以包括发现积木构件可以分离的方向,是矢量d。积木构件具有N个冲突量(例如,如在上面的带有2x4个旋钮的积木构件的示例中)和位置(x,y,z)。
具有积木构件BE、矢量d和模型M,分离过程可以包括下列步骤:对于BE中的每个冲突量,p1表示k的位置。当BE沿着矢量d从p1移动时,p2表示k的位置。由于每个冲突量是带有8个角的盒子,在p1将有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
for x,
0,otherwise
关节策略:
如上文所提及的,其去除导致模型分解为两个或更多不相交的部件的积木构件/子组件叫做关节积木构件/子组件。分离关节积木构件/子组件可能导致这样的组装说明,显示了看来似乎在组装说明的3D呈现中浮动/飞行的不相交的构件/子组件。这可能是不希望发生的,因为会使分解过程复杂化,从而,也使组装说明复杂化。
下面的加权函数避免了关节积木构件/子组件的分离:
Weight(x)=-1 if x is an articulation building element/sub-assembly
0 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 all
building 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可以看出,在模型的左边部分,首先分离长方形积木构件901,然后,分离与第一长方形积木构件对称的相似的长方形积木构件902。下一个步骤可以是分离模型的右边部分的两个相似的长方形积木构件903。
基础策略:
特殊的积木构件或子组件,如大的板或形状不规则的板,常常是模型的基础/起始积木构件,因此,是最后一个分离的积木构件。为了检查板或其他积木构件是否是起始积木构件,可以将它的类型和/或尺寸与其他积木构件的类型/大小进行比较,或将其与表示积木构件比较大的阈值进行比较,因为起始积木构件常常比较大,因为它构成了模型的基础。此外,也可以通过分析放置在模型中的位置有多低来检查大的积木构件是否是起始积木构件。积木构件比较大并且放置在模型的底部很可能是起始积木构件。为此,连接性图形的节点可以具有与它们关联的表示积木构件的尺寸/体积的相应的属性。或者,组装说明过程可以允许用户指出起始积木构件,例如,通过利用鼠标或另一个指示设备,指出起始积木构件。相应地,防止起始积木构件被从模型中去除的加权函数可以具有下面的形式:
Weight(x)=-1 if x is a starter building element
0 if not.
或者,如果x是起始积木构件/子组件,加权函数可以指定权重0,如此表示,x的分离是不利的,如果x不是起始积木构件/子组件,指定高的正的权重,例如,权重=1,因为,这样分离是有利的。
这样的效果是,在所产生的组装说明中,某些共同的基础积木构件或子组件将在最初连接或在组装过程的初期连接。
分步骤完整性策略:
根据一个实施例,对于每一个候选子组件x,有两个反映/有助于连接性的质量的有贡献的方面。第一方面是子组件x的积木构件之间的内部连接性的强度,而第二方面是子组件x的积木构件的外部连接性的强度。如果内部连接性相对来说比较强,而外部连接性相对来说比较弱,则可以期待子组件可轻松地拆卸,因为子组件中的积木构件强连接到该子组件中的其他积木构件,并且只弱连接到模型的其余部分。相应地,在组装过程中,具有强内部连接的以及与模型的其余部分的弱连接的子组件,可能作为稳定的子组件,相对来说容易组装,并连接到模型的其余部分,没有在组装过程子组件分解的风险。
为了研究子组件在内部连接的坚固程度,即,子组件的不同的积木构件如何彼此连接,可以使用连接性图形或所有积木构件之间的连接性的另一种适当的表示法。连接性图形可以包括反映积木构件之间的物理强度的权重,如上文所描述的,例如,当每一个边都具有与它关联的表示对应的连接的强度的属性/权重。
例如,每一个积木构件都可以包括一个或多个连接元件,用于啮合其他积木构件的对应的连接元件,以便在多个积木构件之间提供连接。例如,图4显示了带有呈现旋钮的形式的突出部(用于啮合另一个积木构件的空穴(也被称为反旋钮)的积木构件的示例。一般而言,积木构件可以具有一个或多个不同类别的连接元件,每一个连接元件类别,或每一对连接元件类别,都可以提供对应强度的连接。如此,可以有助于两个积木构件之间的连接的连接元件的数量/协作的连接元件对的数量,以及根据起作用的连接元件的相应的类别/类型,确定/估计两个积木构件之间的连接的总强度。例如,可以将单个连接强度相加,获得总的连接强度。有关有助于连接的连接元件的数量和类型的信息可以从积木构件模型的数字表示法中获取,和/或包括在连接性图形的节点和/或边中。WO 04/034333中描述了支持连接元件的定义的数据结构的示例。
例如,积木构件x和y之间的连接的强度可以按如下方式计算:
其中,总和遍及所有连接类别c,Sc是连接类别c的连接强度,而N(c)是有助于x和y之间的连接的类别c的连接元件的数量。
下面给出了如何确定如图4所示的类型的两个积木构件x和y(具有呈现旋钮/反旋钮(或空穴)对的形式的连接元件、栓和轴)之间的连接的物理强度的示例:
Strenght(x,y)=Sum of:
1 for each connecting knob/anti-knob pair
10 for each peg
5 for each axle
应了解,上面的示例中的数值只作为示例。
当计算有效强度时进一步考虑积木构件的几何形状时,可以更加准确地估计连接性的有效强度。
例如,图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
value
-1 if x is a sub-assembly and
its strongest external connection>external
threshold value
0 otherwise
内部和外部连接的阈值可以是预定的,用户控制的,凭经验发现的或以别的方式适当地设置的。调节阈值是调节所产生的组装说明的分步骤的数量和质量的有效方式。通过将阈值设置为比较高的值,可以获得不多的高质量的候选子组件,而不是获得许多较低质量的候选子组件。这使得分解过程更加容易并更快。
最接近策略:
也可以根据与以前分离的积木构件/子组件的距离,给积木构件/子组件赋予权重。更具体地说,weight(x)可以是距离、距离的平方、或x的质心与以前分离的积木构件/子组件的质心的另一个适当的距离测度的函数。应该理解,也可以使用积木构件/子组件的另一个适当的参考点代替质心。
可以给与以前分离的积木构件/子组件更靠近的积木构件赋予较高的权重。当积木构件至少在一个点彼此接触时,则它们之间的距离可以设置为0。最接近策略可以区分表面彼此相邻的积木构件,积木构件只是在它们的角落彼此接触,分别如图11a和图11b所示。如此,在一个实施例中,加权函数可以是两个积木构件之间邻接的面积的大小的递增函数。可以基于作为数字表示法的一部分存储的边界框或其他几何信息,确定积木构件是否彼此毗邻,或以别的方式彼此接触。求这样的度量的近似值的一种方式是通过计算相应的积木构件的点之间最大距离。一般而言,此距离越大,邻接的面积越小,如图11所显示的。
层叠策略:
当组装模型时,优选情况下,常常从底部向上进行组装。因此,可以根据与模型中的最低的积木构件的距离,向积木构件/子组件分配权重。积木构件/子组件与底部的距离越远,在分解过程内被赋予的权重就越高。因此,一般而言,加权函数可以是积木构件沿着坐标系统的一个或多个方向的坐标的递增函数。
因此,在上文中,描述了加权函数的许多示例,每一个都对应于对应的模型分解策略。应该理解,分解过程可以包括备选的或附加的加权函数和/或备选的或附加的分解策略。此外,还可以定义对应于这里所描述的分解策略的备选的和/或附加加权函数。
还将进一步认识到,这里所描述的某些策略具有一个或多个参数,这些参数可以改变,以增强结果的一个方面或另一个方面,从而,使框架成为通过人的交互生成组装说明的工具,而不是black-box。
发明人已经利用对应于下面的策略的加权函数的组合,获得了特别好的结果,确保了分解的完整性。它们一起可以构成提供好的结果的自动组装说明生成器的实施例的骨干,无需用户交互:
-分离策略:只允许分离在物理上可以去除的积木构件或子组件,给定了积木构件或子组件的几何形状和连接性。
-分步骤完整性策略:只允许分离在内部强连接的并且在外部弱连接的组件。
如上文所描述的,准确的要求可以改变,以确保所希望的质量的分步骤。
-关节策略:只允许分离不会将模型拆分为两个或更多分离的组件的子组件。此外,不赞成分离将模型拆分为两个或更多分离的子组件的单个积木构件。
-集成策略:如果去除了单个关节积木构件,则尽可能快地去除分离的积木构件或子组件。
在一个实施例中,上文所提及的四个策略-分离、分步骤集成、关节和集成-用于所有组装/分解中,而一个或多个进一步的策略,例如,这里所描述的其余的策略的一个或多个,例如,相似度、基础、最接近和层叠策略,可以在不同的情况下用于调节结果。这样的策略可以由用户进行选择。图4显示了积木构件以及其连接元件的示例。具体来说,图4显示了积木构件401的透视图。积木构件401具有顶表面402,上面带有八个旋钮403a-h,可以与另一个积木构件的对应的空穴啮合,例如,另一个积木构件的底面上的空穴。相应地,积木构件401包括带有对应的空穴的底表面(未显示)。积木构件401进一步包括没有任何连接元件的侧面404。
一般而言,连接元件可以分为连接元件的不同类别,例如,连接件、受纳体,以及混合构件。连接件是可以由另一个积木构件的受纳体接纳的连接元件,从而在积木构件之间提供连接。例如,连接件可以在另一个构件的部件之间装入空穴中。受纳体是可以接纳另一个积木构件的连接件的连接元件。混合构件是既可以充当受纳体又可以充当连接件的部件,通常取决于其他积木构件的协作的连接元件的类型。
在LEGO的名下有图4中所显示的类型的积木构件可用,有许多形状、尺寸,和颜色。此外,还有的这样的积木构件带有各种不同的连接元件。应该理解,上面的积木构件只作为可能的积木构件的示例。
图5显示了以数字方式表示积木构件模型的数据结构的实施例。数据结构501可以包括一个或多个数据记录502,包括与整体模型有关的总体模型参数。这样的模型参数的示例包括模型名称、模型创作者的姓名、模型化应用程序的程序版本号,创建日期等等。模型数据结构501进一步包括列表503或积木构件数据记录的其他适当的结构。在图5的示例中,列表包括N个数据记录“积木构件1”、“积木构件2”、...,“积木构件J”、...,“积木构件N”。列表503的每一个积木构件数据记录都具有“积木构件J”的数据结构504所显示的结构。
具体来说,每一个积木构件数据记录都包括积木构件ID 505,表示对应于积木构件类型的标识符。积木构件ID可以唯一地标识积木构件的属性或积木构件的类型。
积木构件数据记录还可以进一步包括许多积木构件属性506,表示积木构件的一个或多个属性,如颜色、纹理、装饰等等。
此外,积木构件数据记录504还包括分别表示积木构件的内坐标系统的位置和方向的数据项507和508。积木构件的位置和方向通过积木构件的内坐标系统的原点相对于全球“world”坐标系统的坐标来进行定义,并由内坐标系统相对于全球坐标系统的朝向来进行定义。
在美国专利no.6,389,375中说明了包括坐标系统的层次结构的用于存储积木构件模型的数据格式的示例。
此外,积木构件数据记录504还可以包括分别表示积木构件的一个或多个边界框和连接性数据的数据项509和510,用于检测积木构件与其他积木构件的连接性属性。如图4所示的积木构件的类型的连接性数据的一种表示法的实施例包括表示通过积木构件的边界框的表面定义的平面的数据结构。积木构件的连接元件位于这些平面上,每一个连接元件都具有与它关联的轴。同一个平面上的所有连接元件的轴都对应于规则网格(例如,正交网格)的相应的网格点,相邻网格点之间的距离是固定的。图4的与积木构件401关联的平面彼此成对地平行,它们包括一组对应于积木构件的顶部和底部表面的水平面和许多对应于积木构件的侧面的垂直平面。相邻网格点之间的距离在所有水平面上可以相同。在某些实施例中,垂直平面中的相邻网格点之间的距离不同于水平面中的相邻网格点之间的距离。在WO 04/034333中说明了如图4所示的类型的积木构件的连接性属性的数字表示法,在此引用该申请的全部内容作为参考。
应该理解,数字表示法可以以任何适当的数据或文件格式进行编码,例如,作为二进制文件,作为根据预定的模型花描述语言的文本文件等等。应该进一步理解,数字信息的其他实施例可以利用替代的或另外的数据结构,和/或表示替代的或另外的模型数据。
图6显示了组装说明应用程序的图形用户界面的实施例。用户界面包括查看区域701,说明了一组一步接一步的组装说明的步骤的图形表示。图形表示显示了从预定的摄像位置显示的部分模型702的3D视图。部分模型701包括完整的模型的所有积木构件的子集,其中,该子集包括最初定位的积木构件。查看区域701进一步包括最近放置的积木构件的图形表示703,即,区别当前部分模型702与前面的步骤的部分模型的积木构件。在此示例中,这些是部分模型702的积木构件714、715,以及716。
用户界面进一步包括滑块控制元件709,可以通过利用鼠标进行的对应的拖动操作,以单独的间隔移动,可使用户选择一步一步的说明的任何一个步骤。在图6的示例中,在说明的每一个步骤中添加了三个新的积木构件。
用户界面进一步包括按钮控制元件705,可使用户调用许多常用的功能,如分别在正方向和反方向按顺序浏览图形表示,跳转到说明的第一个步骤和最后一个步骤,改变摄像位置,打印生成的组装说明,以及启动“自动播放”功能。自动播放功能一个一个地显示部分模型的序列,以便将每一个部分模型显示预定的时间长度。优选情况下,用户可以用自动播放功能配置每一个部分模型的查看时间。
最后,用户界面还包括许多下拉菜单704,可使用户启动诸如帮助功能、改变摄像位置的功能、图像放大功能之类的功能。由组装说明应用程序提供的进一步的功能包括加载数字表示法,用于打印部分模型的图形表示的打印功能,以及用于导出部分模型的图形表示的序列的导出功能,例如,以HTML格式,或任何其他适当的图形文件格式,如TIF、JPG、BMP等等,进行导出。
由组装说明应用程序提供的功能的进一步的示例包括材料清单功能,可使用户查看或打印模型中的所有积木构件的列表。
图14显示了组装说明生成的另一个实施例的流程图。在步骤S1中,接收积木构件模型的数字表示法M,例如,如参考图2的步骤S1所描述的。
在后面的步骤S2-S12中,组装说明应用程序从加载的数字表示法生成组装说明205。生成的组装说明205可以是如参考图2所描述的形式。
在步骤S2中,过程初始化。具体来说,初始化数据结构Result,用于保留要生成的组装序列。将序列Result初始化为空序列。进一步将表示为Candidates的一组候选积木构件初始化为模型M中的所有积木构件和子组件的集合。因此,如在前面的实施例中那样,可以确定要从模型M中去除的一个或多个候选子组件,并将子组件当做一般性的积木构件。可以通过一组选择标准(确定如何分隔/切断模型),可以发现/选择候选子组件。上面比较详尽地描述了这样的选择标准的示例,特别是,参考图3的步骤303所描述的第二组选择标准。应了解,在其他实施例中,可以只考虑积木构件。
在步骤S3中,判断集合Candidates是否是空的,即,是否已经处理完所有积木构件。如果是这种情况,则执行步骤S12;否则,执行步骤S4。
在步骤S4-S11中,判断是否可以找到导致产生新的部分模型的组装步骤b,以便可以将完整的模型M分解为此新的部分模型。
具体来说,在步骤S4中,作为集合Candidates的副本,生成积木构件和子组件的辅助集合C。
在步骤S5中,判断集合C是否是空的,即,是否识别了一个候选项b。如果是这种情况,则返回到步骤S3;否则,执行步骤S6。
在步骤S6中,从集合C中选择候选积木构件b或候选子组件。
本实施例中的候选项的选择可以以与前面的实施例的分解情况中的选择去除积木构件类似的方式来完成,即,通过一组选择标准。具体来说,选择标准可以基于表示不同的组装策略的一个或多个加权函数,如上文所描述的一个或多个加权函数,特别是参考图3的步骤304所描述的第一组选择标准的加权函数。某些加权函数分别在组装和分解版本中相同或基本上相同,例如,如上面比较详细地描述的加权函数。例如,一个策略可以根据它们与在前面的步骤中添加的积木构件的距离,向积木构件分配一个权重。然后,可以选择与前面添加的积木构件最靠近的积木构件。其他加权函数可以十分不同。例如,上文所描述的分解情况的“关节策略”避免了拆散连接性图形,而在本实施例的组装情况下,只是确保了选择实际连接到任何前面选择的积木构件的积木构件。尽管如此,在这两种情况下,都避免了“flying”积木构件。由于这里所描述的加权函数可以给子组件(伪积木构件)以及简单的积木构件赋予权重,因此,组装和分解两种过程都可以一般化为处理子组件。如在纯粹的分解情况下,这不仅是切实可行的,有时候,还是需要的。
或者,或另外,候选项的选择可以部分地或完全地基于用户输入/交互。例如,可以接收表示候选项b的用户输入。或者,可以,例如,随机地或基于上文所描述的加权函数,选择一个或多个可能的候选项,并向用户指出候选项。然后,可以接收表示批准或拒绝一个或多个建议的候选项的用户输入。
在步骤S7中,从接收到的模型的数字表示法生成部分分解序列,直到可通过当前组装序列Result和选定的候选项b的联合获得的剩余的模型。可以以模型的积木构件和/或子组件的连续列表的形式生成分解序列。还可以进一步生成连续列表的子组件的从属分解序列。在一个实施例中,进程将分解序列表示为步骤的分支树,其中,每一个分支都可以包含附属的分解。
下面将比较详细地描述生成部分分解序列的过程的实施例。
在步骤S8中,判断是否可以找到分解序列。如果步骤S7的分解过程成功确定分解序列,则继续执行步骤S9;否则,继续执行步骤S10。
在步骤S9中,更新集合Candidates、Result,以及C。具体来说,将选定的候选项b添加到当前结果序列Result中,从候选项的集合Candidates中去除候选项b,从辅助集合C去除所有构件(随着识别成功的候选项)。然后,返回到S5。
在步骤S10中,从辅助的候选项的集合C中去除b进行尝试。在步骤S11中,判断C中是否仍有候选项留下。如果是这种情况,返回到步骤S5,以识别备选的候选项;否则,过程结束,例如,带有指出生成组装说明失败的适当的错误标记或消息。例如,如果模型被过度地约束和/或如果在分解过程中所使用的加权函数表示模型的组装约束太强/限制性太强,则可能发生这种情况。因此,在这样的情况下,在分解过程中所使用的某些或全部加权函数可以被弱化,例如,自动地或通过用户交互,可以利用弱化的加权函数重新开始该过程。
在步骤S12中,从生成的组装序列Result生成组装说明,例如,作为部分模型的图像的序列或其他表示方法,其中,在每一个部分模型中,与前一部分模型相比,添加了来自生成的列表的一个或多个积木构件和子组件。可以存储生成的说明和/或以如这里所描述的任何适当的形式将它们输出。
图15显示了模型M直到剩余的模型N的部分分解过程的示例的流程图。分解过程根据完整的模型M的数字表示法,对模型M进行分解,包括模型中的所有积木构件(步骤301)。模型M的输入包括有关单个积木构件的信息,如大小/尺寸、旋钮的数量,诸如积木构件的铰链、栓、轴等等之类的特点。数字表示法还包括有关将每一个积木构件放在模型中的什么位置的信息,例如,通过指定积木构件相对于适当的坐标系统的相应的(x,y,z)位置。进一步接收有关剩余集合N(即,模型M的子模型)的信息。部分分解过程生成分解步骤的序列,其中,在每一个分解步骤中,去除M\N的一个或多个积木构件(即,模型M的未包括在内在剩余的模型N中的积木构件),直到只留下剩余的模型N。
在步骤302中,分解过程测试在模型M\N(或前一迭代产生的部分模型M\N)是否留下了要分离的积木构件。如果在该模型中仍有要去除的积木构件,则继续执行步骤303,在该步骤中,选择/生成要从模型M\N(或由前一迭代产生的部分模型M\N)去除的一个或多个候选子组件。候选子组件包括互连的积木构件。在随后的步骤304中,根据第一组预定的选择标准,例如,如参考图3所描述的,选择要分离的积木构件或其中一个生成的候选子组件(E)。可以在步骤303中,通过第二组选择标准(确定如何分隔/切断模型),可以发现/选择候选子组件。上面比较详尽地描述了这样的选择标准的示例。
在步骤305中,从模型中分离在步骤304中选择的积木构件或子组件E,即,生成新的部分模型M′=M\E,其中,选定的候选子组件的所有积木构件的选定积木构件都被去除。可以维持表示分解序列的数据结构,并利用有关分离的子组件/积木构件的信息更新数据结构。
如果选择要分离的子组件,则可以通过在步骤307中以递归方式执行分解过程(即,以选定的子组件E和剩余的模型N充当输入),然后,返回到步骤302,继续迭代分解过程,查找下一个要与其余的部件模型(即,模型M’\N=M\(E∪N)。)分离的积木构件,对选定的子组件进行分解。
当没有更多的积木构件(也不是剩余的模型N的一部分)要从模型M中去除时,完成模型M的部分分解,直到剩余的模型N,在步骤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 Resuit be an empty sequence of bricks
While(Candidates is not empty)
Let C be a copy of Candidates
While(C is not empty)
Let b be a brick from C
If(Deconstruct M down to(union of Result and b))
Remove all bricks from C
Candidates=Candidates\b
Add b to Result
Else
Remove b from C
If(C is empty)
Error:″Construction was not possible″
Return False
Deconstruct model M down to N:
Let Candida tes be the set of all bricks in M/N;
While(Candidates is not empty)
Let D be the subset of Candidates that are detachable
If(D is empty)
Return False;
Else
Let b be the″best detachable″brick from D;
Remove b from Candidates;
Return True;
在上面的伪代码中,选择“最佳可分离的”砖,对应于在上面的步骤304中执行的选择,即,基于一组预定的选择标准的选择,例如,上文所描述的一个或多个选择标准。
过程的实施例也可以通过下面的伪代码来表达;图16显示了此实施例的流程图:
Construct model M:
Let Candidates be the set of all bricks and sub-
assemblies in M
Let Result be an empty sequence of bricks
While(Candidates is not empty)
Let C be a copy of Candidates
If(Find construction step b from C)
Add b to Result
Candidates=Candidates\b
Else
Error:″constructive Building instruction not
possible″
Return False
Return True
Find construction step b from C:
While(C is not empty)
Let b be a ′good′brick from C
If(Deconstruct M down to(union of Result and b))
Return True
Else
Remove b from C
Return Fa]se.
因此,在此实施例中,就是否可以知道下一个组装步骤b的判断是作为单独的函数实现的。图16a显示了全过程,而图16b显示了识别可能的/有效的下一个组装步骤的函数的示例的流程图。
从参考图14所描述的输入步骤S1和初始化步骤S2开始。在步骤S3中,判断集合Candidates是否是空的,即,是否已经处理完所有积木构件。如果是这种情况,则执行步骤S12,如上文所描述的,生成组装说明;否则,执行步骤S4。
在步骤S4中,作为集合Candidates的副本,生成积木构件和子组件的辅助集合C。
在步骤S20中,判断是否可以查找到有效的下一个组装步骤b。如果是这种情况,则通过向Results数据结构附加识别的步骤b,以及通过从Candidates数据结构中去除对应的积木构件(或子组件),更新Results和Candidates数据结构;然后,返回到步骤S3。如果无法找到有效的组装步骤,则过程结束,例如,带有表示生成组装说明失败的错误标记或消息,如参考图14所描述的。
图16a显示了实现步骤S20的子过程的示例的流程图:首先,判断集合C是否是空的,即,是否已经处理完所有候选项b。如果是这种情况,则返回表示无法查找到有效的候选项b的值;否则,执行步骤S6。
在步骤S6中,从集合C中选择候选积木构件b或候选子组件,例如,如参考图14的步骤S6所描述的。
在步骤S7中,从接收到的模型的数字表示法生成部分分解序列,直到可通过当前组装序列Result和选定的候选项b的联合获得的剩余的模型,如参考图14的步骤S7所描述的。
如果步骤S7的分解过程成功确定分解序列,则返回表示过程成功的值;否则,继续执行步骤S10。
在步骤S10中,从辅助的候选项的集合C中去除b进行尝试,并返回到子过程的开始,判断C是否是空的。
在此示例中,函数“Deconstruct model M down to N”可以是上面的示例中的相同函数。
在参考图14-16所描述的实施例中,带有N个积木构件的模型的组装需要N个组装步骤,一般而言,对于每一个组装步骤,可能必须进行多次分解,以便发现有效的候选砖b。
可以按如下方式估计所需的迭代的数量:N块砖的完整的组装说明大致需要N个组装步骤。每一个组装步骤都可能需要大致N/2次分解。每一次分解都包括大致N个分解步骤。每一个分解步骤都需要大致N/2次砖加权。总起来,完整的组装说明可能需要大致(N^4)/4积木构件的加权。这仍比纯粹的反向跟踪搜索所需的x^N加权好得多。类似地,参考图2和3所描述的完整的分解过程需要大致(N^2)/2次加权。
Claims (45)
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中任一权利要求所述的方法的步骤。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/724,915 US7979251B2 (en) | 2007-03-16 | 2007-03-16 | Automatic generation of building instructions for building element models |
US11/724,915 | 2007-03-16 | ||
PCT/EP2008/053124 WO2008113768A1 (en) | 2007-03-16 | 2008-03-14 | Automatic generation of building instructions for building element models |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101675458A true CN101675458A (zh) | 2010-03-17 |
CN101675458B CN101675458B (zh) | 2016-02-24 |
Family
ID=39473765
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200880014715.5A Active CN101675458B (zh) | 2007-03-16 | 2008-03-14 | 积木构件模型的组装说明的自动生成 |
Country Status (14)
Country | Link |
---|---|
US (1) | US7979251B2 (zh) |
EP (1) | EP2135222B1 (zh) |
JP (1) | JP2010521727A (zh) |
KR (1) | KR101470665B1 (zh) |
CN (1) | CN101675458B (zh) |
AT (1) | ATE479167T1 (zh) |
BR (1) | BRPI0808986B1 (zh) |
CA (1) | CA2680256C (zh) |
DE (1) | DE602008002331D1 (zh) |
DK (1) | DK2135222T3 (zh) |
ES (1) | ES2351272T3 (zh) |
HK (1) | HK1138092A1 (zh) |
MX (1) | MX2009009733A (zh) |
WO (1) | WO2008113768A1 (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013071573A1 (zh) * | 2011-11-18 | 2013-05-23 | 深圳市华星光电技术有限公司 | 平板显示装置的背框以及背光系统 |
CN104123306A (zh) * | 2013-04-27 | 2014-10-29 | 厦门雅迅网络股份有限公司 | 一种基于历史分析的无人智能驱动的数据文件生成方法 |
CN106999785A (zh) * | 2014-10-02 | 2017-08-01 | 乐高公司 | 游戏系统 |
CN108549624A (zh) * | 2018-04-18 | 2018-09-18 | 宁夏通信规划设计院(有限责任公司) | 通信工程设计预算和说明文本自动化生成系统和方法 |
CN109069929A (zh) * | 2016-05-09 | 2018-12-21 | 乐高公司 | 用于玩具识别的系统和方法 |
CN109562294A (zh) * | 2016-07-05 | 2019-04-02 | 乐高公司 | 用于创建虚拟对象的方法 |
CN109643500A (zh) * | 2016-08-31 | 2019-04-16 | 索尼公司 | 信息处理装置、信息处理方法和程序 |
US10583354B2 (en) | 2014-06-06 | 2020-03-10 | Lego A/S | Interactive game apparatus and toy construction system |
CN111179422A (zh) * | 2019-12-31 | 2020-05-19 | 深圳市优必选科技股份有限公司 | 一种模型构建方法、装置及终端设备 |
CN113742808A (zh) * | 2021-09-08 | 2021-12-03 | 深圳千帜科技有限公司 | 一种拼装积木模型设计方法 |
CN114042311A (zh) * | 2021-11-15 | 2022-02-15 | 中国联合网络通信集团有限公司 | 信息处理方法、边缘服务器、电子设备、计算机介质 |
CN114896812A (zh) * | 2022-06-08 | 2022-08-12 | 深圳千帜科技有限公司 | 一种积木打印的自动排版方法、设备、存储介质及系统 |
CN115364494A (zh) * | 2022-07-26 | 2022-11-22 | 福州市鹭羽智能科技有限公司 | 一种基于图样的积木自动堆放装置及方法 |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8374829B2 (en) * | 2007-03-16 | 2013-02-12 | Lego A/S | Automatic generation of building instructions for building element models |
US7979251B2 (en) * | 2007-03-16 | 2011-07-12 | Lego A/S | Automatic generation of building instructions for building element models |
US7966588B1 (en) * | 2008-01-26 | 2011-06-21 | National Semiconductor Corporation | Optimization of electrical circuits |
US9087164B2 (en) * | 2008-01-26 | 2015-07-21 | National Semiconductor Corporation | Visualization of tradeoffs between circuit designs |
US8334893B2 (en) * | 2008-11-07 | 2012-12-18 | Honeywell International Inc. | Method and apparatus for combining range information with an optical image |
WO2011026268A1 (en) | 2009-09-02 | 2011-03-10 | Autodesk, Inc. | Automatic explode based on occlusion |
CN105373651B (zh) * | 2009-09-02 | 2019-01-18 | 欧特克公司 | 基于遮断的自动分解 |
US8628393B1 (en) * | 2009-09-24 | 2014-01-14 | Autodesk, Inc. | 3D puzzle generation, algorithms for generation, and physical instantiations |
CA2774114C (en) * | 2009-10-02 | 2018-07-31 | Lego A/S | Connectivity depended geometry optimization for real-time rendering |
JP5628083B2 (ja) * | 2011-04-13 | 2014-11-19 | 株式会社日立製作所 | 計算機システム、及び組立アニメーション生成方法 |
CN103702726B (zh) * | 2011-05-23 | 2016-01-13 | 乐高公司 | 玩具搭建系统、产生构建指令的方法和数据处理系统 |
WO2012160055A1 (en) | 2011-05-23 | 2012-11-29 | Lego A/S | A toy construction system for augmented reality |
WO2013080206A1 (en) * | 2011-11-29 | 2013-06-06 | Wainztein Amitay | Building unit toy |
JP6098120B2 (ja) * | 2012-11-01 | 2017-03-22 | 富士通株式会社 | 組立順序生成プログラム、組立順序生成装置、および製造方法 |
KR101441230B1 (ko) * | 2013-01-22 | 2014-09-17 | 울산대학교 산학협력단 | 부품의 조립순서 자동 생성방법 및 장치 |
US10583588B2 (en) | 2013-06-21 | 2020-03-10 | Pavestone, LLC | Manufactured retaining wall block with improved false joint |
USD791346S1 (en) | 2015-10-21 | 2017-07-04 | Pavestone, LLC | Interlocking paver |
US20140377016A1 (en) | 2013-06-21 | 2014-12-25 | Pavestone, LLC | Retaining wall block system with modulating heights, widths, and included angles |
KR101735683B1 (ko) * | 2014-01-07 | 2017-05-15 | 한국전자통신연구원 | 목조 건조물 조립 시뮬레이션 장치 및 그 방법 |
US9517423B1 (en) | 2014-02-13 | 2016-12-13 | Maurice S. Kanbar Revocable Trust | Toy construction set |
USD737468S1 (en) | 2014-05-07 | 2015-08-25 | Pavestone, LLC | Front face of a retaining wall block |
KR102233148B1 (ko) | 2015-01-27 | 2021-03-29 | 한국전자통신연구원 | 건축 문화재 모델링 장치 및 방법 |
US10379524B2 (en) * | 2015-06-26 | 2019-08-13 | The Boeing Company | Management of a display of an assembly model |
US9814997B1 (en) | 2015-07-23 | 2017-11-14 | Mega Brands Inc. | Toy construction element with moving members |
US9947140B2 (en) * | 2015-09-15 | 2018-04-17 | Sartorius Stedim Biotech Gmbh | Connection method, visualization system and computer program product |
USD786984S1 (en) | 2015-10-15 | 2017-05-16 | Mega Brands Inc. | Construction set element |
US10102768B2 (en) * | 2016-03-19 | 2018-10-16 | Fujitsu Limited | Behavior variability and complexity modeling using a construction toy |
AU2018259150B2 (en) * | 2017-04-26 | 2024-04-18 | EMAGINEER Pty Ltd | Construction system and method |
US10894342B2 (en) | 2018-03-29 | 2021-01-19 | Kraft Foods Group Brands Llc | System and method for molding comestible building blocks |
USD844394S1 (en) | 2018-03-29 | 2019-04-02 | Kraft Foods Group Brands Llc | Mold |
JP7022640B2 (ja) * | 2018-03-30 | 2022-02-18 | Kddi株式会社 | 経路探索装置、経路探索方法及びコンピュータプログラム |
US20200147794A1 (en) * | 2018-11-09 | 2020-05-14 | Autodesk, Inc. | Techniques for cad-informed robotic assembly |
JP6539000B1 (ja) * | 2019-02-13 | 2019-07-03 | 株式会社白紙とロック | 複数個体の数値演算システム、数値演算方法、プログラム |
KR102433186B1 (ko) * | 2019-04-12 | 2022-08-18 | 레고 에이/에스 | 안정성 체크 장치, 방법 및 컴퓨터 프로그램 제품 |
CN110175366A (zh) * | 2019-04-26 | 2019-08-27 | 南京友谱信息科技有限公司 | 区域级构筑及建筑整体透视三维模型建模方法 |
US11423799B2 (en) * | 2019-07-03 | 2022-08-23 | Rockwell Automation Technologies, Inc. | Systems and methods for generating custom assembly instructions for product packages |
US11029805B2 (en) * | 2019-07-10 | 2021-06-08 | Magic Leap, Inc. | Real-time preview of connectable objects in a physically-modeled virtual space |
CN113032889B (zh) * | 2021-05-31 | 2022-03-01 | 北京盈建科软件股份有限公司 | 由基础结构和上部结构拼接成联合建筑模型的方法及其装置 |
DE102022118246A1 (de) | 2022-07-21 | 2024-02-01 | Dr. Ing. H.C. F. Porsche Aktiengesellschaft | System, Verfahren und Computerprogrammprodukt zur Optimierung der Anzahl von Produktvarianten eines Produkts |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030097195A1 (en) * | 2001-11-20 | 2003-05-22 | General Electric Company | Method for computing disassembly sequences from geometric models |
US6725184B1 (en) * | 1999-06-30 | 2004-04-20 | Wisconsin Alumni Research Foundation | Assembly and disassembly sequences of components in computerized multicomponent assembly models |
US20040249809A1 (en) * | 2003-01-25 | 2004-12-09 | Purdue Research Foundation | Methods, systems, and data structures for performing searches on three dimensional objects |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3024350B2 (ja) * | 1991-04-04 | 2000-03-21 | 株式会社日立製作所 | 製造性自動評価方法およびシステム |
US6004021A (en) * | 1995-09-28 | 1999-12-21 | Chaos, L.L.C. | Toy system including hardware toy pieces and toy design software for designing and building various toy layouts using the hardware toy pieces |
JPH10240324A (ja) * | 1997-02-27 | 1998-09-11 | Toshiba Corp | 組立順序抽出方法及びその装置 |
WO1998044459A1 (en) | 1997-04-03 | 1998-10-08 | Intergraph Corporation | Interactive timeline visualization |
WO2000038117A1 (en) * | 1998-12-23 | 2000-06-29 | Washington State University Research Foundation | Method and system for a virtual assembly design environment |
US6389375B1 (en) * | 1999-01-22 | 2002-05-14 | Interlego Ag | Virtual reality modelling |
JP2002117107A (ja) * | 1999-09-02 | 2002-04-19 | Ricoh Co Ltd | 生産管理システム、生産管理システムにおけるクライアント、生産管理システムにおける生産管理方法、生産管理システムにおけるデータ検索方法、およびその方法を実行させるためのプログラムを記録したコンピュータが読取可能な記録媒体 |
US6859768B1 (en) * | 2000-03-03 | 2005-02-22 | The Beck Technology | Computer-implemented automated building design and modeling and project cost estimation and scheduling system |
JP2001353631A (ja) * | 2000-06-09 | 2001-12-25 | Ricoh Co Ltd | 組立工程設計支援装置および分解工程設計支援装置 |
US6826500B2 (en) * | 2001-06-29 | 2004-11-30 | General Electric Company | Method and system for automated maintenance and training instruction generation and validation |
ES2277106T3 (es) | 2002-10-11 | 2007-07-01 | Lego A/S | Procedimiento para generar un modelo legible por ordenador. |
US7596473B2 (en) * | 2003-05-20 | 2009-09-29 | Interlego Ag | Method of constructing a virtual construction model |
US7480597B2 (en) * | 2003-05-20 | 2009-01-20 | Lego A/S | Method, system and storage medium for generating virtual brick models |
US20070262984A1 (en) | 2004-06-17 | 2007-11-15 | Lego A/S | Automatic Generation of Building Instructions for Building Block Models |
US7660641B2 (en) * | 2004-07-21 | 2010-02-09 | International Business Machines Corporation | System, graphical user interface (GUI), method and program product for configuring an assembly line |
US7295201B2 (en) * | 2005-09-29 | 2007-11-13 | General Electronic Company | Method and system for generating automated exploded views |
US7680554B2 (en) * | 2006-12-19 | 2010-03-16 | International Business Machines Corporation | Method for associating objects in a manufacturing process |
US7979251B2 (en) * | 2007-03-16 | 2011-07-12 | Lego A/S | Automatic generation of building instructions for building element models |
-
2007
- 2007-03-16 US US11/724,915 patent/US7979251B2/en active Active
-
2008
- 2008-03-14 ES ES08717863T patent/ES2351272T3/es active Active
- 2008-03-14 DE DE602008002331T patent/DE602008002331D1/de active Active
- 2008-03-14 DK DK08717863.8T patent/DK2135222T3/da active
- 2008-03-14 CA CA2680256A patent/CA2680256C/en active Active
- 2008-03-14 KR KR1020097021645A patent/KR101470665B1/ko active IP Right Grant
- 2008-03-14 WO PCT/EP2008/053124 patent/WO2008113768A1/en active Application Filing
- 2008-03-14 JP JP2009553161A patent/JP2010521727A/ja active Pending
- 2008-03-14 AT AT08717863T patent/ATE479167T1/de active
- 2008-03-14 MX MX2009009733A patent/MX2009009733A/es active IP Right Grant
- 2008-03-14 BR BRPI0808986-8 patent/BRPI0808986B1/pt active IP Right Grant
- 2008-03-14 EP EP08717863A patent/EP2135222B1/en active Active
- 2008-03-14 CN CN200880014715.5A patent/CN101675458B/zh active Active
-
2010
- 2010-04-21 HK HK10103885.0A patent/HK1138092A1/zh unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6725184B1 (en) * | 1999-06-30 | 2004-04-20 | Wisconsin Alumni Research Foundation | Assembly and disassembly sequences of components in computerized multicomponent assembly models |
US20030097195A1 (en) * | 2001-11-20 | 2003-05-22 | General Electric Company | Method for computing disassembly sequences from geometric models |
US20040249809A1 (en) * | 2003-01-25 | 2004-12-09 | Purdue Research Foundation | Methods, systems, and data structures for performing searches on three dimensional objects |
Non-Patent Citations (1)
Title |
---|
GARCIA M.A. ET AL.: "Reducing the Complexity of Geometric Selective Disassembly", 《PROCEEDINGS OF THE 2000 IEEE/RSJ INTERNATIONAL CONFERENCE ON INTELLIGENT ROBOTS AND SYSTEMS》 * |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013071573A1 (zh) * | 2011-11-18 | 2013-05-23 | 深圳市华星光电技术有限公司 | 平板显示装置的背框以及背光系统 |
CN104123306A (zh) * | 2013-04-27 | 2014-10-29 | 厦门雅迅网络股份有限公司 | 一种基于历史分析的无人智能驱动的数据文件生成方法 |
US10583354B2 (en) | 2014-06-06 | 2020-03-10 | Lego A/S | Interactive game apparatus and toy construction system |
US10646780B2 (en) | 2014-10-02 | 2020-05-12 | Lego A/S | Game system |
CN106999785A (zh) * | 2014-10-02 | 2017-08-01 | 乐高公司 | 游戏系统 |
CN106999785B (zh) * | 2014-10-02 | 2020-10-23 | 乐高公司 | 游戏系统 |
CN109069929B (zh) * | 2016-05-09 | 2022-07-12 | 乐高公司 | 用于玩具识别的系统和方法 |
CN109069929A (zh) * | 2016-05-09 | 2018-12-21 | 乐高公司 | 用于玩具识别的系统和方法 |
CN109562294A (zh) * | 2016-07-05 | 2019-04-02 | 乐高公司 | 用于创建虚拟对象的方法 |
US11779846B2 (en) | 2016-07-05 | 2023-10-10 | Lego A/S | Method for creating a virtual object |
US11433310B2 (en) | 2016-07-05 | 2022-09-06 | Lego A/S | Method for creating a virtual object |
CN109643500A (zh) * | 2016-08-31 | 2019-04-16 | 索尼公司 | 信息处理装置、信息处理方法和程序 |
US11430195B2 (en) | 2016-08-31 | 2022-08-30 | Sony Corporation | Information processing apparatus, information processing method, and program for improving user-friendliness of an animated tutorial depicting assembling parts for creating a robot |
CN108549624B (zh) * | 2018-04-18 | 2021-08-27 | 宁夏通信规划设计院(有限责任公司) | 通信工程设计预算和说明文本自动化生成系统和方法 |
CN108549624A (zh) * | 2018-04-18 | 2018-09-18 | 宁夏通信规划设计院(有限责任公司) | 通信工程设计预算和说明文本自动化生成系统和方法 |
CN111179422A (zh) * | 2019-12-31 | 2020-05-19 | 深圳市优必选科技股份有限公司 | 一种模型构建方法、装置及终端设备 |
CN111179422B (zh) * | 2019-12-31 | 2023-08-04 | 深圳市优必选科技股份有限公司 | 一种模型构建方法、装置及终端设备 |
CN113742808A (zh) * | 2021-09-08 | 2021-12-03 | 深圳千帜科技有限公司 | 一种拼装积木模型设计方法 |
CN113742808B (zh) * | 2021-09-08 | 2024-03-26 | 深圳千帜科技有限公司 | 一种拼装积木模型设计方法 |
CN114042311A (zh) * | 2021-11-15 | 2022-02-15 | 中国联合网络通信集团有限公司 | 信息处理方法、边缘服务器、电子设备、计算机介质 |
CN114896812A (zh) * | 2022-06-08 | 2022-08-12 | 深圳千帜科技有限公司 | 一种积木打印的自动排版方法、设备、存储介质及系统 |
CN115364494B (zh) * | 2022-07-26 | 2024-02-23 | 福州市鹭羽智能科技有限公司 | 一种基于图样的积木自动堆放装置及方法 |
CN115364494A (zh) * | 2022-07-26 | 2022-11-22 | 福州市鹭羽智能科技有限公司 | 一种基于图样的积木自动堆放装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
US7979251B2 (en) | 2011-07-12 |
CN101675458B (zh) | 2016-02-24 |
JP2010521727A (ja) | 2010-06-24 |
MX2009009733A (es) | 2009-11-09 |
ES2351272T3 (es) | 2011-02-02 |
CA2680256A1 (en) | 2008-09-25 |
EP2135222A1 (en) | 2009-12-23 |
HK1138092A1 (zh) | 2010-08-13 |
KR101470665B1 (ko) | 2014-12-08 |
DK2135222T3 (da) | 2010-12-13 |
BRPI0808986A2 (pt) | 2014-09-09 |
DE602008002331D1 (de) | 2010-10-07 |
CA2680256C (en) | 2016-02-23 |
EP2135222B1 (en) | 2010-08-25 |
KR20090125272A (ko) | 2009-12-04 |
US20080228450A1 (en) | 2008-09-18 |
BRPI0808986B1 (pt) | 2019-12-03 |
ATE479167T1 (de) | 2010-09-15 |
WO2008113768A1 (en) | 2008-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101675458B (zh) | 积木构件模型的组装说明的自动生成 | |
US8374829B2 (en) | Automatic generation of building instructions for building element models | |
Schulz et al. | Interactive robogami: An end-to-end system for design of robots with ground locomotion | |
Aouad et al. | Computer aided design guide for architecture, engineering and construction | |
Wang et al. | Automatic generation and fabrication of designs | |
Wang et al. | State of the art on computational design of assemblies with rigid parts | |
EP0753837A2 (en) | Interference checking method | |
US20190196449A1 (en) | Determining manufacturable models | |
Hofmeyer et al. | Coevolutionary and genetic algorithm based building spatial and structural design | |
JP2020505690A (ja) | オブジェクト表現のための技術 | |
CN114580083A (zh) | 一种基于数字孪生的智能装配系统的构建方法 | |
Zawidzki | Discrete optimization in architecture: Extremely modular systems | |
Hemberg et al. | Genr8: Architects’ experience with an emergent design tool | |
Sasaki et al. | Facetons: face primitives with adaptive bounds for building 3D architectural models in virtual environment | |
Grabska et al. | Knowledge representation for human-computer interaction in a system supporting conceptual design | |
Heinrich et al. | Using interactive evolution to design behaviors for non-deterministic self-organized construction | |
Nutu | Perspectives on advanced and basic engineering technologies | |
Zhu et al. | Cartonist: Automatic Synthesis and Interactive Exploration of Nonstandard Carton Design | |
Corne et al. | Solving design problems by computational exploration | |
Gamache | On topology optimization in the generative design framework: Use on aircraft structure design | |
WO2024095636A1 (ja) | 設計支援システム、設計支援プログラム及び設計支援方法 | |
JP3766857B2 (ja) | 3次元モデルの開発支援システム | |
Hemberg et al. | Exploring generative growth and evolutionary computation for architectural design | |
Zhao | Robot Graph Grammars: Towards Custom Robots for Every Task | |
Ureta | Design for Customized Manufacturing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1138092 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1138092 Country of ref document: HK |