積木構件模型的組裝說明的自動生成的制作方法

            文檔序號:6477087閱讀:1981來源:國知局
            專利名稱:積木構件模型的組裝說明的自動生成的制作方法
            技術領域
            本發明涉及積木構件模型的組裝說明的生成。

            發明內容
            有各種已知的機械結構玩具集的模型化概念類型。具體來說,模 塊化或半模塊化概念非常普遍,因為它們提供有趣的并具有挑戰性的 玩的體驗。通常,這些概念提供一組預先制造的積木構件,可以通過 預先制造的構件的連接元件,以某種預定的方式彼此互連起來。預先 制造的積木構件類似于適用于完成特定的模型化任務的已知的對象。 如此,例如,在建造房屋的模型時,積木構件可以類似于墻磚、屋瓦、 門,以及窗戶。如此,選擇積木構件的目的是,與每次要制作新模型 時都對房屋的所有細節進行定義的情況相比,建造房屋的模型涉及的 工作量顯著縮小。然而,在建造房屋或另一個對象的完全的自由度與 建造模型的簡單性之間是相互對立的。
            例如,名為LEGO的名下的玩具積木套裝合包括多種不同類型 的可互連的積木構件,具有凸起部和對應的凹槽作為連接構件。根據 規則的網格圖案,放置連接構件,從而,在積木構件之間可以產生各 種互連。
            通常,這樣的玩具積木套裝合包括一組適合于創建一個或多個積 木構件模型的一組積木構件,例如,動物、機器人,或另一種生物、 汽車、飛機、宇宙飛船、建筑物等等。通常,積木套裝進一步包括打 印的組裝說明或組裝說明,說明了如何從積木構件建造某一模型。不 用說,這樣的積木套裝的一個有趣的特點是,它們會激發兒童制作他 們自己的才莫型。
            通常,玩具積木套裝中包含的組裝包括一步一步地說明了如何以及按什么順序向模型添加積木構件。這樣的組裝說明的優點是,易于 操作,甚至對于兒童也是如此,無需具有豐富的玩積木的經驗,和/ 或無需閱讀技巧。
            一般而言,模型的組裝說明可以被視為組裝積木構件的步驟和分 步驟的順序。序列從一個或多個初始積木構件開始,隨著一系列步驟, 發展成為完全組裝好的模型的結構。在每一個步驟中,添加了單一積 木構件或者積木構件的子組件。對當前描述來說,術語"子組件"是指 積木構件模型的互連的積木構件的子集。如此,添加子組件而不是單
            個積木構件,可能會涉及向主組裝說明中添加該子組件的附屬組裝說 明。對當前描述來說,這樣的附屬組裝說明也叫做"分步驟"。如此, 步驟的序列一般可以表示為步驟的分支樹,每一個分支都包含附屬組 裝說明。
            以前,這樣的組裝說明是手動生成的,例如,通過手動確定合理
            的組裝步驟,在CAD系統中繪制對應的說明,最后,打印如此生成 的說明。盡管這樣的組裝說明是高質量的,即,易于操作,但是,上 面的制造過程也具有缺點它們需要的技能較高,并且需要較多的人 工。結果,通常只對于積木構件的制造商設計的積木構件模型,存在 組裝說明。具體來說,上面的采用現有技術的用于生成組裝說明的方 法不適合于希望為他們自己的模型產生組裝說明的兒童,利用兒童自 己的組裝說明,使得孩子們與他們的朋友共享他們的模型。
            最近,組裝說明是以電子方式生成的,而不是以印刷的形式生成。 具體來說,提供了動畫形式的組裝說明,比較復雜的組裝步驟被制成 了動畫。然而,這樣的組裝說明的制作,仍涉及由熟練的設計者設計 和繪制組裝步驟/制作其動畫。
            在諸如LEGO系統之類的復雜系統中,模型的可能的組裝說明 的數量隨著模型中的積木構件的數量按指數速率增長。因此,從給定 模型的幾乎無限數量的可能的組裝說明中確定高質量的說明集,對于 自動的組裝說明過程來說,是個問題。如此,需要提供一個自動化的 過程,甚至對于復雜的模型,生成切實可行的,操作簡便的說明。進
            10一步需要提供這樣的過程,在合理的計算硬件上在合理的時間內生成 組裝說明。
            還進一步需要提供用于生成適合于希望為他們自己的模型產生 組裝說明的兒童的組裝說明的方法,這些組裝說明可使孩子們與他們 的朋友共享他們的模型,并進一步改善玩的體驗。具體來說,需要提 供幾乎不需要用戶交互和輸入的輕松地對用戶可用的方法。
            某些研究的主題也討論了有效的易于理解的一步接一步的組裝 說 明 的 i殳 計 。 從
            http:〃graphics.stanford.edu/papers/assemblyjnstructioiis/檢索至!)的 M. Agrawala等人所著的因特網出版物"Designing Effective Step-by-Step Assembly Instructions"描述了基于認識心理學的有效的 組裝說明的設計原則。該文進一步說明基于有關要組裝的每一個對象 的信息,組件朝向和用于進行圖形呈現的攝影角度,分組信息,有關 緊固件的信息,以及部件的意義,對稱性,以及有關對組件的順序的 約束,來生成組裝說明的計算機化系統。基于此輸入,系統基于大量 的搜索算法,并考慮給定的約束,計算組裝步驟的序列。上面的采用 現有技術的系統的問題是,從計算角度來看,代價大,需要復雜的輸 入數據,如此,需要用戶有高度的抽象思維。
            已公開的國際專利申請WO 2005/124696說明了一種為虛擬模 型生成組裝說明的自動化過程,其中,組裝說明利用在虛擬組裝環境 中組裝虛擬模型的過程中用戶所使用的組裝步驟的順序確定的步驟 的順序。盡管此采用現有技術的方法提供了易于使用的自動化過程, 但是,提高自動地生成的組裝說明的質量仍是一個問題。
            這里說明了 一種計算機實現的生成積木構件模型的組裝說明的 方法,模型包括多個積木構件,組裝說明表示組裝積木構件模型的組 裝步驟的順序,每一個組裝步驟都包括向積木構件模型添加至少一個 積木構件;該方法包括
            -從積木構件模型的數字表示法,確定用于至少部分地將積木 構件模型分解為若千個積木構件的分解步驟的至少一個序列,每一個分解步驟都包括從積木構件模型中去除至少 一個積木構件;
            -基于多個分解步驟中的至少一個步驟,確定組裝步驟序列中 的至少一個組裝步驟。
            因此,認識到,通過確定分解步驟的一個或多個序列,可以有效 地確定組裝步驟的序列。
            模型的分解可以被視為分解積木構件的步驟和分步驟的序列/迭 代過程。序列從完整的模型開始,并按照一系列步驟進行。在完整的 分解中,過程持續進行,直到所有積木構件都與模型分離,而在部分 分解中,當只有預定的殘余部分模型剩余時,過程結束。在每一個步 驟中,單一積木構件或者積木構件的子組件被分離。如此,分離子組 件而不是單個積木構件,可能會涉及與主分解關聯的該子組件的附屬 分解。這樣的附屬分解也叫做"子步驟"。如此,類似于組裝,分解過 程的步驟的序列一般是步驟的分支樹,每一個分支都包含附屬分解。
            當可以知道如何分解時,此信息可以用于生成組裝序列的過程 中。因此,可以響應確定分解序列的步驟,確定組裝步驟。此外,利 用合理的計算資源搜索滿足某些選擇標準的分解序列是可能的,并可 以產生高質量的組裝說明。
            進一步知道,通過此從計算上來說簡單的方法生成的組裝說明對
            用戶來說易于理解,特別是兒童。
            此外,因為向組裝說明的唯一輸入是積木構件模型的數字表示 法,例如,如在虛擬模型生成過程中記錄的,組裝說明對于用戶來說 易于生成,無需用戶擁有設計技能或有關幾何形狀、約束等等的抽象 知識。此外,組裝說明的生成還與用戶實際組裝虛擬模型的順序無關。 這可能是有益的,因為虛擬組裝環境可以允許組裝步驟以對于物理的 真實世界的模型可能難以或者甚至不可能執行的順序來執行。
            在某些實施例中,該方法包括
            -從積木構件模型的數字表示法,確定用于將積木構件模型分解 為若干個積木構件的分解步驟的順序,每一個分解步驟都包括從積木 構件模型中去除至少一個積木構件;
            12-顛倒確定的分解步驟的順序,以獲得組裝步驟的順序。 如果可以知道如何分解,則可以顛倒,產生組裝說明,就如通過 逆方向執行組裝說明,可以分解模型那樣。因此,通過確定分解步驟 的一個或多個序列,然后顛倒分解步驟的順序,獲得組裝步驟的序列, 可以有效地確定組裝步驟的序列。優點是,此過程只需要生成單一的 分解序列。
            在備選實施例中,該方法包括執行一個迭代過程,其中,迭代過
            程的迭代包括
            -獲得由前一迭代產生的組裝步驟的順序,組裝步驟的順序產 生第一部分模型;
            -確定隨后的組裝步驟,該步驟表示至少一個隨后的積木構件 與第一部分模型的連接,導致產生第二部分模型。
            -判斷積木構件模型是否可以通過用于分解積木構件模型的導 致產生第二部分模型的分解步驟的序列進行分解;
            -如果判斷積木構件模型可以通過用于分解積木構件模型的導 致產生第二部分模型的分解步驟的序列進行分解,則將確定的隨后的 組裝步驟附加到獲得的組裝步驟的順序中。
            因此,在此實施例中,確定每一個組裝步驟,以便可以通過完整 的模型的部分分解,獲得部分模型。因此,通過組裝過程,可以提供 用于生成組裝說明的高效的過程,在每一個組裝步驟中,模擬從完整 的模型直到當前組裝階段的分解。
            此實施例是進行組裝的(從磚開始,以完整的模型結束),而不 是完全基于分解。因為這是用戶考慮組裝說明的比較直觀的方式,它 比較易于使用,功能強,允許用戶與生成組裝說明的過程進行交互。 用戶交互的一個示例可以是對任何建議的磚塊提出反對意見,并獲取 替代的建議。事實上,此簡單的交互可使用戶在非常短的時間內生成 特別高質量的組裝說明,需要的用戶交互極少。此外,生成器還可以 確保,絕不會違犯硬約束,因此,無論用戶反對什么,只作出合理的 建議。相應地,在一個實施例中,確定隨后的組裝步驟的步驟可以包括 接收用戶輸入,例如,以建議、批準,以及拒絕組裝步驟這幾項中的 至少一個的形式存在的用戶輸入。
            判斷積木構件模型是否可以通過用于分解積木構件模型的導致 產生第二部分模型的分解步驟的序列進行分解的步驟可以包括判斷 積木構件模型是否可以通過分解步驟的序列進行分解的步驟,其中, 每一個分解步驟是通過一個或多個預定的選擇標準集合選擇的。因 此,提供了可以提供高質量組裝說明的高效的方法。
            在某些實施例中,確定分解步驟的順序的過程包括執行一個迭代
            過程,其中,迭代過程的迭代包括
            -獲得從前一迭代產生的前一部分模型;
            -確定要從前一部分模型分離的導致產生新的部分模型的至少 一個積木構件。
            因此,從完整的模型開始,通過在每一次迭代中去除一個或多個 積木構件,生成部分模型的序列。鑒于搜索高質量的組裝說明一般需 要反向跟蹤,如此,從計算上來說,代價非常大,對于比較大的模型, 甚至代價非常驚人,可以通過一遍算法(對計算硬件的要求低得多), 實現組裝分解。
            一般而言,在復雜的積木系統中,如在LEGO的名下銷售的玩 具積木系統中,某些模型也許不可能一個積木構件一個積木構件地分 解,因為某些積木構件可能彼此鎖住,而無法分離為單個積木構件。 然而, 一般而言,可以通過在每一個步驟中去除單個積木構件或積木 構件的子組件,分離所有模型。
            相應地,在某些實施例中,確定至少一個積木構件的過程包括
            -確定前一部分模型的一組候選子組件,每一個候選子組件都 包括前一部分模型的相應的互連的積木構件;
            -根據第一組預定的選擇標準,選擇導致產生新的部分模型的 要從前一部分模型分離的單個積木構件或確定的候選子組件集合中 的一個。
            14因此,在某些實施例中,對于分解序列,子組件被當做偽積木構 件。然而,積木構件模型的可能的子組件的數量一般隨著模型中的積 木構件的數量按指數速率增長。因此,甚至對于中等大小的模型,給 定某些條件,搜索所有可能的子組件并選擇要分離的一個子組件的自 頂向下的方法,從計算上來說,代價非常大,盡管當僅僅考慮單個積 木構件的去除時這樣的方法可能是可行的。
            在某些實施例中,這里所描述的方法將上面的自頂向下的方法與 用于生成要接受自頂向下搜索的候選子組件的自底向上的方法相結 合。候選子組件的生成可以根據一組一個或多個生成器子過程或第二 組選擇標準來執行,如此,產生模型的所有可能的子組件的集合的候 選子組件的子集。因此,在執行從計算上來說代價大的自頂向下的方 法之前,使用自底向上的方法修剪搜索空間。
            上面的對自頂向下的搜索的分割以及自底向上的生成導致從計 算上來說代價低一些,編程起來更加容易,并輕松地,例如,通過添 加用于生成候選子組件的額外的生成器子過程來進行擴展。
            此外,上面的方法的控制力也得到改善,因為它提供了用于控制 要生成的候選子組件的數量的機制,如此,提供了用于協調計算成本 與所產生的組裝說明的質量并針對任何給定硬件和時間要求調節候 選子組件的池的大小的機制。
            在某些實施例中,第二組選擇標準的至少一個包括確定一個或多 個候選子組件與前一部分模型連接的連接強度。因此,根據與前一部 分模型的其余部分的連接的強度,生成/選擇子組件。結果,子組件的 此選擇/生成策略導致產生特別高質量的組裝說明。
            用于有效地選擇候選子組件的額外的或備選的選擇規則包括確 定組裝方向的變化和/或可移動地連接到前一部分模型(例如,通過鉸 鏈或接頭、滑塊等等)的子組件。
            在某些實施例中,方法包括通過表示圖形(例如,無向圖)的數 據結構來表示前一部分模型,包括表示前一部分模型的相應的積木構 件的節點,以及表示對應的積木構件之間的連接的連接相應節點的邊。通過將前一部分模型表示為圖形,可以使用從圖論已知的圖形劃
            分技術及其他技術(參見,例如,Jonathan L. Gross和Jay Yellen 所著的"Graph Theory and Its Applications", Chapman & Hall/CRC, 第二版,2006)來有效地識別適當的候選子組件,例如,通過識別圖 形中的關節節點或關節對,以便識別通過單一關節積木構件或通過一 對積木構件連接到前一部分模型的其余部分的子組件。因此,互連的 積木構件的模型對應于連接圖,子組件對應于連接的子圖。
            圖形的節點和/或邊可以具有與它們關聯的一個或多個相應的屬 性,分別對應于對應的積木構件和連接的屬性。例如,圖形的節點可 以具有一個或多個下面的屬性積木構件類型、積木構件體積、積木 構件形狀/幾何形狀、積木構件體積質量、積木構件的邊界框、積木構 件在坐標系統中的位置、與積木構件關聯的主組裝方向、積木構件的 連接元件的位置、類型和/或方向等等。類似地,圖形的邊可以具有與 它們關聯的一個或多個下面的屬性連接類型、連接強度、連接的方 向等等。當圖形的邊具有與它們關聯的相應的權重/值(表示連接的相 應的連接強度)時,可以使用特別高效的圖形劃分法,如用于查找最 少的切斷的方法,來獲得高質量的組裝說明。
            在某些實施例中,每一個積木構件都包括一個或多個連接元件, 用于與另 一個積木構件的一個或多個對應的連接元件嚙合,以在該積 木構件和另一個積木構件之間提供連接。這樣的連接元件可以對積木 構件的可能的放置施加進一步的限制,因為連接只在兼容的連接元件 之間才可以進行,例如,當置于相對于彼此的正確位置時,裝入對應 的凹槽中的突出部。每一個連接元件都可以具有與它關聯的連接元件 類別,每一個連接元件類別都具有與它關聯的連接強度。在某些實施 例中,方法包括根據有助于對應的連接的連接元件的數量和相應的 類,確定對應于兩個積木構件之間的連接的邊的所述關聯的連接強度 值。因此,提供了用于計算/估計積木構件模型中的連接強度的高效而 準確的方法。
            在某些實施例中,確定所述關聯的連接強度值的過程包括根據有助于對應的連接的連接元件的數量和相應的類,以及根據兩個積木構 件的體積,確定連接強度值,從而,不僅考慮連接強度,而且還考慮 積木構件的大小,如此,積木構件在組裝過程中是否易于固定和操縱。 在某些實施例中,確定要從前一部分模型分離的導致產生新的部 分模型的至少一個積木構件的過程包括為積木構件的子集和一組積
            木構件的候選子組件中的至少一個計算一個或多個加權函數;并基于 計算出的加權函數的比較,選擇單個積木構件和子組件兩者中的一 個。因此,提供了選擇過程的可擴展的并且靈活的框架,可以通過備 選的或附加的加權函數修改或擴展,可以根據它們的重要性/優先級, 為不同選擇標準賦予相對于彼此的權重。加權函數可以包括一個或多 個積木構件的一個或多個屬性的任何適當的函數。
            在某些實施例中, 一個或多個加權函數中的至少一個具有可能的 結果的范圍,包括表示分離的適當性的程度的第一子范圍和表示分離 的不適當性的程度的第二子范圍,從而,允許兩者向積木構件和/或子 組件賦予正的和負的4又重。
            相應地,在某些實施例中,基于計算出的加權函數的比較而選擇 單個積木構件或子組件的過程包括根據一個或多個計算出的加權函 數計算總權重;其中,計算總權重的過程包括,如果至少一個計算出 的加權函數具有第二范圍中的結果,則向總權重指定一個第二范圍中 的值,從而提供否決策略,防止不滿足某些條件的積木構件和/或子組 件被分離,盡管它們可能從其他加權函數獲得高權重。
            被發現產生高質量組裝說明的加權函數的示例包括判斷積木構 件或子組件在物理上是否可分離的或判斷所述積木構件或子組件的 分離方向是否,例如,被模型的其他部分堵塞的加權函數。例如,可 以通過計算積木構件或子組件的伸展的幾何形狀,有效地計算這樣的 加權函數。
            這樣的加權函數的另 一個示例包括向包含在積木構件或子組件 的關節對中的關節積木構件和/或積木構件賦予較低的權重的加權函 數,以便避免將模型分離為分離的部分模型。當加權函數包括隨著連
            17接到的其他積木構件或子組件(直接地或通過其他積木構件),確保 小的不相交的部分快速地從模型去除(如果它們發生的話)。
            當其中一個加權函數是子組件的積木構件之間的連接的連接強 度的函數時,可以獲得從其余模型輕松地分離的積木構件和子組件。 具體來說,已經發現,加權函數向具有較強的內部連接性和較弱的外 部連接性的積木構件和子組件賦予較高的權重,產生高質量的組裝說 明。此外,在這樣的加權函數中,連接性強度可以作為相對于互相連 接的積木構件或子組件的體積的強度來計算。
            適當的加權函數的進一步的示例包括這樣的加權函數至少積木 構件或子組件的屬性和在迭代過程的前一迭代中分離的積木構件或 子組件的屬性的函數,如此,可以有利于去除對稱地放置的積木構件 或子組件,與另一個積木構件或子組件距離很近的積木構件或子組件 等等。這樣的屬性的示例包括積木構件相對于坐標系統的位置,積木 構件類型等等。在某些實施例中,加權函數還可以進一步是在前面的 迭代中去除的一個以上的積木構件的屬性的函數。例如,當比較部分 才莫型時,可以給一個或多個以前的迭代賦予不同的權重;例如,可以 給最新的迭代賦予比以前的迭代較高的權重。
            這里所描述的方法的實施例接收積木構件模型的數字表示法。這
            樣的數字表示法可以通過任何適當的過程提供,例如,計算機實現的 組裝環境,和/或用于從, 一個或多個圖像(如物理模型或另一個對象 的圖像)生成積木構件模型的數字表示法的過程。在美國7,092,899 中描述了一個這樣的過程。在此過程中,從CAD模型或一組三維物 體的二維圖像,創建物體的積木構件模型的數字表示法。數字表示法
            的類型、位置和/或互連等等的信息。數字表示法的實施例還可以進一 步包括有關整體模型屬性、單個積木構件的屬性(如積木構件類型、 顏色、大小、邊界框等等)的信息。
            計算機實現的用于交互地組裝虛擬積木構件模型的組裝環境,可 以包括計算機程序,當該計算機程序在計算機上執行時,提供圖形用戶界面,供用戶操縱虛擬積木構件模型,包括這樣的操作,如選擇積
            木構件、向模型中添加積木構件、從模型中去除積木構件,改變積木
            構件的朝向,改變積木構件的屬性,例如,顏色、類型、大小等等,
            查看模型、保存模型的數字表示法,加載以前保存的模型的數字表示
            法等等。虛擬積木構件可以是對應的物理積木構件的虛擬對應物,即,
            具有對應的相對大小、形狀、顏色等等。
            計算機實現的組裝環境可以被配置為實施施加于積木構件相對
            于彼此的相對位置的預定的限制集合,如積木構件之間的沖突檢測。 例如,限制對應于適用于對應的物理積木構件的對應的限制,從而確 保也可以從對應的物理積木構件組裝虛擬積木構件模型。因此,優點 是,該方法確保了生成的組裝說明實際是可實現的,即,產生所希望 的結果。
            在某些實施例中,組裝說明是作為諸如圖像之類的圖形表示的序 列生成的。每一個圖形表示都可以包括部分積木構件模型(也被稱為 部分模型)的圖形呈現,從而,提供操作簡便的組裝說明,其中,每 一個圖形表示都對應于向模型中添加預定數量的積木構件的組裝過 程中的步驟。如此,構成確定的組裝序列的所有部分模型或只有部分 模型的一個子集可以包括在最后的組裝說明中,因為組裝序列的一個 或多個步驟可以合并到整個組裝說明中。用戶可以輕松地通過比較兩 個連續的圖形表示,確定在每一個步驟中添加哪些積木構件以及如何 添加它們。
            當方法進一步包括提供用于查看圖形表示的用戶界面(其中,用 戶界面優選情況下便于對生成的圖形表示的用戶控制的處理)時,可 以方便地在計算機上查看積木構件模型的數字表示法。具體來說,由 于模型的數字表示法包括生成組裝說明所需的所有信息,因此,組裝 說明可以方便地從一臺計算機傳遞到另一臺計算機,例如,存儲在存
            儲介質上,通過通信網絡發送,例如,作為電子郵件連結,在Web服 務器上上傳等等。如此,數字表示法的接收者可以查看圖形表示,對 它進行操縱,例如,改變視角、縮放、更改查看選項,和/或類似的操作。因此,用戶可以輕松地將他們的組裝說明傳輸給朋友。再一個優 點是,數字表示法不需要包括組裝說明的每一個步驟的圖形呈現,從 而,可以使數字表示法的文件大小小一些。此外,由于數字表示法可 以包括所有相關的模型信息,因此,模型的接收者甚至可以在生成組 裝說明之前對模型進行修改。
            在某些實施例中,可以以預定的文件格式生成組裝說明,從而, 可以生成打印的和/或電子的組裝說明。適當的文件格式的示例包括
            HTML、 XML、 BMP、 TIFF等等。
            在某些實施例中,在按步驟的說明的一個步驟中添加的附加積木 構件的預定數量是用戶可選擇的,從而可使用戶在非常詳細的一步一 步的說明(其中,例如,每一個步驟都對應于單個新的積木構件的放 置)和非常簡潔的說明(其中,每一個步驟都對應于較大數量的新放 置的積木構件)之間進行選擇。在某些實施例中,在每一個步驟中添 加的積木構件的數量在所有步驟中都是相同的。在其他實施例中,添 加的附加積木構件的數量,對于組裝說明的不同步驟,可以不同。例 如,對于每一個步驟,可以由用戶控制步驟的大小,從而,對于組裝 的比較復雜的部分,可以生成比較細微的說明。
            本發明可以以不同的方式實現,包括上文和下文所描述的方法、 數據處理系統,以及進一步的產品裝置,每一個都會產生與首先提及 方法有關的優點和優點,每一個都具有對應于與首先提及的方法有關 的優選實施例的一個或多個優選實施例,并在相關的從屬權利要求中 進行了說明。
            具體來說,上文和下文所描述的方法的特點可以以軟件來實現, 并在通過執行計算機可執行的指令所導致的數據處理系統或其他處 理裝置上實施。指令可以是從存儲介質或通過計算機網絡從另一臺計 算機加載到諸如RAM之類的存儲器中的程序代碼裝置。或者,所描
            來實現。
            相應地,本發明進一步涉及用于執行上文和下文所描述的方法的
            20數據處理系統。本發明進一步涉及一種計算機程序,包括程序代碼裝 置,當所述程序在計算機上運行時,用于執行上文和下文所描述的方 法的所有步驟。本發明進一步涉及一種計算機程序產品,包括程序代 碼裝置,當所述計算機程序產品在計算機上運行時,用于執行上文和 下文所描述的方法。程序代碼裝置可以存儲在計算機可讀取的介質上 和/或作為傳播的數據信號來實現。
            在某些實施例中,計算機程序包括用于生成積木構件模型的數字
            表示法的第一軟件組件;以及用于從生成的數字表示法生成組裝說明 的第二軟件組件,從而提供用于讀取模型的數字表示法并呈現對應的 組裝說明的單獨的軟件組件。因此,當傳遞組裝說明時,用戶可以與 第二軟件組件一起傳遞數字表示法,從而,提供組裝說明的簡單的獨
            立的表示法,可以由接收者查看,無需另外的軟件。然而,應了解, 兩個過程,即,生成模型的數字表示法和生成組裝說明,可以集成在 單一的軟件組件中。


            下面利用優選實施例并參考圖形,比較全面地說明了本發明,其

            圖la-b顯示了生成積木構件模型的組裝說明的數據處理系統;
            圖2顯示了總的組裝說明生成的實施例的流程圖3顯示了用于生成分解步驟的序列的過程的實施例的流程
            圖4顯示了積木構件以及其連接元件的示例;
            圖5顯示了以數字方式表示積木構件模型的數據結構的實施
            例;
            圖6顯示了組裝說明應用程序的圖形用戶界面的實施例;
            圖7作為無向圖顯示了積木構件模型的表示;
            圖8-13顯示了選擇標準的實施例;
            圖14顯示了總的組裝說明生成的另一個實施例的流程圖;圖15顯示了用于生成部分分解的分解步驟的序列的過程的實 施例的流程圖16顯示了總的組裝說明生成的另一個實施例的流程圖。
            具體實施例方式
            圖la-b顯示了用于生成和操縱幾何對象的計算機可讀取的模 型的數據處理系統。
            圖la顯示了計算機系統的示例的示意圖。計算機系統包括適當 地編程的計算機101,例如,個人計算機,包括顯示器120、鍵盤121 電腦鼠標122和/或另一種指示設備,如觸摸板、跟蹤球、光筆、觸 摸屏等等。
            101表示的計算機系統可以從積木構件模型的數字表示法生成 組裝說明。計算機系統101還可以進一步促進設計、存儲、操縱, 以及共享虛擬積木構件模型以及如這里所描述的生成組裝說明。可以 使用計算機系統101作為獨立系統或作為客戶端/服務器系統中的客 戶端。在某些實施例中,計算機系統進一步包括用于將計算機與計算 機網絡(例如,因特網)連接的一個或多個接口。
            圖lb顯示了用于生成積木構件模型的組裝說明的數據處理系 統的方框圖。計算機101包括存儲器102,存儲器102可以部分地 作為易失性,部分地作為非易失性存儲器裝置來實現,例如,隨機存 取存儲器(RAM)和硬盤。存儲器上存儲了模型代碼解釋器107、模 型代碼生成器108、 UI事件處理程序109、模型化應用程序110, 以及組裝說明生成器113,每一個都可由中央處理單元103執行。 此外,存儲器上還存儲了模型數據111,即,代表積木構件模型的數 字表示法的一組數據結構。
            代碼解釋器107可以讀取和解釋定義了模型的數字表示法,例 如,代表模型的積木構件的數據結構的代碼。在優選實施例中,代碼 解釋器可以讀取模型的數字表示法,并將這樣的模型轉換為用于在計 算機顯示器上呈現的已知的圖形格式,優選情況下,模型的3D呈現。
            22UI事件處理程序109可以將用戶的與用戶界面的交互轉換為可以 由代碼生成器108識別的適當的用戶命令。 一組可能的和可識別的 命4、可以包括從元件的庫獲取積木構件,將積木構件與另一個積木 構件連接,分離積木構件,丟棄積木構件,操縱積木構件, 一組積木 構件,等等,例如,通過啟動旋轉等等。與每一個命令一起,可以關 聯一組相應的參數,例如,相對于顯示器坐標系統的光標坐標,積木 構件的類型等等。
            代碼生成器108還可以進一步響應用戶的命令,修改模型的數 據結構。作為同時的或隨后的任務,可以執行代碼解釋器,以便呈現 代碼生成器的結果。
            模型化應用程序110可以控制存儲器、文件、用戶界面等等。 在US6,389,375中描述了虛擬現實模型化的實施例。此外,在 已經發布的國際申請WO04104811中描述了交互地將新的虛擬積木 構件放入包括3D結構的場景中。這里全部引用了這兩個文件的內容 作為參考。
            組裝說明應用程序113可以讀取模型的數字表示法,并如這里 所描述的,從讀取的模型數據,生成組裝說明。組裝說明應用程序113 還可以進一步提供用戶界面,用于根據如這里所描述的組裝步驟的存 儲的序列,顯示部分模型,或生成的組裝說明的任何其他適當的輸出 格式。組裝說明應用程序113可以使用由代碼解釋器107和UI事 件處理程序109所提供的功能,分別進行模型的讀取和圖形呈現, 以及接收用戶輸入。在備選實施例中,組裝說明應用程序是獨立的, 即,不依賴于外部軟件組件。在某些實施例中,組裝說明應用程序以 適當的文件格式,例如,以可以打印的形式,生成組裝說明。
            用戶105能夠通過用戶界面106與計算機系統101進行交 互,優選情況下,包括計算機屏幕上顯示的圖形用戶界面,以及諸如 鍵盤和/或指示設備之類的一個或多個輸入設備。為了加載、保存或傳 遞模型、幾何描述或其他數據,計算機系統包括輸入/輸出單元(I/O) 104。輸入/輸出單元可以用作與不同類型的存儲介質和不同類型的計算機網絡(例如,因特網)的接口。此外,輸入/輸出單元(1/0)104可 以用于,例如,交互地,與其他用戶交換模型。存儲器102、中央處 理單元(CPU) 103、用戶界面(UI)106,以及輸入/輸出單元104之 間的數據交換是通過數據總線112來完成的。
            值得注意的是,圖1的數據處理系統可以被配置為執行模型化 應用程序和組裝說明應用程序兩者。然而,在其他實施例中,數據處 理系統可以被配置為只基于從另 一 臺計算機(在其上面運行模型化應 用程序或用于生成數字模型表示的另 一 個應用程序的計算機)接收到 的模型數據,執行組裝說明應用程序。同樣,在所述另一臺計算機上, 模型化應用程序可以獨自安裝,或與組裝說明應用程序相結合地安 裝。
            圖2顯示了組裝說明生成的實施例的流程圖。在步驟Sl中, 接收積木構件模型的數字表示法,例如,由模型生成模塊(例如,圖 lb的模型化應用程序110)或由任何其他適當的進程所創建的。
            可以從存儲介質203中檢索數字表示法,例如,運行組裝說明 應用程序的計算機的本地硬盤,CDROM、磁盤等等。或者,或另外, 模型的數字表示法可以遠程存儲,例如,從存儲了它的計算機網絡的 另一臺計算機接收。例如,可以從Web服務器下載數字表示法,在 Web服務器上數字表示法可以對一個或多個用戶可用。下面將描述 數字表示法的數據結構的示例。
            在后面的步驟S2-S4中,組裝說明應用程序從加栽的數字表示 法生成組裝說明205。在一個實施例中,組裝說明應用程序生成部分 模型的3D視圖的序列,其中,每一個部分模型與緊前面的部分模型 不同之處在于,根據如這里所描述的組裝說明進程確定的組裝步驟的 序列,向模型中添加預定數量的附加積木構件。可以以電子方式呈現、 打印,或以另一種適當的方式呈現組裝說明205。在某些實施例中, 組裝說明的生成可以由用戶204進行控制。例如,用戶可以選擇要 在每一個步驟中添加的附加積木構件的數量。此外,用戶還可以操縱 生成的3D視圖,包括改變攝影機的方位等等,正如下面所描述的。
            24用戶204可以是與用戶202相同的用戶,也可以是不同的用戶。
            具體來說,在步驟S2中,從接收到的模型的數字表示法生成分 解序列,例如,以積木構件的連續列表和/或模型的子組件的形式。進 一步生成連續列表的子組件的從屬分解序列。在一個實施例中,進程 將分解序列表示為步驟的分支樹,其中,每一個分支都可以包含從屬 分解。下面將比較詳細地描述生成分解序列的過程的實施例。 在步驟S3中,顛倒生成的分解序列,以獲得組裝序列。 在步驟S4中,從生成的組裝序列生成組裝說明,例如,作為部 分模型的圖像的序列或其他表示方法,其中,在每一個部分模型中, 與前一部分模型相比,添加了來自生成的列表的一個或多個積木構件 和子組件。可以存儲生成的說明和/或以如這里所描述的任何適當的形 式將它們輸出。
            圖3顯示了模型M的分解過程的示例的流程圖。分解過程根 據完整的模型M的數字表示法,對模型M進行分解,包括模型中 的所有積木構件(步驟301)。模型M的輸入包括有關單個積木構 件的信息,如大小/尺寸、旋鈕的數量,諸如積木構件的鉸鏈、栓、軸 等等之類的特點。數字表示法還包括有關將每一個積木構件放在模型 中的什么位置的信息,例如,通過指定積木構件相對于適當的坐標系 統的相應的(x,y,z)位置。
            在步驟302中,分解過程測試在模型M(或前一迭代產生的部 分模型)是否留下了要分離的積木構件。如果模型中仍有積木構件, 則執行步驟303,選擇/生成用于從模型M中去除的一個或多個候選 子組件。候選子組件包括互連的積木構件。在隨后的步驟304中, 根據第一組預定的選擇標準,選擇要分離的積木構件或其中一個生成 的候選子組件(E)。此第一組預定的選擇標準根據預定的加權函數, 向每個積木構件和生成的子組件分配權重,下面將比較詳細地描述它
            們的示例。因此,從候選項的池中確定積木構件或子組件,池包括所 有單個積木構件和生成的候選子組件。因此,對選擇過程來說,子組
            件可以被視為除實際積木構件之外的偽積木構件。對當前描述來說,積木構件和候選子組件的成員也被稱為待移去候選項。
            在步驟303中,通過第二組選擇標準(確定如何分隔/切斷模 型),發現/選擇候選子組件。下面將比較詳盡地描述這樣的選擇標 準的示例。
            在步驟305中,從模型中分離在步驟304中選擇的積木構件或 子組件E,即,生成新的部分模型M' = M\E,其中,選定的候選子 組件的所有積木構件的選定積木構件都被去除。維持表示分解序列的 數據結構,并利用有關分離的子組件/積木構件的信息更新數據結構。 存儲序列,如此,然后,可以將它顛倒,以獲得組裝說明。
            如果選擇要分離的子組件,則可以通過在步驟307中以遞歸方 式執行分解過程(即,以選定的子組件E充當輸入模型M),然后, 返回到步驟302,繼續迭代分解過程,查找下一個要與其余的部分模 型(即,模型M' = M\E。)分離的積木構件,對選定的子組件進行 分解。
            當模型中沒有更多的積木構件時,模型被完全分解,在步驟308 中,分解過程停止。
            因此,上文所描述的分解過程的實施例可以通過下面的偽代碼來
            表達
            Deconstruct model M:
            Let Candic ates be the set of all bricks in M Let Jesuit be an empty sequence of bricks
            While (Cancfidates is not empty)
            Let D be the subset of Candidates that are detachable
            Let i) be the "best detachable" brick from
            Add i> to i esuJt
            Remove i from C"a/ didates
            Return Resuit
            在上面的偽代碼中,選擇"最佳可分離的"磚,對應于在上面的步驟304中執行的選擇,即,基于一組預定的選擇標準的選擇,例如, 下面所描述的一個或多個選擇標準。
            優選情況下,首先選擇可以從模型中分離的候選子組件,然后, 根據分離的優先程度,給每一個候選項指定權重,從計算角度來看, 當分為多個步驟時,處理這種選擇是可能的,因為給子組件指定權重 只是對模型的所有可能的子組件的子集預先形成的。
            在 2006 年 6 月 University of Southern Denmark , Department of Mathematics and Computer Science 的 Jacob AlIereHi 所著的論文 "Computer-aided generation of building instructions for LEGO models"中,其中一個發明人描述了分解過程 的示例,在此引用了該論文作為參考。下面,將比較詳細地描述用于 在步驟303中確定候選子組件的第二組選擇標準的選擇規則的示 例。這些選擇標準也將4皮稱為"啟發式切斷(cut heuristics )"。
            最少切斷/圖形劃分
            已經認識到,通過使用將圖形劃分為子圖形的圖形劃分技術,可 以有效地確定適當的候選子組件。為此,在表示無向圖(包括節點和 連接節點的邊)的數據結構中表示模型,其中,節點表示積木構件, 邊表示積木構件之間的連接。這樣的圖形也被稱為連接性圖形。圖7 顯示了連接性圖形的一個示例。圖7a顯示了包括積木構件a、 b、 c、 d,以及e的積木構件模型的示例。圖7b顯示了帶有節點a、 b、 c、 d、 e的對應的連接性圖形。
            圖形數據結構的邊數據項可以包括表示由邊表示的連接所連接 的積木構件之間的對應的連接的(物理)連接強度的屬性。如此,用 于識別圖形的最小的權重cut的圖形劃分過程產生子組件,以致于分 離子組件所需的物理強度/力度至少大致被最小化。這樣,選擇連接最 松散的子組件。下面將比較詳細地描述確定積木構件之間的連接強度 的示例。
            組裝方向變化優選情況下,切斷組裝方向發生變化的模型。當積木構件沿著至 少兩個組裝方向互連時,可以發生組裝方向的變化。可以通過在連接 性圖形中進行本地圖形搜索來查找組裝方向的變化的位置。可以通過 將方向屬性與每一個積木構件關聯,來定義組裝方向。或者或另外, 可以通過將方向屬性指派到積木構件之間的連接,來定義組裝方向。 為此,連接性圖形的節點和/或邊可以具有與其關聯的表示對應的連接 的組裝方向的屬性。
            單一積木構件關節切斷
            將兩個或更多子組件/積木構件互連的積木構件叫做"關節積木 構件",可以是分離模型的好的切斷點/節點。 一旦被識別,關節積木 構件可以包括在分離的子組件中,即,被去除,或者,可以從分離的 子組件中排除關節積木構件,即,不被去除。在圖形中,關節積木構 件可以,例如,;陂標記出來-例如,通過所謂的圖形著色-,從而, 可以被輕松地定位。連接性圖形的關節節點可以通過任何適當的用于 發現圖形的關節節點的算法來查找,例如,基于深度優先搜索(參見, 例如,"Graph Theory and Its Applications", Jonathan L. Gross和 JayYellen著,Chapman & Hall/CRC,第二版,2006)。
            積木構件關節對切斷
            術語"關節對"是指將兩個或更多不相交的子組件互連在一起的 兩個積木構件,即,其去除導致模型分解為兩個或更多不相交的子組 件的積木構件的對。通過關節積木構件或關節對連接到模型的其余部 分的子組件,對于生成組裝說明,可以是有用的候選子組件。
            關節對可以通過一個過程查找,其中,保存了連接性圖形G中 的所有關節節點的列表A。然后,生成圖形G',其中,去除了 G中 的非關節節點n。保存了 G'中的所有關節節點的列表B。對于B\A 中的每個節點m,找到下面的關節對(n, m),對于圖形G中的所 有非關節節點n,重復此過程。
            28鉸鏈或接合連接
            鉸鏈連接是圍繞鉸鏈方向的一個或多個積木構件之間的鉸鏈。積
            鏈連接的鉸鏈連接元件。通過鉸鏈連接連接到模型的其余部分的子組 件,對于生成組裝說明,可以是有用的候選子組件。當圖形的邊具有 表示鉸鏈結構的存在的關聯的屬性時,可以在連接性圖形中識別這樣 的組件。例如,可以搜索連接性圖形的只通過一個或多個鉸鏈連接連 接到連接性圖形的其余部分的子圖。圖12b顯示了具有用于提供鉸 鏈連接的連接元件1201的積木構件。應該理解,其他類型的可移動 的連接也可以用于識別候選子組件,例如,接合連接、等等。
            特殊情況
            某些積木構件在它們可連接到其他積木構件的方式上只在某一 點上特殊。這些積木構件的示例是在圖的基座下具有單一連接元件、 在窗戶中有玻璃,輪子上有輪胎,鐵軌上有車皮的圖。因此,這些特 殊積木構件在它們的外部連接(即,在它們連接到不同于它們的對應
            的積木構件的任意積木構件的位置)中從模型中切除的候選項。
            因此,在上文中,說明了用于識別候選子組件的許多啟發式切斷。 如此,在分解過程中,可以使用如上文所描述的一個啟發式切斷或更 多啟發式切斷的組合,有效地在^f莫型的所有可能的子組件之間發現候 選子組件。
            如上文所描述的,在一個實施例中,每一個去除候選項-即, 模型的每一個積木構件和通過上面的或備選的啟發式切斷 (cut-heuristics)過程選擇的每一個候選子組件,通過一個或多個加 權函數,被賦予權重,以便發現帶有最高權重的去除候選項,即,最 適合于從模型中去除的去除候選項E (步驟304),然后,分離此選 定的去除候選項(步驟305)。
            在一個實施例中,如此選擇加權函數,以便根據它實現的條件,
            29每一個加權函數要么增強積木構件/子組件;陂選擇的可能性,或者它將 拒絕積木構件/子組件被選擇。將對于每一個積木構件/子組件的所有 加權函數的結果組合起來,以便獲得積木構件/子組件的總的權重。然 后,可以選擇帶有最高權重的積木構件/子組件。當根據均勻的加權方 式選捧單個加權函數時,加權函數組可輕;^地改變。
            例如,在一個實施例中,每一個加權函數都導致一個權重。權重 要么是范圍[0,…,1I中的實數,要么是負整數(-1,-2,-3,...)。如果 分離積木構件/子組件是有利的,在分配給積木構件/子組件的權重位 于范圍[0 1,當分離積木構件/子組件既不反對,也不提倡時,指 定0,當分離最恰當時,指定1。這兩個極值之間的實數表示兩者之 間的分離有利。如果分離是不利的,則加權函數給積木構件/子組件分 配范圍(-1,-2,-3,)中的負的權重,其中,不同負值表示分離不利 的程度。應了解,可以定義具有不同范圍的其他加權函數集合。
            可以使用具有兩個單獨的范圍的加權函數來實現否決方案,例 々口, ^p下面所4苗述的
            對于每一個積木構件/子組件x,對一組加;^又函數中的每一個加 權函數進行評估,相應的單個權重按如下方式組合起來如果在x的 指定的權重之間沒有負的權重(所謂的"否決"),則將所有權重累加 起來,獲得總權重。另一方面,如果在指定的權重之間有一個或多個 "否決",則所有非"否決,,權重都丟棄,即,設置為0。根據此,好的 要分離的積木構件/子組件是無"否決"的并且具有高累加權重的那一 個。另一方面, 一旦積木構件/子組件被賦予了"否決",則直到分解過 程中的下一次迭代之前,它不能離開"否決"狀態。如果所有積木構件 /子組件都獲得負的權重,則可以選擇帶有具有最小絕對值的總的負的 權重的積木構件。或者,可以反向跟蹤一個或多個迭代,試圖選擇不 同的積木構件/子組件,請求用戶交互,或以另一種適當的方式繼續進 行。
            結果,當發現分解過程(在每一個步驟中,至少有一個無"否決" 的積木構件/子組件)時,上面的加權方式導致產生高質量的組裝說明。現在比較詳細地描述加權函數的許多示例 分離策略
            加權函數的一個示例判斷要分離的積木構件/子組件是否在物理 上可以從模型的其余部分接觸和分離。為此,加權函數驗證是否滿足 下面的兩個要求中的一個或多個
            1) 積木構件/子組件可分離的/可連接的所沿著的所有方向都是 平4亍的。如此,此加外又函數可以確定組裝方向和/或積木構件的所有連 接的方向,例如,基于與連接性圖形中的對應的節點和/或邊關聯的屬 性。如果所有方向都是平行的,則可以通過平移運動來分離積木構件。 例如,圖8a的積木構件803具有兩個不平4亍的連接方向它們連 接到軸802和積木元件804。與軸802的連接具有平行于軸802 的關聯的方向,因為從軸802拆卸積木構件803需要在沿著軸802 的方向移動積木構件803。另一方面,與積木構件804的連接,具 有垂直于軸的方向,即,在旋鈕從積木構件804的頂表面中凸出的 方向。因此,拆卸積木構件803可能導致模型拉緊,對于,例如, 兒童,在沒有同時分離模型的其他連接的情況下,難以執行。圖12顯 示了帶有利用箭頭表示可分離性的相應的方向的積木構件的示例。
            2) 在連接的方向移動積木構件/子組件,不會導致與模型的其他 積木構件沖突。例如,加權函數可以確定積木構件/子組件的邊界框, 判斷在連接的方向將邊界框平移預先確定的距離是否導致與另一個 積木構件沖突/交叉。圖13顯示了積木構件1301沿著其可分離的方 向可移動的模型。或者,加權函數可以計算在連接的方向伸展的積木 構件/子組件幾何形狀,判斷伸展的幾何形狀是否與任何其他積木構件 /子組件沖突。積木構件占用多少空間可以通過簡單幾何體積來表示。 例如,如圖4所示的帶有2x4個旋鈕的積木構件可以具有與它關聯 的9個沖突盒子 一個沖突盒子填充除8個之外的整個積木構件, 而8個旋鈕分別填充一個沖突盒子。此信息可以用來估計積木構件 是否沖突/重疊。沖突盒子信息可以用來計算伸展的幾何形狀,該幾何 形狀表示為了分離積木構件所需的空間。
            31如何計算伸展的幾何形狀的示例可以包括發現積木構件可以分
            離的方向,是矢量d。積木構件具有N個沖突量(例如,如在上面 的帶有2x4個旋鈕的積木構件的示例中)和位置(x,y,z)。
            具有積木構件BE、矢量d和模型M,分離過程可以包括下列 步驟對于BE中的每個沖突量,pl表示k的位置。當BE沿著 矢量d從pl移動時,p2表示k的位置。由于每個沖突量是帶有8 個角的盒子,在pl將有8個點,在p2將有8個點。在一組點中, 總計將有16個點。當沖突量是凸面時,此組點將構成凸面圖f。
            過程測試圖f是否與模型M中的任何積木構件沖突。如果圖 f與模型M中的任何積木構件沖突,則積木構件BE不能被分離。 如果圖f不與模型M中的任何積木構件沖突,則可以測試下一個沖 突量。
            最后,如果N個沖突量中沒有一個圖f與模型M中的任何積 木構件沖突,則根據分離策略,可以分離積木構件BE。
            此策略的效果是,它確保了積木構件/子組件的分解(如此,反 向結構)在物理上是可能的,而不會對模型施加物理勞損。
            加權函數的下面的示例避免了在物理上不可分離(或至少只輕松 地可分離的)積木構件/子組件的分離
            Weight(x) = -1, if at least one of the above conditions 1) and 2) is not fulfilled forx,
            0, otherwise
            關節策略
            如上文所提及的,其去除導致模型分解為兩個或更多不相交的部 件的積木構件/子組件叫做關節積木構件/子組件。分離關節積木構件/ 子組件可能導致這樣的組裝說明,顯示了看來似乎在組裝說明的3D 呈現中浮動/飛行的不相交的構件/子組件。這可能是不希望發生的, 因為會使分解過程復雜化,從而,也使組裝說明復雜化。
            下面的加權函數避免了關節積木構件/子組件的分離Weight(x) = -1 if x is an articulation building element/sub-assembly0 if not
            因此,堅決不贊成去除關節積木構件,如此會避免"懸空,,的積木構件/子組件。
            在備選實施例中,如果x是關節積木構件/子組件,加權函數指定中性的權重,例如,權重=0,如果x不是關節積木構件/子組件,則指定正的權重,例如,權重=1。因此,在此實施例中,關節構件的分離既不反對,也不提倡。這顯示了,可以調節不同的權重,以便使加權方式適應不同的期望效果。在再一個實施例中,根據是否為單個積木構件或子組件計算加權函數,指定不同權重。例如,在一個實施例中,如果x是子組件,對于關節子組件,weight(x)被設置為-1,如果x不是關節子組件,則設置為0,而在x是單個積木構件的情況下,對于關節積木構件,weight(x)被設置為0,否則,設置為+1。因此,在此實施例中,防止了關節子組件的分離,而分離關節積木構件僅僅是不贊成。
            集成策略
            有這樣的情況在其余的部分模型中不可能避免分離的(或"懸空")積木構件/子組件。圖8a顯示了這樣的情況的示例,顯示了位于軸802上的齒輪構件801,它通過積木構件803的對應的空穴凸出。當分解模型時,軸802可以去除,導致齒輪構件801與模型的其余部分分離,如圖8b所示。
            在這樣的情況下,可能希望盡可能快地從模型中去除分離的構件801,導致如圖8c所示的情況。
            快速去除分離的構件可以通過加權函數向(直接或間接地)連接
            到較少的其他積木構件的積木構件/子組件指定增大的權重來實現這
            樣的加權函數的一個示例是
            Weight(x) = 1 / (number—of_building elementS-Connected—to_x + 1) for allbuilding elements/sub-assemblies x
            在圖8b的示例中,上面的加權函數向小齒輪801指定權重1,因為它不連接到任何其他積木構件或子組件。另一方面,給其他
            積木構件指定了權重1/6,因為它們是包括表示為803、 804和805的五個構件的組件的一部分。
            如此,集成策略減少了在所產生的組裝說明中顯示不可避免的"懸空"的積木構件或子組件的步驟的數量。
            相似度策略
            相似度策略涉及組裝/分解中的對稱性。當在組裝過程中使用相似度策略時,結構可能變為對稱的,這將筒化分解過程。為了基于此執行分解,表示兩個積木構件A和B是"相似的"的函數可以按如下方式確定。
            加才又函數確定A和B在坐標系統中的坐標,其中,y軸對應于原則的組裝方向,例如,垂直方向。x軸和z軸對應于其他主要的組裝方向例如,水平方向。
            如果B是分離的最后一個積木構件,那么,用于判斷A和B是否相似的加權函數可以具有下面的形式
            Weight(x) = sum of
            a if A and B is the same type of building element
            b if A and B have the same x coordinate or the same z
            coordinate in the coordinate system
            c if A and B are having the same attributes (such as color,
            decoration etc.)
            for predetermined weights a, b, c where a+b+c-1.
            高于0的權重反映了某種相似度。也可以考慮替代的和/或另外的條件。
            策略是分離積木構件/子組件,類似于分離的最后的積木構件或子組件。此策略的影響是,包含對稱件的模型,常常被對稱地分解。
            圖9給出了針對分解的相似度的示例,分別說明圖9a)- c)中的三個連續的分解步驟的示例。從圖9可以看出,在模型的左邊部分,首先分離長方形積木構件卯l,然后,分離與第一長方形積木構
            34件對稱的相似的長方形積木構件902。下一個步驟可以是分離模型的右邊部分的兩個相似的長方形積木構件903。
            基礎策略
            特殊的積木構件或子組件,如大的板或形狀不規則的板,常常是模型的基礎/起始積木構件,因此,是最后一個分離的積木構件。為了檢查板或其他積木構件是否是起始積木構件,可以將它的類型和/或尺寸與其他積木構件的類型/大小進行比較,或將其與表示積木構件比較大的閾值進行比較,因為起始積木構件常常比較大,因為它構成了模型的基礎。此外,也可以通過分析放置在模型中的位置有多低來檢查大的積木構件是否是起始積木構件。積木構件比較大并且放置在模型的底部很可能是起始積木構件。為此,連接性圖形的節點可以具有與它們關聯的表示積木構件的尺寸/體積的相應的屬性。或者,組裝說明過程可以允許用戶指出起始積木構件,例如,通過利用鼠標或另一個指示設備,指出起始積木構件。相應地,防止起始積木構件被從模型
            中去除的加權函數可以具有下面的形式Weight(x) = -1 if x is a starter building element0 if not.
            或者,如果x是起始積木構件/子組件,加權函數可以指定權重0,如此表示,x的分離是不利的,如果x不是起始積木構件/子組件,指定高的正的權重,例如,權重=1,因為,這樣分離是有利的。
            這樣的效果是,在所產生的組裝說明中,某些共同的基礎積木構件或子組件將在最初連接或在組裝過程的初期連接。
            分步驟完整性策略
            根據一個實施例,對于每一個候選子組件x,有兩個反映/有助于連接性的質量的有貢獻的方面。第一方面是子組件x的積木構件之間的內部連接性的強度,而第二方面是子組件x的積木構件的外部連接性的強度。如果內部連接性相對來說比較強,而外部連接性相對來說比較弱,則可以期待子組件可輕;^地拆卸,因為子組件中的積
            35木構件強連接到該子組件中的其他積木構件,并且只弱連接到模型的其余部分。相應地,在組裝過程中,具有強內部連接的以及與模型的其余部分的弱連接的子組件,可能作為穩定的子組件,相對來說容易組裝,并連接到模型的其余部分,沒有在組裝過程子組件分解的風險。
            為了研究子組件在內部連接的堅固程度,即,子組件的不同的積木構件如何彼此連接,可以使用連接性圖形或所有積木構件之間的連接性的另一種適當的表示法。連接性圖形可以包括反映積木構件之間的物理強度的權重,如上文所描述的,例如,當每一個邊都具有與它關聯的表示對應的連接的強度的屬性/權重。
            例如,每一個積木構件都可以包括一個或多個連接元件,用于嚙合其他積木構件的對應的連接元件,以便在多個積木構件之間提供連
            接。例如,圖4顯示了帶有呈現旋鈕的形式的突出部(用于嚙合另一個積木構件的空穴(也被稱為反旋鈕)的積木構件的示例。 一般而言,積木構件可以具有一個或多個不同類別的連接元件,每一個連接元件類別,或每一對連接元件類別,都可以提供對應強度的連接。如此,可以有助于兩個積木構件之間的連接的連接元件的數量/協作的連接元件對的數量,以及根據起作用的連接元件的相應的類另U/類型,確定/估計兩個積木構件之間的連接的總強度。例如,可以將單個連接強度相加,獲得總的連接強度。有關有助于連接的連接元件的數量和類型的信息可以從積木構件模型的數字表示法中獲取,和/或包括在連接性圖形的節點和/或邊中。WO 04/034333中描述了支持連接元件的定義的數據結構的示例。
            例如,積木構件x和y之間的連接的強度可以按如下方式計

            <formula>formula see original document page 36</formula>
            其中,總和遍及所有連接類別C,Se是連接類別C的連接強度,
            而N(c)是有助于x和y之間的連接的類別c的連接元件的數下面給出了如何確定如圖4所示的類型的兩個積木構件x和
            y(具有呈現旋鈕/反旋鈕(或空穴)對的形式的連接元件、栓和軸)之
            間的連接的物理強度的示例<formula>formula see original document page 37</formula>
            應了解,上面的示例中的數值只作為示例。
            當計算有效強度時進一步考慮積木構件的幾何形狀時,可以更加
            準確地估計連接性的有效強度。
            例如,圖10顯示了兩個子組件,每一個子組件都包括通過參考 圖4所描述的形式的單一連接元件互相連接的兩個積木構件。然而, 圖10a的子組件連接得結實,即,難以分解,而圖10b的子組件不, 用戶非常容易將積木構件1001從基板1002中拆卸。還可以通過合
            并相對于其連接的強度的最小的/最輕的積木構件的體積或質量針對 此差異進行調整。或者,或另外,也可以使用表示積木構件的幾何屬 性的另一個適當的數量。這模擬了,例如,用戶利用用戶的手指抓取 積木構件的容易程度,因為大的積木構件比小的積木構件更加容易抓 取。
            因此,這樣的經過修改的加權函數可以表達為 Connection(x,y) = Strenght(x,y) / Minimum(volume of x, volume of y)
            如此,在如圖10所示的示例中,兩個子組件在多個積木構件之 間具有相同強度,因為在兩種情況下,小的積木構件以一個旋鈕-反旋 鈕對連接在一起。然而,在圖10a的子組件中,最小的積木構件1003 具有較小的體積,而在圖10b的子組件中,最小的積木構件1001具 有較大的體積,如此,函數connection(x,y)對于圖10a的子組件將 是最大的。
            基于上面的連接性度量的加沖又函數的示例可以如下Weight(x) - -1 if x is a sub-assembly and
            its weakest internal connection < internal threshold
            V3lU6
            -1 if x is a sub-assembly and
            its strongest external connection > external threshold value
            0 otherwise
            內部和外部連接的閾值可以是預定的,用戶控制的,憑經驗發現 的或以別的方式適當地設置的。調節閾值是調節所產生的組裝說明的 分步驟的數量和質量的有效方式。通過將閾值設置為比較高的值,可 以獲得不多的高質量的候選子組件,而不是獲得許多較低質量的候選 子組件。這使得分解過程更加容易并更快。
            最接近策略
            也可以根據與以前分離的積木構件/子組件的距離,給積木構件/ 子組件賦予權重。更具體地說,weight(x)可以是距離、距離的平方、 或x的質心與以前分離的積木構件/子組件的質心的另一個適當的距 離測度的函數。應該理解,也可以使用積木構件/子組件的另一個適當 的參考點代替質心。
            可以給與以前分離的積木構件/子組件更靠近的積木構件賦予較 高的權重。當積木構件至少在一個點彼此接觸時,則它們之間的距離 可以設置為0。最接近策略可以區分表面彼此相鄰的積木構件,積木 構件只是在它們的角落彼此接觸,分別如圖lla和圖lib所示。如 此,在一個實施例中,加權函數可以是兩個積木構件之間鄰接的面積 的大小的遞增函數。可以基于作為數字表示法的一部分存儲的邊界框 或其他幾何信息,確定積木構件是否彼此毗鄰,或以別的方式彼此接 觸。求這樣的度量的近似值的一種方式是通過計算相應的積木構件的 點之間最大距離。 一般而言,此距離越大,鄰接的面積越小,如圖11 所顯示的。
            層疊策略
            38當組裝模型時,優選情況下,常常從底部向上進行組裝。因此, 可以根據與模型中的最低的積木構件的距離,向積木構件/子組件分配 權重。積木構件/子組件與底部的距離越遠,在分解過程內被賦予的權 重就越高。因此, 一般而言,加權函數可以是積木構件沿著坐標系統 的一個或多個方向的坐標的遞增函數。
            因此,在上文中,描述了加權函數的許多示例,每一個都對應于 對應的模型分解策略。應該理解,分解過程可以包括備選的或附加的 加權函數和/或備選的或附加的分解策略。此外,還可以定義對應于這 里所描述的分解策略的備選的和/或附加加權函數。
            還將進一步認識到,這里所描述的某些策略具有一個或多個參 數,這些參數可以改變,以增強結果的一個方面或另一個方面,從而,
            使框架成為通過人的交互生成組裝說明的工具,而不是black-box。 發明人已經利用對應于下面的策略的加權函數的組合,獲得了特
            別好的結果,確保了分解的完整性。它們一起可以構成提供好的結果
            的自動組裝說明生成器的實施例的骨干,無需用戶交互
            -分離策略只允許分離在物理上可以去除的積木構件或子組
            件,給定了積木構件或子組件的幾何形狀和連接性。
            -分步驟完整性策略只允許分離在內部強連接的并且在外部
            弱連接的組件。
            如上文所描述的,準確的要求可以改變,以確保所希望的質量的 分步驟。
            -關節策略只允許分離不會將模型拆分為兩個或更多分離的 組件的子組件。此外,不贊成分離將模型拆分為兩個或更多分離的子 組件的單個積木構件。
            -集成策略如果去除了單個關節積木構件,則盡可能快地去 除分離的積木構件或子組件。
            在一個實施例中,上文所提及的四個策略-分離、分步驟集成、 關節和集成-用于所有組裝/分解中,而一個或多個進一步的策略, 例如,這里所描述的其余的策略的一個或多個,例如,相似度、基礎、
            39最接近和層疊策略,可以在不同的情況下用于調節結果。這樣的策略
            可以由用戶進行選擇。圖4顯示了積木構件以及其連接元件的示例。 具體來說,圖4顯示了積木構件401的透視圖。積木構件401具 有頂表面402,上面帶有八個旋鈕403a-h,可以與另一個積木構件 的對應的空穴嚙合,例如,另一個積木構件的底面上的空穴。相應地, 積木構件401包括帶有對應的空穴的底表面(未顯示)。積木構件 401進一步包括沒有任何連接元件的側面404。
            一般而言,連接元件可以分為連接元件的不同類別,例如,連接 件、受納體,以及混合構件。連接件是可以由另一個積木構件的受納 體接納的連接元件,從而在積木構件之間提供連接。例如,連接件可 以在另一個構件的部件之間裝入空穴中。受納體是可以接納另一個積 木構件的連接件的連接元件。混合構件是既可以充當受納體又可以充 當連接件的部件,通常取決于其他積木構件的協作的連接元件的類 型。
            在LEGO的名下有圖4中所顯示的類型的積木構件可用,有 許多形狀、尺寸,和顏色。此外,還有的這樣的積木構件帶有各種不 同的連接元件。應該理解,上面的積木構件只作為可能的積木構件的 示例。
            圖5顯示了以數字方式表示積木構件模型的數據結構的實施 例。數據結構501可以包括一個或多個數據記錄502,包括與整體 模型有關的總體模型參數。這樣的模型參數的示例包括^f莫型名稱、模 型創作者的姓名、模型化應用程序的程序版本號,創建日期等等。模 型數據結構501進一步包括列表503或積木構件數據記錄的其他 適當的結構。在圖5的示例中,列表包括N個數據記錄"積木構件 1"、"積木構件2"、...,"積木構件J"、…,"積木構件N"。列表503 的每一個積木構件數據記錄都具有"積木構件J"的數據結構504所
            顯示的結構。
            具體來說,每一個積木構件數據記錄都包括積木構件ID 505, 表示對應于積木構件類型的標識符。積木構件ID可以唯一地標識積
            40木構件的屬性或積木構件的類型。
            積木構件數據記錄還可以進一步包括許多積木構件屬性506,表 示積木構件的一個或多個屬性,如顏色、紋理、裝飾等等。
            此外,積木構件數據記錄504還包括分別表示積木構件的內坐 標系統的位置和方向的數據項507和508。積木構件的位置和方向 通過積木構件的內坐標系統的原點相對于全球"world"坐標系統的坐 標來進行定義,并由內坐標系統相對于全球坐標系統的朝向來進行定 義。
            在美國專利no. 6,389,375中說明了包括坐標系統的層次結構
            的用于存儲積木構件模型的數據格式的示例。
            此外,積木構件數據記錄504還可以包括分別表示積木構件的 一個或多個邊界框和連接性數據的數據項509和510,用于檢測積 木構件與其他積木構件的連接性屬性。如圖4所示的積木構件的類
            型的連接性數據的一種表示法的實施例包括表示通過積木構件的邊 界框的表面定義的平面的數據結構。積木構件的連接元件位于這些平 面上,每一個連接元件都具有與它關聯的軸。同一個平面上的所有連 接元件的軸都對應于規則網格(例如,正交網格)的相應的網格點, 相鄰網格點之間的距離是固定的。圖4的與積木構件401關聯的平 面彼此成對地平行,它們包括一組對應于積木構件的頂部和底部表面 的水平面和許多對應于積木構件的側面的垂直平面。相鄰網格點之間 的距離在所有水平面上可以相同。在某些實施例中,垂直平面中的相 鄰網格點之間的距離不同于水平面中的相鄰網格點之間的距離。在 WO 04/034333中說明了如圖4所示的類型的積木構件的連接性屬 性的數字表示法,在此引用該申請的全部內容作為參考。
            應該理解,數字表示法可以以任何適當的數據或文件格式進行編 碼,例如,作為二進制文件,作為根據預定的模型花描述語言的文本 文件等等。應該進一步理解,數字信息的其他實施例可以利用替代的 或另外的數據結構,和/或表示替代的或另外的模型數據。
            圖6顯示了組裝說明應用程序的圖形用戶界面的實施例。用戶
            41界面包括查看區域701,說明了一組一步接一步的組裝說明的步驟的 圖形表示。圖形表示顯示了從預定的攝像位置顯示的部分模型702 的3D視圖。部分模型701包括完整的模型的所有積木構件的子集, 其中,該子集包括最初定位的積木構件。查看區域701進一步包括 最近放置的積木構件的圖形表示703,即,區別當前部分模型702與 前面的步驟的部分模型的積木構件。在此示例中,這些是部分模型 702的積木構件714、 715,以及716。
            用戶界面進一步包括滑塊控制元件709,可以通過利用鼠標進行 的對應的拖動操作,以單獨的間隔移動,可使用戶選擇一步一步的說 明的任何一個步驟。在圖6的示例中,在說明的每一個步驟中添加 了三個新的積木構件。
            用戶界面進一步包括按鈕控制元件705,可使用戶調用許多常用 的功能,如分別在正方向和反方向按順序瀏覽圖形表示,跳轉到說明 的第一個步驟和最后一個步驟,改變攝像位置,打印生成的組裝說明, 以及啟動"自動播放"功能。自動播放功能一個一個地顯示部分模型的 序列,以便將每一個部分模型顯示預定的時間長度。優選情況下,用 戶可以用自動播放功能配置每一個部分模型的查看時間。
            最后,用戶界面還包括許多下拉菜單704,可使用戶啟動諸如幫 助功能、改變攝像位置的功能、圖像放大功能之類的功能。由組裝說 明應用程序提供的進一步的功能包括加載數字表示法,用于打印部分 模型的圖形表示的打印功能,以及用于導出部分模型的圖形表示的序 列的導出功能,例如,以HTML格式,或任何其他適當的圖形文件 格式,如TIF、 JPG、 BMP等等,進行導出。
            由組裝說明應用程序提供的功能的進一步的示例包括材料清單 功能,可使用戶查看或打印模型中的所有積木構件的列表。
            圖14顯示了組裝說明生成的另一個實施例的流程圖。在步驟 Sl中,接收積木構件模型的數字表示法M,例如,如參考圖2的 步驟Sl所描述的。
            在后面的步驟S2- S12中,組裝說明應用程序從加載的數字表
            42示法生成組裝說明205。生成的組裝說明205可以是如參考圖2所 描述的形式。
            在步驟S2中,過程初始化。具體來說,初始化數據結構 用于保留要生成的組裝序列。將序列Result初始化為空序列。進一 步將表示為Candidates的一組候選積木構件初始化為模型M中的 所有積木構件和子組件的集合。因此,如在前面的實施例中那樣,可 以確定要從模型M中去除的一個或多個候選子組件,并將子組件當 做一般性的積木構件。可以通過一組選擇標準(確定如何分隔/切斷模 型),可以發現/選擇候選子組件。上面比較詳盡地描述了這樣的選擇 標準的示例,特別是,參考圖3的步驟303所描述的第二組選擇標 準。應了解,在其他實施例中,可以只考慮積木構件。
            在步驟S3中,判斷集合Cam/iV/a,"是否是空的,即,是否已 經處理完所有積木構件。如果是這種情況,則執行步驟S12;否則, 執行步驟S4。
            在步驟S4-S11中,判斷是否可以找到導致產生新的部分模型的 組裝步驟6,以便可以將完整的模型AT分解為此新的部分模型。
            具體來說,在步驟S4中,作為集合Om力'dWes的副本,生成 積木構件和子組件的輔助集合C。
            在步驟S5中,判斷集合C是否是空的,即,是否識別了一個 候選項6。如果是這種情況,則返回到步驟S3;否則,執行步驟S6。
            在步驟S6中,從集合C中選擇候選積木構件b或候選子組件。
            本實施例中的候選項的選擇可以以與前面的實施例的分解情況 中的選擇去除積木構件類似的方式來完成,即,通過一組選擇標準。 具體來說,選擇標準可以基于表示不同的組裝策略的一個或多個加權 函數,如上文所描述的一個或多個加權函數,特別是參考圖3的步 驟304所描述的第一組選擇標準的加權函數。某些加權函數分別在 組裝和分解版本中相同或基本上相同,例如,如上面比較詳細地描述 的加權函數。例如, 一個策略可以根據它們與在前面的步驟中添加的積木構件的距離,向積木構件分配一個權重。然后,可以選擇與前面 添加的積木構件最靠近的積木構件。其他加權函數可以十分不同。例 如,上文所描述的分解情況的"關節策略"避免了拆散連接性圖形,而 在本實施例的組裝情況下,只是確保了選擇實際連接到任何前面選擇 的積木構件的積木構件。盡管如此,在這兩種情況下,都避免了
            "flying"積木構件。由于這里所描述的加權函數可以給子組件(偽積 木構件)以及簡單的積木構件賦予權重,因此,組裝和分解兩種過程 都可以一般化為處理子組件。如在純粹的分解情況下,這不僅是切實 可行的,有時候,還是需要的。
            或者,或另外,候選項的選擇可以部分地或完全地基于用戶輸入 /交互。例如,可以接收表示候選項b的用戶輸入。或者,可以,例 如,隨機地或基于上文所描述的加權函數,選擇一個或多個可能的候 選項,并向用戶指出候選項。然后,可以接收表示批準或拒絕一個或 多個建議的候選項的用戶輸入。
            在步驟S7中,從接收到的模型的數字表示法生成部分分解序 列,直到可通過當前組裝序列和選定的候選項6的聯合獲得 的剩余的模型。可以以模型的積木構件和/或子組件的連續列表的形式 生成分解序列。還可以進一步生成連續列表的子組件的從屬分解序 列。在一個實施例中,進程將分解序列表示為步驟的分支樹,其中, 每一個分支都可以包含附屬的分解。
            下面將比較詳細地描迷生成部分分解序列的過程的實施例。
            在步驟S8中,判斷是否可以找到分解序列。如果步驟S7的 分解過程成功確定分解序列,則繼續執行步驟S9;否則,繼續執行 步驟SIO。
            在步驟S9中,更新集合CVw /iV/Wm、以及C。具體來 說,將選定的候選項6添加到當前結果序列i "w"中,從候選項的 集合C" &V/ &s中去除候選項6,從輔助集合C去除所有構件(隨 著識別成功的候選項)。然后,返回到S5。
            在步驟S10中,從輔助的候選項的集合C中去除6進行嘗
            44中是否仍有候選項留下。如果是這種情 況,返回到步驟S5,以識別備選的候選項;否則,過程結束,例如, 帶有指出生成組裝說明失敗的適當的錯誤標記或消息。例如,如果模 型被過度地約束和/或如果在分解過程中所使用的加權函數表示模型 的組裝約束太強/限制性太強,則可能發生這種情況。因此,在這樣的 情況下,在分解過程中所使用的某些或全部加權函數可以被弱化,例 如,自動地或通過用戶交互,可以利用弱化的加4又函數重新開始該過 程。
            在步驟S12中,從生成的組裝序列Result生成組裝說明,例 如,作為部分模型的圖像的序列或其他表示方法,其中,在每一個部 分模型中,與前一部分模型相比,添加了來自生成的列表的一個或多 個積木構件和子組件。可以存儲生成的說明和/或以如這里所描述的任 何適當的形式將它們輸出。
            圖15顯示了模型AT直到剩余的模型TV的部分分解過程的 示例的流程圖。分解過程根據完整的模型AT的數字表示法,對模型 M進行分解,包括模型中的所有積木構件(步驟301)。模型AT的 輸入包括有關單個積木構件的信息,如大小/尺寸、旋鈕的數量,諸如 積木構件的鉸鏈、栓、軸等等之類的特點。數字表示法還包括有關將 每一個積木構件放在模型中的什么位置的信息,例如,通過指定積木
            構件相對于適當的坐標系統的相應的f^V力位置。進一步接收有關 剩余集合iV(即,模型M的子模型)的信息。部分分解過程生成分 解步驟的序列,其中,在每一個分解步驟中,去除M\N的一個或多 個積木構件(即,模型M的未包括在內在剩余的模型N中的積木 構件),直到只留下剩余的模型N。
            在步驟302中,分解過程測試在模型MUV(或前一迭代產生的 部分模型MUV;是否留下了要分離的積木構件。如果在該模型中仍有 要去除的積木構件,則繼續執行步驟303,在該步驟中,選擇/生成要 從模型MWV (或由前一迭代產生的部分模型MUV)去除的一個或多 個候選子組件。候選子組件包括互連的積木構件。在隨后的步驟304
            45中,根據第一組預定的選擇標準,例如,如參考圖3所描述的,選 擇要分離的積木構件或其中一個生成的候選子組件(E)。可以在步驟 303中,通過第二組選擇標準(確定如何分隔/切斷模型),可以發現 /選擇候選子組件。上面比較詳盡地描述了這樣的選擇標準的示例。在步驟305中,從模型中分離在步驟304中選擇的積木構件或 子組件E,即,生成新的部分模型M' = M\E,其中,選定的候選子 組件的所有積木構件的選定積木構件都被去除。可以維持表示分解序 列的數據結構,并利用有關分離的子組件/積木構件的信息更新數據結 構。如果選擇要分離的子組件,則可以通過在步驟307中以遞歸方 式執行分解過程(即,以選定的子組件五和剩余的模型充當輸 入),然后,返回到步驟302,繼續迭代分解過程,查找下一個要與 其余的部件模型(即,模型ww-wa^;。)分離的積木構件,對選定 的子組件進行分解。當沒有更多的積木構件(也不是剩余的模型W的一部分)要從 模型中去除時,完成模型M的部分分解,直到剩余的模型見 在步驟308中,分解過程停止。因此, 一般而言,給定^^型M,如果M可以分解為N,那么, N可以組裝為M。換句話說,N階段的結構是組裝步驟序列過程中 的適當的中間的模型,當(且僅當)完整的模型M可以被分解為N。用于生成參考圖14和15所描述的組裝序列的過程的實施例 可以通過下面的偽代碼來表達Construct model M:Let Candidates be the set of all bricks and sub-assemblies in M Let Result be an empty sequence of bricksWhile (Candidates is not empty) Let C be a copy of CandidatesWhile (C is not empty》 Let b be a brick from CIf (Deconstruct M down to (union of Result and b))Remove all bricks from CCandidates = Candidates \ bAdd b to Result ElseRemove b from C工f (C is empty)Deconstruct model M down toLet Candidates be the set of all bricks in M/W/While (Cancii(ia亡es is not empty)Let D be the subset of Candidates that are detachable If (D is empty) Return False,' ElseLet i) be the 、、best detachable" brick from £), Remove b from Candied tes,, Return True,'在上面的偽代碼中,選擇"最佳可分離的"磚,對應于在上面的步驟304中執行的選擇,即,基于一組預定的選擇標準的選擇,例如, 上文所描述的一個或多個選擇標準。Error:Construction was not possibleReturnFalse47過程的實施例也可以通過下面的偽代碼來表達;圖16顯示了此 實施例的流程圖Construct modelLet Candidates be the set of all bricks and sub-assemblies in M Let Result be an empty sequence of bricksWhile (Candidates is not empty) Let C be a copy of Candidates 工f (Find construction step b from C)Add b to ResultCandidates - Candidates \ fc> ElseError: "constructive Building instruction notpossible" Return FalseReturn TrueFind construction step b from C:While (C is not empty)Let b be a 、goocT brick from CIf (Deconstruct M down to (union of Result and b))Return True ElseRemove b from CReturn False*因此,在此實施例中,就是否可以知道下一個組裝步驟b的判 斷是作為單獨的函數實現的。圖i6a顯示了全過程,而圖16b顯示從參考圖14所描述的輸入步驟Sl和初始化步驟S2開始。 在步驟S3中,判斷集合Om力V/fl^ 是否是空的,即,是否已經處 理完所有積木構件。如果是這種情況,則執行步驟S12,如上文所描 述的,生成組裝說明;否則,執行步驟S4。在步驟S4中,作為集合Qm力V/fl&s的副本,生成積木構件和 子組件的輔助集合C。在步驟S20中,判斷是否可以查找到有效的下一個組裝步驟 6。如果是這種情況,則通過向數據結構附加識別的步驟6, 以及通過從Oz/i力V/tf/^數據結構中去除對應的積木構件(或子組 件),更新和數據結構;然后,返回到步驟S3。 如果無法找到有效的組裝步驟,則過程結束,例如,帶有表示生成組 裝說明失敗的錯誤標記或消息,如參考圖14所描述的。圖16a顯示了實現步驟S20的子過程的示例的流程圖首先, 判斷集合C是否是空的,即,是否已經處理完所有候選項b。如果 是這種情況,則返回表示無法查找到有效的候選項b的值;否則, 執行步驟S6。在步驟S6中,從集合C中選擇候選積木構件6或候選子組 件,例如,如參考圖14的步驟S6所描述的。在步驟S7中,從接收到的模型的數字表示法生成部分分解序 列,直到可通過當前組裝序列和選定的候選項b的聯合獲得 的剩余的模型,如參考圖14的步驟S7所描述的。如果步驟S7的分解過程成功確定分解序列,則返回表示過程成 功的值;否則,繼續執行步驟SIO。在步驟S10中,從輔助的候選項的集合C中去除6進行嘗 試,并返回到子過程的開始,判斷C是否是空的。在此示例中,函數"Deconstruct model Af down to7V"可以是上面 的示例中的相同函數。在參考圖14-16所描述的實施例中,帶有TV個積木構件的模 型的組裝需要iV個組裝步驟, 一般而言,對于每一個組裝步驟,可49能必須進行多次分解,以便發現有效的候選磚6。
            可以按如下方式估計所需的迭代的數量iV塊磚的完整的組裝 說明大致需要iV個組裝步驟。每一個組裝步驟都可能需要大致iV/2 次分解。每一次分解都包括大致N個分解步驟。每一個分解步驟都 需要大致iV/2次磚加權。總起來,完整的組裝說明可能需要大致 (7V八"http://積木構件的加權。這仍比純粹的反向跟蹤搜索所需的jca7V 加權好得多。類似地,參考圖2和3所描述的完整的分解過程需要 大致(7VA"/2次加4又。
            權利要求
            1.一種計算機實現的生成積木構件模型的組裝說明的方法,所述積木構件模型包括多個積木構件,所述組裝說明表示組裝所述積木構件模型的組裝步驟的順序,每一個組裝步驟都包括向所述積木構件模型添加至少一個積木構件;所述方法包括-根據所述積木構件模型的數字表示法,確定用于至少部分地將所述積木構件模型分解為若干個積木構件的分解步驟的至少一個序列,每一個分解步驟都包括從所述積木構件模型中去除至少一個積木構件;-基于多個分解步驟中的至少一個步驟,確定組裝步驟順序中的至少一個組裝步驟。
            2. 根據權利要求1所述的方法,其中,確定分解步驟的至少一個序列的過程包括確定用于將所述積木構件模型分解為積木構件的分解步驟的順序,每一個分解步驟都包括從所述積木構件模型中去除至少一個積木構件;并且其中,確定組裝步驟的順序的至少一個組裝步驟的過程包括顛倒確定的分解步驟的順序,以獲得組裝步驟的順序。
            3. 根據權利要求1所述的方法,包括執行一個迭代過程,其中,所述迭代過程的迭代包括-獲得由前一迭代產生的組裝步驟的順序,所述組裝步驟的順序產生第一部分模型;-確定隨后的組裝步驟,該步驟表示至少一個隨后的積木構件與笫一部分模型的連接,導致產生第二部分模型。-判斷所述積木構件模型是否可以通過導致產生第二部分模型的分解所述積木構件模型的分解步驟的序列進行分解;-如果判斷所述積木構件模型可以通過導致產生第二部分模型的分解所述積木構件模型的分解步驟的序列進行分解,則將確定的隨后的組裝步驟附加到獲得的組裝步驟的順序中。
            4. 根據權利要求1到3中任一權利要求所述的方法,其中,積木構件是互相連接的。
            5. 根據權利要求1到4中任一權利要求所述的方法,其中,確定分解步驟的順序的過程包括執行一個迭代過程,其中,所述迭代過程的迭代包括-獲得從前一迭代產生的前一部分模型;-確定要從前一部分模型分離的導致產生新的部分模型的至少一個積木構件。
            6. 根據權利要求5所述的方法,其中,確定要從前一部分模型分離的至少一個積木構件的過程包括-確定前一部分模型的一組候選子組件,每一個候選子組件都包括前一部分模型的相應的互連的積木構件;-根據第一組預定的選擇標準,選擇單個積木構件,或選擇導致產生新的部分模型的要從前一部分模型分離的確定的候選子組件集合中的一個。
            7. 根據權利要求6所述的方法,其中,確定候選子組件的集合的過程包括根據第二組選擇標準,選擇候選子組件。
            8. 根據權利要求7所述的方法,其中,第二組選擇標準的至少一個包括確定一個或多個候選子組件與前一部分模型連接的連接強度。
            9. 根據權利要求7或8所述的方法,其中,積木構件沿著至少兩個組裝方向是可互連的;并且其中,所述第二組選擇標準中的至少一個包括確定前一部分模型中的組裝方向發生變化的一個或多個位置。
            10. 根據權利要求7到9中任一權利要求所述的方法,其中,一個或多個積木構件包括用于圍繞至少一個方向提供可活動連接的連接件;并且其中,所述第二組選擇標準的至少一個包括確定可移動地連接到前一部分模型的一個或多個子組件。
            11. 根據權利要求6到10中任一權利要求所述的方法,進一步包括在迭代過程中的一次迭代中確定被選擇去除的每一個子組件的分解步驟的序列。
            12. 根據權利要求5到11中任一權利要求所述的方法,包括通過表示圖形的數據結構來表示前一部分模型,所述圖形包括表示前一部分模型的相應的積木構件的節點,以及表示對應的積木構件之間的連接的連接相應節點的邊。
            13. 根據權利要求12所述的方法,其中,所述圖形的邊具有關聯的連接強度值,所述連接強度值表示對應于由所述邊連接的節點的積木構件之間的連接的連接強度。
            14. 根據權利要求13所述的方法,其中,每一個積木構件都包括一個或多個連接元件,用于與另 一個積木構件的一個或多個對應的連接元件嚙合,以在該積木構件和另一個積木構件之間提供連接,每一個連接元件都具有與它關聯的連接元件類別,每一個連接元件類別都具有與它關聯的連接強度;并且其中,所述方法包括根據至少有助于對應的連接的連接元件的數量和相應的類,確定對應于兩個積木構件之間的連接的邊的所述關聯的連接強度值。
            15. 根據權利要求13或14所述的方法,其中,確定所述關聯的連接強度值的過程包括根據有助于對應的連接的連接元件的數量和相應的類,以及根據兩個積木構件的體積,確定連接強度。
            16. 根據權利要求12到15中任一權利要求所述的方法,包括執行圖形劃分過程,以確定前一部分模型的一組候選子組件。
            17. 根據權利要求12到16中任一權利要求所述的方法,其中,所迷圖形的邊具有表示對應于由所述邊連接的節點的積木構件之間的連接的組裝方向的關聯的值。
            18. 根據權利要求12到17中任一權利要求所述的方法,包括識別所述圖形的 一 個或多個關節節點,以便確定前 一 部分模型的 一 組候選子組件。
            19. 根據權利要求12到18中任一權利要求所述的方法,包括識別所述圖形的一個或多個關節節點對,以便確定前一部分模型的一組候選子組件。
            20. 根據權利要求12到19中任一權利要求所述的方法,其中, 一個或多個積木構件包括用于圍繞至少一個方向提供可活動連接的連接件;并且其中,所述圖形的節點和邊兩者中至少一個具有表示可活動連接存在的關聯的值。
            21. 根據權利要求5到20中任一權利要求所述的方法,其中,確定要從前一部分模型分離的導致產生新的部分模型的至少一個積木構件的過程包括,為積木構件的子集和一組積木構件的候選子組件中的至少一個計算一個或多個加權函數;并基于計算出的加權函數的比較,選擇單個積木構件和子組件兩者中的一個。
            22. 根據權利要求21所述的方法,其中,所述一個或多個加權函數中的至少一個具有可能的結果的范圍,所述范圍包括表示分離的適當性的程度的第一子范圍和表示分離的不適當性的程度的第二子范圍。
            23. 根據權利要求22所述的方法,其中,基于計算出的加權函數的比較而選擇單個積木構件或子組件的過程包括根據一個或多個計算出的加權函數計算總權重;其中,計算所述總權重的過程包括,如果至少一個計算出的加權函數具有第二范圍中的結果,則向總權重指定一個第二范圍中的值。
            24. 根據權利要求21到23中任一權利要求所述的方法,其中,每一個積木構件都包括一個或多個連接元件,用于與另一個積木構件的一個或多個對應的連接元件嚙合;其中,每一個連接元件都定義了分離的方向,沿著該方向,積木構件可與另一個積木構件分離;并且其中,計算積木構件或子組件的一個或多個加權函數中的第一個加權函數的過程包括,判斷積木構件或子組件的連接到前一部分模型的一個或多個其他積木構件的所有連接件的相應的分離方向是否彼此平行。
            25. 根據權利要求24所述的方法,其中,計算積木構件或子組件的第一加權函數的過程進一步包括,確定積木構件或子組件與前一部分模型的任何其他積木構件或子組件之間在分離方向的最小距離。
            26. 根據權利要求24所述的方法,其中,計算積木構件或子組件的第一加權函數的過程包括-確定積木構件或子組件的伸展的幾何形狀,其中,所述伸展的幾何形狀在分離的方向伸展,以及-判斷伸展的幾何形狀是否與前一部分模型的任何其他積木構件或子組件交叉。
            27. 根據權利要求21到26中任一權利要求所述的方法,其中,計算積木構件或子組件的一個或多個加權函數中的第二加權函數的過程進一步包括,判斷積木構件或子組件是否是關節積木構件或子組件。
            28. 根據權利要求21到27中任一權利要求所述的方法,其中,計算積木構件或子組件的一個或多個加權函數中的第三加權函數的過程進一步包括,判斷積木構件或子組件是否是積木構件或子組件的關節對的一部分。
            29. 根據權利要求21到28中任一權利要求所述的方法,其中,積木構件或子組件的一個或多個加權函數中的第四加權函數是隨著積木構件或子組件所連接到的其他積木構件的數量減小的函數。
            30. 根據權利要求21到29中任一權利要求所述的方法,其中,所述一個或多個加權函數中的第五加權函數是子組件的積木構件之間的連接的連接強度的函數。
            31. 根據權利要求30所述的方法,其中,計算第五加權函數的過程包括確定子組件的互相連接的積木構件之間的最弱的連接強度,并且其中,第五加權函數是確定的最弱的連接強度的遞減函數。
            32. 根據權利要求21到31中任一權利要求所述的方法,其中,所述一個或多,個加權函數中的第六加權函數是子組件的積木構件與前一部分模型的其他積木構件的連接的連接強度的函數。
            33. 根據權利要求32所述的方法,其中,計算所述第六加權函數的過程包括確定子組件的積木構件和前一部分模型的未包括在所述子組件內的一個或多個其他積木構件之間的最強的連接強度,并且其中,所述第六加權函數是所述確定的最強的連接強度的遞減函數。
            34. 根據權利要求21到33中任一權利要求所述的方法,其中,積木構件或子組件的所述一個或多個加權函數中的第七加權函數是積木構件或子組件的沿著相對于坐標系統的預定方向的位置坐標的函數。
            35. 根據權利要求21到34中任一權利要求所述的方法,其中,積木構件和子組件的所述一個和多個加權函數中的第八加權函數是至少積木構件和子組件的屬性和在所述迭代過程的前一迭代中分離的積木構件或子組件的屬性的函數。
            36. 根據權利要求35所述的方法,其中,所述第八加權函數是積木構件或子組件和在所述迭代過程的前一迭代中分離的積木構件或子組件之間的距離的函數。
            37. 根據權利要求35或36所述的方法,其中,所述第八加權函數是至少表示積木構件或子組件和在所述迭代過程的前一迭代中度量,以及與積木構件或子組件和在所述迭代過程的前一迭代中分離的積木構件或子組件關聯的一個或多個屬性的比較的函數。
            38. 根據權利要求1到37中任一權利要求所述的方法,其中,所述數字表示法包括每一個積木構件相對于預定坐標系統的相應的位置坐標。
            39. 根據權利要求1到38中任一權利要求所述的方法,進一步包括通過計算機實現的用于交互地組裝虛擬積木構件模型的組裝環境,生成所述積木構件模型的所述數字表示法。
            40. 根據權利要求1到39中任一權利要求所述的方法,包括生成包括初始部分模型的部分模型的對應的序列、增量式部分模型的序列、以及完整的模型的圖形表示的序列;其中,每一個增量式部分模型都包括序列的緊前面的增量式部分模型的所有積木構件,以及來自多個積木構件的預定數量的附加積木構件,其中,所述附加積木構件是由確定的組裝步驟的序列確定的。
            41. 根據權利要求40所述的方法,進一步包括提供用戶界面,便于對生成的圖形表示進行用戶控制的處理。
            42. —種數據處理系統,在其上存儲了程序代碼裝置,當所述程序代碼裝置在所述數據處理系統上執行時,用于使數據處理系統執行根據權利要求1到41中任一權利要求所述的方法的步驟。
            43. —種計算機程序產品,包括程序代碼裝置,當所述程序代碼裝置在所述數據處理系統上執行時,用于使所述數據處理系統執行根據權利要求1到41中任一權利要求所述的方法的步驟。
            44. 根據權利要求43所述的計算機程序產品,包括在其上存儲了所述程序代碼裝置的計算機可讀取的介質。
            45. 在載波中實現的并表示指令序列的計算機數據信號,當由數據處理系統執行指令序列時,使所述數據處理系統執行根據權利要求1到41中任一權利要求所述的方法的步驟。
            全文摘要
            計算機實現的生成積木構件模型的組裝說明的方法,該模型包括多個積木構件,組裝說明表示建造積木構件模型的組裝步驟的順序,每一個組裝步驟都包括向積木構件模型中添加至少一個積木構件。該方法包括,從積木構件模型的數字表示法,確定將積木構件模型分解為若干個積木構件的分解步驟的順序,每一個分解步驟都包括從積木構件模型中去除至少一個積木構件;并顛倒確定的分解步驟的順序,以獲得組裝步驟的順序。
            文檔編號G06T17/40GK101675458SQ200880014715
            公開日2010年3月17日 申請日期2008年3月14日 優先權日2007年3月16日
            發明者J·M·厄恩斯特文, J·S·雅各布森, J·阿勒瑞利, O·J·克里斯滕森 申請人:樂高公司
            網友詢問留言 已有0條留言
            • 還沒有人留言評論。精彩留言會獲得點贊!
            1
            婷婷六月激情在线综合激情,亚洲国产大片,久久中文字幕综合婷婷,精品久久久久久中文字幕,亚洲一区二区三区高清不卡,99国产精品热久久久久久夜夜嗨 ,欧美日韩亚洲综合在线一区二区,99国产精品电影,伊人精品线视天天综合,精品伊人久久久大香线蕉欧美
            亚洲精品1区 国产成人一级 91精品国产欧美一区二区 亚洲精品乱码久久久久久下载 国产精品久久久久久久伊一 九色国产 国产精品九九视频 伊人久久成人爱综合网 欧美日韩亚洲区久久综合 欧美日本一道免费一区三区 夜夜爽一区二区三区精品 欧美日韩高清一区二区三区 国产成人av在线 国产精品对白交换绿帽视频 国产视频亚洲 国产在线欧美精品 国产精品综合网 国产日韩精品欧美一区色 国产日韩精品欧美一区喷 欧美日韩在线观看区一二 国产区精品 欧美视频日韩视频 中文字幕天天躁日日躁狠狠躁97 视频一二三区 欧美高清在线精品一区二区不卡 国产精品揄拍一区二区久久 99久久综合狠狠综合久久aⅴ 亚洲乱码视频在线观看 日韩在线第二页 亚洲精品无码专区在线播放 成人亚洲网站www在线观看 欧美三级一区二区 99久久精品免费看国产高清 91麻豆国产在线观看 最新日韩欧美不卡一二三区 成人在线观看不卡 日韩国产在线 在线亚洲精品 亚洲午夜久久久久中文字幕 国产精品成人久久久久久久 精品国产一区二区在线观看 欧美精品国产一区二区三区 中文在线播放 亚洲第一页在线视频 国产午夜精品福利久久 九色国产 精品国产九九 国产永久视频 久久精品人人做人人综合试看 国产一区二区三区免费观看 亚洲精品国产电影 9999热视频 国产精品资源在线 麻豆久久婷婷国产综合五月 国产精品免费一级在线观看 亚洲国产一区二区三区青草影视 中文在线播放 国产成人综合在线 国产在线观看色 国产亚洲三级 国产片一区二区三区 久久99精品久久久久久牛牛影视 亚洲欧美日韩国产 四虎永久免费网站 国产一毛片 国产精品视频在 九九热在线精品 99精品福利视频 色婷婷色99国产综合精品 97成人精品视频在线播放 精品久久久久久中文字幕 亚洲欧美一区二区三区孕妇 亚洲欧美成人网 日韩高清在线二区 国产尤物在线观看 在线不卡一区二区 91网站在线看 韩国精品福利一区二区 欧美日韩国产成人精品 99热精品久久 国产精品免费视频一区 高清视频一区 精品九九久久 欧美日韩在线观看免费 91欧美激情一区二区三区成人 99福利视频 亚洲国产精品91 久热国产在线 精品久久久久久中文字幕女 国产精品久久久久久久久99热 成人自拍视频网 国产精品视频久久久久久 久久影院国产 国产玖玖在线观看 99精品在线免费 亚洲欧美一区二区三区导航 久久久久久久综合 国产欧美日韩精品高清二区综合区 国产精品视频自拍 亚洲一级片免费 久久久久久九九 国产欧美自拍视频 视频一区二区在线观看 欧美日韩一区二区三区久久 中文在线亚洲 伊人热人久久中文字幕 日韩欧美亚洲国产一区二区三区 欧美亚洲国产成人高清在线 欧美日韩国产码高清综合人成 国产性大片免费播放网站 亚洲午夜综合网 91精品久久一区二区三区 国产无套在线播放 国产精品视频网站 国产成人亚洲精品老王 91在线网站 国产视频97 欧美黑人欧美精品刺激 国产一区二区三区免费在线视频 久久久国产精品免费看 99re6久精品国产首页 久久精品91 国产成人一级 国产成人精品曰本亚洲 日本福利在线观看 伊人成综合网 久久综合一本 国产综合久久久久久 久久精品成人免费看 久久福利 91精品国产91久久久久久麻豆 亚洲精品成人在线 亚洲伊人久久精品 欧美日本二区 国产永久视频 国产一区二 一区二区福利 国产一毛片 亚洲精品1区 毛片一区二区三区 伊人久久大香线蕉综合影 国产欧美在线观看一区 亚洲国产欧洲综合997久久 国产一区二区免费视频 国产91精品对白露脸全集观看 久久亚洲国产伦理 欧美成人伊人久久综合网 亚洲性久久久影院 久久99国产精一区二区三区! 91精品国产欧美一区二区 欧美日韩亚洲区久久综合 日韩精品一二三区 久久久夜色精品国产噜噜 国产在线精品福利91香蕉 久久久久久久亚洲精品 97se色综合一区二区二区 91国语精品自产拍在线观看性色 91久久国产综合精品女同我 日韩中文字幕a 国产成人亚洲日本精品 久久国产精品-国产精品 久久国产经典视频 久久国产精品伦理 亚洲第一页在线视频 国产精品久久久久三级 日韩毛片网 久久免费高清视频 麻豆国产在线观看一区二区 91麻豆国产福利在线观看 国产成人精品男人的天堂538 一区二区三区中文字幕 免费在线视频一区 欧美日韩国产成人精品 国产综合网站 国产资源免费观看 亚洲精品亚洲人成在线播放 精品久久久久久中文字幕专区 亚洲人成人毛片无遮挡 国产一起色一起爱 国产香蕉精品视频在 九九热免费观看 日韩亚洲欧美一区 九九热精品在线观看 精品久久久久久中文字幕专区 亚洲欧美自拍偷拍 国产精品每日更新 久久久久国产一级毛片高清板 久久天天躁狠狠躁夜夜中文字幕 久久精品片 日韩在线毛片 国产成人精品本亚洲 国产成人精品一区二区三区 九九热在线观看 国产r级在线观看 国产欧美日韩精品高清二区综合区 韩国电影一区二区 国产精品毛片va一区二区三区 五月婷婷伊人网 久久一区二区三区免费 一本色道久久综合狠狠躁篇 亚洲综合色站 国产尤物在线观看 亚洲一区亚洲二区 免费在线视频一区 欧洲精品视频在线观看 日韩中文字幕a 中文字幕日本在线mv视频精品 91精品在线免费视频 精品国产免费人成在线观看 精品a级片 中文字幕日本在线mv视频精品 日韩在线精品视频 婷婷丁香色 91精品国产高清久久久久 国产成人精品日本亚洲直接 五月综合视频 欧美日韩在线亚洲国产人 精液呈暗黄色 亚洲乱码一区 久久精品中文字幕不卡一二区 亚洲天堂精品在线 激情婷婷综合 国产免费久久精品久久久 国产精品亚洲二区在线 久久免费播放视频 五月婷婷丁香综合 在线亚洲欧美日韩 久久免费精品高清麻豆 精品久久久久久中文字幕 亚洲一区网站 国产精品福利社 日韩中文字幕免费 亚洲综合丝袜 91精品在线播放 国产精品18 亚洲日日夜夜 伊人久久大香线蕉综合影 亚洲精品中文字幕乱码影院 亚洲一区二区黄色 亚洲第一页在线视频 一区二区在线观看视频 国产成人福利精品视频 亚洲高清二区 国内成人免费视频 精品亚洲性xxx久久久 国产精品合集一区二区三区 97av免费视频 国产一起色一起爱 国产区久久 国产资源免费观看 99精品视频免费 国产成人一级 国产精品九九免费视频 欧美91精品久久久久网免费 99热国产免费 久久精品色 98精品国产综合久久 久久精品播放 中文字幕视频免费 国产欧美日韩一区二区三区在线 精品久久蜜桃 国产小视频精品 一本色道久久综合狠狠躁篇 91在线免费观看 亚洲精品区 伊人成综合网 伊人热人久久中文字幕 伊人黄色片 99国产精品热久久久久久夜夜嗨 久久免费精品视频 亚洲一区二区三区高清不卡 久久久久国产一级毛片高清板 国产片一区二区三区 久久狠狠干 99久久婷婷国产综合精品电影 国产99区 国产精品成人久久久久 久久狠狠干 青青国产在线观看 亚洲高清国产拍精品影院 国产精品一区二区av 九九热在线免费视频 伊人久久国产 国产精品久久久久久久久久一区 在线观看免费视频一区 国产精品自在在线午夜区app 国产精品综合色区在线观看 国产毛片久久久久久国产毛片 97国产免费全部免费观看 国产精品每日更新 国产尤物视频在线 九九视频这里只有精品99 一本一道久久a久久精品综合 久久综合给会久久狠狠狠 国产成人精品男人的天堂538 欧美一区二区高清 毛片一区二区三区 国产欧美日韩在线观看一区二区三区 在线国产二区 欧美不卡网 91在线精品中文字幕 在线国产福利 国内精品91久久久久 91亚洲福利 日韩欧美国产中文字幕 91久久精品国产性色也91久久 亚洲性久久久影院 欧美精品1区 国产热re99久久6国产精品 九九热免费观看 国产精品欧美日韩 久久久久国产一级毛片高清板 久久国产经典视频 日韩欧美亚洲国产一区二区三区 欧美亚洲综合另类在线观看 国产精品自在在线午夜区app 97中文字幕在线观看 视频一二三区 精品国产一区在线观看 国产欧美日韩在线一区二区不卡 欧美一区二三区 伊人成人在线观看 国内精品91久久久久 97在线亚洲 国产在线不卡一区 久久久全免费全集一级全黄片 国产精品v欧美精品∨日韩 亚洲毛片网站 在线不卡一区二区 99re热在线视频 久久激情网 国产毛片一区二区三区精品 久久亚洲综合色 中文字幕视频免费 国产视频亚洲 婷婷伊人久久 国产一区二区免费播放 久久99国产精品成人欧美 99国产在线视频 国产成人免费视频精品一区二区 国产不卡一区二区三区免费视 国产码欧美日韩高清综合一区 久久精品国产主播一区二区 国产一区电影 久久精品国产夜色 国产精品国产三级国产 日韩一区二区三区在线 久久97久久97精品免视看 久久国产免费一区二区三区 伊人久久大香线蕉综合电影网 99re6久精品国产首页 久久激情网 亚洲成人高清在线 国产精品网址 国产成人精品男人的天堂538 香蕉国产综合久久猫咪 国产专区中文字幕 91麻豆精品国产高清在线 久久国产经典视频 国产精品成人va在线观看 国产精品爱啪在线线免费观看 日本精品久久久久久久久免费 亚洲综合一区二区三区 久久五月网 精品国产网红福利在线观看 久久综合亚洲伊人色 亚洲国产精品久久久久久网站 在线日韩国产 99国产精品热久久久久久夜夜嗨 国产综合精品在线 国产区福利 精品亚洲综合久久中文字幕 国产制服丝袜在线 毛片在线播放网站 在线观看免费视频一区 国产精品久久久精品三级 亚洲国产电影在线观看 最新日韩欧美不卡一二三区 狠狠综合久久综合鬼色 日本精品1在线区 国产日韩一区二区三区在线播放 欧美日韩精品在线播放 亚洲欧美日韩国产一区二区三区精品 久久综合久久网 婷婷六月激情在线综合激情 亚洲乱码一区 国产专区91 97av视频在线观看 精品久久久久久中文字幕 久久五月视频 国产成人福利精品视频 国产精品网址 中文字幕视频在线 精品一区二区三区免费视频 伊人手机在线视频 亚洲精品中文字幕乱码 国产在线视频www色 色噜噜国产精品视频一区二区 精品亚洲成a人在线观看 国产香蕉尹人综合在线 成人免费一区二区三区在线观看 国产不卡一区二区三区免费视 欧美精品久久天天躁 国产专区中文字幕 久久精品国产免费中文 久久精品国产免费一区 久久无码精品一区二区三区 国产欧美另类久久久精品免费 欧美精品久久天天躁 亚洲精品在线视频 国产视频91在线 91精品福利一区二区三区野战 日韩中文字幕免费 国产精品99一区二区三区 欧美成人高清性色生活 国产精品系列在线观看 亚洲国产福利精品一区二区 国产成人在线小视频 国产精品久久久久免费 99re热在线视频 久久久久久久综合 一区二区国产在线播放 成人国产在线视频 亚洲精品乱码久久久久 欧美日韩一区二区综合 精品久久久久免费极品大片 中文字幕视频二区 激情粉嫩精品国产尤物 国产成人精品一区二区视频 久久精品中文字幕首页 亚洲高清在线 国产精品亚洲一区二区三区 伊人久久艹 中文在线亚洲 国产精品一区二区在线播放 国产精品九九免费视频 亚洲二区在线播放 亚洲狠狠婷婷综合久久久久网站 亚洲欧美日韩网站 日韩成人精品 亚洲国产一区二区三区青草影视 91精品国产福利在线观看 国产精品久久久久久久久99热 国产一区二区精品尤物 久碰香蕉精品视频在线观看 亚洲日日夜夜 在线不卡一区二区 国产午夜亚洲精品 九九热在线视频观看这里只有精品 伊人手机在线视频 91免费国产精品 日韩欧美中字 91精品国产91久久久久 国产全黄三级播放 视频一区二区三区免费观看 国产开裆丝袜高跟在线观看 国产成人欧美 激情综合丝袜美女一区二区 国产成人亚洲综合无 欧美精品一区二区三区免费观看 欧美亚洲国产日韩 日韩亚州 国产欧美日韩精品高清二区综合区 亚洲午夜国产片在线观看 精品久久久久久中文字幕 欧美精品1区 久久伊人久久亚洲综合 亚洲欧美日韩精品 国产成人精品久久亚洲高清不卡 久久福利影视 国产精品99精品久久免费 久久久久免费精品视频 国产日产亚洲精品 亚洲国产午夜电影在线入口 精品无码一区在线观看 午夜国产精品视频 亚洲一级片免费 伊人久久大香线蕉综合影 国产精品久久影院 久碰香蕉精品视频在线观看 www.欧美精品 在线小视频国产 亚洲国产天堂久久综合图区 欧美一区二区三区不卡 日韩美女福利视频 九九精品免视频国产成人 不卡国产00高中生在线视频 亚洲第一页在线视频 欧美日韩在线播放成人 99re视频这里只有精品 国产精品91在线 精品乱码一区二区三区在线 国产区久久 91麻豆精品国产自产在线观看一区 日韩精品成人在线 九九热在线观看 国产精品久久不卡日韩美女 欧美一区二区三区综合色视频 欧美精品免费一区欧美久久优播 国产精品网址 国产专区中文字幕 国产精品欧美亚洲韩国日本久久 日韩美香港a一级毛片 久久精品123 欧美一区二区三区免费看 99r在线视频 亚洲精品国产字幕久久vr 国产综合激情在线亚洲第一页 91免费国产精品 日韩免费小视频 亚洲国产精品综合一区在线 国产亚洲第一伦理第一区 在线亚洲精品 国产精品一区二区制服丝袜 国产在线成人精品 九九精品免视频国产成人 亚洲国产网 欧美日韩亚洲一区二区三区在线观看 在线亚洲精品 欧美一区二区三区高清视频 国产成人精品男人的天堂538 欧美日韩在线观看区一二 亚洲欧美一区二区久久 久久精品中文字幕首页 日本高清www午夜视频 久久精品国产免费 久久999精品 亚洲国产精品欧美综合 88国产精品视频一区二区三区 91久久偷偷做嫩草影院免费看 国产精品夜色视频一区二区 欧美日韩导航 国产成人啪精品午夜在线播放 一区二区视频在线免费观看 99久久精品国产自免费 精液呈暗黄色 久久99国产精品 日本精品久久久久久久久免费 精品国产97在线观看 99re视频这里只有精品 国产视频91在线 999av视频 亚洲美女视频一区二区三区 久久97久久97精品免视看 亚洲国产成人久久三区 99久久亚洲国产高清观看 日韩毛片在线视频 综合激情在线 91福利一区二区在线观看 一区二区视频在线免费观看 激情粉嫩精品国产尤物 国产成人精品曰本亚洲78 国产成人精品本亚洲 国产精品成人免费视频 国产成人啪精品视频免费软件 久久精品国产亚洲妲己影院 国产精品成人久久久久久久 久久大香线蕉综合爱 欧美一区二区三区高清视频 99热国产免费 在线观看欧美国产 91精品视频在线播放 国产精品福利社 欧美精品一区二区三区免费观看 国产一区二区免费视频 国产午夜精品一区二区 精品视频在线观看97 91精品福利久久久 国产一区福利 国产综合激情在线亚洲第一页 国产精品久久久久久久久久久不卡 九色国产 在线日韩国产 黄网在线观看 亚洲一区小说区中文字幕 中文字幕丝袜 日本二区在线观看 日本国产一区在线观看 欧美日韩一区二区三区久久 欧美精品亚洲精品日韩专 国产日产亚洲精品 久久综合九色综合欧美播 亚洲国产欧美无圣光一区 欧美视频区 亚洲乱码视频在线观看 久久无码精品一区二区三区 九九热精品免费视频 久久99精品久久久久久牛牛影视 国产精品成久久久久三级 国产一区福利 午夜国产精品视频 日本二区在线观看 99久久网站 国产亚洲天堂 精品国产一区二区三区不卡 亚洲国产日韩在线一区 国产成人综合在线观看网站 久久免费高清视频 欧美在线导航 午夜精品久久久久久99热7777 欧美久久综合网 国产小视频精品 国产尤物在线观看 亚洲国产精品综合一区在线 欧美一区二区三区不卡视频 欧美黑人欧美精品刺激 日本福利在线观看 久久国产偷 国产手机精品一区二区 国产热re99久久6国产精品 国产高清啪啪 欧美亚洲国产成人高清在线 国产在线第三页 亚洲综合一区二区三区 99r在线视频 99精品久久久久久久婷婷 国产精品乱码免费一区二区 国产在线精品福利91香蕉 国产尤物视频在线 五月婷婷亚洲 中文字幕久久综合伊人 亚洲精品一级毛片 99国产精品电影 在线视频第一页 久久99国产精品成人欧美 国产白白视频在线观看2 成人精品一区二区www 亚洲成人网在线观看 麻豆91在线视频 色综合合久久天天综合绕视看 久久精品国产免费高清 国产不卡一区二区三区免费视 欧美国产中文 99精品欧美 九九在线精品 国产中文字幕在线免费观看 国产一区中文字幕在线观看 国产成人一级 国产精品一区二区制服丝袜 国产一起色一起爱 亚洲精品成人在线 亚洲欧美精品在线 国产欧美自拍视频 99精品久久久久久久婷婷 久99视频 国产热re99久久6国产精品 视频一区亚洲 国产精品视频分类 国产精品成在线观看 99re6久精品国产首页 亚洲在成人网在线看 亚洲国产日韩在线一区 久久国产三级 日韩国产欧美 欧美在线一区二区三区 国产精品美女一级在线观看 成人午夜免费福利视频 亚洲天堂精品在线 91精品国产手机 欧美日韩视频在线播放 狠狠综合久久综合鬼色 九一色视频 青青视频国产 亚洲欧美自拍一区 中文字幕天天躁日日躁狠狠躁97 日韩免费大片 996热视频 伊人成综合网 亚洲天堂欧美 日韩精品亚洲人成在线观看 久久综合给会久久狠狠狠 日韩精品亚洲人成在线观看 日韩国产欧美 亚洲成aⅴ人片在线影院八 亚洲精品1区 99久久精品免费 国产精品高清在线观看 国产精品久久久免费视频 在线亚洲欧美日韩 91在线看视频 国产精品96久久久久久久 欧美日韩国产成人精品 91在线亚洲 热久久亚洲 国产精品美女免费视频观看 日韩在线毛片 亚洲永久免费视频 九九免费在线视频 亚洲一区网站 日本高清二区视频久二区 精品国产美女福利在线 伊人久久艹 国产精品久久久久三级 欧美成人精品第一区二区三区 99久久精品国产自免费 在线观看日韩一区 国产中文字幕一区 成人免费午夜视频 欧美日韩另类在线 久久99国产精品成人欧美 色婷婷中文网 久久天天躁夜夜躁狠狠躁2020 欧美成人伊人久久综合网 国产精品福利资源在线 国产伦精品一区二区三区高清 国产精品亚洲综合色区韩国 亚洲一区欧美日韩 色综合视频 国语自产精品视频在线区 国产高清a 成人国内精品久久久久影 国产在线精品香蕉综合网一区 国产不卡在线看 国产成人精品精品欧美 国产欧美日韩综合精品一区二区三区 韩国电影一区二区 国产在线视频www色 91中文字幕在线一区 国产人成午夜免视频网站 亚洲综合一区二区三区 色综合视频一区二区观看 久久五月网 九九热精品在线观看 国产一区二区三区国产精品 99久热re在线精品996热视频 亚洲国产网 在线视频亚洲一区 日韩字幕一中文在线综合 国产高清一级毛片在线不卡 精品国产色在线 国产高清视频一区二区 精品日本久久久久久久久久 亚洲国产午夜精品乱码 成人免费国产gav视频在线 日韩欧美一区二区在线观看 欧美曰批人成在线观看 韩国电影一区二区 99re这里只有精品6 日韩精品一区二区三区视频 99re6久精品国产首页 亚洲欧美一区二区三区导航 欧美色图一区二区三区 午夜精品视频在线观看 欧美激情在线观看一区二区三区 亚洲热在线 成人国产精品一区二区网站 亚洲一级毛片在线播放 亚洲一区小说区中文字幕 亚洲午夜久久久久影院 国产自产v一区二区三区c 国产精品视频免费 久久调教视频 国产成人91激情在线播放 国产精品欧美亚洲韩国日本久久 久久亚洲日本不卡一区二区 91中文字幕网 成人国产在线视频 国产视频91在线 欧美成人精品第一区二区三区 国产精品福利在线 久久综合九色综合精品 欧美一区二区三区精品 久久国产综合尤物免费观看 久久99青青久久99久久 日韩精品免费 久久国产精品999 91亚洲视频在线观看 国产精品igao视频 色综合区 在线亚洲欧国产精品专区 国产一区二区三区在线观看视频 亚洲精品成人在线 一区二区国产在线播放 中文在线亚洲 亚洲精品第一国产综合野 国产一区二区精品久久 一区二区三区四区精品视频 99热精品久久 中文字幕视频二区 国产成人精品男人的天堂538 99精品影视 美女福利视频一区二区 久久午夜夜伦伦鲁鲁片 综合久久久久久久综合网 国产精品国产欧美综合一区 国产99视频在线观看 国产亚洲女在线精品 婷婷影院在线综合免费视频 国产亚洲3p一区二区三区 91成人爽a毛片一区二区 亚洲一区二区高清 国产欧美亚洲精品第二区首页 欧美日韩导航 亚洲高清二区 欧美激情观看一区二区久久 日韩毛片在线播放 亚洲欧美日韩高清中文在线 亚洲日本在线播放 国产精品一区二区制服丝袜 精品国产一区二区三区不卡 国产不卡在线看 国产欧美网站 四虎永久在线观看视频精品 国产黄色片在线观看 夜夜综合 一本色道久久综合狠狠躁篇 欧美亚洲综合另类在线观看 国产91在线看 伊人久久国产 欧美一区二区在线观看免费网站 国产精品久久久久三级 久久福利 日韩中文字幕a 亚洲午夜久久久久影院 91在线高清视频 国产亚洲一区二区三区啪 久久人精品 国产精品亚洲午夜一区二区三区 综合久久久久久 久久伊人一区二区三区四区 国产综合久久久久久 日韩一区精品视频在线看 国产精品日韩欧美制服 日本精品1在线区 99re视频 无码av免费一区二区三区试看 国产视频1区 日韩欧美中文字幕一区 日本高清中文字幕一区二区三区a 亚洲国产欧美无圣光一区 国产在线视频一区二区三区 欧美国产第一页 在线亚洲欧美日韩 日韩中文字幕第一页 在线不卡一区二区 伊人久久青青 国产精品一区二区在线播放 www.五月婷婷 麻豆久久婷婷国产综合五月 亚洲精品区 久久国产欧美另类久久久 99在线视频免费 伊人久久中文字幕久久cm 久久精品成人免费看 久久这里只有精品首页 88国产精品视频一区二区三区 中文字幕日本在线mv视频精品 国产在线精品成人一区二区三区 伊人精品线视天天综合 亚洲一区二区黄色 国产尤物视频在线 亚洲精品99久久久久中文字幕 国产一区二区三区免费观看 伊人久久大香线蕉综合电影网 国产成人精品区在线观看 日本精品一区二区三区视频 日韩高清在线二区 久久免费播放视频 一区二区成人国产精品 国产精品免费精品自在线观看 亚洲精品视频二区 麻豆国产精品有码在线观看 精品日本一区二区 亚洲欧洲久久 久久中文字幕综合婷婷 中文字幕视频在线 国产成人精品综合在线观看 91精品国产91久久久久福利 精液呈暗黄色 香蕉国产综合久久猫咪 国产专区精品 亚洲精品无码不卡 国产永久视频 亚洲成a人片在线播放观看国产 一区二区国产在线播放 亚洲一区二区黄色 欧美日韩在线观看视频 亚洲精品另类 久久国产综合尤物免费观看 国产一区二区三区国产精品 高清视频一区 国产精品igao视频 国产精品资源在线 久久综合精品国产一区二区三区 www.五月婷婷 精品色综合 99热国产免费 麻豆福利影院 亚洲伊人久久大香线蕉苏妲己 久久电影院久久国产 久久精品伊人 在线日韩理论午夜中文电影 亚洲国产欧洲综合997久久 伊人国产精品 久草国产精品 欧美一区精品二区三区 亚洲成人高清在线 91免费国产精品 日韩精品福利在线 国产一线在线观看 国产不卡在线看 久久99青青久久99久久 亚洲精品亚洲人成在线播放 99久久免费看国产精品 国产日本在线观看 青草国产在线视频 麻豆久久婷婷国产综合五月 国产中文字幕一区 91久久精品国产性色也91久久 国产一区a 国产欧美日韩成人 国产亚洲女在线精品 一区二区美女 中文字幕在线2021一区 在线小视频国产 久久这里只有精品首页 国产在线第三页 欧美日韩中文字幕 在线亚洲+欧美+日本专区 精品国产一区二区三区不卡 久久这里精品 欧美在线va在线播放 精液呈暗黄色 91精品国产手机 91在线免费播放 欧美视频亚洲色图 欧美国产日韩精品 日韩高清不卡在线 精品视频免费观看 欧美日韩一区二区三区四区 国产欧美亚洲精品第二区首页 亚洲韩精品欧美一区二区三区 国产精品视频免费 在线精品小视频 久久午夜夜伦伦鲁鲁片 国产无套在线播放 久热这里只精品99re8久 欧美久久久久 久久香蕉国产线看观看精品蕉 国产成人精品男人的天堂538 亚洲人成网站色7799在线观看 日韩在线第二页 一本色道久久综合狠狠躁篇 国产一区二区三区不卡在线观看 亚洲乱码在线 在线观看欧美国产 久久福利青草精品资源站免费 国产玖玖在线观看 在线亚洲精品 亚洲成aⅴ人在线观看 精品91在线 欧美一区二三区 日韩中文字幕视频在线 日本成人一区二区 日韩免费专区 国内精品在线观看视频 久久国产综合尤物免费观看 国产精品系列在线观看 一本一道久久a久久精品综合 亚洲免费播放 久久精品国产免费 久久人精品 亚洲毛片网站 亚洲成a人一区二区三区 韩国福利一区二区三区高清视频 亚洲精品天堂在线 一区二区三区中文字幕 亚洲国产色婷婷精品综合在线观看 亚洲国产成人久久笫一页 999国产视频 国产精品香港三级在线电影 欧美日韩一区二区三区四区 日韩国产欧美 国产精品99一区二区三区 午夜国产精品理论片久久影院 亚洲精品中文字幕麻豆 亚洲国产高清视频 久久免费手机视频 日韩a在线观看 五月婷婷亚洲 亚洲精品中文字幕麻豆 中文字幕丝袜 www国产精品 亚洲天堂精品在线 亚洲乱码一区 国产日韩欧美三级 久久999精品 伊人热人久久中文字幕 久热国产在线视频 国产欧美日韩在线观看一区二区三区 国产一二三区在线 日韩国产欧美 91精品国产91久久久久 亚洲一区小说区中文字幕 精品一区二区免费视频 国产精品视频免费 国产精品亚洲综合色区韩国 亚洲国产精品成人午夜在线观看 欧美国产日韩精品 中文字幕精品一区二区精品