專利名稱:積木構(gòu)件模型的組裝說明的自動生成的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及積木構(gòu)件模型的組裝說明的生成。
發(fā)明內(nèi)容
有各種已知的機(jī)械結(jié)構(gòu)玩具集的模型化概念類型。具體來說,模 塊化或半模塊化概念非常普遍,因為它們提供有趣的并具有挑戰(zhàn)性的 玩的體驗。通常,這些概念提供一組預(yù)先制造的積木構(gòu)件,可以通過 預(yù)先制造的構(gòu)件的連接元件,以某種預(yù)定的方式彼此互連起來。預(yù)先 制造的積木構(gòu)件類似于適用于完成特定的模型化任務(wù)的已知的對象。 如此,例如,在建造房屋的模型時,積木構(gòu)件可以類似于墻磚、屋瓦、 門,以及窗戶。如此,選擇積木構(gòu)件的目的是,與每次要制作新模型 時都對房屋的所有細(xì)節(jié)進(jìn)行定義的情況相比,建造房屋的模型涉及的 工作量顯著縮小。然而,在建造房屋或另一個對象的完全的自由度與 建造模型的簡單性之間是相互對立的。
例如,名為LEGO的名下的玩具積木套裝合包括多種不同類型 的可互連的積木構(gòu)件,具有凸起部和對應(yīng)的凹槽作為連接構(gòu)件。根據(jù) 規(guī)則的網(wǎng)格圖案,放置連接構(gòu)件,從而,在積木構(gòu)件之間可以產(chǎn)生各 種互連。
通常,這樣的玩具積木套裝合包括一組適合于創(chuàng)建一個或多個積 木構(gòu)件模型的一組積木構(gòu)件,例如,動物、機(jī)器人,或另一種生物、 汽車、飛機(jī)、宇宙飛船、建筑物等等。通常,積木套裝進(jìn)一步包括打 印的組裝說明或組裝說明,說明了如何從積木構(gòu)件建造某一模型。不 用說,這樣的積木套裝的一個有趣的特點是,它們會激發(fā)兒童制作他 們自己的才莫型。
通常,玩具積木套裝中包含的組裝包括一步一步地說明了如何以及按什么順序向模型添加積木構(gòu)件。這樣的組裝說明的優(yōu)點是,易于 操作,甚至對于兒童也是如此,無需具有豐富的玩積木的經(jīng)驗,和/ 或無需閱讀技巧。
一般而言,模型的組裝說明可以被視為組裝積木構(gòu)件的步驟和分 步驟的順序。序列從一個或多個初始積木構(gòu)件開始,隨著一系列步驟, 發(fā)展成為完全組裝好的模型的結(jié)構(gòu)。在每一個步驟中,添加了單一積 木構(gòu)件或者積木構(gòu)件的子組件。對當(dāng)前描述來說,術(shù)語"子組件"是指 積木構(gòu)件模型的互連的積木構(gòu)件的子集。如此,添加子組件而不是單
個積木構(gòu)件,可能會涉及向主組裝說明中添加該子組件的附屬組裝說 明。對當(dāng)前描述來說,這樣的附屬組裝說明也叫做"分步驟"。如此, 步驟的序列一般可以表示為步驟的分支樹,每一個分支都包含附屬組 裝說明。
以前,這樣的組裝說明是手動生成的,例如,通過手動確定合理
的組裝步驟,在CAD系統(tǒng)中繪制對應(yīng)的說明,最后,打印如此生成 的說明。盡管這樣的組裝說明是高質(zhì)量的,即,易于操作,但是,上 面的制造過程也具有缺點它們需要的技能較高,并且需要較多的人 工。結(jié)果,通常只對于積木構(gòu)件的制造商設(shè)計的積木構(gòu)件模型,存在 組裝說明。具體來說,上面的采用現(xiàn)有技術(shù)的用于生成組裝說明的方 法不適合于希望為他們自己的模型產(chǎn)生組裝說明的兒童,利用兒童自 己的組裝說明,使得孩子們與他們的朋友共享他們的模型。
最近,組裝說明是以電子方式生成的,而不是以印刷的形式生成。 具體來說,提供了動畫形式的組裝說明,比較復(fù)雜的組裝步驟被制成 了動畫。然而,這樣的組裝說明的制作,仍涉及由熟練的設(shè)計者設(shè)計 和繪制組裝步驟/制作其動畫。
在諸如LEGO系統(tǒng)之類的復(fù)雜系統(tǒng)中,模型的可能的組裝說明 的數(shù)量隨著模型中的積木構(gòu)件的數(shù)量按指數(shù)速率增長。因此,從給定 模型的幾乎無限數(shù)量的可能的組裝說明中確定高質(zhì)量的說明集,對于 自動的組裝說明過程來說,是個問題。如此,需要提供一個自動化的 過程,甚至對于復(fù)雜的模型,生成切實可行的,操作簡便的說明。進(jìn)
10一步需要提供這樣的過程,在合理的計算硬件上在合理的時間內(nèi)生成 組裝說明。
還進(jìn)一步需要提供用于生成適合于希望為他們自己的模型產(chǎn)生 組裝說明的兒童的組裝說明的方法,這些組裝說明可使孩子們與他們 的朋友共享他們的模型,并進(jìn)一步改善玩的體驗。具體來說,需要提 供幾乎不需要用戶交互和輸入的輕松地對用戶可用的方法。
某些研究的主題也討論了有效的易于理解的一步接一步的組裝 說 明 的 i殳 計 。 從
http:〃graphics.stanford.edu/papers/assemblyjnstructioiis/檢索至!)的 M. Agrawala等人所著的因特網(wǎng)出版物"Designing Effective Step-by-Step Assembly Instructions"描述了基于認(rèn)識心理學(xué)的有效的 組裝說明的設(shè)計原則。該文進(jìn)一步說明基于有關(guān)要組裝的每一個對象 的信息,組件朝向和用于進(jìn)行圖形呈現(xiàn)的攝影角度,分組信息,有關(guān) 緊固件的信息,以及部件的意義,對稱性,以及有關(guān)對組件的順序的 約束,來生成組裝說明的計算機(jī)化系統(tǒng)。基于此輸入,系統(tǒng)基于大量 的搜索算法,并考慮給定的約束,計算組裝步驟的序列。上面的采用 現(xiàn)有技術(shù)的系統(tǒng)的問題是,從計算角度來看,代價大,需要復(fù)雜的輸 入數(shù)據(jù),如此,需要用戶有高度的抽象思維。
已公開的國際專利申請WO 2005/124696說明了一種為虛擬模 型生成組裝說明的自動化過程,其中,組裝說明利用在虛擬組裝環(huán)境 中組裝虛擬模型的過程中用戶所使用的組裝步驟的順序確定的步驟 的順序。盡管此采用現(xiàn)有技術(shù)的方法提供了易于使用的自動化過程, 但是,提高自動地生成的組裝說明的質(zhì)量仍是一個問題。
這里說明了 一種計算機(jī)實現(xiàn)的生成積木構(gòu)件模型的組裝說明的 方法,模型包括多個積木構(gòu)件,組裝說明表示組裝積木構(gòu)件模型的組 裝步驟的順序,每一個組裝步驟都包括向積木構(gòu)件模型添加至少一個 積木構(gòu)件;該方法包括
-從積木構(gòu)件模型的數(shù)字表示法,確定用于至少部分地將積木 構(gòu)件模型分解為若千個積木構(gòu)件的分解步驟的至少一個序列,每一個分解步驟都包括從積木構(gòu)件模型中去除至少 一個積木構(gòu)件;
-基于多個分解步驟中的至少一個步驟,確定組裝步驟序列中 的至少一個組裝步驟。
因此,認(rèn)識到,通過確定分解步驟的一個或多個序列,可以有效 地確定組裝步驟的序列。
模型的分解可以被視為分解積木構(gòu)件的步驟和分步驟的序列/迭 代過程。序列從完整的模型開始,并按照一系列步驟進(jìn)行。在完整的 分解中,過程持續(xù)進(jìn)行,直到所有積木構(gòu)件都與模型分離,而在部分 分解中,當(dāng)只有預(yù)定的殘余部分模型剩余時,過程結(jié)束。在每一個步 驟中,單一積木構(gòu)件或者積木構(gòu)件的子組件被分離。如此,分離子組 件而不是單個積木構(gòu)件,可能會涉及與主分解關(guān)聯(lián)的該子組件的附屬 分解。這樣的附屬分解也叫做"子步驟"。如此,類似于組裝,分解過 程的步驟的序列一般是步驟的分支樹,每一個分支都包含附屬分解。
當(dāng)可以知道如何分解時,此信息可以用于生成組裝序列的過程 中。因此,可以響應(yīng)確定分解序列的步驟,確定組裝步驟。此外,利 用合理的計算資源搜索滿足某些選擇標(biāo)準(zhǔn)的分解序列是可能的,并可 以產(chǎn)生高質(zhì)量的組裝說明。
進(jìn)一步知道,通過此從計算上來說簡單的方法生成的組裝說明對
用戶來說易于理解,特別是兒童。
此外,因為向組裝說明的唯一輸入是積木構(gòu)件模型的數(shù)字表示 法,例如,如在虛擬模型生成過程中記錄的,組裝說明對于用戶來說 易于生成,無需用戶擁有設(shè)計技能或有關(guān)幾何形狀、約束等等的抽象 知識。此外,組裝說明的生成還與用戶實際組裝虛擬模型的順序無關(guān)。 這可能是有益的,因為虛擬組裝環(huán)境可以允許組裝步驟以對于物理的 真實世界的模型可能難以或者甚至不可能執(zhí)行的順序來執(zhí)行。
在某些實施例中,該方法包括
-從積木構(gòu)件模型的數(shù)字表示法,確定用于將積木構(gòu)件模型分解 為若干個積木構(gòu)件的分解步驟的順序,每一個分解步驟都包括從積木 構(gòu)件模型中去除至少一個積木構(gòu)件;
12-顛倒確定的分解步驟的順序,以獲得組裝步驟的順序。 如果可以知道如何分解,則可以顛倒,產(chǎn)生組裝說明,就如通過 逆方向執(zhí)行組裝說明,可以分解模型那樣。因此,通過確定分解步驟 的一個或多個序列,然后顛倒分解步驟的順序,獲得組裝步驟的序列, 可以有效地確定組裝步驟的序列。優(yōu)點是,此過程只需要生成單一的 分解序列。
在備選實施例中,該方法包括執(zhí)行一個迭代過程,其中,迭代過
程的迭代包括
-獲得由前一迭代產(chǎn)生的組裝步驟的順序,組裝步驟的順序產(chǎn) 生第一部分模型;
-確定隨后的組裝步驟,該步驟表示至少一個隨后的積木構(gòu)件 與第一部分模型的連接,導(dǎo)致產(chǎn)生第二部分模型。
-判斷積木構(gòu)件模型是否可以通過用于分解積木構(gòu)件模型的導(dǎo) 致產(chǎn)生第二部分模型的分解步驟的序列進(jìn)行分解;
-如果判斷積木構(gòu)件模型可以通過用于分解積木構(gòu)件模型的導(dǎo) 致產(chǎn)生第二部分模型的分解步驟的序列進(jìn)行分解,則將確定的隨后的 組裝步驟附加到獲得的組裝步驟的順序中。
因此,在此實施例中,確定每一個組裝步驟,以便可以通過完整 的模型的部分分解,獲得部分模型。因此,通過組裝過程,可以提供 用于生成組裝說明的高效的過程,在每一個組裝步驟中,模擬從完整 的模型直到當(dāng)前組裝階段的分解。
此實施例是進(jìn)行組裝的(從磚開始,以完整的模型結(jié)束),而不 是完全基于分解。因為這是用戶考慮組裝說明的比較直觀的方式,它 比較易于使用,功能強(qiáng),允許用戶與生成組裝說明的過程進(jìn)行交互。 用戶交互的一個示例可以是對任何建議的磚塊提出反對意見,并獲取 替代的建議。事實上,此簡單的交互可使用戶在非常短的時間內(nèi)生成 特別高質(zhì)量的組裝說明,需要的用戶交互極少。此外,生成器還可以 確保,絕不會違犯硬約束,因此,無論用戶反對什么,只作出合理的 建議。相應(yīng)地,在一個實施例中,確定隨后的組裝步驟的步驟可以包括 接收用戶輸入,例如,以建議、批準(zhǔn),以及拒絕組裝步驟這幾項中的 至少一個的形式存在的用戶輸入。
判斷積木構(gòu)件模型是否可以通過用于分解積木構(gòu)件模型的導(dǎo)致 產(chǎn)生第二部分模型的分解步驟的序列進(jìn)行分解的步驟可以包括判斷 積木構(gòu)件模型是否可以通過分解步驟的序列進(jìn)行分解的步驟,其中, 每一個分解步驟是通過一個或多個預(yù)定的選擇標(biāo)準(zhǔn)集合選擇的。因 此,提供了可以提供高質(zhì)量組裝說明的高效的方法。
在某些實施例中,確定分解步驟的順序的過程包括執(zhí)行一個迭代
過程,其中,迭代過程的迭代包括
-獲得從前一迭代產(chǎn)生的前一部分模型;
-確定要從前一部分模型分離的導(dǎo)致產(chǎn)生新的部分模型的至少 一個積木構(gòu)件。
因此,從完整的模型開始,通過在每一次迭代中去除一個或多個 積木構(gòu)件,生成部分模型的序列。鑒于搜索高質(zhì)量的組裝說明一般需 要反向跟蹤,如此,從計算上來說,代價非常大,對于比較大的模型, 甚至代價非常驚人,可以通過一遍算法(對計算硬件的要求低得多), 實現(xiàn)組裝分解。
一般而言,在復(fù)雜的積木系統(tǒng)中,如在LEGO的名下銷售的玩 具積木系統(tǒng)中,某些模型也許不可能一個積木構(gòu)件一個積木構(gòu)件地分 解,因為某些積木構(gòu)件可能彼此鎖住,而無法分離為單個積木構(gòu)件。 然而, 一般而言,可以通過在每一個步驟中去除單個積木構(gòu)件或積木 構(gòu)件的子組件,分離所有模型。
相應(yīng)地,在某些實施例中,確定至少一個積木構(gòu)件的過程包括
-確定前一部分模型的一組候選子組件,每一個候選子組件都 包括前一部分模型的相應(yīng)的互連的積木構(gòu)件;
-根據(jù)第一組預(yù)定的選擇標(biāo)準(zhǔn),選擇導(dǎo)致產(chǎn)生新的部分模型的 要從前一部分模型分離的單個積木構(gòu)件或確定的候選子組件集合中 的一個。
14因此,在某些實施例中,對于分解序列,子組件被當(dāng)做偽積木構(gòu) 件。然而,積木構(gòu)件模型的可能的子組件的數(shù)量一般隨著模型中的積 木構(gòu)件的數(shù)量按指數(shù)速率增長。因此,甚至對于中等大小的模型,給 定某些條件,搜索所有可能的子組件并選擇要分離的一個子組件的自 頂向下的方法,從計算上來說,代價非常大,盡管當(dāng)僅僅考慮單個積 木構(gòu)件的去除時這樣的方法可能是可行的。
在某些實施例中,這里所描述的方法將上面的自頂向下的方法與 用于生成要接受自頂向下搜索的候選子組件的自底向上的方法相結(jié) 合。候選子組件的生成可以根據(jù)一組一個或多個生成器子過程或第二 組選擇標(biāo)準(zhǔn)來執(zhí)行,如此,產(chǎn)生模型的所有可能的子組件的集合的候 選子組件的子集。因此,在執(zhí)行從計算上來說代價大的自頂向下的方 法之前,使用自底向上的方法修剪搜索空間。
上面的對自頂向下的搜索的分割以及自底向上的生成導(dǎo)致從計 算上來說代價低一些,編程起來更加容易,并輕松地,例如,通過添 加用于生成候選子組件的額外的生成器子過程來進(jìn)行擴(kuò)展。
此外,上面的方法的控制力也得到改善,因為它提供了用于控制 要生成的候選子組件的數(shù)量的機(jī)制,如此,提供了用于協(xié)調(diào)計算成本 與所產(chǎn)生的組裝說明的質(zhì)量并針對任何給定硬件和時間要求調(diào)節(jié)候 選子組件的池的大小的機(jī)制。
在某些實施例中,第二組選擇標(biāo)準(zhǔn)的至少一個包括確定一個或多 個候選子組件與前一部分模型連接的連接強(qiáng)度。因此,根據(jù)與前一部 分模型的其余部分的連接的強(qiáng)度,生成/選擇子組件。結(jié)果,子組件的 此選擇/生成策略導(dǎo)致產(chǎn)生特別高質(zhì)量的組裝說明。
用于有效地選擇候選子組件的額外的或備選的選擇規(guī)則包括確 定組裝方向的變化和/或可移動地連接到前一部分模型(例如,通過鉸 鏈或接頭、滑塊等等)的子組件。
在某些實施例中,方法包括通過表示圖形(例如,無向圖)的數(shù) 據(jù)結(jié)構(gòu)來表示前一部分模型,包括表示前一部分模型的相應(yīng)的積木構(gòu) 件的節(jié)點,以及表示對應(yīng)的積木構(gòu)件之間的連接的連接相應(yīng)節(jié)點的邊。通過將前一部分模型表示為圖形,可以使用從圖論已知的圖形劃
分技術(shù)及其他技術(shù)(參見,例如,Jonathan L. Gross和Jay Yellen 所著的"Graph Theory and Its Applications", Chapman & Hall/CRC, 第二版,2006)來有效地識別適當(dāng)?shù)暮蜻x子組件,例如,通過識別圖 形中的關(guān)節(jié)節(jié)點或關(guān)節(jié)對,以便識別通過單一關(guān)節(jié)積木構(gòu)件或通過一 對積木構(gòu)件連接到前一部分模型的其余部分的子組件。因此,互連的 積木構(gòu)件的模型對應(yīng)于連接圖,子組件對應(yīng)于連接的子圖。
圖形的節(jié)點和/或邊可以具有與它們關(guān)聯(lián)的一個或多個相應(yīng)的屬 性,分別對應(yīng)于對應(yīng)的積木構(gòu)件和連接的屬性。例如,圖形的節(jié)點可 以具有一個或多個下面的屬性積木構(gòu)件類型、積木構(gòu)件體積、積木 構(gòu)件形狀/幾何形狀、積木構(gòu)件體積質(zhì)量、積木構(gòu)件的邊界框、積木構(gòu) 件在坐標(biāo)系統(tǒng)中的位置、與積木構(gòu)件關(guān)聯(lián)的主組裝方向、積木構(gòu)件的 連接元件的位置、類型和/或方向等等。類似地,圖形的邊可以具有與 它們關(guān)聯(lián)的一個或多個下面的屬性連接類型、連接強(qiáng)度、連接的方 向等等。當(dāng)圖形的邊具有與它們關(guān)聯(lián)的相應(yīng)的權(quán)重/值(表示連接的相 應(yīng)的連接強(qiáng)度)時,可以使用特別高效的圖形劃分法,如用于查找最 少的切斷的方法,來獲得高質(zhì)量的組裝說明。
在某些實施例中,每一個積木構(gòu)件都包括一個或多個連接元件, 用于與另 一個積木構(gòu)件的一個或多個對應(yīng)的連接元件嚙合,以在該積 木構(gòu)件和另一個積木構(gòu)件之間提供連接。這樣的連接元件可以對積木 構(gòu)件的可能的放置施加進(jìn)一步的限制,因為連接只在兼容的連接元件 之間才可以進(jìn)行,例如,當(dāng)置于相對于彼此的正確位置時,裝入對應(yīng) 的凹槽中的突出部。每一個連接元件都可以具有與它關(guān)聯(lián)的連接元件 類別,每一個連接元件類別都具有與它關(guān)聯(lián)的連接強(qiáng)度。在某些實施 例中,方法包括根據(jù)有助于對應(yīng)的連接的連接元件的數(shù)量和相應(yīng)的 類,確定對應(yīng)于兩個積木構(gòu)件之間的連接的邊的所述關(guān)聯(lián)的連接強(qiáng)度 值。因此,提供了用于計算/估計積木構(gòu)件模型中的連接強(qiáng)度的高效而 準(zhǔn)確的方法。
在某些實施例中,確定所述關(guān)聯(lián)的連接強(qiáng)度值的過程包括根據(jù)有助于對應(yīng)的連接的連接元件的數(shù)量和相應(yīng)的類,以及根據(jù)兩個積木構(gòu) 件的體積,確定連接強(qiáng)度值,從而,不僅考慮連接強(qiáng)度,而且還考慮 積木構(gòu)件的大小,如此,積木構(gòu)件在組裝過程中是否易于固定和操縱。 在某些實施例中,確定要從前一部分模型分離的導(dǎo)致產(chǎn)生新的部 分模型的至少一個積木構(gòu)件的過程包括為積木構(gòu)件的子集和一組積
木構(gòu)件的候選子組件中的至少一個計算一個或多個加權(quán)函數(shù);并基于 計算出的加權(quán)函數(shù)的比較,選擇單個積木構(gòu)件和子組件兩者中的一 個。因此,提供了選擇過程的可擴(kuò)展的并且靈活的框架,可以通過備 選的或附加的加權(quán)函數(shù)修改或擴(kuò)展,可以根據(jù)它們的重要性/優(yōu)先級, 為不同選擇標(biāo)準(zhǔn)賦予相對于彼此的權(quán)重。加權(quán)函數(shù)可以包括一個或多 個積木構(gòu)件的一個或多個屬性的任何適當(dāng)?shù)暮瘮?shù)。
在某些實施例中, 一個或多個加權(quán)函數(shù)中的至少一個具有可能的 結(jié)果的范圍,包括表示分離的適當(dāng)性的程度的第一子范圍和表示分離 的不適當(dāng)性的程度的第二子范圍,從而,允許兩者向積木構(gòu)件和/或子 組件賦予正的和負(fù)的4又重。
相應(yīng)地,在某些實施例中,基于計算出的加權(quán)函數(shù)的比較而選擇 單個積木構(gòu)件或子組件的過程包括根據(jù)一個或多個計算出的加權(quán)函 數(shù)計算總權(quán)重;其中,計算總權(quán)重的過程包括,如果至少一個計算出 的加權(quán)函數(shù)具有第二范圍中的結(jié)果,則向總權(quán)重指定一個第二范圍中 的值,從而提供否決策略,防止不滿足某些條件的積木構(gòu)件和/或子組 件被分離,盡管它們可能從其他加權(quán)函數(shù)獲得高權(quán)重。
被發(fā)現(xiàn)產(chǎn)生高質(zhì)量組裝說明的加權(quán)函數(shù)的示例包括判斷積木構(gòu) 件或子組件在物理上是否可分離的或判斷所述積木構(gòu)件或子組件的 分離方向是否,例如,被模型的其他部分堵塞的加權(quán)函數(shù)。例如,可 以通過計算積木構(gòu)件或子組件的伸展的幾何形狀,有效地計算這樣的 加權(quán)函數(shù)。
這樣的加權(quán)函數(shù)的另 一個示例包括向包含在積木構(gòu)件或子組件 的關(guān)節(jié)對中的關(guān)節(jié)積木構(gòu)件和/或積木構(gòu)件賦予較低的權(quán)重的加權(quán)函 數(shù),以便避免將模型分離為分離的部分模型。當(dāng)加權(quán)函數(shù)包括隨著連
17接到的其他積木構(gòu)件或子組件(直接地或通過其他積木構(gòu)件),確保 小的不相交的部分快速地從模型去除(如果它們發(fā)生的話)。
當(dāng)其中一個加權(quán)函數(shù)是子組件的積木構(gòu)件之間的連接的連接強(qiáng) 度的函數(shù)時,可以獲得從其余模型輕松地分離的積木構(gòu)件和子組件。 具體來說,已經(jīng)發(fā)現(xiàn),加權(quán)函數(shù)向具有較強(qiáng)的內(nèi)部連接性和較弱的外 部連接性的積木構(gòu)件和子組件賦予較高的權(quán)重,產(chǎn)生高質(zhì)量的組裝說 明。此外,在這樣的加權(quán)函數(shù)中,連接性強(qiáng)度可以作為相對于互相連 接的積木構(gòu)件或子組件的體積的強(qiáng)度來計算。
適當(dāng)?shù)募訖?quán)函數(shù)的進(jìn)一步的示例包括這樣的加權(quán)函數(shù)至少積木 構(gòu)件或子組件的屬性和在迭代過程的前一迭代中分離的積木構(gòu)件或 子組件的屬性的函數(shù),如此,可以有利于去除對稱地放置的積木構(gòu)件 或子組件,與另一個積木構(gòu)件或子組件距離很近的積木構(gòu)件或子組件 等等。這樣的屬性的示例包括積木構(gòu)件相對于坐標(biāo)系統(tǒng)的位置,積木 構(gòu)件類型等等。在某些實施例中,加權(quán)函數(shù)還可以進(jìn)一步是在前面的 迭代中去除的一個以上的積木構(gòu)件的屬性的函數(shù)。例如,當(dāng)比較部分 才莫型時,可以給一個或多個以前的迭代賦予不同的權(quán)重;例如,可以 給最新的迭代賦予比以前的迭代較高的權(quán)重。
這里所描述的方法的實施例接收積木構(gòu)件模型的數(shù)字表示法。這
樣的數(shù)字表示法可以通過任何適當(dāng)?shù)倪^程提供,例如,計算機(jī)實現(xiàn)的 組裝環(huán)境,和/或用于從, 一個或多個圖像(如物理模型或另一個對象 的圖像)生成積木構(gòu)件模型的數(shù)字表示法的過程。在美國7,092,899 中描述了一個這樣的過程。在此過程中,從CAD模型或一組三維物 體的二維圖像,創(chuàng)建物體的積木構(gòu)件模型的數(shù)字表示法。數(shù)字表示法
的類型、位置和/或互連等等的信息。數(shù)字表示法的實施例還可以進(jìn)一 步包括有關(guān)整體模型屬性、單個積木構(gòu)件的屬性(如積木構(gòu)件類型、 顏色、大小、邊界框等等)的信息。
計算機(jī)實現(xiàn)的用于交互地組裝虛擬積木構(gòu)件模型的組裝環(huán)境,可 以包括計算機(jī)程序,當(dāng)該計算機(jī)程序在計算機(jī)上執(zhí)行時,提供圖形用戶界面,供用戶操縱虛擬積木構(gòu)件模型,包括這樣的操作,如選擇積
木構(gòu)件、向模型中添加積木構(gòu)件、從模型中去除積木構(gòu)件,改變積木
構(gòu)件的朝向,改變積木構(gòu)件的屬性,例如,顏色、類型、大小等等,
查看模型、保存模型的數(shù)字表示法,加載以前保存的模型的數(shù)字表示
法等等。虛擬積木構(gòu)件可以是對應(yīng)的物理積木構(gòu)件的虛擬對應(yīng)物,即,
具有對應(yīng)的相對大小、形狀、顏色等等。
計算機(jī)實現(xiàn)的組裝環(huán)境可以被配置為實施施加于積木構(gòu)件相對
于彼此的相對位置的預(yù)定的限制集合,如積木構(gòu)件之間的沖突檢測。 例如,限制對應(yīng)于適用于對應(yīng)的物理積木構(gòu)件的對應(yīng)的限制,從而確 保也可以從對應(yīng)的物理積木構(gòu)件組裝虛擬積木構(gòu)件模型。因此,優(yōu)點 是,該方法確保了生成的組裝說明實際是可實現(xiàn)的,即,產(chǎn)生所希望 的結(jié)果。
在某些實施例中,組裝說明是作為諸如圖像之類的圖形表示的序 列生成的。每一個圖形表示都可以包括部分積木構(gòu)件模型(也被稱為 部分模型)的圖形呈現(xiàn),從而,提供操作簡便的組裝說明,其中,每 一個圖形表示都對應(yīng)于向模型中添加預(yù)定數(shù)量的積木構(gòu)件的組裝過 程中的步驟。如此,構(gòu)成確定的組裝序列的所有部分模型或只有部分 模型的一個子集可以包括在最后的組裝說明中,因為組裝序列的一個 或多個步驟可以合并到整個組裝說明中。用戶可以輕松地通過比較兩 個連續(xù)的圖形表示,確定在每一個步驟中添加哪些積木構(gòu)件以及如何 添加它們。
當(dāng)方法進(jìn)一步包括提供用于查看圖形表示的用戶界面(其中,用 戶界面優(yōu)選情況下便于對生成的圖形表示的用戶控制的處理)時,可 以方便地在計算機(jī)上查看積木構(gòu)件模型的數(shù)字表示法。具體來說,由 于模型的數(shù)字表示法包括生成組裝說明所需的所有信息,因此,組裝 說明可以方便地從一臺計算機(jī)傳遞到另一臺計算機(jī),例如,存儲在存
儲介質(zhì)上,通過通信網(wǎng)絡(luò)發(fā)送,例如,作為電子郵件連結(jié),在Web服 務(wù)器上上傳等等。如此,數(shù)字表示法的接收者可以查看圖形表示,對 它進(jìn)行操縱,例如,改變視角、縮放、更改查看選項,和/或類似的操作。因此,用戶可以輕松地將他們的組裝說明傳輸給朋友。再一個優(yōu) 點是,數(shù)字表示法不需要包括組裝說明的每一個步驟的圖形呈現(xiàn),從 而,可以使數(shù)字表示法的文件大小小一些。此外,由于數(shù)字表示法可 以包括所有相關(guān)的模型信息,因此,模型的接收者甚至可以在生成組 裝說明之前對模型進(jìn)行修改。
在某些實施例中,可以以預(yù)定的文件格式生成組裝說明,從而, 可以生成打印的和/或電子的組裝說明。適當(dāng)?shù)奈募袷降氖纠?br>
HTML、 XML、 BMP、 TIFF等等。
在某些實施例中,在按步驟的說明的一個步驟中添加的附加積木 構(gòu)件的預(yù)定數(shù)量是用戶可選擇的,從而可使用戶在非常詳細(xì)的一步一 步的說明(其中,例如,每一個步驟都對應(yīng)于單個新的積木構(gòu)件的放 置)和非常簡潔的說明(其中,每一個步驟都對應(yīng)于較大數(shù)量的新放 置的積木構(gòu)件)之間進(jìn)行選擇。在某些實施例中,在每一個步驟中添 加的積木構(gòu)件的數(shù)量在所有步驟中都是相同的。在其他實施例中,添 加的附加積木構(gòu)件的數(shù)量,對于組裝說明的不同步驟,可以不同。例 如,對于每一個步驟,可以由用戶控制步驟的大小,從而,對于組裝 的比較復(fù)雜的部分,可以生成比較細(xì)微的說明。
本發(fā)明可以以不同的方式實現(xiàn),包括上文和下文所描述的方法、 數(shù)據(jù)處理系統(tǒng),以及進(jìn)一步的產(chǎn)品裝置,每一個都會產(chǎn)生與首先提及 方法有關(guān)的優(yōu)點和優(yōu)點,每一個都具有對應(yīng)于與首先提及的方法有關(guān) 的優(yōu)選實施例的一個或多個優(yōu)選實施例,并在相關(guān)的從屬權(quán)利要求中 進(jìn)行了說明。
具體來說,上文和下文所描述的方法的特點可以以軟件來實現(xiàn), 并在通過執(zhí)行計算機(jī)可執(zhí)行的指令所導(dǎo)致的數(shù)據(jù)處理系統(tǒng)或其他處 理裝置上實施。指令可以是從存儲介質(zhì)或通過計算機(jī)網(wǎng)絡(luò)從另一臺計 算機(jī)加載到諸如RAM之類的存儲器中的程序代碼裝置?;蛘?,所描
來實現(xiàn)。
相應(yīng)地,本發(fā)明進(jìn)一步涉及用于執(zhí)行上文和下文所描述的方法的
20數(shù)據(jù)處理系統(tǒng)。本發(fā)明進(jìn)一步涉及一種計算機(jī)程序,包括程序代碼裝 置,當(dāng)所述程序在計算機(jī)上運(yùn)行時,用于執(zhí)行上文和下文所描述的方 法的所有步驟。本發(fā)明進(jìn)一步涉及一種計算機(jī)程序產(chǎn)品,包括程序代 碼裝置,當(dāng)所述計算機(jī)程序產(chǎn)品在計算機(jī)上運(yùn)行時,用于執(zhí)行上文和 下文所描述的方法。程序代碼裝置可以存儲在計算機(jī)可讀取的介質(zhì)上 和/或作為傳播的數(shù)據(jù)信號來實現(xiàn)。
在某些實施例中,計算機(jī)程序包括用于生成積木構(gòu)件模型的數(shù)字
表示法的第一軟件組件;以及用于從生成的數(shù)字表示法生成組裝說明 的第二軟件組件,從而提供用于讀取模型的數(shù)字表示法并呈現(xiàn)對應(yīng)的 組裝說明的單獨的軟件組件。因此,當(dāng)傳遞組裝說明時,用戶可以與 第二軟件組件一起傳遞數(shù)字表示法,從而,提供組裝說明的簡單的獨
立的表示法,可以由接收者查看,無需另外的軟件。然而,應(yīng)了解, 兩個過程,即,生成模型的數(shù)字表示法和生成組裝說明,可以集成在 單一的軟件組件中。
下面利用優(yōu)選實施例并參考圖形,比較全面地說明了本發(fā)明,其
中
圖la-b顯示了生成積木構(gòu)件模型的組裝說明的數(shù)據(jù)處理系統(tǒng);
圖2顯示了總的組裝說明生成的實施例的流程圖3顯示了用于生成分解步驟的序列的過程的實施例的流程
圖4顯示了積木構(gòu)件以及其連接元件的示例;
圖5顯示了以數(shù)字方式表示積木構(gòu)件模型的數(shù)據(jù)結(jié)構(gòu)的實施
例;
圖6顯示了組裝說明應(yīng)用程序的圖形用戶界面的實施例;
圖7作為無向圖顯示了積木構(gòu)件模型的表示;
圖8-13顯示了選擇標(biāo)準(zhǔn)的實施例;
圖14顯示了總的組裝說明生成的另一個實施例的流程圖;圖15顯示了用于生成部分分解的分解步驟的序列的過程的實 施例的流程圖16顯示了總的組裝說明生成的另一個實施例的流程圖。
具體實施例方式
圖la-b顯示了用于生成和操縱幾何對象的計算機(jī)可讀取的模 型的數(shù)據(jù)處理系統(tǒng)。
圖la顯示了計算機(jī)系統(tǒng)的示例的示意圖。計算機(jī)系統(tǒng)包括適當(dāng) 地編程的計算機(jī)101,例如,個人計算機(jī),包括顯示器120、鍵盤121 電腦鼠標(biāo)122和/或另一種指示設(shè)備,如觸摸板、跟蹤球、光筆、觸 摸屏等等。
101表示的計算機(jī)系統(tǒng)可以從積木構(gòu)件模型的數(shù)字表示法生成 組裝說明。計算機(jī)系統(tǒng)101還可以進(jìn)一步促進(jìn)設(shè)計、存儲、操縱, 以及共享虛擬積木構(gòu)件模型以及如這里所描述的生成組裝說明??梢?使用計算機(jī)系統(tǒng)101作為獨立系統(tǒng)或作為客戶端/服務(wù)器系統(tǒng)中的客 戶端。在某些實施例中,計算機(jī)系統(tǒng)進(jìn)一步包括用于將計算機(jī)與計算 機(jī)網(wǎng)絡(luò)(例如,因特網(wǎng))連接的一個或多個接口。
圖lb顯示了用于生成積木構(gòu)件模型的組裝說明的數(shù)據(jù)處理系 統(tǒng)的方框圖。計算機(jī)101包括存儲器102,存儲器102可以部分地 作為易失性,部分地作為非易失性存儲器裝置來實現(xiàn),例如,隨機(jī)存 取存儲器(RAM)和硬盤。存儲器上存儲了模型代碼解釋器107、模 型代碼生成器108、 UI事件處理程序109、模型化應(yīng)用程序110, 以及組裝說明生成器113,每一個都可由中央處理單元103執(zhí)行。 此外,存儲器上還存儲了模型數(shù)據(jù)111,即,代表積木構(gòu)件模型的數(shù) 字表示法的一組數(shù)據(jù)結(jié)構(gòu)。
代碼解釋器107可以讀取和解釋定義了模型的數(shù)字表示法,例 如,代表模型的積木構(gòu)件的數(shù)據(jù)結(jié)構(gòu)的代碼。在優(yōu)選實施例中,代碼 解釋器可以讀取模型的數(shù)字表示法,并將這樣的模型轉(zhuǎn)換為用于在計 算機(jī)顯示器上呈現(xiàn)的已知的圖形格式,優(yōu)選情況下,模型的3D呈現(xiàn)。
22UI事件處理程序109可以將用戶的與用戶界面的交互轉(zhuǎn)換為可以 由代碼生成器108識別的適當(dāng)?shù)挠脩裘睢?一組可能的和可識別的 命4、可以包括從元件的庫獲取積木構(gòu)件,將積木構(gòu)件與另一個積木 構(gòu)件連接,分離積木構(gòu)件,丟棄積木構(gòu)件,操縱積木構(gòu)件, 一組積木 構(gòu)件,等等,例如,通過啟動旋轉(zhuǎn)等等。與每一個命令一起,可以關(guān) 聯(lián)一組相應(yīng)的參數(shù),例如,相對于顯示器坐標(biāo)系統(tǒng)的光標(biāo)坐標(biāo),積木 構(gòu)件的類型等等。
代碼生成器108還可以進(jìn)一步響應(yīng)用戶的命令,修改模型的數(shù) 據(jù)結(jié)構(gòu)。作為同時的或隨后的任務(wù),可以執(zhí)行代碼解釋器,以便呈現(xiàn) 代碼生成器的結(jié)果。
模型化應(yīng)用程序110可以控制存儲器、文件、用戶界面等等。 在US6,389,375中描述了虛擬現(xiàn)實模型化的實施例。此外,在 已經(jīng)發(fā)布的國際申請WO04104811中描述了交互地將新的虛擬積木 構(gòu)件放入包括3D結(jié)構(gòu)的場景中。這里全部引用了這兩個文件的內(nèi)容 作為參考。
組裝說明應(yīng)用程序113可以讀取模型的數(shù)字表示法,并如這里 所描述的,從讀取的模型數(shù)據(jù),生成組裝說明。組裝說明應(yīng)用程序113 還可以進(jìn)一步提供用戶界面,用于根據(jù)如這里所描述的組裝步驟的存 儲的序列,顯示部分模型,或生成的組裝說明的任何其他適當(dāng)?shù)妮敵?格式。組裝說明應(yīng)用程序113可以使用由代碼解釋器107和UI事 件處理程序109所提供的功能,分別進(jìn)行模型的讀取和圖形呈現(xiàn), 以及接收用戶輸入。在備選實施例中,組裝說明應(yīng)用程序是獨立的, 即,不依賴于外部軟件組件。在某些實施例中,組裝說明應(yīng)用程序以 適當(dāng)?shù)奈募袷剑?,以可以打印的形式,生成組裝說明。
用戶105能夠通過用戶界面106與計算機(jī)系統(tǒng)101進(jìn)行交 互,優(yōu)選情況下,包括計算機(jī)屏幕上顯示的圖形用戶界面,以及諸如 鍵盤和/或指示設(shè)備之類的一個或多個輸入設(shè)備。為了加載、保存或傳 遞模型、幾何描述或其他數(shù)據(jù),計算機(jī)系統(tǒng)包括輸入/輸出單元(I/O) 104。輸入/輸出單元可以用作與不同類型的存儲介質(zhì)和不同類型的計算機(jī)網(wǎng)絡(luò)(例如,因特網(wǎng))的接口。此外,輸入/輸出單元(1/0)104可 以用于,例如,交互地,與其他用戶交換模型。存儲器102、中央處 理單元(CPU) 103、用戶界面(UI)106,以及輸入/輸出單元104之 間的數(shù)據(jù)交換是通過數(shù)據(jù)總線112來完成的。
值得注意的是,圖1的數(shù)據(jù)處理系統(tǒng)可以被配置為執(zhí)行模型化 應(yīng)用程序和組裝說明應(yīng)用程序兩者。然而,在其他實施例中,數(shù)據(jù)處 理系統(tǒng)可以被配置為只基于從另 一 臺計算機(jī)(在其上面運(yùn)行模型化應(yīng) 用程序或用于生成數(shù)字模型表示的另 一 個應(yīng)用程序的計算機(jī))接收到 的模型數(shù)據(jù),執(zhí)行組裝說明應(yīng)用程序。同樣,在所述另一臺計算機(jī)上, 模型化應(yīng)用程序可以獨自安裝,或與組裝說明應(yīng)用程序相結(jié)合地安 裝。
圖2顯示了組裝說明生成的實施例的流程圖。在步驟Sl中, 接收積木構(gòu)件模型的數(shù)字表示法,例如,由模型生成模塊(例如,圖 lb的模型化應(yīng)用程序110)或由任何其他適當(dāng)?shù)倪M(jìn)程所創(chuàng)建的。
可以從存儲介質(zhì)203中檢索數(shù)字表示法,例如,運(yùn)行組裝說明 應(yīng)用程序的計算機(jī)的本地硬盤,CDROM、磁盤等等?;蛘撸蛄硗?, 模型的數(shù)字表示法可以遠(yuǎn)程存儲,例如,從存儲了它的計算機(jī)網(wǎng)絡(luò)的 另一臺計算機(jī)接收。例如,可以從Web服務(wù)器下載數(shù)字表示法,在 Web服務(wù)器上數(shù)字表示法可以對一個或多個用戶可用。下面將描述 數(shù)字表示法的數(shù)據(jù)結(jié)構(gòu)的示例。
在后面的步驟S2-S4中,組裝說明應(yīng)用程序從加栽的數(shù)字表示 法生成組裝說明205。在一個實施例中,組裝說明應(yīng)用程序生成部分 模型的3D視圖的序列,其中,每一個部分模型與緊前面的部分模型 不同之處在于,根據(jù)如這里所描述的組裝說明進(jìn)程確定的組裝步驟的 序列,向模型中添加預(yù)定數(shù)量的附加積木構(gòu)件??梢砸噪娮臃绞匠尸F(xiàn)、 打印,或以另一種適當(dāng)?shù)姆绞匠尸F(xiàn)組裝說明205。在某些實施例中, 組裝說明的生成可以由用戶204進(jìn)行控制。例如,用戶可以選擇要 在每一個步驟中添加的附加積木構(gòu)件的數(shù)量。此外,用戶還可以操縱 生成的3D視圖,包括改變攝影機(jī)的方位等等,正如下面所描述的。
24用戶204可以是與用戶202相同的用戶,也可以是不同的用戶。
具體來說,在步驟S2中,從接收到的模型的數(shù)字表示法生成分 解序列,例如,以積木構(gòu)件的連續(xù)列表和/或模型的子組件的形式。進(jìn) 一步生成連續(xù)列表的子組件的從屬分解序列。在一個實施例中,進(jìn)程 將分解序列表示為步驟的分支樹,其中,每一個分支都可以包含從屬 分解。下面將比較詳細(xì)地描述生成分解序列的過程的實施例。 在步驟S3中,顛倒生成的分解序列,以獲得組裝序列。 在步驟S4中,從生成的組裝序列生成組裝說明,例如,作為部 分模型的圖像的序列或其他表示方法,其中,在每一個部分模型中, 與前一部分模型相比,添加了來自生成的列表的一個或多個積木構(gòu)件 和子組件。可以存儲生成的說明和/或以如這里所描述的任何適當(dāng)?shù)男?式將它們輸出。
圖3顯示了模型M的分解過程的示例的流程圖。分解過程根 據(jù)完整的模型M的數(shù)字表示法,對模型M進(jìn)行分解,包括模型中 的所有積木構(gòu)件(步驟301)。模型M的輸入包括有關(guān)單個積木構(gòu) 件的信息,如大小/尺寸、旋鈕的數(shù)量,諸如積木構(gòu)件的鉸鏈、栓、軸 等等之類的特點。數(shù)字表示法還包括有關(guān)將每一個積木構(gòu)件放在模型 中的什么位置的信息,例如,通過指定積木構(gòu)件相對于適當(dāng)?shù)淖鴺?biāo)系 統(tǒng)的相應(yīng)的(x,y,z)位置。
在步驟302中,分解過程測試在模型M(或前一迭代產(chǎn)生的部 分模型)是否留下了要分離的積木構(gòu)件。如果模型中仍有積木構(gòu)件, 則執(zhí)行步驟303,選擇/生成用于從模型M中去除的一個或多個候選 子組件。候選子組件包括互連的積木構(gòu)件。在隨后的步驟304中, 根據(jù)第一組預(yù)定的選擇標(biāo)準(zhǔn),選擇要分離的積木構(gòu)件或其中一個生成 的候選子組件(E)。此第一組預(yù)定的選擇標(biāo)準(zhǔn)根據(jù)預(yù)定的加權(quán)函數(shù), 向每個積木構(gòu)件和生成的子組件分配權(quán)重,下面將比較詳細(xì)地描述它
們的示例。因此,從候選項的池中確定積木構(gòu)件或子組件,池包括所 有單個積木構(gòu)件和生成的候選子組件。因此,對選擇過程來說,子組
件可以被視為除實際積木構(gòu)件之外的偽積木構(gòu)件。對當(dāng)前描述來說,積木構(gòu)件和候選子組件的成員也被稱為待移去候選項。
在步驟303中,通過第二組選擇標(biāo)準(zhǔn)(確定如何分隔/切斷模 型),發(fā)現(xiàn)/選擇候選子組件。下面將比較詳盡地描述這樣的選擇標(biāo) 準(zhǔn)的示例。
在步驟305中,從模型中分離在步驟304中選擇的積木構(gòu)件或 子組件E,即,生成新的部分模型M' = M\E,其中,選定的候選子 組件的所有積木構(gòu)件的選定積木構(gòu)件都被去除。維持表示分解序列的 數(shù)據(jù)結(jié)構(gòu),并利用有關(guān)分離的子組件/積木構(gòu)件的信息更新數(shù)據(jù)結(jié)構(gòu)。 存儲序列,如此,然后,可以將它顛倒,以獲得組裝說明。
如果選擇要分離的子組件,則可以通過在步驟307中以遞歸方 式執(zhí)行分解過程(即,以選定的子組件E充當(dāng)輸入模型M),然后, 返回到步驟302,繼續(xù)迭代分解過程,查找下一個要與其余的部分模 型(即,模型M' = M\E。)分離的積木構(gòu)件,對選定的子組件進(jìn)行 分解。
當(dāng)模型中沒有更多的積木構(gòu)件時,模型被完全分解,在步驟308 中,分解過程停止。
因此,上文所描述的分解過程的實施例可以通過下面的偽代碼來
表達(dá)
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
在上面的偽代碼中,選擇"最佳可分離的"磚,對應(yīng)于在上面的步驟304中執(zhí)行的選擇,即,基于一組預(yù)定的選擇標(biāo)準(zhǔn)的選擇,例如, 下面所描述的一個或多個選擇標(biāo)準(zhǔn)。
優(yōu)選情況下,首先選擇可以從模型中分離的候選子組件,然后, 根據(jù)分離的優(yōu)先程度,給每一個候選項指定權(quán)重,從計算角度來看, 當(dāng)分為多個步驟時,處理這種選擇是可能的,因為給子組件指定權(quán)重 只是對模型的所有可能的子組件的子集預(yù)先形成的。
在 2006 年 6 月 University of Southern Denmark , Department of Mathematics and Computer Science 的 Jacob AlIereHi 所著的論文 "Computer-aided generation of building instructions for LEGO models"中,其中一個發(fā)明人描述了分解過程 的示例,在此引用了該論文作為參考。下面,將比較詳細(xì)地描述用于 在步驟303中確定候選子組件的第二組選擇標(biāo)準(zhǔn)的選擇規(guī)則的示 例。這些選擇標(biāo)準(zhǔn)也將4皮稱為"啟發(fā)式切斷(cut heuristics )"。
最少切斷/圖形劃分
已經(jīng)認(rèn)識到,通過使用將圖形劃分為子圖形的圖形劃分技術(shù),可 以有效地確定適當(dāng)?shù)暮蜻x子組件。為此,在表示無向圖(包括節(jié)點和 連接節(jié)點的邊)的數(shù)據(jù)結(jié)構(gòu)中表示模型,其中,節(jié)點表示積木構(gòu)件, 邊表示積木構(gòu)件之間的連接。這樣的圖形也被稱為連接性圖形。圖7 顯示了連接性圖形的一個示例。圖7a顯示了包括積木構(gòu)件a、 b、 c、 d,以及e的積木構(gòu)件模型的示例。圖7b顯示了帶有節(jié)點a、 b、 c、 d、 e的對應(yīng)的連接性圖形。
圖形數(shù)據(jù)結(jié)構(gòu)的邊數(shù)據(jù)項可以包括表示由邊表示的連接所連接 的積木構(gòu)件之間的對應(yīng)的連接的(物理)連接強(qiáng)度的屬性。如此,用 于識別圖形的最小的權(quán)重cut的圖形劃分過程產(chǎn)生子組件,以致于分 離子組件所需的物理強(qiáng)度/力度至少大致被最小化。這樣,選擇連接最 松散的子組件。下面將比較詳細(xì)地描述確定積木構(gòu)件之間的連接強(qiáng)度 的示例。
組裝方向變化優(yōu)選情況下,切斷組裝方向發(fā)生變化的模型。當(dāng)積木構(gòu)件沿著至 少兩個組裝方向互連時,可以發(fā)生組裝方向的變化??梢酝ㄟ^在連接 性圖形中進(jìn)行本地圖形搜索來查找組裝方向的變化的位置。可以通過 將方向?qū)傩耘c每一個積木構(gòu)件關(guān)聯(lián),來定義組裝方向?;蛘呋蛄硗?, 可以通過將方向?qū)傩灾概傻椒e木構(gòu)件之間的連接,來定義組裝方向。 為此,連接性圖形的節(jié)點和/或邊可以具有與其關(guān)聯(lián)的表示對應(yīng)的連接 的組裝方向的屬性。
單一積木構(gòu)件關(guān)節(jié)切斷
將兩個或更多子組件/積木構(gòu)件互連的積木構(gòu)件叫做"關(guān)節(jié)積木 構(gòu)件",可以是分離模型的好的切斷點/節(jié)點。 一旦被識別,關(guān)節(jié)積木 構(gòu)件可以包括在分離的子組件中,即,被去除,或者,可以從分離的 子組件中排除關(guān)節(jié)積木構(gòu)件,即,不被去除。在圖形中,關(guān)節(jié)積木構(gòu) 件可以,例如,;陂標(biāo)記出來-例如,通過所謂的圖形著色-,從而, 可以被輕松地定位。連接性圖形的關(guān)節(jié)節(jié)點可以通過任何適當(dāng)?shù)挠糜?發(fā)現(xiàn)圖形的關(guān)節(jié)節(jié)點的算法來查找,例如,基于深度優(yōu)先搜索(參見, 例如,"Graph Theory and Its Applications", Jonathan L. Gross和 JayYellen著,Chapman & Hall/CRC,第二版,2006)。
積木構(gòu)件關(guān)節(jié)對切斷
術(shù)語"關(guān)節(jié)對"是指將兩個或更多不相交的子組件互連在一起的 兩個積木構(gòu)件,即,其去除導(dǎo)致模型分解為兩個或更多不相交的子組 件的積木構(gòu)件的對。通過關(guān)節(jié)積木構(gòu)件或關(guān)節(jié)對連接到模型的其余部 分的子組件,對于生成組裝說明,可以是有用的候選子組件。
關(guān)節(jié)對可以通過一個過程查找,其中,保存了連接性圖形G中 的所有關(guān)節(jié)節(jié)點的列表A。然后,生成圖形G',其中,去除了 G中 的非關(guān)節(jié)節(jié)點n。保存了 G'中的所有關(guān)節(jié)節(jié)點的列表B。對于B\A 中的每個節(jié)點m,找到下面的關(guān)節(jié)對(n, m),對于圖形G中的所 有非關(guān)節(jié)節(jié)點n,重復(fù)此過程。
28鉸鏈或接合連接
鉸鏈連接是圍繞鉸鏈方向的一個或多個積木構(gòu)件之間的鉸鏈。積
鏈連接的鉸鏈連接元件。通過鉸鏈連接連接到模型的其余部分的子組 件,對于生成組裝說明,可以是有用的候選子組件。當(dāng)圖形的邊具有 表示鉸鏈結(jié)構(gòu)的存在的關(guān)聯(lián)的屬性時,可以在連接性圖形中識別這樣 的組件。例如,可以搜索連接性圖形的只通過一個或多個鉸鏈連接連 接到連接性圖形的其余部分的子圖。圖12b顯示了具有用于提供鉸 鏈連接的連接元件1201的積木構(gòu)件。應(yīng)該理解,其他類型的可移動 的連接也可以用于識別候選子組件,例如,接合連接、等等。
特殊情況
某些積木構(gòu)件在它們可連接到其他積木構(gòu)件的方式上只在某一 點上特殊。這些積木構(gòu)件的示例是在圖的基座下具有單一連接元件、 在窗戶中有玻璃,輪子上有輪胎,鐵軌上有車皮的圖。因此,這些特 殊積木構(gòu)件在它們的外部連接(即,在它們連接到不同于它們的對應(yīng)
的積木構(gòu)件的任意積木構(gòu)件的位置)中從模型中切除的候選項。
因此,在上文中,說明了用于識別候選子組件的許多啟發(fā)式切斷。 如此,在分解過程中,可以使用如上文所描述的一個啟發(fā)式切斷或更 多啟發(fā)式切斷的組合,有效地在^f莫型的所有可能的子組件之間發(fā)現(xiàn)候 選子組件。
如上文所描述的,在一個實施例中,每一個去除候選項-即, 模型的每一個積木構(gòu)件和通過上面的或備選的啟發(fā)式切斷 (cut-heuristics)過程選擇的每一個候選子組件,通過一個或多個加 權(quán)函數(shù),被賦予權(quán)重,以便發(fā)現(xiàn)帶有最高權(quán)重的去除候選項,即,最 適合于從模型中去除的去除候選項E (步驟304),然后,分離此選 定的去除候選項(步驟305)。
在一個實施例中,如此選擇加權(quán)函數(shù),以便根據(jù)它實現(xiàn)的條件,
29每一個加權(quán)函數(shù)要么增強(qiáng)積木構(gòu)件/子組件;陂選擇的可能性,或者它將 拒絕積木構(gòu)件/子組件被選擇。將對于每一個積木構(gòu)件/子組件的所有 加權(quán)函數(shù)的結(jié)果組合起來,以便獲得積木構(gòu)件/子組件的總的權(quán)重。然 后,可以選擇帶有最高權(quán)重的積木構(gòu)件/子組件。當(dāng)根據(jù)均勻的加權(quán)方 式選捧單個加權(quán)函數(shù)時,加權(quán)函數(shù)組可輕;^地改變。
例如,在一個實施例中,每一個加權(quán)函數(shù)都導(dǎo)致一個權(quán)重。權(quán)重 要么是范圍[0,…,1I中的實數(shù),要么是負(fù)整數(shù)(-1,-2,-3,...)。如果 分離積木構(gòu)件/子組件是有利的,在分配給積木構(gòu)件/子組件的權(quán)重位 于范圍[0 1,當(dāng)分離積木構(gòu)件/子組件既不反對,也不提倡時,指 定0,當(dāng)分離最恰當(dāng)時,指定1。這兩個極值之間的實數(shù)表示兩者之 間的分離有利。如果分離是不利的,則加權(quán)函數(shù)給積木構(gòu)件/子組件分 配范圍(-1,-2,-3,)中的負(fù)的權(quán)重,其中,不同負(fù)值表示分離不利 的程度。應(yīng)了解,可以定義具有不同范圍的其他加權(quán)函數(shù)集合。
可以使用具有兩個單獨的范圍的加權(quán)函數(shù)來實現(xiàn)否決方案,例 々口, ^p下面所4苗述的
對于每一個積木構(gòu)件/子組件x,對一組加;^又函數(shù)中的每一個加 權(quán)函數(shù)進(jìn)行評估,相應(yīng)的單個權(quán)重按如下方式組合起來如果在x的 指定的權(quán)重之間沒有負(fù)的權(quán)重(所謂的"否決"),則將所有權(quán)重累加 起來,獲得總權(quán)重。另一方面,如果在指定的權(quán)重之間有一個或多個 "否決",則所有非"否決,,權(quán)重都丟棄,即,設(shè)置為0。根據(jù)此,好的 要分離的積木構(gòu)件/子組件是無"否決"的并且具有高累加權(quán)重的那一 個。另一方面, 一旦積木構(gòu)件/子組件被賦予了"否決",則直到分解過 程中的下一次迭代之前,它不能離開"否決"狀態(tài)。如果所有積木構(gòu)件 /子組件都獲得負(fù)的權(quán)重,則可以選擇帶有具有最小絕對值的總的負(fù)的 權(quán)重的積木構(gòu)件?;蛘撸梢苑聪蚋櫼粋€或多個迭代,試圖選擇不 同的積木構(gòu)件/子組件,請求用戶交互,或以另一種適當(dāng)?shù)姆绞嚼^續(xù)進(jìn) 行。
結(jié)果,當(dāng)發(fā)現(xiàn)分解過程(在每一個步驟中,至少有一個無"否決" 的積木構(gòu)件/子組件)時,上面的加權(quán)方式導(dǎo)致產(chǎn)生高質(zhì)量的組裝說明?,F(xiàn)在比較詳細(xì)地描述加權(quán)函數(shù)的許多示例 分離策略
加權(quán)函數(shù)的一個示例判斷要分離的積木構(gòu)件/子組件是否在物理 上可以從模型的其余部分接觸和分離。為此,加權(quán)函數(shù)驗證是否滿足 下面的兩個要求中的一個或多個
1) 積木構(gòu)件/子組件可分離的/可連接的所沿著的所有方向都是 平4亍的。如此,此加外又函數(shù)可以確定組裝方向和/或積木構(gòu)件的所有連 接的方向,例如,基于與連接性圖形中的對應(yīng)的節(jié)點和/或邊關(guān)聯(lián)的屬 性。如果所有方向都是平行的,則可以通過平移運(yùn)動來分離積木構(gòu)件。 例如,圖8a的積木構(gòu)件803具有兩個不平4亍的連接方向它們連 接到軸802和積木元件804。與軸802的連接具有平行于軸802 的關(guān)聯(lián)的方向,因為從軸802拆卸積木構(gòu)件803需要在沿著軸802 的方向移動積木構(gòu)件803。另一方面,與積木構(gòu)件804的連接,具 有垂直于軸的方向,即,在旋鈕從積木構(gòu)件804的頂表面中凸出的 方向。因此,拆卸積木構(gòu)件803可能導(dǎo)致模型拉緊,對于,例如, 兒童,在沒有同時分離模型的其他連接的情況下,難以執(zhí)行。圖12顯 示了帶有利用箭頭表示可分離性的相應(yīng)的方向的積木構(gòu)件的示例。
2) 在連接的方向移動積木構(gòu)件/子組件,不會導(dǎo)致與模型的其他 積木構(gòu)件沖突。例如,加權(quán)函數(shù)可以確定積木構(gòu)件/子組件的邊界框, 判斷在連接的方向?qū)⑦吔缈蚱揭祁A(yù)先確定的距離是否導(dǎo)致與另一個 積木構(gòu)件沖突/交叉。圖13顯示了積木構(gòu)件1301沿著其可分離的方 向可移動的模型?;蛘?,加權(quán)函數(shù)可以計算在連接的方向伸展的積木 構(gòu)件/子組件幾何形狀,判斷伸展的幾何形狀是否與任何其他積木構(gòu)件 /子組件沖突。積木構(gòu)件占用多少空間可以通過簡單幾何體積來表示。 例如,如圖4所示的帶有2x4個旋鈕的積木構(gòu)件可以具有與它關(guān)聯(lián) 的9個沖突盒子 一個沖突盒子填充除8個之外的整個積木構(gòu)件, 而8個旋鈕分別填充一個沖突盒子。此信息可以用來估計積木構(gòu)件 是否沖突/重疊。沖突盒子信息可以用來計算伸展的幾何形狀,該幾何 形狀表示為了分離積木構(gòu)件所需的空間。
31如何計算伸展的幾何形狀的示例可以包括發(fā)現(xiàn)積木構(gòu)件可以分
離的方向,是矢量d。積木構(gòu)件具有N個沖突量(例如,如在上面 的帶有2x4個旋鈕的積木構(gòu)件的示例中)和位置(x,y,z)。
具有積木構(gòu)件BE、矢量d和模型M,分離過程可以包括下列 步驟對于BE中的每個沖突量,pl表示k的位置。當(dāng)BE沿著 矢量d從pl移動時,p2表示k的位置。由于每個沖突量是帶有8 個角的盒子,在pl將有8個點,在p2將有8個點。在一組點中, 總計將有16個點。當(dāng)沖突量是凸面時,此組點將構(gòu)成凸面圖f。
過程測試圖f是否與模型M中的任何積木構(gòu)件沖突。如果圖 f與模型M中的任何積木構(gòu)件沖突,則積木構(gòu)件BE不能被分離。 如果圖f不與模型M中的任何積木構(gòu)件沖突,則可以測試下一個沖 突量。
最后,如果N個沖突量中沒有一個圖f與模型M中的任何積 木構(gòu)件沖突,則根據(jù)分離策略,可以分離積木構(gòu)件BE。
此策略的效果是,它確保了積木構(gòu)件/子組件的分解(如此,反 向結(jié)構(gòu))在物理上是可能的,而不會對模型施加物理勞損。
加權(quán)函數(shù)的下面的示例避免了在物理上不可分離(或至少只輕松 地可分離的)積木構(gòu)件/子組件的分離
Weight(x) = -1, if at least one of the above conditions 1) and 2) is not fulfilled forx,
0, otherwise
關(guān)節(jié)策略
如上文所提及的,其去除導(dǎo)致模型分解為兩個或更多不相交的部 件的積木構(gòu)件/子組件叫做關(guān)節(jié)積木構(gòu)件/子組件。分離關(guān)節(jié)積木構(gòu)件/ 子組件可能導(dǎo)致這樣的組裝說明,顯示了看來似乎在組裝說明的3D 呈現(xiàn)中浮動/飛行的不相交的構(gòu)件/子組件。這可能是不希望發(fā)生的, 因為會使分解過程復(fù)雜化,從而,也使組裝說明復(fù)雜化。
下面的加權(quán)函數(shù)避免了關(guān)節(jié)積木構(gòu)件/子組件的分離Weight(x) = -1 if x is an articulation building element/sub-assembly0 if not
因此,堅決不贊成去除關(guān)節(jié)積木構(gòu)件,如此會避免"懸空,,的積木構(gòu)件/子組件。
在備選實施例中,如果x是關(guān)節(jié)積木構(gòu)件/子組件,加權(quán)函數(shù)指定中性的權(quán)重,例如,權(quán)重=0,如果x不是關(guān)節(jié)積木構(gòu)件/子組件,則指定正的權(quán)重,例如,權(quán)重=1。因此,在此實施例中,關(guān)節(jié)構(gòu)件的分離既不反對,也不提倡。這顯示了,可以調(diào)節(jié)不同的權(quán)重,以便使加權(quán)方式適應(yīng)不同的期望效果。在再一個實施例中,根據(jù)是否為單個積木構(gòu)件或子組件計算加權(quán)函數(shù),指定不同權(quán)重。例如,在一個實施例中,如果x是子組件,對于關(guān)節(jié)子組件,weight(x)被設(shè)置為-1,如果x不是關(guān)節(jié)子組件,則設(shè)置為0,而在x是單個積木構(gòu)件的情況下,對于關(guān)節(jié)積木構(gòu)件,weight(x)被設(shè)置為0,否則,設(shè)置為+1。因此,在此實施例中,防止了關(guān)節(jié)子組件的分離,而分離關(guān)節(jié)積木構(gòu)件僅僅是不贊成。
集成策略
有這樣的情況在其余的部分模型中不可能避免分離的(或"懸空")積木構(gòu)件/子組件。圖8a顯示了這樣的情況的示例,顯示了位于軸802上的齒輪構(gòu)件801,它通過積木構(gòu)件803的對應(yīng)的空穴凸出。當(dāng)分解模型時,軸802可以去除,導(dǎo)致齒輪構(gòu)件801與模型的其余部分分離,如圖8b所示。
在這樣的情況下,可能希望盡可能快地從模型中去除分離的構(gòu)件801,導(dǎo)致如圖8c所示的情況。
快速去除分離的構(gòu)件可以通過加權(quán)函數(shù)向(直接或間接地)連接
到較少的其他積木構(gòu)件的積木構(gòu)件/子組件指定增大的權(quán)重來實現(xiàn)這
樣的加權(quán)函數(shù)的一個示例是
Weight(x) = 1 / (number—of_building elementS-Connected—to_x + 1) for allbuilding elements/sub-assemblies x
在圖8b的示例中,上面的加權(quán)函數(shù)向小齒輪801指定權(quán)重1,因為它不連接到任何其他積木構(gòu)件或子組件。另一方面,給其他
積木構(gòu)件指定了權(quán)重1/6,因為它們是包括表示為803、 804和805的五個構(gòu)件的組件的一部分。
如此,集成策略減少了在所產(chǎn)生的組裝說明中顯示不可避免的"懸空"的積木構(gòu)件或子組件的步驟的數(shù)量。
相似度策略
相似度策略涉及組裝/分解中的對稱性。當(dāng)在組裝過程中使用相似度策略時,結(jié)構(gòu)可能變?yōu)閷ΨQ的,這將筒化分解過程。為了基于此執(zhí)行分解,表示兩個積木構(gòu)件A和B是"相似的"的函數(shù)可以按如下方式確定。
加才又函數(shù)確定A和B在坐標(biāo)系統(tǒng)中的坐標(biāo),其中,y軸對應(yīng)于原則的組裝方向,例如,垂直方向。x軸和z軸對應(yīng)于其他主要的組裝方向例如,水平方向。
如果B是分離的最后一個積木構(gòu)件,那么,用于判斷A和B是否相似的加權(quán)函數(shù)可以具有下面的形式
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的權(quán)重反映了某種相似度。也可以考慮替代的和/或另外的條件。
策略是分離積木構(gòu)件/子組件,類似于分離的最后的積木構(gòu)件或子組件。此策略的影響是,包含對稱件的模型,常常被對稱地分解。
圖9給出了針對分解的相似度的示例,分別說明圖9a)- c)中的三個連續(xù)的分解步驟的示例。從圖9可以看出,在模型的左邊部分,首先分離長方形積木構(gòu)件卯l,然后,分離與第一長方形積木構(gòu)
34件對稱的相似的長方形積木構(gòu)件902。下一個步驟可以是分離模型的右邊部分的兩個相似的長方形積木構(gòu)件903。
基礎(chǔ)策略
特殊的積木構(gòu)件或子組件,如大的板或形狀不規(guī)則的板,常常是模型的基礎(chǔ)/起始積木構(gòu)件,因此,是最后一個分離的積木構(gòu)件。為了檢查板或其他積木構(gòu)件是否是起始積木構(gòu)件,可以將它的類型和/或尺寸與其他積木構(gòu)件的類型/大小進(jìn)行比較,或?qū)⑵渑c表示積木構(gòu)件比較大的閾值進(jìn)行比較,因為起始積木構(gòu)件常常比較大,因為它構(gòu)成了模型的基礎(chǔ)。此外,也可以通過分析放置在模型中的位置有多低來檢查大的積木構(gòu)件是否是起始積木構(gòu)件。積木構(gòu)件比較大并且放置在模型的底部很可能是起始積木構(gòu)件。為此,連接性圖形的節(jié)點可以具有與它們關(guān)聯(lián)的表示積木構(gòu)件的尺寸/體積的相應(yīng)的屬性?;蛘?,組裝說明過程可以允許用戶指出起始積木構(gòu)件,例如,通過利用鼠標(biāo)或另一個指示設(shè)備,指出起始積木構(gòu)件。相應(yīng)地,防止起始積木構(gòu)件被從模型
中去除的加權(quán)函數(shù)可以具有下面的形式Weight(x) = -1 if x is a starter building element0 if not.
或者,如果x是起始積木構(gòu)件/子組件,加權(quán)函數(shù)可以指定權(quán)重0,如此表示,x的分離是不利的,如果x不是起始積木構(gòu)件/子組件,指定高的正的權(quán)重,例如,權(quán)重=1,因為,這樣分離是有利的。
這樣的效果是,在所產(chǎn)生的組裝說明中,某些共同的基礎(chǔ)積木構(gòu)件或子組件將在最初連接或在組裝過程的初期連接。
分步驟完整性策略
根據(jù)一個實施例,對于每一個候選子組件x,有兩個反映/有助于連接性的質(zhì)量的有貢獻(xiàn)的方面。第一方面是子組件x的積木構(gòu)件之間的內(nèi)部連接性的強(qiáng)度,而第二方面是子組件x的積木構(gòu)件的外部連接性的強(qiáng)度。如果內(nèi)部連接性相對來說比較強(qiáng),而外部連接性相對來說比較弱,則可以期待子組件可輕;^地拆卸,因為子組件中的積
35木構(gòu)件強(qiáng)連接到該子組件中的其他積木構(gòu)件,并且只弱連接到模型的其余部分。相應(yīng)地,在組裝過程中,具有強(qiáng)內(nèi)部連接的以及與模型的其余部分的弱連接的子組件,可能作為穩(wěn)定的子組件,相對來說容易組裝,并連接到模型的其余部分,沒有在組裝過程子組件分解的風(fēng)險。
為了研究子組件在內(nèi)部連接的堅固程度,即,子組件的不同的積木構(gòu)件如何彼此連接,可以使用連接性圖形或所有積木構(gòu)件之間的連接性的另一種適當(dāng)?shù)谋硎痉?。連接性圖形可以包括反映積木構(gòu)件之間的物理強(qiáng)度的權(quán)重,如上文所描述的,例如,當(dāng)每一個邊都具有與它關(guān)聯(lián)的表示對應(yīng)的連接的強(qiáng)度的屬性/權(quán)重。
例如,每一個積木構(gòu)件都可以包括一個或多個連接元件,用于嚙合其他積木構(gòu)件的對應(yīng)的連接元件,以便在多個積木構(gòu)件之間提供連
接。例如,圖4顯示了帶有呈現(xiàn)旋鈕的形式的突出部(用于嚙合另一個積木構(gòu)件的空穴(也被稱為反旋鈕)的積木構(gòu)件的示例。 一般而言,積木構(gòu)件可以具有一個或多個不同類別的連接元件,每一個連接元件類別,或每一對連接元件類別,都可以提供對應(yīng)強(qiáng)度的連接。如此,可以有助于兩個積木構(gòu)件之間的連接的連接元件的數(shù)量/協(xié)作的連接元件對的數(shù)量,以及根據(jù)起作用的連接元件的相應(yīng)的類另U/類型,確定/估計兩個積木構(gòu)件之間的連接的總強(qiáng)度。例如,可以將單個連接強(qiáng)度相加,獲得總的連接強(qiáng)度。有關(guān)有助于連接的連接元件的數(shù)量和類型的信息可以從積木構(gòu)件模型的數(shù)字表示法中獲取,和/或包括在連接性圖形的節(jié)點和/或邊中。WO 04/034333中描述了支持連接元件的定義的數(shù)據(jù)結(jié)構(gòu)的示例。
例如,積木構(gòu)件x和y之間的連接的強(qiáng)度可以按如下方式計
算
<formula>formula see original document page 36</formula>
其中,總和遍及所有連接類別C,Se是連接類別C的連接強(qiáng)度,
而N(c)是有助于x和y之間的連接的類別c的連接元件的數(shù)下面給出了如何確定如圖4所示的類型的兩個積木構(gòu)件x和
y(具有呈現(xiàn)旋鈕/反旋鈕(或空穴)對的形式的連接元件、栓和軸)之
間的連接的物理強(qiáng)度的示例<formula>formula see original document page 37</formula>
應(yīng)了解,上面的示例中的數(shù)值只作為示例。
當(dāng)計算有效強(qiáng)度時進(jìn)一步考慮積木構(gòu)件的幾何形狀時,可以更加
準(zhǔn)確地估計連接性的有效強(qiáng)度。
例如,圖10顯示了兩個子組件,每一個子組件都包括通過參考 圖4所描述的形式的單一連接元件互相連接的兩個積木構(gòu)件。然而, 圖10a的子組件連接得結(jié)實,即,難以分解,而圖10b的子組件不, 用戶非常容易將積木構(gòu)件1001從基板1002中拆卸。還可以通過合
并相對于其連接的強(qiáng)度的最小的/最輕的積木構(gòu)件的體積或質(zhì)量針對 此差異進(jìn)行調(diào)整。或者,或另外,也可以使用表示積木構(gòu)件的幾何屬 性的另一個適當(dāng)?shù)臄?shù)量。這模擬了,例如,用戶利用用戶的手指抓取 積木構(gòu)件的容易程度,因為大的積木構(gòu)件比小的積木構(gòu)件更加容易抓 取。
因此,這樣的經(jīng)過修改的加權(quán)函數(shù)可以表達(dá)為 Connection(x,y) = Strenght(x,y) / Minimum(volume of x, volume of y)
如此,在如圖10所示的示例中,兩個子組件在多個積木構(gòu)件之 間具有相同強(qiáng)度,因為在兩種情況下,小的積木構(gòu)件以一個旋鈕-反旋 鈕對連接在一起。然而,在圖10a的子組件中,最小的積木構(gòu)件1003 具有較小的體積,而在圖10b的子組件中,最小的積木構(gòu)件1001具 有較大的體積,如此,函數(shù)connection(x,y)對于圖10a的子組件將 是最大的。
基于上面的連接性度量的加沖又函數(shù)的示例可以如下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
內(nèi)部和外部連接的閾值可以是預(yù)定的,用戶控制的,憑經(jīng)驗發(fā)現(xiàn) 的或以別的方式適當(dāng)?shù)卦O(shè)置的。調(diào)節(jié)閾值是調(diào)節(jié)所產(chǎn)生的組裝說明的 分步驟的數(shù)量和質(zhì)量的有效方式。通過將閾值設(shè)置為比較高的值,可 以獲得不多的高質(zhì)量的候選子組件,而不是獲得許多較低質(zhì)量的候選 子組件。這使得分解過程更加容易并更快。
最接近策略
也可以根據(jù)與以前分離的積木構(gòu)件/子組件的距離,給積木構(gòu)件/ 子組件賦予權(quán)重。更具體地說,weight(x)可以是距離、距離的平方、 或x的質(zhì)心與以前分離的積木構(gòu)件/子組件的質(zhì)心的另一個適當(dāng)?shù)木?離測度的函數(shù)。應(yīng)該理解,也可以使用積木構(gòu)件/子組件的另一個適當(dāng) 的參考點代替質(zhì)心。
可以給與以前分離的積木構(gòu)件/子組件更靠近的積木構(gòu)件賦予較 高的權(quán)重。當(dāng)積木構(gòu)件至少在一個點彼此接觸時,則它們之間的距離 可以設(shè)置為0。最接近策略可以區(qū)分表面彼此相鄰的積木構(gòu)件,積木 構(gòu)件只是在它們的角落彼此接觸,分別如圖lla和圖lib所示。如 此,在一個實施例中,加權(quán)函數(shù)可以是兩個積木構(gòu)件之間鄰接的面積 的大小的遞增函數(shù)??梢曰谧鳛閿?shù)字表示法的一部分存儲的邊界框 或其他幾何信息,確定積木構(gòu)件是否彼此毗鄰,或以別的方式彼此接 觸。求這樣的度量的近似值的一種方式是通過計算相應(yīng)的積木構(gòu)件的 點之間最大距離。 一般而言,此距離越大,鄰接的面積越小,如圖11 所顯示的。
層疊策略
38當(dāng)組裝模型時,優(yōu)選情況下,常常從底部向上進(jìn)行組裝。因此, 可以根據(jù)與模型中的最低的積木構(gòu)件的距離,向積木構(gòu)件/子組件分配 權(quán)重。積木構(gòu)件/子組件與底部的距離越遠(yuǎn),在分解過程內(nèi)被賦予的權(quán) 重就越高。因此, 一般而言,加權(quán)函數(shù)可以是積木構(gòu)件沿著坐標(biāo)系統(tǒng) 的一個或多個方向的坐標(biāo)的遞增函數(shù)。
因此,在上文中,描述了加權(quán)函數(shù)的許多示例,每一個都對應(yīng)于 對應(yīng)的模型分解策略。應(yīng)該理解,分解過程可以包括備選的或附加的 加權(quán)函數(shù)和/或備選的或附加的分解策略。此外,還可以定義對應(yīng)于這 里所描述的分解策略的備選的和/或附加加權(quán)函數(shù)。
還將進(jìn)一步認(rèn)識到,這里所描述的某些策略具有一個或多個參 數(shù),這些參數(shù)可以改變,以增強(qiáng)結(jié)果的一個方面或另一個方面,從而,
使框架成為通過人的交互生成組裝說明的工具,而不是black-box。 發(fā)明人已經(jīng)利用對應(yīng)于下面的策略的加權(quán)函數(shù)的組合,獲得了特
別好的結(jié)果,確保了分解的完整性。它們一起可以構(gòu)成提供好的結(jié)果
的自動組裝說明生成器的實施例的骨干,無需用戶交互
-分離策略只允許分離在物理上可以去除的積木構(gòu)件或子組
件,給定了積木構(gòu)件或子組件的幾何形狀和連接性。
-分步驟完整性策略只允許分離在內(nèi)部強(qiáng)連接的并且在外部
弱連接的組件。
如上文所描述的,準(zhǔn)確的要求可以改變,以確保所希望的質(zhì)量的 分步驟。
-關(guān)節(jié)策略只允許分離不會將模型拆分為兩個或更多分離的 組件的子組件。此外,不贊成分離將模型拆分為兩個或更多分離的子 組件的單個積木構(gòu)件。
-集成策略如果去除了單個關(guān)節(jié)積木構(gòu)件,則盡可能快地去 除分離的積木構(gòu)件或子組件。
在一個實施例中,上文所提及的四個策略-分離、分步驟集成、 關(guān)節(jié)和集成-用于所有組裝/分解中,而一個或多個進(jìn)一步的策略, 例如,這里所描述的其余的策略的一個或多個,例如,相似度、基礎(chǔ)、
39最接近和層疊策略,可以在不同的情況下用于調(diào)節(jié)結(jié)果。這樣的策略
可以由用戶進(jìn)行選擇。圖4顯示了積木構(gòu)件以及其連接元件的示例。 具體來說,圖4顯示了積木構(gòu)件401的透視圖。積木構(gòu)件401具 有頂表面402,上面帶有八個旋鈕403a-h,可以與另一個積木構(gòu)件 的對應(yīng)的空穴嚙合,例如,另一個積木構(gòu)件的底面上的空穴。相應(yīng)地, 積木構(gòu)件401包括帶有對應(yīng)的空穴的底表面(未顯示)。積木構(gòu)件 401進(jìn)一步包括沒有任何連接元件的側(cè)面404。
一般而言,連接元件可以分為連接元件的不同類別,例如,連接 件、受納體,以及混合構(gòu)件。連接件是可以由另一個積木構(gòu)件的受納 體接納的連接元件,從而在積木構(gòu)件之間提供連接。例如,連接件可 以在另一個構(gòu)件的部件之間裝入空穴中。受納體是可以接納另一個積 木構(gòu)件的連接件的連接元件?;旌蠘?gòu)件是既可以充當(dāng)受納體又可以充 當(dāng)連接件的部件,通常取決于其他積木構(gòu)件的協(xié)作的連接元件的類 型。
在LEGO的名下有圖4中所顯示的類型的積木構(gòu)件可用,有 許多形狀、尺寸,和顏色。此外,還有的這樣的積木構(gòu)件帶有各種不 同的連接元件。應(yīng)該理解,上面的積木構(gòu)件只作為可能的積木構(gòu)件的 示例。
圖5顯示了以數(shù)字方式表示積木構(gòu)件模型的數(shù)據(jù)結(jié)構(gòu)的實施 例。數(shù)據(jù)結(jié)構(gòu)501可以包括一個或多個數(shù)據(jù)記錄502,包括與整體 模型有關(guān)的總體模型參數(shù)。這樣的模型參數(shù)的示例包括^f莫型名稱、模 型創(chuàng)作者的姓名、模型化應(yīng)用程序的程序版本號,創(chuàng)建日期等等。模 型數(shù)據(jù)結(jié)構(gòu)501進(jìn)一步包括列表503或積木構(gòu)件數(shù)據(jù)記錄的其他 適當(dāng)?shù)慕Y(jié)構(gòu)。在圖5的示例中,列表包括N個數(shù)據(jù)記錄"積木構(gòu)件 1"、"積木構(gòu)件2"、...,"積木構(gòu)件J"、…,"積木構(gòu)件N"。列表503 的每一個積木構(gòu)件數(shù)據(jù)記錄都具有"積木構(gòu)件J"的數(shù)據(jù)結(jié)構(gòu)504所
顯示的結(jié)構(gòu)。
具體來說,每一個積木構(gòu)件數(shù)據(jù)記錄都包括積木構(gòu)件ID 505, 表示對應(yīng)于積木構(gòu)件類型的標(biāo)識符。積木構(gòu)件ID可以唯一地標(biāo)識積
40木構(gòu)件的屬性或積木構(gòu)件的類型。
積木構(gòu)件數(shù)據(jù)記錄還可以進(jìn)一步包括許多積木構(gòu)件屬性506,表 示積木構(gòu)件的一個或多個屬性,如顏色、紋理、裝飾等等。
此外,積木構(gòu)件數(shù)據(jù)記錄504還包括分別表示積木構(gòu)件的內(nèi)坐 標(biāo)系統(tǒng)的位置和方向的數(shù)據(jù)項507和508。積木構(gòu)件的位置和方向 通過積木構(gòu)件的內(nèi)坐標(biāo)系統(tǒng)的原點相對于全球"world"坐標(biāo)系統(tǒng)的坐 標(biāo)來進(jìn)行定義,并由內(nèi)坐標(biāo)系統(tǒng)相對于全球坐標(biāo)系統(tǒng)的朝向來進(jìn)行定 義。
在美國專利no. 6,389,375中說明了包括坐標(biāo)系統(tǒng)的層次結(jié)構(gòu)
的用于存儲積木構(gòu)件模型的數(shù)據(jù)格式的示例。
此外,積木構(gòu)件數(shù)據(jù)記錄504還可以包括分別表示積木構(gòu)件的 一個或多個邊界框和連接性數(shù)據(jù)的數(shù)據(jù)項509和510,用于檢測積 木構(gòu)件與其他積木構(gòu)件的連接性屬性。如圖4所示的積木構(gòu)件的類
型的連接性數(shù)據(jù)的一種表示法的實施例包括表示通過積木構(gòu)件的邊 界框的表面定義的平面的數(shù)據(jù)結(jié)構(gòu)。積木構(gòu)件的連接元件位于這些平 面上,每一個連接元件都具有與它關(guān)聯(lián)的軸。同一個平面上的所有連 接元件的軸都對應(yīng)于規(guī)則網(wǎng)格(例如,正交網(wǎng)格)的相應(yīng)的網(wǎng)格點, 相鄰網(wǎng)格點之間的距離是固定的。圖4的與積木構(gòu)件401關(guān)聯(lián)的平 面彼此成對地平行,它們包括一組對應(yīng)于積木構(gòu)件的頂部和底部表面 的水平面和許多對應(yīng)于積木構(gòu)件的側(cè)面的垂直平面。相鄰網(wǎng)格點之間 的距離在所有水平面上可以相同。在某些實施例中,垂直平面中的相 鄰網(wǎng)格點之間的距離不同于水平面中的相鄰網(wǎng)格點之間的距離。在 WO 04/034333中說明了如圖4所示的類型的積木構(gòu)件的連接性屬 性的數(shù)字表示法,在此引用該申請的全部內(nèi)容作為參考。
應(yīng)該理解,數(shù)字表示法可以以任何適當(dāng)?shù)臄?shù)據(jù)或文件格式進(jìn)行編 碼,例如,作為二進(jìn)制文件,作為根據(jù)預(yù)定的模型花描述語言的文本 文件等等。應(yīng)該進(jìn)一步理解,數(shù)字信息的其他實施例可以利用替代的 或另外的數(shù)據(jù)結(jié)構(gòu),和/或表示替代的或另外的模型數(shù)據(jù)。
圖6顯示了組裝說明應(yīng)用程序的圖形用戶界面的實施例。用戶
41界面包括查看區(qū)域701,說明了一組一步接一步的組裝說明的步驟的 圖形表示。圖形表示顯示了從預(yù)定的攝像位置顯示的部分模型702 的3D視圖。部分模型701包括完整的模型的所有積木構(gòu)件的子集, 其中,該子集包括最初定位的積木構(gòu)件。查看區(qū)域701進(jìn)一步包括 最近放置的積木構(gòu)件的圖形表示703,即,區(qū)別當(dāng)前部分模型702與 前面的步驟的部分模型的積木構(gòu)件。在此示例中,這些是部分模型 702的積木構(gòu)件714、 715,以及716。
用戶界面進(jìn)一步包括滑塊控制元件709,可以通過利用鼠標(biāo)進(jìn)行 的對應(yīng)的拖動操作,以單獨的間隔移動,可使用戶選擇一步一步的說 明的任何一個步驟。在圖6的示例中,在說明的每一個步驟中添加 了三個新的積木構(gòu)件。
用戶界面進(jìn)一步包括按鈕控制元件705,可使用戶調(diào)用許多常用 的功能,如分別在正方向和反方向按順序瀏覽圖形表示,跳轉(zhuǎn)到說明 的第一個步驟和最后一個步驟,改變攝像位置,打印生成的組裝說明, 以及啟動"自動播放"功能。自動播放功能一個一個地顯示部分模型的 序列,以便將每一個部分模型顯示預(yù)定的時間長度。優(yōu)選情況下,用 戶可以用自動播放功能配置每一個部分模型的查看時間。
最后,用戶界面還包括許多下拉菜單704,可使用戶啟動諸如幫 助功能、改變攝像位置的功能、圖像放大功能之類的功能。由組裝說 明應(yīng)用程序提供的進(jìn)一步的功能包括加載數(shù)字表示法,用于打印部分 模型的圖形表示的打印功能,以及用于導(dǎo)出部分模型的圖形表示的序 列的導(dǎo)出功能,例如,以HTML格式,或任何其他適當(dāng)?shù)膱D形文件 格式,如TIF、 JPG、 BMP等等,進(jìn)行導(dǎo)出。
由組裝說明應(yīng)用程序提供的功能的進(jìn)一步的示例包括材料清單 功能,可使用戶查看或打印模型中的所有積木構(gòu)件的列表。
圖14顯示了組裝說明生成的另一個實施例的流程圖。在步驟 Sl中,接收積木構(gòu)件模型的數(shù)字表示法M,例如,如參考圖2的 步驟Sl所描述的。
在后面的步驟S2- S12中,組裝說明應(yīng)用程序從加載的數(shù)字表
42示法生成組裝說明205。生成的組裝說明205可以是如參考圖2所 描述的形式。
在步驟S2中,過程初始化。具體來說,初始化數(shù)據(jù)結(jié)構(gòu) 用于保留要生成的組裝序列。將序列Result初始化為空序列。進(jìn)一 步將表示為Candidates的一組候選積木構(gòu)件初始化為模型M中的 所有積木構(gòu)件和子組件的集合。因此,如在前面的實施例中那樣,可 以確定要從模型M中去除的一個或多個候選子組件,并將子組件當(dāng) 做一般性的積木構(gòu)件??梢酝ㄟ^一組選擇標(biāo)準(zhǔn)(確定如何分隔/切斷模 型),可以發(fā)現(xiàn)/選擇候選子組件。上面比較詳盡地描述了這樣的選擇 標(biāo)準(zhǔn)的示例,特別是,參考圖3的步驟303所描述的第二組選擇標(biāo) 準(zhǔn)。應(yīng)了解,在其他實施例中,可以只考慮積木構(gòu)件。
在步驟S3中,判斷集合Cam/iV/a,"是否是空的,即,是否已 經(jīng)處理完所有積木構(gòu)件。如果是這種情況,則執(zhí)行步驟S12;否則, 執(zhí)行步驟S4。
在步驟S4-S11中,判斷是否可以找到導(dǎo)致產(chǎn)生新的部分模型的 組裝步驟6,以便可以將完整的模型AT分解為此新的部分模型。
具體來說,在步驟S4中,作為集合Om力'dWes的副本,生成 積木構(gòu)件和子組件的輔助集合C。
在步驟S5中,判斷集合C是否是空的,即,是否識別了一個 候選項6。如果是這種情況,則返回到步驟S3;否則,執(zhí)行步驟S6。
在步驟S6中,從集合C中選擇候選積木構(gòu)件b或候選子組件。
本實施例中的候選項的選擇可以以與前面的實施例的分解情況 中的選擇去除積木構(gòu)件類似的方式來完成,即,通過一組選擇標(biāo)準(zhǔn)。 具體來說,選擇標(biāo)準(zhǔn)可以基于表示不同的組裝策略的一個或多個加權(quán) 函數(shù),如上文所描述的一個或多個加權(quán)函數(shù),特別是參考圖3的步 驟304所描述的第一組選擇標(biāo)準(zhǔn)的加權(quán)函數(shù)。某些加權(quán)函數(shù)分別在 組裝和分解版本中相同或基本上相同,例如,如上面比較詳細(xì)地描述 的加權(quán)函數(shù)。例如, 一個策略可以根據(jù)它們與在前面的步驟中添加的積木構(gòu)件的距離,向積木構(gòu)件分配一個權(quán)重。然后,可以選擇與前面 添加的積木構(gòu)件最靠近的積木構(gòu)件。其他加權(quán)函數(shù)可以十分不同。例 如,上文所描述的分解情況的"關(guān)節(jié)策略"避免了拆散連接性圖形,而 在本實施例的組裝情況下,只是確保了選擇實際連接到任何前面選擇 的積木構(gòu)件的積木構(gòu)件。盡管如此,在這兩種情況下,都避免了
"flying"積木構(gòu)件。由于這里所描述的加權(quán)函數(shù)可以給子組件(偽積 木構(gòu)件)以及簡單的積木構(gòu)件賦予權(quán)重,因此,組裝和分解兩種過程 都可以一般化為處理子組件。如在純粹的分解情況下,這不僅是切實 可行的,有時候,還是需要的。
或者,或另外,候選項的選擇可以部分地或完全地基于用戶輸入 /交互。例如,可以接收表示候選項b的用戶輸入。或者,可以,例 如,隨機(jī)地或基于上文所描述的加權(quán)函數(shù),選擇一個或多個可能的候 選項,并向用戶指出候選項。然后,可以接收表示批準(zhǔn)或拒絕一個或 多個建議的候選項的用戶輸入。
在步驟S7中,從接收到的模型的數(shù)字表示法生成部分分解序 列,直到可通過當(dāng)前組裝序列和選定的候選項6的聯(lián)合獲得 的剩余的模型??梢砸阅P偷姆e木構(gòu)件和/或子組件的連續(xù)列表的形式 生成分解序列。還可以進(jìn)一步生成連續(xù)列表的子組件的從屬分解序 列。在一個實施例中,進(jìn)程將分解序列表示為步驟的分支樹,其中, 每一個分支都可以包含附屬的分解。
下面將比較詳細(xì)地描迷生成部分分解序列的過程的實施例。
在步驟S8中,判斷是否可以找到分解序列。如果步驟S7的 分解過程成功確定分解序列,則繼續(xù)執(zhí)行步驟S9;否則,繼續(xù)執(zhí)行 步驟SIO。
在步驟S9中,更新集合CVw /iV/Wm、以及C。具體來 說,將選定的候選項6添加到當(dāng)前結(jié)果序列i "w"中,從候選項的 集合C" &V/ &s中去除候選項6,從輔助集合C去除所有構(gòu)件(隨 著識別成功的候選項)。然后,返回到S5。
在步驟S10中,從輔助的候選項的集合C中去除6進(jìn)行嘗
44中是否仍有候選項留下。如果是這種情 況,返回到步驟S5,以識別備選的候選項;否則,過程結(jié)束,例如, 帶有指出生成組裝說明失敗的適當(dāng)?shù)腻e誤標(biāo)記或消息。例如,如果模 型被過度地約束和/或如果在分解過程中所使用的加權(quán)函數(shù)表示模型 的組裝約束太強(qiáng)/限制性太強(qiáng),則可能發(fā)生這種情況。因此,在這樣的 情況下,在分解過程中所使用的某些或全部加權(quán)函數(shù)可以被弱化,例 如,自動地或通過用戶交互,可以利用弱化的加4又函數(shù)重新開始該過 程。
在步驟S12中,從生成的組裝序列Result生成組裝說明,例 如,作為部分模型的圖像的序列或其他表示方法,其中,在每一個部 分模型中,與前一部分模型相比,添加了來自生成的列表的一個或多 個積木構(gòu)件和子組件??梢源鎯ι傻恼f明和/或以如這里所描述的任 何適當(dāng)?shù)男问綄⑺鼈冚敵觥?br>
圖15顯示了模型AT直到剩余的模型TV的部分分解過程的 示例的流程圖。分解過程根據(jù)完整的模型AT的數(shù)字表示法,對模型 M進(jìn)行分解,包括模型中的所有積木構(gòu)件(步驟301)。模型AT的 輸入包括有關(guān)單個積木構(gòu)件的信息,如大小/尺寸、旋鈕的數(shù)量,諸如 積木構(gòu)件的鉸鏈、栓、軸等等之類的特點。數(shù)字表示法還包括有關(guān)將 每一個積木構(gòu)件放在模型中的什么位置的信息,例如,通過指定積木
構(gòu)件相對于適當(dāng)?shù)淖鴺?biāo)系統(tǒng)的相應(yīng)的f^V力位置。進(jìn)一步接收有關(guān) 剩余集合iV(即,模型M的子模型)的信息。部分分解過程生成分 解步驟的序列,其中,在每一個分解步驟中,去除M\N的一個或多 個積木構(gòu)件(即,模型M的未包括在內(nèi)在剩余的模型N中的積木 構(gòu)件),直到只留下剩余的模型N。
在步驟302中,分解過程測試在模型MUV(或前一迭代產(chǎn)生的 部分模型MUV;是否留下了要分離的積木構(gòu)件。如果在該模型中仍有 要去除的積木構(gòu)件,則繼續(xù)執(zhí)行步驟303,在該步驟中,選擇/生成要 從模型MWV (或由前一迭代產(chǎn)生的部分模型MUV)去除的一個或多 個候選子組件。候選子組件包括互連的積木構(gòu)件。在隨后的步驟304
45中,根據(jù)第一組預(yù)定的選擇標(biāo)準(zhǔn),例如,如參考圖3所描述的,選 擇要分離的積木構(gòu)件或其中一個生成的候選子組件(E)??梢栽诓襟E 303中,通過第二組選擇標(biāo)準(zhǔn)(確定如何分隔/切斷模型),可以發(fā)現(xiàn) /選擇候選子組件。上面比較詳盡地描述了這樣的選擇標(biāo)準(zhǔn)的示例。在步驟305中,從模型中分離在步驟304中選擇的積木構(gòu)件或 子組件E,即,生成新的部分模型M' = M\E,其中,選定的候選子 組件的所有積木構(gòu)件的選定積木構(gòu)件都被去除??梢跃S持表示分解序 列的數(shù)據(jù)結(jié)構(gòu),并利用有關(guān)分離的子組件/積木構(gòu)件的信息更新數(shù)據(jù)結(jié) 構(gòu)。如果選擇要分離的子組件,則可以通過在步驟307中以遞歸方 式執(zhí)行分解過程(即,以選定的子組件五和剩余的模型充當(dāng)輸 入),然后,返回到步驟302,繼續(xù)迭代分解過程,查找下一個要與 其余的部件模型(即,模型ww-wa^;。)分離的積木構(gòu)件,對選定 的子組件進(jìn)行分解。當(dāng)沒有更多的積木構(gòu)件(也不是剩余的模型W的一部分)要從 模型中去除時,完成模型M的部分分解,直到剩余的模型見 在步驟308中,分解過程停止。因此, 一般而言,給定^^型M,如果M可以分解為N,那么, N可以組裝為M。換句話說,N階段的結(jié)構(gòu)是組裝步驟序列過程中 的適當(dāng)?shù)闹虚g的模型,當(dāng)(且僅當(dāng))完整的模型M可以被分解為N。用于生成參考圖14和15所描述的組裝序列的過程的實施例 可以通過下面的偽代碼來表達(dá)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,'在上面的偽代碼中,選擇"最佳可分離的"磚,對應(yīng)于在上面的步驟304中執(zhí)行的選擇,即,基于一組預(yù)定的選擇標(biāo)準(zhǔn)的選擇,例如, 上文所描述的一個或多個選擇標(biāo)準(zhǔn)。Error:Construction was not possibleReturnFalse47過程的實施例也可以通過下面的偽代碼來表達(dá);圖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的判 斷是作為單獨的函數(shù)實現(xiàn)的。圖i6a顯示了全過程,而圖16b顯示從參考圖14所描述的輸入步驟Sl和初始化步驟S2開始。 在步驟S3中,判斷集合Om力V/fl^ 是否是空的,即,是否已經(jīng)處 理完所有積木構(gòu)件。如果是這種情況,則執(zhí)行步驟S12,如上文所描 述的,生成組裝說明;否則,執(zhí)行步驟S4。在步驟S4中,作為集合Qm力V/fl&s的副本,生成積木構(gòu)件和 子組件的輔助集合C。在步驟S20中,判斷是否可以查找到有效的下一個組裝步驟 6。如果是這種情況,則通過向數(shù)據(jù)結(jié)構(gòu)附加識別的步驟6, 以及通過從Oz/i力V/tf/^數(shù)據(jù)結(jié)構(gòu)中去除對應(yīng)的積木構(gòu)件(或子組 件),更新和數(shù)據(jù)結(jié)構(gòu);然后,返回到步驟S3。 如果無法找到有效的組裝步驟,則過程結(jié)束,例如,帶有表示生成組 裝說明失敗的錯誤標(biāo)記或消息,如參考圖14所描述的。圖16a顯示了實現(xiàn)步驟S20的子過程的示例的流程圖首先, 判斷集合C是否是空的,即,是否已經(jīng)處理完所有候選項b。如果 是這種情況,則返回表示無法查找到有效的候選項b的值;否則, 執(zhí)行步驟S6。在步驟S6中,從集合C中選擇候選積木構(gòu)件6或候選子組 件,例如,如參考圖14的步驟S6所描述的。在步驟S7中,從接收到的模型的數(shù)字表示法生成部分分解序 列,直到可通過當(dāng)前組裝序列和選定的候選項b的聯(lián)合獲得 的剩余的模型,如參考圖14的步驟S7所描述的。如果步驟S7的分解過程成功確定分解序列,則返回表示過程成 功的值;否則,繼續(xù)執(zhí)行步驟SIO。在步驟S10中,從輔助的候選項的集合C中去除6進(jìn)行嘗 試,并返回到子過程的開始,判斷C是否是空的。在此示例中,函數(shù)"Deconstruct model Af down to7V"可以是上面 的示例中的相同函數(shù)。在參考圖14-16所描述的實施例中,帶有TV個積木構(gòu)件的模 型的組裝需要iV個組裝步驟, 一般而言,對于每一個組裝步驟,可49能必須進(jìn)行多次分解,以便發(fā)現(xiàn)有效的候選磚6。
可以按如下方式估計所需的迭代的數(shù)量iV塊磚的完整的組裝 說明大致需要iV個組裝步驟。每一個組裝步驟都可能需要大致iV/2 次分解。每一次分解都包括大致N個分解步驟。每一個分解步驟都 需要大致iV/2次磚加權(quán)。總起來,完整的組裝說明可能需要大致 (7V八"http://積木構(gòu)件的加權(quán)。這仍比純粹的反向跟蹤搜索所需的jca7V 加權(quán)好得多。類似地,參考圖2和3所描述的完整的分解過程需要 大致(7VA"/2次加4又。
權(quán)利要求
1.一種計算機(jī)實現(xiàn)的生成積木構(gòu)件模型的組裝說明的方法,所述積木構(gòu)件模型包括多個積木構(gòu)件,所述組裝說明表示組裝所述積木構(gòu)件模型的組裝步驟的順序,每一個組裝步驟都包括向所述積木構(gòu)件模型添加至少一個積木構(gòu)件;所述方法包括-根據(jù)所述積木構(gòu)件模型的數(shù)字表示法,確定用于至少部分地將所述積木構(gòu)件模型分解為若干個積木構(gòu)件的分解步驟的至少一個序列,每一個分解步驟都包括從所述積木構(gòu)件模型中去除至少一個積木構(gòu)件;-基于多個分解步驟中的至少一個步驟,確定組裝步驟順序中的至少一個組裝步驟。
2. 根據(jù)權(quán)利要求1所述的方法,其中,確定分解步驟的至少一個序列的過程包括確定用于將所述積木構(gòu)件模型分解為積木構(gòu)件的分解步驟的順序,每一個分解步驟都包括從所述積木構(gòu)件模型中去除至少一個積木構(gòu)件;并且其中,確定組裝步驟的順序的至少一個組裝步驟的過程包括顛倒確定的分解步驟的順序,以獲得組裝步驟的順序。
3. 根據(jù)權(quán)利要求1所述的方法,包括執(zhí)行一個迭代過程,其中,所述迭代過程的迭代包括-獲得由前一迭代產(chǎn)生的組裝步驟的順序,所述組裝步驟的順序產(chǎn)生第一部分模型;-確定隨后的組裝步驟,該步驟表示至少一個隨后的積木構(gòu)件與笫一部分模型的連接,導(dǎo)致產(chǎn)生第二部分模型。-判斷所述積木構(gòu)件模型是否可以通過導(dǎo)致產(chǎn)生第二部分模型的分解所述積木構(gòu)件模型的分解步驟的序列進(jìn)行分解;-如果判斷所述積木構(gòu)件模型可以通過導(dǎo)致產(chǎn)生第二部分模型的分解所述積木構(gòu)件模型的分解步驟的序列進(jìn)行分解,則將確定的隨后的組裝步驟附加到獲得的組裝步驟的順序中。
4. 根據(jù)權(quán)利要求1到3中任一權(quán)利要求所述的方法,其中,積木構(gòu)件是互相連接的。
5. 根據(jù)權(quán)利要求1到4中任一權(quán)利要求所述的方法,其中,確定分解步驟的順序的過程包括執(zhí)行一個迭代過程,其中,所述迭代過程的迭代包括-獲得從前一迭代產(chǎn)生的前一部分模型;-確定要從前一部分模型分離的導(dǎo)致產(chǎn)生新的部分模型的至少一個積木構(gòu)件。
6. 根據(jù)權(quán)利要求5所述的方法,其中,確定要從前一部分模型分離的至少一個積木構(gòu)件的過程包括-確定前一部分模型的一組候選子組件,每一個候選子組件都包括前一部分模型的相應(yīng)的互連的積木構(gòu)件;-根據(jù)第一組預(yù)定的選擇標(biāo)準(zhǔn),選擇單個積木構(gòu)件,或選擇導(dǎo)致產(chǎn)生新的部分模型的要從前一部分模型分離的確定的候選子組件集合中的一個。
7. 根據(jù)權(quán)利要求6所述的方法,其中,確定候選子組件的集合的過程包括根據(jù)第二組選擇標(biāo)準(zhǔn),選擇候選子組件。
8. 根據(jù)權(quán)利要求7所述的方法,其中,第二組選擇標(biāo)準(zhǔn)的至少一個包括確定一個或多個候選子組件與前一部分模型連接的連接強(qiáng)度。
9. 根據(jù)權(quán)利要求7或8所述的方法,其中,積木構(gòu)件沿著至少兩個組裝方向是可互連的;并且其中,所述第二組選擇標(biāo)準(zhǔn)中的至少一個包括確定前一部分模型中的組裝方向發(fā)生變化的一個或多個位置。
10. 根據(jù)權(quán)利要求7到9中任一權(quán)利要求所述的方法,其中,一個或多個積木構(gòu)件包括用于圍繞至少一個方向提供可活動連接的連接件;并且其中,所述第二組選擇標(biāo)準(zhǔn)的至少一個包括確定可移動地連接到前一部分模型的一個或多個子組件。
11. 根據(jù)權(quán)利要求6到10中任一權(quán)利要求所述的方法,進(jìn)一步包括在迭代過程中的一次迭代中確定被選擇去除的每一個子組件的分解步驟的序列。
12. 根據(jù)權(quán)利要求5到11中任一權(quán)利要求所述的方法,包括通過表示圖形的數(shù)據(jù)結(jié)構(gòu)來表示前一部分模型,所述圖形包括表示前一部分模型的相應(yīng)的積木構(gòu)件的節(jié)點,以及表示對應(yīng)的積木構(gòu)件之間的連接的連接相應(yīng)節(jié)點的邊。
13. 根據(jù)權(quán)利要求12所述的方法,其中,所述圖形的邊具有關(guān)聯(lián)的連接強(qiáng)度值,所述連接強(qiáng)度值表示對應(yīng)于由所述邊連接的節(jié)點的積木構(gòu)件之間的連接的連接強(qiáng)度。
14. 根據(jù)權(quán)利要求13所述的方法,其中,每一個積木構(gòu)件都包括一個或多個連接元件,用于與另 一個積木構(gòu)件的一個或多個對應(yīng)的連接元件嚙合,以在該積木構(gòu)件和另一個積木構(gòu)件之間提供連接,每一個連接元件都具有與它關(guān)聯(lián)的連接元件類別,每一個連接元件類別都具有與它關(guān)聯(lián)的連接強(qiáng)度;并且其中,所述方法包括根據(jù)至少有助于對應(yīng)的連接的連接元件的數(shù)量和相應(yīng)的類,確定對應(yīng)于兩個積木構(gòu)件之間的連接的邊的所述關(guān)聯(lián)的連接強(qiáng)度值。
15. 根據(jù)權(quán)利要求13或14所述的方法,其中,確定所述關(guān)聯(lián)的連接強(qiáng)度值的過程包括根據(jù)有助于對應(yīng)的連接的連接元件的數(shù)量和相應(yīng)的類,以及根據(jù)兩個積木構(gòu)件的體積,確定連接強(qiáng)度。
16. 根據(jù)權(quán)利要求12到15中任一權(quán)利要求所述的方法,包括執(zhí)行圖形劃分過程,以確定前一部分模型的一組候選子組件。
17. 根據(jù)權(quán)利要求12到16中任一權(quán)利要求所述的方法,其中,所迷圖形的邊具有表示對應(yīng)于由所述邊連接的節(jié)點的積木構(gòu)件之間的連接的組裝方向的關(guān)聯(lián)的值。
18. 根據(jù)權(quán)利要求12到17中任一權(quán)利要求所述的方法,包括識別所述圖形的 一 個或多個關(guān)節(jié)節(jié)點,以便確定前 一 部分模型的 一 組候選子組件。
19. 根據(jù)權(quán)利要求12到18中任一權(quán)利要求所述的方法,包括識別所述圖形的一個或多個關(guān)節(jié)節(jié)點對,以便確定前一部分模型的一組候選子組件。
20. 根據(jù)權(quán)利要求12到19中任一權(quán)利要求所述的方法,其中, 一個或多個積木構(gòu)件包括用于圍繞至少一個方向提供可活動連接的連接件;并且其中,所述圖形的節(jié)點和邊兩者中至少一個具有表示可活動連接存在的關(guān)聯(lián)的值。
21. 根據(jù)權(quán)利要求5到20中任一權(quán)利要求所述的方法,其中,確定要從前一部分模型分離的導(dǎo)致產(chǎn)生新的部分模型的至少一個積木構(gòu)件的過程包括,為積木構(gòu)件的子集和一組積木構(gòu)件的候選子組件中的至少一個計算一個或多個加權(quán)函數(shù);并基于計算出的加權(quán)函數(shù)的比較,選擇單個積木構(gòu)件和子組件兩者中的一個。
22. 根據(jù)權(quán)利要求21所述的方法,其中,所述一個或多個加權(quán)函數(shù)中的至少一個具有可能的結(jié)果的范圍,所述范圍包括表示分離的適當(dāng)性的程度的第一子范圍和表示分離的不適當(dāng)性的程度的第二子范圍。
23. 根據(jù)權(quán)利要求22所述的方法,其中,基于計算出的加權(quán)函數(shù)的比較而選擇單個積木構(gòu)件或子組件的過程包括根據(jù)一個或多個計算出的加權(quán)函數(shù)計算總權(quán)重;其中,計算所述總權(quán)重的過程包括,如果至少一個計算出的加權(quán)函數(shù)具有第二范圍中的結(jié)果,則向總權(quán)重指定一個第二范圍中的值。
24. 根據(jù)權(quán)利要求21到23中任一權(quán)利要求所述的方法,其中,每一個積木構(gòu)件都包括一個或多個連接元件,用于與另一個積木構(gòu)件的一個或多個對應(yīng)的連接元件嚙合;其中,每一個連接元件都定義了分離的方向,沿著該方向,積木構(gòu)件可與另一個積木構(gòu)件分離;并且其中,計算積木構(gòu)件或子組件的一個或多個加權(quán)函數(shù)中的第一個加權(quán)函數(shù)的過程包括,判斷積木構(gòu)件或子組件的連接到前一部分模型的一個或多個其他積木構(gòu)件的所有連接件的相應(yīng)的分離方向是否彼此平行。
25. 根據(jù)權(quán)利要求24所述的方法,其中,計算積木構(gòu)件或子組件的第一加權(quán)函數(shù)的過程進(jìn)一步包括,確定積木構(gòu)件或子組件與前一部分模型的任何其他積木構(gòu)件或子組件之間在分離方向的最小距離。
26. 根據(jù)權(quán)利要求24所述的方法,其中,計算積木構(gòu)件或子組件的第一加權(quán)函數(shù)的過程包括-確定積木構(gòu)件或子組件的伸展的幾何形狀,其中,所述伸展的幾何形狀在分離的方向伸展,以及-判斷伸展的幾何形狀是否與前一部分模型的任何其他積木構(gòu)件或子組件交叉。
27. 根據(jù)權(quán)利要求21到26中任一權(quán)利要求所述的方法,其中,計算積木構(gòu)件或子組件的一個或多個加權(quán)函數(shù)中的第二加權(quán)函數(shù)的過程進(jìn)一步包括,判斷積木構(gòu)件或子組件是否是關(guān)節(jié)積木構(gòu)件或子組件。
28. 根據(jù)權(quán)利要求21到27中任一權(quán)利要求所述的方法,其中,計算積木構(gòu)件或子組件的一個或多個加權(quán)函數(shù)中的第三加權(quán)函數(shù)的過程進(jìn)一步包括,判斷積木構(gòu)件或子組件是否是積木構(gòu)件或子組件的關(guān)節(jié)對的一部分。
29. 根據(jù)權(quán)利要求21到28中任一權(quán)利要求所述的方法,其中,積木構(gòu)件或子組件的一個或多個加權(quán)函數(shù)中的第四加權(quán)函數(shù)是隨著積木構(gòu)件或子組件所連接到的其他積木構(gòu)件的數(shù)量減小的函數(shù)。
30. 根據(jù)權(quán)利要求21到29中任一權(quán)利要求所述的方法,其中,所述一個或多個加權(quán)函數(shù)中的第五加權(quán)函數(shù)是子組件的積木構(gòu)件之間的連接的連接強(qiáng)度的函數(shù)。
31. 根據(jù)權(quán)利要求30所述的方法,其中,計算第五加權(quán)函數(shù)的過程包括確定子組件的互相連接的積木構(gòu)件之間的最弱的連接強(qiáng)度,并且其中,第五加權(quán)函數(shù)是確定的最弱的連接強(qiáng)度的遞減函數(shù)。
32. 根據(jù)權(quán)利要求21到31中任一權(quán)利要求所述的方法,其中,所述一個或多,個加權(quán)函數(shù)中的第六加權(quán)函數(shù)是子組件的積木構(gòu)件與前一部分模型的其他積木構(gòu)件的連接的連接強(qiáng)度的函數(shù)。
33. 根據(jù)權(quán)利要求32所述的方法,其中,計算所述第六加權(quán)函數(shù)的過程包括確定子組件的積木構(gòu)件和前一部分模型的未包括在所述子組件內(nèi)的一個或多個其他積木構(gòu)件之間的最強(qiáng)的連接強(qiáng)度,并且其中,所述第六加權(quán)函數(shù)是所述確定的最強(qiáng)的連接強(qiáng)度的遞減函數(shù)。
34. 根據(jù)權(quán)利要求21到33中任一權(quán)利要求所述的方法,其中,積木構(gòu)件或子組件的所述一個或多個加權(quán)函數(shù)中的第七加權(quán)函數(shù)是積木構(gòu)件或子組件的沿著相對于坐標(biāo)系統(tǒng)的預(yù)定方向的位置坐標(biāo)的函數(shù)。
35. 根據(jù)權(quán)利要求21到34中任一權(quán)利要求所述的方法,其中,積木構(gòu)件和子組件的所述一個和多個加權(quán)函數(shù)中的第八加權(quán)函數(shù)是至少積木構(gòu)件和子組件的屬性和在所述迭代過程的前一迭代中分離的積木構(gòu)件或子組件的屬性的函數(shù)。
36. 根據(jù)權(quán)利要求35所述的方法,其中,所述第八加權(quán)函數(shù)是積木構(gòu)件或子組件和在所述迭代過程的前一迭代中分離的積木構(gòu)件或子組件之間的距離的函數(shù)。
37. 根據(jù)權(quán)利要求35或36所述的方法,其中,所述第八加權(quán)函數(shù)是至少表示積木構(gòu)件或子組件和在所述迭代過程的前一迭代中度量,以及與積木構(gòu)件或子組件和在所述迭代過程的前一迭代中分離的積木構(gòu)件或子組件關(guān)聯(lián)的一個或多個屬性的比較的函數(shù)。
38. 根據(jù)權(quán)利要求1到37中任一權(quán)利要求所述的方法,其中,所述數(shù)字表示法包括每一個積木構(gòu)件相對于預(yù)定坐標(biāo)系統(tǒng)的相應(yīng)的位置坐標(biāo)。
39. 根據(jù)權(quán)利要求1到38中任一權(quán)利要求所述的方法,進(jìn)一步包括通過計算機(jī)實現(xiàn)的用于交互地組裝虛擬積木構(gòu)件模型的組裝環(huán)境,生成所述積木構(gòu)件模型的所述數(shù)字表示法。
40. 根據(jù)權(quán)利要求1到39中任一權(quán)利要求所述的方法,包括生成包括初始部分模型的部分模型的對應(yīng)的序列、增量式部分模型的序列、以及完整的模型的圖形表示的序列;其中,每一個增量式部分模型都包括序列的緊前面的增量式部分模型的所有積木構(gòu)件,以及來自多個積木構(gòu)件的預(yù)定數(shù)量的附加積木構(gòu)件,其中,所述附加積木構(gòu)件是由確定的組裝步驟的序列確定的。
41. 根據(jù)權(quán)利要求40所述的方法,進(jìn)一步包括提供用戶界面,便于對生成的圖形表示進(jìn)行用戶控制的處理。
42. —種數(shù)據(jù)處理系統(tǒng),在其上存儲了程序代碼裝置,當(dāng)所述程序代碼裝置在所述數(shù)據(jù)處理系統(tǒng)上執(zhí)行時,用于使數(shù)據(jù)處理系統(tǒng)執(zhí)行根據(jù)權(quán)利要求1到41中任一權(quán)利要求所述的方法的步驟。
43. —種計算機(jī)程序產(chǎn)品,包括程序代碼裝置,當(dāng)所述程序代碼裝置在所述數(shù)據(jù)處理系統(tǒng)上執(zhí)行時,用于使所述數(shù)據(jù)處理系統(tǒng)執(zhí)行根據(jù)權(quán)利要求1到41中任一權(quán)利要求所述的方法的步驟。
44. 根據(jù)權(quán)利要求43所述的計算機(jī)程序產(chǎn)品,包括在其上存儲了所述程序代碼裝置的計算機(jī)可讀取的介質(zhì)。
45. 在載波中實現(xiàn)的并表示指令序列的計算機(jī)數(shù)據(jù)信號,當(dāng)由數(shù)據(jù)處理系統(tǒng)執(zhí)行指令序列時,使所述數(shù)據(jù)處理系統(tǒng)執(zhí)行根據(jù)權(quán)利要求1到41中任一權(quán)利要求所述的方法的步驟。
全文摘要
計算機(jī)實現(xiàn)的生成積木構(gòu)件模型的組裝說明的方法,該模型包括多個積木構(gòu)件,組裝說明表示建造積木構(gòu)件模型的組裝步驟的順序,每一個組裝步驟都包括向積木構(gòu)件模型中添加至少一個積木構(gòu)件。該方法包括,從積木構(gòu)件模型的數(shù)字表示法,確定將積木構(gòu)件模型分解為若干個積木構(gòu)件的分解步驟的順序,每一個分解步驟都包括從積木構(gòu)件模型中去除至少一個積木構(gòu)件;并顛倒確定的分解步驟的順序,以獲得組裝步驟的順序。
文檔編號G06T17/40GK101675458SQ200880014715
公開日2010年3月17日 申請日期2008年3月14日 優(yōu)先權(quán)日2007年3月16日
發(fā)明者J·M·厄恩斯特文, J·S·雅各布森, J·阿勒瑞利, O·J·克里斯滕森 申請人:樂高公司