我花了很多時間思考紋章學,但可能與紋章歷史學家的角度不同。對於Iron Arachne,我必須將紋章視為一種能夠用軟體表示的系統,這改變了我提出的問題。簡單地組合獅子、老鷹、十字架、劍、花朵和皇冠等圖案並隨機選擇,雖然能產生看似紋章的圖像,但並不是真正的紋章。紋章傳統不僅是符號的集合,而是一套規則,規範這些符號如何被選擇、描述、排列、組合、區分和辨識。
這對程序生成提出了更有趣的問題:如何以程式方式表達這些系統,同時忠實於它們發展的歷史背景?比較歐洲紋章與日本家紋特別有用,因為兩者解決類似問題卻採用截然不同的視覺系統,這些差異暗示了不同的程序生成方法。
西歐紋章對程式設計師來說相當便利,因為它已有類似形式語言的結構。紋章可以用「紋章描述語(blazon)」來描述,這是一套專門詞彙和語法,能精確描述紋章設計,使熟悉系統的人能重建圖像。舉例來說,一個簡單的描述:「藍底(azure)上有一隻金色(Or)獅子,採用傳統的立姿(rampant)」,即使不見盾牌,也能重建其主要外觀。
更複雜的紋章會加入底部分割、基本圖案、多重圖案、位置關係、色彩變化等,但基本概念相同。紋章描述語不只是圖像的名稱,而是結構化的描述,從計算角度來看,它類似受限的自然語言,有詞彙、形態、語法和資訊排序規則,部分結構有效,部分無效。描述的前半段建立上下文,後半段在此基礎上解讀。少量規則和詞彙能描述龐大圖像空間。
這類似語言學中的生成系統,語言不儲存所有句子,而是提供規則生成無限句子。紋章對視覺設計做類似處理。
對程序生成器來說,明顯的架構是先生成有效的紋章描述,再渲染圖像。理論上,同一描述可交給不同渲染器,產生風格不同但可辨識的紋章。其身份部分存在於抽象描述,而非單一圖像。
日本家紋則面臨不同問題。與歐洲紋章類似,家紋作為視覺識別符號,與家族、個人、機構及政治關係相關,出現於服飾、旗幟、裝備、建築等。但將家紋簡化為「日本紋章」忽略了兩者間重大差異。最重要的是,家紋系統中沒有類似紋章描述語的中心語言。家紋多為高度風格化的設計,由可辨識的圖案組成,如植物、動物、天體、工具、幾何圖形等,這些圖案被抽象成緊湊的視覺詞彙,並依特定構圖模式排列。著名例子如德川家紋「三葉葵」,三片風格化的葵葉圍繞中心旋轉排列。
重點不只是三片葉子,而是特定風格葉形、重複、方向、間距、對稱及整體輪廓的組合。若用西方紋章思維描述,可能只說「三片葵葉」,但這資訊不足以重現家紋。幾何形狀很重要,這提示不同的程序模型。
家紋生成器可直接操作圖形基元:取一基底形狀,複製三次,繞共同中心旋轉,依模板縮放定位,必要時裁剪或包圍於圓形內。這系統更接近程序幾何而非自然語言生成。
因此,我們有兩種截然不同的紋章生成模型:西方紋章偏重描述性,先生成結構化描述再渲染;日本家紋偏重組合性,透過圖形元素的組合與變換生成視覺結構。此區分非絕對,西方紋章也有組合規則,家紋亦有名稱與分類,但對計算表示有參考價值。
舉例三個重複物件,西方紋章重點是圖案身分、色彩、數量與排列,如「三個銀色圓點,二上單下」描述排列。家紋則以幾何方式表達。西方表現類似抽象語法樹,日本則像場景圖,兩者對程序生成都具吸引力。
此比較也說明僅蒐集歷史符號不足。西方紋章有色彩規則、底部分割、基本圖案、圖案位置、重複、繼承、合併等規則。著名的「色彩規則」通常禁止金屬色疊金屬色或顏色疊顏色,目的是強烈視覺對比,如金獅配藍底易辨識,紅獅配藍底則較難。若隨機選擇底色與圖案色,可能違反此規則。
較佳方法是條件生成,底色決定後續可選色彩。若底色為顏色,圖案可優先選金屬色。若底部分割,則開啟其他可能。若有基本圖案,其他圖案位置也改變。
家紋則有不同限制,對稱、重複、包圍、負空間與抽象程度尤為重要。隨機選花朵貼三次於圓形,並不比隨機獅子貼盾牌更像家紋或紋章。兩者皆需建模關係而非單純物件。
歷史視覺系統對程式設計師來說並不簡單。西方紋章充滿例外、爭議、區域差異、歷史演變,甚至有違反基本規則的紋章。色彩規則本身也有著名例外,如耶路撒冷王國紋章在銀底放金十字,金屬疊金屬,這不是錯誤,而是歷史慣例而非物理定律。
因此程序生成器必須決定模擬何種系統,是現代紋章學者認可的紋章?十四世紀英格蘭風格?還是融合多歐洲傳統的奇幻風格?這些是不同生成器。
家紋也面臨類似問題。雖然軟體可用乾淨的圖案分類、重複與包圍結構,但歷史資料不完整,設計可被改變、組合、簡化、區分或多重使用。家族可能用多個家紋,相關群體用變體,類似圖案也可能獨立出現。
甚至認為家紋如同紋章屬於特定家族或個人,可能誤導。真實紋章系統包含歷史,歷史帶來不規則性。解決方案之一是區分語法與語料庫。
語法描述生成器可用的正常操作,語料庫記錄歷史上存在的形式,包括一般語法無法生成的例外。軟體可表達:「這是此傳統通常的設計方式,但這些特殊例外也存在。」
這比較引發Iron Arachne現有紋章生成器的問題:奇幻紋章生成器是否應主要模仿西方紋章描述語?或許不必。
描述語吸引人因為其豐富正式詞彙,程式設計師傾向直接重現此詞彙:生成底色、選色彩、選圖案、決定姿態與排列,並序列化為描述語。但Iron Arachne的目標通常是為虛構世界產生有趣視覺作品,此時家紋的組合邏輯可能更實用。
這改變了我提出的問題,從「我該生成什麼紋章句子?」變成「我該生成什麼視覺關係?」紋章可從少量圖形基元開始,這些基元可反射、旋轉、重複、巢狀、交疊或圍繞軸排列。紋章圖案本身也可成為更大組合系統的基元。結果不必是歷史上有效的歐洲紋章或日本家紋,而是結合兩者的程序洞見,創造更佳奇幻符號生成器。
乍看之下,西方紋章似乎較易生成,因為其結構已形式化為語言。描述語子集可用枚舉、標記聯合、語法規則或抽象語法樹自然表示,渲染器可遍歷結構產生SVG元素。
但隨著詞彙擴展,難度迅速增加。圖案可有不同姿態,底色可複雜分割與處理,圖案上還可再加圖案。合併則產生整體紋章組合。歷史與區域詞彙不同,生成合理西方紋章容易,實作紋章系統不易。
家紋則幾乎相反。有限的家紋生成器非常容易想像。SVG特別適合此問題,因其已有路徑、群組、變換、裁剪、遮罩與可重用定義。基底圖案可定義一次,透過變換多次實例化。
重現實際家紋的歷史多樣性更難。難點不在畫三片旋轉葉子,而是建構圖案與變換詞彙,重現歷史視覺邏輯,而非僅追蹤與儲存數千成品設計。生成設計與從目錄選擇設計的界線,是程序生成的有趣問題。
我今年研究研究所課程中學到有限狀態機概念,讓我思考如何應用於Iron Arachne。這兩種視覺識別系統能否用有限狀態機表示?
對有限子集當然可以。西方生成器從底色與色彩開始,可能加基本圖案及其色彩,再選圖案、色彩與排列,最後完成紋章。轉換受先前選擇限制。
例如選擇顏色底色會改變圖案允許或加權的色彩。家紋生成器從圖案開始,選擇重複與對稱,再決定方向、包圍與裝飾。早期選擇限制後續。
但我懷疑純有限狀態機並非最終抽象。兩系統皆具層級結構。圖案可包含或互動其他圖案,底色可分割成需描述的區域。家紋可包含重複元素群組於更大包圍或重複結構中。這指向語法、樹狀或圖形表示,而非平面狀態機。有限狀態機可用於控制生成過程,樹狀結構表示生成設計。Iron Arachne應保留此區分。
比較兩者我學到最有用的是,程序生成不應先問「此領域有哪些物件」,而是問「有哪些操作」。目錄告訴我紋章有獅子、老鷹、十字架、葵花、菊花、圓形、菱形及數千圖案。
生成系統告訴我物件可被分割、重複、鏡像、旋轉、包圍、疊加、對比、分組與從屬。後者更強大,適用範圍遠超紋章。
當我想程序生成源自歷史視覺傳統的東西時,我必須抗拒將傳統視為資產庫的誘惑。目標是找出產生可辨識結構的規則。難點在於判斷哪些規則屬於歷史傳統,哪些是後人為解釋而加的分類。
日本家紋與西歐紋章只是視覺身份系統的兩個例子,還有許多其他系統值得從程序生成角度研究。它們各用不同視覺詞彙與慣例傳達身份。
蘇格蘭格子花呢是明顯例子,身份透過彩色條紋重複序列及交叉表達。旗幟也是,因為旗幟學結合幾何構圖與有限的分割、色彩與符號詞彙。商人標記與石匠標記則是更簡單的個人識別系統。Iron Arachne已生成組織的商人標記,但紋章與商人標記系統的差異一直讓我困擾。
軍事徽章、牛印、印章、製造商標與現代企業標誌,都在不同技術與社會限制下解決類似問題。
甚至書寫系統可能也屬於此研究範疇。一旦視覺身份被理解為語法而非目錄,生成徽章與生成字形的界線變得非常模糊。這對Iron Arachne特別有趣,因為虛構書寫系統、紋章、旗幟與其他文化產物最終面臨相同程序問題:我能用最小且有用的規則集,生成看似屬於連貫視覺傳統的圖案嗎?我認為這比問我能在資料庫放多少符號更有意義。這是我目前的研究方向,也可能是Iron Arachne下一次重大更新的主題。
