发明内容
以上和其它问题是通过生成从多个可互连的构建单元构建的几何对象的计算机可读的模型的方法解决的,其中每个构建单元具有多个连接单元,用于将该构建单元与另一个构建单元相连接,方法包括:
把多个构建单元的第一和第二构建单元编码为相应的第一和第二数据结构,每个表示相应的构建单元的连接单元,以及每个连接单元具有与它有关的多个预定的连接类型之一;
确定以预定的互相靠近程度定位的第一构建单元的第一连接单元以及第二构建单元的第二连接单元;以及
检索第一和第二连接单元的相应的连接类型的连接信息,表示第一和第二连接单元是否提供第一和第二连接单元之间的连接。
本发明的一个优点在于,它提供模型结构和模型结构的表示,该模型结构的表示适合于表示由模块玩具构建单元组成的对象。
本发明的另一个优点在于,它提供对于各种各样构建单元的连接进行建模的方法。
本发明的再一个优点在于,它提供对于各种各样不同的连接单元,诸如不同的类型的球、孔、管道、铰链、棱、轴等的连接进行建模的方法。通过提供多个具有连接类型的连接单元,提供了与实际连接器的真实的几何形状无关的构建单元的连接质的表示。
具体地,优点在于,提供了与实际连接单元的外观和它们的结构无关的、对于各种各样不同的连接单元的连接进行建模的方法。
因此,包括不同的类型的连接单元的不同的预定的构建单元的大型的组可被建模。
术语构建单元包括任何适当类型的具有用于把它与一个或多个其它构建单元相连接并可被使用来创建实际对象和可以在计算机上被数字地表示的连接单元的构建单元,。构建单元的例子包括构建玩具装置的单元,例如,诸如砖等等的构建块。术语构建单元还包括互连的较小的构建单元-例如两个或多个连接的砖-的组合体。
在一个实施例中,连接类型被编组为多个连接组,例如连接器、接纳器、和混合单元。连接器是可被另一个构建单元的接纳器接纳的连接单元,由此提供在构建单元之间的连接。例如,连接器可以在另一个单元的部件之间适合于孔等等。接纳器是可以接纳另一个构建单元的连接器的连接单元。混合单元是可以起到接纳器和连接器的作用的部件,这典型地取决于另一个构建单元的合作的连接单元的类型。
本发明的再一个优点在于,它提供对于沿可以互相相对旋转的不同的表面或面的连接进行建模的方法。
本发明的再一个优点在于,它提供允许对于包括可移动的部件和/或可旋转的部件的复杂对象进行建模的几何对象的模型的紧凑表示。
本发明的再一个优点在于,它提供几何对象的模型的紧凑表示。
本发明的再一个优点在于,它提供有可能非常快速地生成和解译的模型结构和模型结构的表示。
本发明的再一个优点在于,它提供在当模型被观看、被生成或被操控时的相对较低的带宽要求和低的处理时间的意义下,对经由计算机网络分发有利的模型结构的表示。
在本发明的优选实施例中,方法还包括提供包括成对的连接类型的可连接信息的连接表;以及检索可连接信息的步骤,包括从连接表检索连接信息。
术语连接表打算包括任何适当的数据结构,用于存储成对的连接类型的连接信息。例如,这样的数据结构可以是以成对的连接类型为索引的查找表。
通过提供连接表,有效的和可扩展的数据结构被提供用于存储与连接类型对有关的连接信息。而且,使得快速连接检测成为可能的。
在本发明的另一个优选实施例中,每个各个数据结构还表示相对于相应的构建单元的多个网格,每个网格具有多个网格点;以及构建单元的每个连接单元与一个网格点相关,并具有相应的连接类型。
因此,通过为网格结构,诸如方形网格,三角形网格等等,提供与相关的连接类型有关的网格点,各种连接单元的不同的性质,诸如尺寸、形状、连接质等等可被归结为与每个网格点有关的一个或多个属性。因此,实现构建单元的连接质的有效的表示。
另一个优点是通过把连接单元与网格点相关,有可能特别简单地检测两个连接单元是否以预定互相靠近程度定位。例如,在一个其中构建单元被放置在公共的离散体积参考网格中以及所有的坐标是任意长度单元的倍数的实施例中,对于在预定的邻近区域内、要考虑两个连接单元处于预定靠近程度可能需要精确的坐标匹配。在连续的或准连续的参考坐标系统中,可能要求网格点与预定的边界一致,即,它们被以预定的互相靠近程度放置。靠近程度的尺寸可能取决于要被建模的实际的连接单元的类型,如,为了连接它们实际上如何合作,以及取决于应当被加强的放置构建单元的精度。
优选地,构建单元可以沿着它被连接到另一个构建单元的每个面被划分成网格分段,例如,方块,其中每个网格分段具有在中心的网格点。
优选地,每个连接单元具有相关的方向,表示连接单元可以沿该方向与相应的连接单元啮合。
进一步优选地,位于公共面上和具有共同的方向的所有的连接单元相应于具有在相邻的网格点之间的预定的距离的正交网格的分段。优选地,构建单元组的所有的构建单元中的连接单元按照预定的法则被放置在构建单元上,允许把每个连接单元与相应的网格点相关。
然而,应当指出,在不同的非平行的平面上的连接单元在各个网格点之间不需要具有相同的距离。例如,在水平面上连接单元之间的距离可以是与在垂直面上连接单元之间的距离不同的。
而且,通过把连接单元与预定的网格点相关,可以以有效的方式确定第一构建单元的连接单元是否处在第二构建单元的连接单元的预定的靠近程度之内,因为确定可被限于识别相邻的网格点。
在另一个优选实施例中,方法还包括:
-为每个预定组的成对的连接类型,提供包括最终得到的连接类型的组合表;
-确定互相以预定的几何关系放置的第一和第二连接单元;
-从组合表检索第一和第二连接单元的最终得到的连接类型,以及
-把检索的最终得到的连接类型指定给至少最终得到的连接单元。
因此,优点是连接单元的连接类型是动态的,即,它们可以根据构建单元被放置到的几何环境而改变,由此提供实际构建单元的连接质的更现实的建模。具体地,第一构建单元的第一连接单元和第二构建单元的第二连接单元,当以预定的几何关系互相放置时,可以协同地提供与各个连接单元不同的连接性质。
第一和第二连接单元的协同的效果常常取决于它们的相互的几何关系,即,连接单元互相相对地放置的方式,例如,它们互相放置得如何接近,它们互相放置的相对方向等等。在一个实施例中,这是通过确定第一和第二连接单元是否被以预定的互相靠近程度放置而被建模的;如果它们被以这样的互相靠近程度放置,则把确定的最终得到的连接类型指定给第一和第二连接单元。
在实际结构中,这是通过把最终得到的连接类型至少指定给最终得到的连接单元而表示的。在一个实施例中,最终得到的连接单元是第一和第二连接单元之一。在另一个优选实施例中,最终得到的连接类型被指定给第一和第二连接单元。
进一步优选地,如果相应的构建单元被重新放置以使得连接单元不再以需要的几何关系被放置的话,第一和第二连接单元重新指定它们各自的原先的连接类型。
在替换实施例中,最终得到的连接单元可以是新的连接单元,例如,被规定为使得它具有相对于第一和第二连接单元位置的位置。
可以看到,在某些实施例中,两个以上的连接单元可被组合而产生最终得到的连接类型。
术语组合表打算包括任何适当的数据结构,用于存储成对的连接类型的最终得到的连接类型。例如,这样的数据结构可以是以成对的连接类型为索引的查找表,其中查找表的每个项目包括由一对连接单元的组合造成的最终产生的连接类型,每个连接单元具有相应的连接类型对的各连接类型。
通过提供组合表,有效的和可扩展的数据结构被提供用于存储有关连接单元的连接类型由于它们与其它连接类型的组合而可如何改变的信息。
具体地,在虚拟构建块的情形下,经常发生的情形是其中两个构建块被互相邻近地放置,即,以边缘对边缘的扩展方式放置,以使得在相邻的构建块的边缘上的连接单元改变性质。
在另一个优选实施例中,这种情形在与构建单元有关的每个网格具有至少一个网格边缘时被有效地建模,以及方法还包括:
-提供组合表,其包括对于每对连接类型的最终得到的连接类型;
-检测第一连接单元的第一网格是否被放置在第二连接单元的第二网格的边缘对边缘扩展处,第一网格的第一边缘对准第二网格的第二边缘;
-对于第一网格的第一连接单元,识别第二网格的相应的第二连接单元;
-从组合表检索第一和第二连接单元的组合的最终得到的连接类型;以及
-把检索的最终得到的连接类型指定给第一和第二连接单元。
当构建单元以它们的各个边缘相互靠近甚至互相接触地来一个接一个放置时,在相应的边缘上的连接单元可以根据在或接近于其它的构建单元的相应的边缘上的连接单元的类型来改变它们的性质。
通过提供包括对于每对连接类型的最终得到的连接类型的组合表;和通过把最终得到的连接类型指定给在构建单元的边缘上的连接单元,如果检测到边缘到边缘扩展,则甚至共同合作的构建单元的复杂的连接质也可被建模。
术语边缘到边缘扩展包括两个网格互相之间放置成它们的相应的网格组合成组合的网格。因此,术语边缘到边缘扩展包括两个平行的网格,这两个网格具有各自的平行网格边缘和沿平行的网格边缘的预定的重叠,以使得接近于边缘的网格点一致。
在本发明的另一个优选实施例中,每个各自的数据结构还表示相应的构建单元的边界的体积;以及每个网格相应于边界的体积的表面。
因此,通过提供相应的构建单元的边界的体积,其中网格相应于边界体积的表面,即使构建单元具有复杂的形状,每个构建单元可以由小数目的网格表示。因此,可以实现两个构建单元的共同合作的连接单元的有效的检测,因为连接单元的形状的复杂性被转换成连接类型,它又作为属性同与边界体积的表面有关的网格点相关。
而且,通过采用已知的冲突检测算法,边界体积提供对于检测到相邻的构建单元的有效表示。
边界体积可以是具有互相正交的面的边界方盒,或具有不同形状的边界体积。
在另一个优选实施例中,方法还包括:
编码第一和第二构建单元相对于共同的体积参考网格的各个位置,相应的第一和第二构建单元的第一和第二网格相应于体积参考网格的各自的第一和第二面;第一和第二网格的网格点相应于体积参考网格的各自的参考网格点;以及
检测第一和第二网格是否相应于体积参考网格的公共面,以及第一网格的至少第一网格点是否位于与第二网格的第二网格点相同的参考网格点。
因此,通过提供体积参考网格,例如立方体体积网格,以及规定表面网格为参考体积网格的面,提供特别简单的数据结构,允许特别有效地检测相邻的网格点。
优选地,边界体积被定义为相对于体积参考网格的面。在一个实施例中,它们与体积参考网格的网格面相一致,或替换地,可被规定为在体积参考网格的网格面之间的面。
在本发明的另一个优选实施例中,方法还包括:
-识别第一和第二网格的所有的一致的网格点对;
-对于每个识别的网格点对,从连接表检索连接信息;
-如果至少一对网格点相应于无效的连接,则拒绝在第一和第二构建单元之间的连接;否则,如果至少一对网格点相应于有效的连接,则接受在第一和第二构建单元之间的连接。
因此,提供了用于检测两个相邻的构建单元是否可互连的有效的方法。术语一致的网格点包括具有相同的坐标的网格点。在一个构建单元被放置在离散的参考网格和所有的坐标都是任意长度单位的倍数的实施例中,可能需要坐标的精确的匹配,即,网格点位于公共的参考网格点。在连续或准连续参考坐标系统中,可能要求网格点在预定的边界范围内一致。
当每个连接单元还具有相关的方向时,另一个属性与每个网格点相关,由此提供更高的自由度。
术语连接信息打算包括有关一对连接类型的连接质的信息,例如,对于给定的连接类型对,这些连接类型的两个连接单元是否提供连接,它们是否使得连接不可能等等。在优选实施例中,连接信息包括对于每对连接类型的指示符,表示一组预定的连接类型组,该组包含提供在相应的连接单元对之间的连接的有效的连接、阻止在相应的连接单元对之间的连接的无效的连接、以及不同的连接。
术语不同的连接包括一对连接类型,它们在被放置成处于预定的互相靠近程度时,不共同合作连接两个相应的构建单元,但也不阻止这样的放置。
因此,提供了可能的互连的有效的编码。
在本发明的再一个优选实施例中,确定以预定的互相靠近程度放置第一构建单元的第一连接单元和第二构建单元的第二连接单元的步骤还包括从预定的连接单元子组中确定第一和第二连接单元。因此,只需要搜索连接单元子组,以确定相关的连接单元对,由此提高方法的有效性。
在另一个优选实施例中,每个各数据结构还表示相应的构建单元的边界体积;方法还包括检测第一和第二构建单元的边界体积的交叉;以及从预定的连接单元子组中确定第一和第二连接单元的步骤包括从被包括在所确定的交叉中的连接单元中确定第一和第二连接单元。因此,相关的构建单元的子组被确定为可潜在地提供连接的连接单元,因为它们被包括在边界的方盒的交叉中。
本发明的再一个优点在于,它提供可以容易地扩展以便合并新类型的构建单元和甚至新类型的连接单元的数据结构和算法。例如,两组不同类型的现有的玩具构建单元的连接性质可以组合,以使得不同玩具构建组的构建单元可以互相互连。
本发明的再一个优点在于,即使在生成包括大量构建单元的模型时,它提供不需要大的存储容量的数据结构。
本发明的再一个优点在于,它提供检测两个或多个构建单元是否被连接的有效方法,由此减小计算机对于确定构建单元是否被互连所需要的处理时间。这在交互的计算机程序中是特别重要的,其中用户可以相对于二者互相放置连接单元,因为在这种情形下,需要从放置或去除构建单元直到确定模型的连接性质的短的响应时间。
本发明可以以不同的方式被实施,包括上面描述的和在下面提到的方法、系统和另外的产品装置,它们每个都产生结合一开始提到的方法描述的一个或多个好处和优点,以及每个都具有相应于结合一开始提到的方法描述的和在从属权利要求中公开的优选实施例的一个或多个优选实施例。
本发明还涉及数据处理系统,包括:
-用于生成从多个互连的构建单元构建的几何对象的计算机可读的模型的装置,其中每个构建单元具有多个连接单元,用于连接构建单元与另一个构建单元;
-用于编码多个构建单元的第一和第二构建单元成为相应的第一和第二数据结构的装置,每个数据结构表示相应的构建单元的连接单元,以及每个连接单元具有与它有联系的多个预定的连接类型之一;
-用于确定以预定的互相靠近程度定位的第一构建单元的第一连接单元和第二构建单元的第二连接单元的装置;以及
-用于检索表示第一和第二连接单元是否提供在第一和第二构建单元之间的连接的第一和第二连接单元的相应的连接类型的连接信息的装置。
应当指出,上面描述的和在下面提到的方法的特性可以以软件实施以及在数据处理系统中或在通过执行计算机可执行的指令产生的其它处理装置中被实行。指令可以是从存储媒体或从另一个计算机经由计算机网络被装载在诸如RAM的存储器中的程序代码装置。替换地,描述的特征可以由硬连线电路被实施,而不是由软件或与软件相组合被实施。
本发明还涉及适合于执行上面描述的和在下面提到的方法的数据处理系统。
本发明还涉及计算机程序,包括当所述程序在计算机上运行时,用于执行上面描述的和在下面提到的方法的所有的步骤的程序代码装置。
本发明还涉及计算机程序产品,包括当所述程序产品在计算机上运行时,用于执行上面描述的和在下面提到的方法的、被存储在计算机可读的媒体上的程序代码装置。
下面结合优选实施例和参照附图更加充分地说明本发明,其中:
具体实施方式
图1a-e显示按照本发明的实施例的构建单元的表示的立体图。
图1a显示构建单元101的表示。构建单元101是在它的一个面103上具有可被连接到另一个构建块的相应的孔的两个旋钮102的实际构建块的数字表示。构建块还包括从构建块的面105穿透构建块一直到相对的面的孔104。该孔适合于接纳其它构建块的相应的连接器。
构建块101的数字表示包括由图1a的粗实线表示的边界的体积106。边界体积106是构建块101包括旋钮102在内的边界体积。构建块的数字表示另外是相对于内部右手坐标系统107描述的。可以看到,坐标系统的选择,特别是它的原点的位置和轴的方向可以按照任何适当的惯例被选择。因此,在相应的数据结构中,构建块的位置和方向可以由坐标系统107相对于外部坐标系统的原点的坐标和轴的方向表示,例如,另一个构建块的坐标系统或全”世界”坐标系统。
边界体积可以在相对于坐标系统107的数据结构中被表示,例如,通过相对于坐标系统107的两个角的110的坐标被表示。
图1b显示具有边界体积108的构建块101的表示,它包括不带有旋钮102的构建块。在一个实施例中,在不同的构建块之间的冲突的检测依赖于边界体积的类型,即,图1a所示的边界体积106与图1b所示的边界体积108。
按照本发明,构建块可以沿着它被连接到另一个构建块的每个面被划分成方形,连接点在每个方形的中心处,即,方形的边缘相应于在相邻的连接点之间的一半距离。
图1c显示构建块101,以及显示在构建块的一个面上的连接单元的表示。该表示表示在包括两个旋钮102的构建块的面103上的方形网格。方形网格包括多个方形,每个以网格点作为中心,正如方形130和网格点111示例地表示的。每个网格点具有相关的方向,例如由网格点111的箭头112的箭头所示。网格109的网格点的方向指向外面,即,坐标系统107的y轴的方向。因此,在数据结构中,网格109的表示可包括预定的网格点--例如网格点113--相对于坐标系统107的坐标;网格点的方向,即,箭头114相对于坐标系统的方向;网格尺寸,即,分别在x和y方向上方形的数目;以及与每个网格点有关的属性。这样的表示的例子将在后面更详细地描述。
图1d显示构建块101的、与面103(图1d上未示出)相对的面116的连接点120。构建块的这个面包括由边缘118和小的中心旋钮119,即所谓的辅助管脚,规定的两个孔117。实际构建块的孔被安排成能够容纳另一个构建块的旋钮,诸如旋钮102,由此共同连接两个构建块。按照本发明,孔是由网格120的相应的网格点表示,如由箭头121表示。
应当指出,按照本实施例,坐标系统的原点相应于网格点122。
图1e显示包括孔的构建块101的面105的连接网格123。相应地,网格点124表示孔104的连接性质。
可以看到,当在显示器上,例如在计算机屏幕上,图形地表示构建块时,边界体积、坐标系统和网格不需要被显示。优选地,图形表示只包括构建块本身的呈现。
图2a-c显示构建单元和它们的连接单元的例子。
图2a显示两个构建块201和202。构建块201是在它的顶面上具有四个旋钮203和在它的底面(未示)上具有四个相应的孔的砖。砖202是具有包括不互相正交的面的表面的构建块的例子。具体地,构建块202具有倾斜的面204。如图2a所示,在它们的当前的位置上,构建块201和202不连接。
图2b显示具有非矩形的顶面和底面的构建块210。底面包括孔211,212,和213,用于接纳一个或多个其它构建块的相应的旋钮。这些孔由边缘214、辅助管脚215、以及顶角216和217规定。因此,所有的以上的单元的性质确定构建块的这个面的连接性质。
图2c显示与构建块221相连接,由此形成组合的构建块的构建块220。构建块220包括在它的顶面上的旋钮222,它们是装配于另一个构建块的相应的孔的连接器。然而,如图2c所示,其它连接类型也可以实现:在旋钮之间的间隙223用作为用于其它连接器的接纳器,诸如方块221的侧面224。对于实际的构建块,这个性质由间隙的尺寸和构建块221的尺寸,即,由它的侧面的宽度225决定。在按照本发明的数字表示中,这些性质由连接点的相应的属性表示,正如下面更详细地说明的。
图2d显示构建块与包括多个砖的另一个构建块的无效的连接。构建块231包括砖232,233,234,235,236和237。每个构建块包括如上所述的、旋钮连接器和反旋钮接纳器。构建块232,233和236包括在顶面上以及在侧面上的旋钮连接器;具体地,构建块232包括在侧面上的旋钮238,而构建块233包括在侧面上的旋钮239,以及而构建块236包括在侧面上的旋钮240。
在图2d的例子中,由于构建块的尺寸,它们的旋钮和从而它们的相应的连接点不形成常规的网格。因此,如果构建块试图被放置在由其连接点由交叉242,243和244表示的点线241表示的位置,有效的连接是不可能的。下面将描述按照本发明的方法如何检测这种情形。
图3显示构建块和它的相应的连接网格的立体图。构建块301具有带有8个旋钮303a-h的顶面302、带有相应的孔的底面和侧面304。在图3上,分别显示顶面和底面的连接网格305和306。连接点307由圆圈显示,如由圆圈307a-k示例地表示的。因此,连接点307a-h分别相应于旋钮303a-h。因为侧面304没有任何连接单元,对于它们不需要规定连接网格。在替换实施例中,对于侧面可以规定只包括空白的接纳器的连接网格。
正如可以从图3看到的,由被放置在常规的网格中的连接点表示构建块的连接单元,对于连接单元在实际的构建块上的实际放置施加一定的限制条件。
网格305位于其上伸出旋钮303的、构建块的顶面上。
在图3的例子中,网格点被放置在方形网格中,其中每个方形具有任意长度单位(LU)的5 x 5单位的尺寸。因此,在这种几何图形中,连接单元也被放置在相应的方形网格,以及在构建块的面上的连接单元之间的距离是10LU的倍数。在图3的例子中,构建块的上表面和下表面是矩形,以及具有20LU x 40LU的尺寸,相邻的连接单元互相间隔开10LU。
另一方面,在垂直方向上,连接单元互相间隔开12LU。因此,不同的尺寸的网格尺寸可以变化,由此潜在地造成以上如图2d所示的情形。
连接点的位置相对于构建块的内部坐标系统308被规定。
图4显示图3的构建块的顶视图。连接网格305被显示为包括网格点。在图3的例子中网格点的方向指向图面的外面。
在一个实施例中,表示连接点的网格的数据结构,对于连接点,包括:连接点相对于坐标系统308的坐标、连接单元的方向、以及连接类型。
当设计新的构建块时,需要生成构建块的数字表示。图4的例子中的砖具有在顶面上的45个连接点和在底面上的45个连接点。对于每个连接点规定以上的数值是费时和易出错的任务。
然而,对于许多类型的构建块,连接点位于矩形结构,由此允许和有利的自动化数据生成。在图4的例子中,连接点的坐标可以迭代地确定,以及连接单元的方向对于网格的所有的连接点相同的。
因此,在优选实施例中,表示连接点的网格的数据结构包括:
-网格点401相对于坐标系统308的坐标。因此,在图4的例子中,网格点401的以LU计的坐标是P0=(-5,12,-15)。
-连接单元的方向,即,在图4的例子中的(0,1,0)的方向,即,坐标系统308的y轴的方向。
-在x和z方向上网格点的数目,即,在图4的例子中,分别为nx=9和nz=5。
-5x9阵列的数据结构,每个包括相应的连接点的连接质。这样的阵列的例子将在下面描述。
在图4的例子中,每个连接点可以表示为P0+(5i,0.5j),对于i=0,...,4;j=0,...,8(以LU计)。
连接点的性质然后可被表示为以i和j为索引的二维阵列C,其中C[0,0]相应于连接点401以及C[I,j]相应于具有坐标P0+(5i,0.5j)的连接点。
在另一个实施例中,可以规定在连接网格的面上的二维坐标系统。在图4上,这是用坐标系统402表示的。二维坐标系统然后可以由它的原点401坐标和相对于构建块的内部坐标系统的旋转矩阵表示。
图5a-b显示按照本发明的表示连接点的数据结构的例子。
图5a显示表示图4的构建块的顶面网格的连接点的数据结构。数据结构相应于如上所述的二维阵列C[i,j]。每个阵列单元相应于连接类型。例如,旋钮(例如图4的旋钮303)被表示为C[I,j]=K,在两个旋钮之间的间隙(例如图4的间隙404)被称为”双边缘间隙”以及被表示为C[I,j]=2EG,在四个旋钮的中心处的间隙(例如图4的间隙405)被称为”管道间隙”以及被表示为C[I,j]=TG。旋钮是可以由另一个构建块的接纳器接纳的,例如由如图2b所示的孔212接纳的连接器。边缘的接纳器,该边缘如图2c所示成图2b所示的边缘211所示。边缘间隙是可以接纳其它边缘的接纳器,该边缘如图2c所示或图2b所示的边缘211所示。管道间隙是可接纳例如适当的尺寸的旋钮或管道的其它连接器的接纳器。
在构建块的边界上,发生其它连接类型。顶角(例如图4的顶角401)被表示为C[I,j]=1/4TG,因为它们相应于只具有四个相邻者中的一个的管道间隙。类似地,C[I,j]=1/2TG表示具有围绕它的四个旋钮中的两个旋钮的管道间隙,例如图4的连接点406。最后,C[I,j]=EG相应于只具有一个相邻的旋钮的边缘间隙,例如图4的连接点407。
可以看到,如图4所示的、但具有不同的数目的旋钮的构建块相应于类似于图5a所示的连接阵列。因此,表示这种类型的构建块的数据结构可以通过规定构建块的尺寸而自动生成。
可以看到,通常,对于具有规则几何形状的构建单元,可以规定多个不同的类型的连接阵列,例如,如图3的构建块的规则构建块的顶面、侧面和底面的阵列类型。这些阵列类型的例子然后可以对于类似的构建单元的各种各样不同的类型和尺寸被自动生成。因此,优点是表示大量构建块的数据结构以有效的方式被生成。
图5b显示相应于图2b所示的构建块的底面的连接阵列。这里,C[I,j]=EC相应于边缘顶角,例如图2b上的顶角相应于C[0,0]=EC。而且,C[I,j]=E相应于”边缘”,诸如图2b上的边缘214。C[I,j]=3/4EC相应于顶角,诸如图2b上的顶角216所示的。C[I,j]=AK相应于”反旋钮”,即,用于接纳旋钮的孔,而C[I,j]=SP相应于”辅助管脚”215。
可以看到,即使在图5a-b上的连接类型是由指示连接单元的实际的物理功能的记忆法表示,连接类型可以由任何其它适当的方法,例如通过枚举连接类型、比特编码法等被编码。
通常,连接类型可包括连接类别和参数。例如,连接类别管道间隙αTG,α=1/4,1/2,3/4,1。
不同的连接类型的连接质在相应的连接表中被规定。连接表表示对于每对连接类型的连接性质。优选地,连接表作为查找表被存储在适当的数据结构。这样的连接表的实施例被显示于表1。
| K | SP | E | αEC | VC | αAK | αTG | αEG | VR | Tu |
K | F | | | | | | | | | |
SP | F | V | | | | | | | | |
E | F | V | V | | | | | | | |
αEC | F | V | V | V | | | | | | |
VC | F | V | V | V | V | | | | | |
αAK | T | V | V | V | V | V | | | | |
αTG | F | V | V | V | V | V | V | | | |
αEG | F | V | V,如果α=2T,如果α=1 | F | V | V | V | V | | |
VR | V | V | V | V | V | V | V | V | V | |
Tu | T | V | V | V | V | V | T | F | V | V |
表1.
因此,表1中每个域表示相应的两个连接类型的连接。
表1的缩略的连接类型是:
K:旋钮,例如在图1a-e上的旋钮102,即,圆形单元。
SP:辅助管脚,例如在图2b上的辅助管脚215,即,小旋钮。
E:边缘,例如在图2b上的边缘214,即,单元的外边缘。
αEC:具有参数α的边缘顶角。3/4EC相应于如图2b的顶角216表示的顶角。
VC:未占用的连接器,即,既不排斥大多数其它单元也不与另一个单元连接的构建块的部分,例如,光滑面。未占用的连接器排斥旋钮,但不与任何其它接纳器或连接器交互。
αAK:具有参数α的反旋钮,例如,图2b上的反旋钮215,即,旋钮装配进的不规则形孔。
αTG:具有参数α的管道间隙。例如,图4显示具有α=1的管道间隙405,即,在四个相邻的旋钮之间的其中可装配进管道的区域。
αEG:具有参数α的边缘间隙,例如,具有参数α=2的双边缘间隙和具有参数α=1的边缘间隙407,即,在两个相邻的旋钮之间的、或在旋钮与边缘之间的间隙。
VR:未占用的接纳器,即,既不排斥也不连接到任何其它单元的构建块的部分。
Tu:管道,可以是用于旋钮的接纳器和可以是可被夹在四个相邻的旋钮之间,即,被夹入管道间隙的连接器的圆管道。
在表1上,以上连接类型的连接被表示为如下:
-T:真实,即,连接是有效的,以及相应的连接单元进行连接两个构建块。
-F:错误,即,在这种位置,连接是不允许的。
-V:未占用的或无关紧要的,即,没有东西阻止连接,但实际上也没有连接到任何东西。
例如,按照表1,双边缘间隙(具有α=2的αEG)产生具有边缘(E)的未占用的连接,而边缘间隙,即,具有α=1的αEG实际上与边缘(E)连接,即,在这种情形下的连接是真实(T)。
应当指出,表1的连接表是沿对角线对称的。
还应当指出,通过对具有新的连接类型与各个现有的连接类型的相应的连接的相应的行和列相加,以上的表可以容易地扩展成包括新的连接类型。
图6显示在边缘到边缘扩展中的两个构建单元的顶视图。在图6的例子中,两个构建块601和602被放置在边缘到边缘扩展中,即,它们的顶面被放置在同一个平面,以及它们的各个连接点的子组一致,如虚线603表示的。在图6的例子中,假设每个构建块601和602是如图3和4所示的类型。
通过把两个构建块放置在边缘到边缘扩展中,在区域603中重叠的连接点的有效的连接类型被改变。例如,连接点605相应于构建块601的类型1/4TG和构建块602的类型1/2TG的连接点。然而,当被放置在图6的边缘到边缘扩展时,组合的连接点605是3/4TG类型。类似地,连接点606是每个构建块601和602的类型EG,而它是组合的构建块中的类型2EG。最后,连接点607是每个构建块601和602的类型1/2TG,而它是组合的构建块中的类型TG。
因此,通常,连接单元的连接性质可以取决于相应的构建单元相对于其它构建单元的放置而改变。
按照本发明,这种情形可以通过规定描述重叠的连接点的组合的或最终得到的连接类型的连接表而被建模。表2是表示以上引入的连接类型的组合的这样的组合表的例子。优选地,组合表作为查找表被存储在适当的数据结构。
| K | SP | E | αEC | VC | aAK | αTG | αEG | VR | Tu |
K | F | | | | | | | | | |
SP | F | F | | | | | | | | |
E | F | F | 2E | | | | | | | |
βEC | F | F | (β+2)EC | (α+β)EC | | | | | | |
VC | F | F | VC | VC | VC | | | | | |
βAK | T | F | F | F | F | (α+β)AK | | | | |
βTG | F | F | F | F | (β+1)TG | F | (α+β)TG | | | |
βEG | F | F | F | F | (β+1)EG | (β+1)EG | (β+1)EG | (α+β)EG | | |
VR | S | SP | E | αEC | VC | αAK | αTG | αEG | VR | |
Tu | T | F | F | F | F | F | F | F | F | F |
表2.
在表2上,每个域包括组合的连接类型。如果两个连接类型的组合不产生连接到任何其它连接类型的连接类型,则表的项目是F。
例如,当边缘间隙(βEG)被放置在未占用的连接器(VC)的下一个,例如空的表面时,最终得到的连接单元可被看作为更宽的间隙。在表2中,这用(β+1)EG近似。
还可以看到,以上的组合表也可以被使用来在两个以上的连接单元,例如三个或四个构建块的顶角,要被组合的情形下,确定最终得到的连接类型。在这种情形下,可以通过首先确定对于两个组合的连接单元的第一最终得到的连接类型,随后确定对于第一最终得到的连接类型与第三连接单元的连接类型的组合的第二最终得到的连接类型,而确定对于例如三连接单元的最终得到的连接类型。
还应当指出,通过将相应的行和列与由将新的连接类型与各个现有的连接类型相组合而得到的相应的最终得到的连接类型相加,以上的表可以容易地扩展成包括新的连接类型。
因此,在上面,公开了用于构建块的连接性质的有效的和可扩展的表示的数据结构以及用于有关如何组合连接类型的法则的有效的和可扩展的表示的数据结构。
图7显示包括两个连接的组的构建块的几何对象的立体图。几何对象包括五个单元701,702,703,704,和705。在图7的例子中,几何对象包括两组构建块:第一组构建块包括构建块701,702,和703,而第二组构建块包括构建块704和705。在本例中的构建块701和704例如通过单个旋钮--上述的反旋钮连接旋转连接,或通过不阻止构建块彼此相对旋转的任何其它连接方式,例如铰链连接、在公共线上的两个或多个旋钮-反旋钮连接等等,而被旋转连接。因此,图7的几何对象是不必局限于在几何对象内给定的位置和方向限制条件的构建块的例子。这样的连接的其它例子包括在允许连接的构建块的相对转换的构建块之间的连接。因此,这样的组的构建块可能需要用分开的坐标系统进行描述,正如由网格系统706和707显示的。
图8显示作为生成几何对象的计算机可读的模型的计算机实施过程的一部分放置构建单元的方法的流程图。
在初始步骤801,把构建单元放置在预定的初始位置。构建单元由如上所述的数据结构表示,以及构建单元的位置和方向由描述构建单元的内部坐标系统相对于适当的坐标系统--例如三维右手”世界”或参考坐标系统--的位置和方向的适当的坐标来描述。
因此,对于给定的情境,例如场景、几何对象等等,过程生成和保持一组数据结构,每个表示被放置在该情境内的构建块。把新的构建单元放置在该上下文内,相应于生成相应的数据结构的新的例子作为该组数据结构的一部分。
构建单元的放置,例如可以在构建几何对象的数字模型的交互过程期间由用户命令来引起。例如,计算机可以提供用户接口,允许用户选择不同的构建单元,例如,不同的类型、形状、尺寸、颜色等等的构建单元,以及以预定的位置和方向在计算机的显示器上呈现的三维图形场景中放置选择的构建单元。例如,用户接口可以提供用于放置构建单元的推拉操作和用于操控,例如旋转构建单元的操作。
在一个实施例中,构建单元的放置可能被限制于例如在预定的网格上离散的位置,例如,在其中所有的距离被测量为任意长度单位(LU)的倍数的系统中,参考网格的网格点可能间隔开1LU。
在步骤802,计算机实施的过程检测在步骤801放置的构建单元在何处与已存在于场景中的任何其它构建单元--例如先前由用户放置的构建单元--相交叉。这种冲突检测可以通过适当的冲突检测方法被执行,优选地,通过基于构建单元的边界体积的冲突检测方法被执行。这样的算法的例子例如在David H.Eberly:“3D Game EngineDesign(3D游戏机设计)”,Morgan Kaujmann,2001中被公开。
冲突检测可导致其中放置构建单元的位置被另一个构建单元占用。这种情形可以通过检测大于预定的边界的边界体积的交叉而被检测。如果检测到无效的交叉,则在这个位置和方向上构建单元的放置可能被拒绝。
如果没有检测到无效的交叉,则在步骤803,过程测试新放置的构建单元是否与另一个构建单元有效交叉。例如,有效的交叉可被检测为各个边界体积的小于预定的边界的交叉。
在图1的实施例中,构建单元的表示包括两个边界体积,一个边界体积包括连接单元(图1a),以及一个边界体积包括构建单元的本体但不包括连接单元(图1b)。冲突检测步骤可以使用这两个边界体积来检测无效的冲突,如果没有各构建单元的连接单元的边界体积重叠的话。如果包括连接单元的边界体积重叠,但没有连接单元的边界体积不重叠,或如果任何边界体积的任何表面交叉,但边界体积不重叠,则检测到有效的重叠。
进一步,检测边界体积是否被定向成使得它们的边界体积的轴相应于同一个参考坐标系统。
如果没有检测到有效的冲突,则过程可以按照任何适当的策略进行。在某些实施例中,把新的构建单元放置成未占用,而不连接到任何以前的构建单元,可以是可接受的;在某些实施例中,这只在场景中不存在其它构建单元的情形下才可以接受。
在另外一些实施例中,这可能被拒绝。例如,在一个实施例中,任何不具有用户放置的构建单元的初始场景可包括缺省构建单元,例如,具有连接单元支撑板,用于把构建单元放置在底板的顶面。
如果在步骤803检测到在新的放置构建单元与一个或多个其它构建单元之间的有效冲突,过程在步骤804继续进行以及检验新放置的构建单元是否有效地被连接到与它有效地交叉的构建单元。这个可连接检测子过程的优选实施例将在下面更详细地描述。如果构建单元有效地连接到与它交叉的构建单元,则连接检测导致接受构建单元的放置,或如果构建单元没有有效地连接到任何一个与它交叉的构建单元,则导致拒绝。
一旦构建单元的放置被接受或拒绝,过程就可通过用户的行动,例如通过把被拒绝的构建单元重新放置在另一个位置和/或方向,通过把另一个构建单元放置在场景等等,而被再次初始化。
图9显示按照本发明的实施例的连接第一数字构建单元到另一个第二数字构建单元的子过程804的流程图。例如,第一构建单元可以是新放置的砖,以及第二构建单元可以是以前构建的砖结构,其中检测算法检测在新放置的砖与第二构建单元之间的交叉。
下面,假设在构建单元的初始位置处,构建单元被定向成使得它们的边界体积的主轴相应于右手正交世界坐标系统的x、y、和z轴。
在本实施例中,还假设对于连接单元在构建单元上的放置施加多个预定的法则,虽然连接单元本身在性质和形状上是不同的。
连接单元的放置的假设是:
对于每个构建单元,在同一个水平面上所有的连接单元的轴相应于在相邻的分段之间具有固定的距离的正交网格的分段。
在水平面和垂直面上连接单元的轴之间的距离不需要是相同的。
在初始步骤902,第一构建单元和第二构建单元的所有的连接点属于检测的交叉。只有还没有被连接的那些连接点需要考虑;这些连接点将被称为相关的连接点。
在步骤903,选择第一构建单元的第一相关连接点。这可以是任意选择的连接点、由用户选择的连接点等等。
在步骤904,对于第一构建单元的选择的连接点,过程检验是否有与选择的连接点相同的坐标的第二构建单元的任何相关的连接点。在一个其中构建单元被放置在分离的体积参考网格以及所有的坐标都是任意长度单位的倍数的实施例中,可能需要精确的坐标匹配。在连续、或准连续参考坐标系统中,可能要求网格点在预定的边界内相一致。
如果没有找到这样的连接点,过程在步骤914继续进行。
在步骤914,检测在选择的连接点的预定的靠近程度内是否有任何其它相关的连接点。在图9的实施例中,预定的靠近程度相应于围绕选择的连接点(x,y,z)的立方体(x±5LU,y±5LU,z±5LU),因为在本实施例中,在两个相邻的连接单元之间的距离是10LU。如果在选择的连接点的预定的靠近程度内有其它相关的连接点,则两个构建单元的连接被拒绝(步骤911)以及算法结束。因此,由于本实施例中的连接点被放置在规则的网格,构建单元的无效的放置可被有效地检测:如果对于第一构建单元的一个相关的连接点,发现与第二构建单元的相关的连接点不匹配,则不需要检验第一构建单元的其余的连接单元,由此提高检测过程的速度。以上测试保证如图2d所示的连接被拒绝,因为相应于旋钮239的连接点相对于规则网格被误放置。应当指出,在图2的例子中,连接点243不引起冲突,因为由于高度上轻微的不同,它不属于边界体积的交叉,即,砖241与236之间没有接触。
如果在步骤914没有发现冲突的相关的连接点,则过程在步骤909继续进行。
如果在步骤904发现匹配的连接点,则过程在步骤905继续进行,在其中检测在选择的连接点的预定的靠近程度内,--在本实施例中,如上所述,在围绕选择的连接点(x,y,z)的立方体(x±5LU,y±5LU,z±5LU)中--是否有任何其它相关的连接点。如果在预定的靠近程度中找到另一个连接点,则该位置被拒绝(步骤911)。否则,过程在步骤906继续进行。
在替换实施例中,以上的限制是不希望的。而且,在又一个实施例中,以上的限制可能限于某些连接类型,例如,在以上的例子中,不同于”未占用”的所有的连接类型。
在步骤906,过程检测选择的连接点和检测的匹配连接点是否具有相反的方向,即,是否它们相关的方向是沿公共线、但取不同的方向。因此,只有被以适合于它们接合的相对方向放置的连接单元才被接受。
应当指出,在替换实施例中,例如通过在其中连接单元接受一定范围的方向的实施例中,接受一定范围的方向,这个限制可以放松。
如果连接点的相对方向被接受,则过程在步骤907继续进行,否则该位置被拒绝(步骤911)。
在步骤907,通过从存储的连接表913,例如按照以上的表1的连接表检索相应的连接类型对的连接法则,而比较选择的连接点与相应的检测的匹配连接点的连接类型。在本实施例中,该连接可能为真、假、或未占用,如结合表1所述的。
在以后的步骤908,测试连接结果是否为“假”,即,在相应的连接类型之间的有效的连接是否不可能的。如果连接结果是“假”的,则第一构建单元的位置被拒绝(步骤911)。否则,连接结果被存储以及过程在步骤909继续进行。
在步骤909,测试第一构建单元的所有的相关连接点是否被处理。如果没有被处理,则选择还没有被处理的相关的连接点(步骤912)以及通过对于新选择的连接点执行以上步骤904,905,906,907和908而处理该连接点。
如果第一构建单元的所有的相关的连接点都已被处理以及位置未被拒绝,则该位置被接受以及过程在步骤910继续进行。在步骤910,根据存储的连接结果,确定构建单元如何连接,以及它们的各自的数据结构如何随之被更新。这将结合图10更详细地描述。一旦数据结构被更新,子过程就终结和返回到图8的总的过程。
图10显示更新表示连接的构建单元的数据结构的子过程910的实施例的流程图。这个更新基于对于第一和第二构建单元的边界体积的交叉的相关的连接点所确定的连接结果。
初始地,在步骤1001,检验所有的连接结果是否都是”未占用”。如果是的话,即,如果没有东西阻止构建单元的位置,但实际上也没有连接单元进行连接构建单元,则新的构建单元在它的现在的位置被允许。
取决于应用,第一和第二构建单元的数据结构可被更新。优选地,由于构建单元实际上没有被连接,第一构建单元不应当与第二连接类型相组合成具有组合的边界体积等等的组合的构建单元。
在一个实施例中,附加算法可以根据边界体积,判决被放置在这个位置的实际的构建块是否下落、倾斜等等以及相应地允许还是拒绝该位置。
否则,即,如果一个或多个连接结果为真,过程在步骤1002继续进行,在该步骤,过程确定构建单元如何被连接,即,它们是否刚性地被连接或连接是否允许相对旋转、转换等等。
在图1a-e的实施例中,如果正好一个连接结果为真以及所有其它的未占用,则取决于连接类型旋转和/或转换是可能的。而且,如果一个以上的连接结果为真以及相应的连接点都处在公共线上,则旋转和/或转换是可能的。
如果检测到非刚性的连接,则过程在步骤1005继续进行,在该步骤,第一和第二构建单元被分配给各个组,每个组具有它们的各自的参考坐标系统、边界体积等等,由此允许对于构建单元组的不同的相对位置和/或方向建模。这样的情形的例子是以上结合图7说明的。
因此,构建单元的连接的结构可以通过包括多个组的构建单元的数据结构被描述。一个组是其中所有的构建单元被刚性地连接,以使得所有的构建单元的所有的连接点是同一个正交网格的网格点的结构。每个组的构建单元包括一个或多个构建单元,在其中该组确定公共正交坐标系统(网格)、边界体积、和该组的构建单元的连接网格。
如果在步骤1002检测到刚性连接,则过程在步骤1003继续进行。正如以上结合图6描述的,第一和第二构建单元的一个或多个连接点由于连接可以改变它们的连接类型。因此,在步骤1003,检测第一和第二构建单元的,具有相同位置和相同方向的那些连接点。对于那些组合的连接点,在存储的组合表1006中查找最终得到的连接类型,如以上结合表2所描述的。
最后,在步骤1004,第二构建单元的数据结构用来自第一构建单元的信息被更新,即,第二构建单元的边界体积被更新为第一和第二构建单元的边界体积的联合,连接网格被更新为也包括第一构建单元的连接点等等。
通过重复图8、9、和10的过程,多个构建单元可被组合而形成几何对象的数字模型。因此,以上公开了用于生成几何对象的数字模型的方法。
可以看到,本领域技术人员可以在本发明的范围内实施以上方法的变例。例如,以上步骤的某些步骤的次序可被改变,步骤可被组合等等。
而且,由于不正确的放置,例如因为没有找到在同一个位置处的连接点或因为连接点没有正好相反的方向,而产生新的连接单元的位置的拒绝可导致进一步处理,而不是简单的拒绝。在一个实施例中,假设的相邻的位置或小的移位可被分析,以决定是否可以达到可接受的位置。这可导致构建单元在预定的边界内快速进到提供可接受的位置的、最接近的位置。
而且,可以施加附加限制或可以释放其它限制,以便以或多或少的自由度和进而或多或少的复杂性来提供建模系统。
当构建单元例如响应于相应的用户命令从结构中被去除时,它的数据结构从组合的数据结构中被去除。在一个实施例中,这可以通过重新计算其余的构建单元的组合的数据结构而被实施。
图11显示按照本发明的实施例的用于生成几何对象的计算机可读的模型的数据处理系统。
表示为1101的计算机系统适合于实现设计、存储、操控、和共享按照本发明的几何结构。计算机系统1101可被用作为独立的系统或作为客户机/服务器系统中的客户机。计算机包括:存储器1102,部分被实施为易失性和非易失性存储器装置,例如硬盘和随机存取存储器(RAM)。存储器包括模型代码解译器1107、模型代码生成器1108、UI-事件处理器1109、和由中央处理单元1103可执行的建模应用1110。另外,存储器包括模型数据1111。
模型代码解译器1107适合于读出和解译规定按照本发明的模型的代码,即,表示模型的构建单元的数据结构的代码。在优选实施例中,代码解译器适合于读出按照本发明的模型和把这样的模型变换成用于在计算机显示器上呈现的已知的图形格式。根据以上描述的用于表示对象的模型的数据结构,这个变换可以由本领域技术人员通过应用在图形计算领域内公知的图形原理被实施。
UI-事件处理器1109适合于把用户与用户接口的交互变换成可由模型代码生成器1108识别的适当的用户命令。可能的和可识别的命令组可包括:例如通过开始旋转等等,从单元库中得到构建单元、把要被连接的构建单元放置在另一个构建单元、断开构建单元、丢弃构建单元、操控一个构建单元、一组构建单元等等。每个命令可以与一组各个参数,例如构建单元的坐标、类型等等相关。
代码生成器1108适合于按照上述的本发明和响应于用户的命令修正描述实际的模型的数据结构。作为同时或以后的任务,代码解译器可被执行,用来显示代码生成器的结果。
建模应用1110适合于控制存储器、文件、用户接口等等。
用户1105能够借助于用户接口1106与计算机系统1101交互。
为了装载模型、几何描述、或其它数据,计算机系统包括输入/输出单元(I/O)1104。输入/输出单元可被用作为到不同类型的存储媒体和不同类型的计算机网络-例如互连网-的接口。而且,输入/输出单元(I/O)1104可被使用于例如交互地与其它用户交换模型。
在存储器1102、中央处理单元(CPU)1103、用户接口(UI)1106、与输入/输出单元1104之间的数据交换是通过数据总线1112完成的。
图12a显示按照本发明的第一实施例的、具有倾斜面和相应的边界体积的构建块-例如图2a的构建块202-的侧视图。构建块包括倾斜面204和在构建块的顶面上的旋钮1201。按照本例,构建块202的表示包括边界体积的分层结构。第一边界体积1202包括倾斜面,而第二边界体积1203是具有互相正交的面的方盒。按照本例,只要边界体积1203具有与另一个构建块的相应的边界体积的交叉,两个构建块就被检测为接触的。边界体积1202可被使用于可能连接的构建块的初始的有效检测。可以看到,构建块202的表示可包括附加边界体积,诸如包括如结合图1a-b描述的连接单元的边界体积。
图12b显示按照本发明的第二实施例的具有倾斜面和相应的边界体积的构建块202的侧视图。与以上例子一样,
构建块202的表示包括边界体积分层结构。然而,按照本例,该表示包括具有像阶跃函数那样形状的边界体积1204,而不是具有倾斜面的边界体积,由此提供倾斜面的近似。
以上方法和系统可以被应用于设计物理模型的计算机应用,例如仿真相应的实际的连接单元组的连接行为的计算机应用。例如,实际的玩具构建组可通过所述构建组的数字版本补充,由此允许用户,例如儿童,来数字地设计模型,而不用限制可用的构建单元的数目等等,由此提供有趣的播放经验。本发明的优点在于,它提供允许对实际的构建组的甚至更加复杂的连接性质逼真地建模的方法和系统以及同时提供有效的建模过程。因此,用户经受交互的数字构建过程,而不必等待计算机确定建议的构建单元的位置是否相应于构建组的连接法则。
本方法还可被应用来分析设计的模型的特性、生成构建指令等等。一般地,本方法可应用于计算机游戏工业和其中预定的3D单元必须按照多个连接法则被放置在一起的计算机图形学的所有其它领域。