シェイプ文法

計算における形状文法(Shape grammar)は、幾何学的形状を生成する生産システムの特定のクラスです。 典型的には、形状は2次元または3次元であり、したがって形状文法は2次元および3次元言語を研究する方法である。 シェイプ文法の基礎は、1971年にジョージ・スティニーとジェームス・ギプスによって書かれた精密な記事で定義されています。

定義
形状文法は、形状ルールと、ルールを選択して処理する生成エンジンで構成されています。 シェイプルールは、既存の(一部の)シェイプをどのように変形できるかを定義します。 シェイプルールは、左から右を指す矢印で区切られた2つの部分で構成されています。 矢印の左の部分は左手側(LHS)と呼ばれます。 形状とマーカーの条件を表しています。 矢印の右部分は右手側(RHS)と呼ばれます。 これは、LHS形状をどのように変換し、マーカを配置するかを示しています。 マーカは、新しい形状の位置を特定して方向付けするのに役立ちます。

形状文法は、開始規則、少なくとも1つの変換規則、および終了規則の3つの形状規則からなるものである。 形状生成プロセスを開始するには、開始規則が必要です。 形状生成プロセスを停止させるには、終了規則が必要です。 プロセスを停止する最も簡単な方法は、マーカーを削除するシェイプルールによるものです。 シェイプ文法はチョムスキー文法とは大きく異なる点があります。生産ルールは、L-Systemsでの「制作」と同様に、(チョムスキー文法のように)連続して適用することも、並列して適用することもできます(チョムスキー文法では許可されません)。

形状文法システムには、作成されたジオメトリが表示される作業領域が追加されています。 生成エンジンは、シェイプルールのLHSと一致する条件に対して、現在の作業シェイプ(CWS)と呼ばれることが多い既存のジオメトリをチェックします。 LHSと一致するシェイプルールは、使用に適格です。 複数のルールが適用される場合、生成エンジンは適用するルールを選択する必要があります。 代替のシナリオでは、エンジンはまず文法規則の1つを選択し、CWSでこの規則のLHSのすべての一致を見つけることを試みます。 いくつかの一致がある場合、エンジンは(その構成/実装に応じて)

形状文法は正式に4タプル  、

  •  有限の文字集合であり、
  •  有限の文字セットなので、  。
  •  生産ルールの有限集合
  •  の要素で構成される開始図形です  そして  、

群衆の要素  任意の数の要素の有限の配列です  任意のスケーリングまたは方向付けを伴う。

要素がオフ  それはルール  でる  、または  発生は端末図と呼ばれます。

要素がオフ  いわゆる非終端の数字やマーカーです。 要素  でる  形状規則または生産規則と呼ばれ、形式 書き留めました。

左側  要素からなる図形である  1つの要素  、

右側  図形であり、同じ要素  これで  が発生すると、同じ要素  に  、要素と組み合わされた  、または同じ要素  に  、追加の要素  要素と組み合わされた  、

 開始図形であり、  そして  これは、通常、少なくとも1つの要素で構成されます。  ルールで  に  発生する。

並行してすべてのマッチにルールを適用し、
すべての一致にシリアルにルールを適用します(矛盾が生じる可能性があります)。
検出された一致の1つを選択し、この一致のみにルールを適用します。
シェイプ文法は、住宅レイアウトや構造の洗練など、小さく定義された世代の問題に限定されているときに最も役立ちます。 シェイプルールは通常、小さなシェイプで定義されるため、シェイプ文法には多くのルールが含まれます。 ウィリアム・ミッチェル(William Mitchell)が提示したパラディアン・ヴィラ(Palladian villas)の文法は、例えば8つの段階にわたって適用される69の規則を含んでいる。

パラメトリック形状文法は、形状文法の拡張です。 シェイプルールのRHS内の新しいシェイプは、既存のシェイプのコンテキストの詳細を考慮に入れるためのパラメータによって定義されます。 これは、通常、新しい形状の内部の比率に影響を与え、より多様なフォームを作成することができます。 このようにして、構造文法を構造条件、例えばスパンに依存する屋根構造の梁の幅に対応させる試みがなされている。

シェイプ文法は、一般的なコンピュータ支援設計アプリケーションで広く使用されているわけではありません。
説明

形状文法は、ルールと、ルールを選択して処理または計算する生成エンジンとからなる。 ルールは、既存の図形(またはその一部)を幾何空間でどのように変形できるかを定義します。 形状文法の定義は、記号の代わりに図形を使用して、Chomskyの句構造文法の標準的な定義に従う。

形状文法は、形状規則を再帰的に適用することによって図形を生成する。 既存の図形にルールを適用した結果は、常に新しい図形で構成され、既存の図形で構成されます。新しい図形の左側は、ルールの右側の図形に置き換えられます。

形状文法は、最小限3つの生産規則(=形状規則)で構成されている。 初期ルール、少なくとも1つの変換ルール、および終了ルール。 開始ルールは生成プロセスを開始するために必要ですが、スケジューリングルールは生成を完了するために必要です。 プロセスを停止する最も簡単な方法は、マーカー(=非終端記号)を削除することです。 チョムスキー文法とは対照的に、シェイプ文法の生産ルールは、Lシステムのシーケンスと同様に、連続的にだけでなく並列でも適用できます。

形状文法システムは、通常、生成された形状が表示される特定のワークスペースを有する。 生成エンジンは、シェイプルールの左側の条件に一致するかどうかを既存のFigureにチェックします。 複数の適切なルールが見つかった場合、エンジンは適用するルールを決定します。 もう1つの方法は、最初にルールを選択し、左側のすべての一致を現在のFigureで検索することです。 実装に応じていくつかのマッチがあります

  • 並行してすべてのマッチに適用されるルール、
  • すべての一致に連続的に適用されるルール(矛盾が生じる可能性があります)
  • マッチの1つが選択され、ルールはこのエリアにのみ適用されます。

パラメトリック形状文法は、 形状文法の拡張です。 プロダクションルールの代わりに、シェイプルールスキーマ( )、パラメトリックフィギュアで構成されています。 変数に具体的な値を挿入することにより  そして  新しい図形ルールが定義され、通常の方法で新しい図形を作成するために使用されます。 この一般化によって、より大きな数の変動が生成される。

アプリケーション
シェイプ文法はもともと絵画や彫刻のために提示されていましたが、それ以来主に建築(コンピュータ支援設計)のアプリケーションがありました。 シェイプ文法は、インテリアや建物のファサードの構造やレイアウトなど、細かく定義された問題に特に適しています。 シェイプ文法は非常に多くの場合、多数のルールで構成されています。 たとえば、イタリアの建築家アンドレア・パラディオのスタイルでヴィラを作るためにウィリアム・ミッチェルが提示した形状の文法は69のルールで構成され、8つの実装ステップで適用されます。

アーキテクチャと同様に、シェイプ文法は、近年コンピュータグラフィックスにおいてますます重要になってきています。 シェイプ文法は、建物や都市の手続きモデリング(例えば映画やビデオゲームなど)に主に使用されます。 Shape Grammarsは、生産ルールを使用してさまざまな異なる3Dモデルを生成する多数の開発システムの基礎を形成します。 現実的な外観のストリートプランや建物のファサードやインテリアは、シェイプ・グラマースを使用して手続き的に作成できます。

Shape文法が適用されている他の分野には、工業デザインと工学が含まれます。

ソフトウェアプロトタイプ
これは、Web上で利用可能なソフトウェアプロトタイプのリストです(それらのうちのいくつかは厳密には文法システムを設定しています)。

文法環境
グレープ
SD2
シェイプ文法インタープリタ
Shaper2D
スパッパー
SubShapeDetector
Yingzaoファシビルジェネレータ