ArcGIS CityEngineのチュートリアルにアクセスするには、は、[Help] メニュー → [Download Tutorials and Examples…] を選択し、[CityEngine Tutorial] からダウンロードできます。
このチュートリアルでは、ファサードを分割したルール テンプレートをより直感的に作成したり、詳細なファサード要素をインポートする方法や高度なファサード作成のためのCGA テンプレートの編集方法を分析します。ファサード作成の基本から開始するには、チュートリアル 13a: ファサード ウィザード - 基本的なファサード作成を参照してください。
この例では、画像ファイルを ファサード ウィザード に読み込んで、ファサード ルール テンプレートを作成します。その後、単純なマス モデルの建物ルールを作成し、以前に生成したファサード ルールを適用します。
演習 |
---|
・Part 1: ファサード分析とルール作成 |
・Part 2: 分割タイプで単一分割を作成 |
・Part 3: 分割タイプについて |
・Part 4: 繰り返し分割 |
・Part 5: LOD とアセットの挿入 |
使用する元のファサード テクスチャ ファイルは、高度なファサードです。
ファサード ウィザードを使用してより複雑なファサードを作成するときに頻繁に遭遇する一連の問題があります。
ほとんどの場合、ファサード ウィザードを使用するときは、窓の細分化の数、装飾的な詳細の繰り返し、不均一な床の高さなど、ファサードの詳細を慎重に調査して、構造を分割する最適な方法を見つける必要があります。時間をかけて戦略的に考えることをお勧めします。
・緑: 繰り返しのないシングルタイル
・青: 繰り返しのあるタイル (x または y)
・赤: 入れ子式に繰り返すタイル (x と y 方向にタイル化可能)
・黄: ルール対称性 (VCGA でリンクされる)
メインのファサード構造には、単一分割、反復分割、および規則の対称性の分析が含まれます。
ファサードのサイズを大きくし、テクスチャを繰り返すには、単一分割と反復分割を追加し、分割を絶対分割または浮動分割として定義します。下の画像に示されている分割の手順は、分割の順序 (絶対および浮動) が垂直方向に正しく設定されるよう意図的に配置されています。
[X Split] ツールと [Y Split] ツールを使用して、ファサードに 1 つの分割 (青い線で表示) を追加します。各分割の直後に、新しい領域にカーソルを合わせると、青色のハイライトが表示されます。上下の矢印キーを使用して、分割タイプ (黄色の破線と実線で表示) を切り替えて割り当てます。
a. Shift キーを使用して、前の分割と同じ軸に新しい軸をスナップします。
b. 必要に応じて、領域にカーソルを合わせ、上下の矢印キーをもう一度押して、分割タイプを変更します。
右側の上層階の垂直分割は、意図的に分割されておらず、このチュートリアルの後半でルールの再リンクを使って解決します。
黄色の線は、分割タイプを表します。分割タイプを絶対型または浮動型として正しく定義することが重要です。
絶対 – 領域の寸法は変更できず、領域は異なるサイズのファサードに比例してのみスケーリングされます。絶対値に設定された領域の繰り返しは、新しい領域を繰り返すために、必要な正確な寸法が元の単一分割の方向で満たされた場合にのみ生成されます。ファサードの適切なタイル張りを確保するには、絶対分割としてスケーリングするときに固定値を必要とする要素を指定します。
• 絶対分割タイプの X Splits は、ハイライト表示された領域に黄色の水平実線で表されます。
• 絶対分割タイプの Y Splits は、ハイライト表示された領域に黄色の垂直実線で表されます。
浮動 - 領域の寸法は変更可能で、さまざまなサイズのファサードに合わせて拡張できます。浮動に設定された領域の繰り返しは、元の分割の正確な寸法に依存しません。元の単一分割の方向にファサードに合わせて引き伸ばしたり、拡大縮小したりできます。浮動分割は、CGA コードのチルダ記号 (~) にも対応しています。
• 浮動分割タイプの X Splits は、強調表示された領域に黄色の水平破線で表されます。
• 浮動分割タイプの Y Splits は、強調表示された領域に黄色の垂直破線で表されます。
分割タイプなし – 領域の寸法は、元のイメージのインポート時の寸法の残り部分です。ファサードを再スケーリングすると、どちらの方向にも動的な調整を行わずにテクスチャが引き伸ばされます。
• 割り当てられた分割タイプは、強調表示された領域に線なしで表されます。
次の分割は、ファサードのどの部分が繰り返されて任意のファサード サイズに適応するかを定義する繰り返し分割です。
前のセクションで単一分割と絶対値または浮動値を既に割り当てられている状態で、[X Repeat] ツールを使用して次の垂直分割を作成します。
上層階の窓が様々なファサードの寸法に合わせて垂直方向に拡大縮小されるようにし、浮動分割タイプに割り当てられた窓には別の手順が必要です。
a. [Y Repeat] ツールを有効にします。
b. 4 つのウィンドウのそれぞれにカーソルを合わせると、下図のように赤い繰り返し線で囲まれた上部を横切るビームが見えます。
c. カーソルを合わせた状態で、これらの窓の梁ごとに 1 回クリックします。結果の分割線は表示されませんが、これは予期されることです。
ジオメトリーをさらに詳細にするには、青い領域をそれぞれ個別の要素に分割してください。作業を進めるにつれて、これらの分割は赤い領域にも自動的に繰り返されます。分割の順序を確認するには、以下の詳細画像を参考にしてください。
特別なケースは、円弧がある 1 階です。これを円弧の側面で正確に分割すると、このチュートリアルの次の部分でアセットを挿入できるようにします。
次に、1 つの窓の幅を定義して、ファサードの合計サイズを再定義します。チュートリアルのこの部分の冒頭で、[Set Region Width] ポップアップでファサード全体のサイズを定義しました。ただし、この値が正しいかどうかは不明であり、完全なファサードよりも窓のサイズに精通しているため、新しい値を設定します。
分割された窓を右クリックし、[Set Region Width] を選択します。
[Z Adjust] ツールを使用して深度値を編集し、ファサードにボリュームのある外観を与えます。窓を少し後ろに押し、棚を前に押します。三角形と台形の装飾を進めることもできます。
[Save Rules and Textures for Current Facade] ボタンをクリックして、ルール ファイルを作成します。
ファサードで生成された CGA ルール ファイルを後で、このステージに戻す場合に備えて、一意の名前で 2 番目のコピーを作成することをお勧めします。
[Facade Wizard] ウィンドウを右クリックすると、[Immediate Save and Generate for Selected Shapes] を有効にできます。これを有効にすると、Facade Wizard 内からファイル名を選択や変更したり、コピーを作成したりするためのルール ファイルの保存ウィンドウが表示されません。
このルールをどのように進めるべきかを尋ねるかもしれません。ファサード ウィザードのルール ファイルはファサード用に作成されているため、垂直サーフェスにのみ割り当てることができます。そのため、テストできる単純なマス モデル ルールを作成します。
[Navigator] ウィンドウで、チュートリアル・プロジェクトの rules フォルダーを右クリックし、[New] → [CGA Rule file] をクリックします。
この新しいルールに MassModel.cga という名前を付け、[CGA Editor] ウィンドウを展開します。
属性を作成し、buildingHeight という名前を付けて、値 25 を指定します。
作成したファサード テンプレート ファイル (gen_Facade_AdvancedFacade.cga) をインポートするには、[CGA Editor] ウィンドウで右クリックし、コンテキスト メニューから [Add Import] を選択して、参照して見つけます。または、CGA ファイルを [Navigator] ウィンドウから [CGA Editor] ウィンドウにドラッグして、同じ結果を確認します。
押し出しコマンドで Lot という名前のルールを作成します。押し出しの値には、以前に生成された buildingHeight 属性を使用します。
押し出しの後、すべての側面を分割する要素分割を追加します。
インポートしたファサード テンプレート ファイルのファサード ルールを割り当てます。サンプルでは、これは gen_Facade_AdvancedFacade.Facade です。これにより、以下のマス モデル ルール ファイルが得られます。
import gen_Facade_AdvancedFacade: "gen_Facade_AdvancedFacade.cga"
attr buildingHeight = 25
Lot-->
extrude(buildingHeight)
comp(f){ side : gen_Facade_AdvancedFacade.Facade }
メインメニューの [File] → [Save all ] をクリックします。
[Viewport] ウィンドウで、[shape creation] ツールを使用して、10 x 20 メートルのフットプリントを作成します。
そのフットプリント シェープに MassModel.cga ルールを割り当て、Ctrl+G キーを押してモデルを生成します。
モデルを選択した状態で、[Transform Scale] ツールを使用して変更し、ファサードが比例して変化することを確認します。
ファサード テンプレートは直接使用され、ルールは新しい区画のジオメトリーとあらかじめ定義された 25 メートルの押し出しの高さに適応します。
このチュートリアル プロジェクトで目的の結果を得るには、scene フォルダー内のFacadeWizard_3_Advanced.cej ファイルを開き、rules フォルダー内の MassModel_Advanced_tutorial_part_1.cga を開きます。
このルールは、参照用に gen_AdvancedFacade_tutorial_part_1.cga ルールをインポートします。
次の画像では、事前に詳細を説明せずに残した部分 (黄色) を確認します。次に、CGA と [Model Hierarchy] ウィンドウを使用して、ファサード テンプレートから特定のサブルールを再リンクし、黄色の領域で欠落しているパーツを埋めます。
[Window] → [Model Hierarchy] をクリックし、建物モデルを選択します。
[Model Hierarchy] ツールバーの [Inspect Model] をクリックします。[Inspect Model] モードに入ると、モデルがわずかに透明になります。
置き換えるシェープ ノード をクリックしてください。前の画像で黄色くハイライト表示されているファサードの右側の垂直部分です。これにより、[Model Hierarchy] ウィンドウでシェープが選択されます。
[Model Hierarchy] ウィンドウにある一連の可視化ボタンを使用すると、ファサードの各セクションを簡単に視覚化・分離できます。モデル階層ツリーのさまざまな要素を選択すると、[CGA Editor] ウィンドウがそれぞれの構成を支えるルールの該当部分をインタラクティブにハイライト表示します。
ファサードのこの垂直セクションを選択した状態で、[Model Hierarchy] ウィンドウを右クリックし、[Collapse Others] を選択して、選択されていないシェープ ツリーの部分を折りたたむことでビューを簡略化します。
[CGA Editor] ウィンドウでこのシェープ ノードを作成するファサード テンプレート ルールがハイライト表示されます。選択したルールにより、左、中央、右の 3 つのファサード パーツが作成されます。
オリジナル:
Facade__1_3 -->
split(x, noAdjust) { 2.68: Facade__1_3_1 | ~10.62: Facade__1_3_2 | 2.66: Facade__1_3_3 }Facade__1_3 -->
置き換え後:
Facade__1_3 -->
split(x, noAdjust) { 2.68: Facade__1_3_1 | ~10.62:
Facade__1_3_2 | 2.66: Facade__1_3_1 } split(x, noAdjust) { 2.68:
ファサードの右側は、左側と同じルールを使用するようになりました。現在使用されていないルール Facade__1_3_3 は、不要になったため、削除できます。
再リンクする前:
変更を確認するには、シーンを更新するか、モデルを再生成する必要がある場合があります。
次に、入り口近くの黄色の部分についても同じことを行い、このチュートリアル セクションの冒頭の画像に示すように、左端のタイルを入り口の右側のタイルに置き換えます。その結果、上層階の右側に短い窓が表示され、1階の左側に日よけのないアーチ型の窓が表示されます。
最終モデルは、再度生成した後に表示されます。
このチュートリアル プロジェクト フォルダーで目的の結果を表示するには、シーン フォルダー内の FacadeWizard_4_Advanced.cej ファイルと rules フォルダー内の MassModel_Advanced_tutorial_part_2.cga を開きます。なお、このルールは参照用として gen_AdvancedFacade_tutorial_part_2.cga ルールをインポートしています。
ここまでで、[Facade Wizard] ウィンドウでのファサード テンプレートの基本的な作成について説明しました。次に、CGA と [Model Hierarchy] ウィンドウを使用して、デフォルトの [Facade Wizard] ルールの品質を向上させる方法を説明します。
ファサード ウィザード チュートリアルの最後の部分では、次の 2 つのトピックについて説明します。
• 詳細レベル (LOD)
• ファサード テンプレートへのアセットの挿入
3D 都市の作成は非常に大きなデータセットを生成する可能性があり、多くの場合、リソースの慎重な管理が必要になるため、上級ユーザーは、同じ建物に異なるモデルを作成することを選択する場合があります。
たとえば、建物がカメラの真正面にある場合は、すべての詳細が表示される必要がありますが、カメラから遠く離れている (または見えない) 建物は、詳細をできるだけ少なくする必要がありますが、基本的な形で認識できる必要があります。同じオブジェクトの異なるモデルを作成し、カメラまでの距離に応じてそれらを使用するプロセスは、コンピューター グラフィックスの分野では、詳細レベル (LOD) の作成として広く知られています。
Facade Wizard によって作成されたルール ファイルは、デフォルトの LOD システムが既に実装されていることが示されています。CGA ファイルの先頭 ([CGA Editor] ウィンドウで確認可能) には、デフォルト値の説明が記載されています。
CityEngine は異なる LOD を作成できますが、カメラ近接性に基づくモデルを直接切り替えるためのシステムが実装されていません。
attr LOD = 2
# LOD 0 generates the original texture
# LOD 1 generates flat splits
# LOD 2 generates splits with depth as defined in Facade WizardFacade__1_3_1 | ~10.62: Facade__1_3_2 | 2.66: Facade__1_3_3 }
次の図は、このチュートリアルの前の部分で作成したルールに基づいて示されています。3 つの定義済み LOD には、すべての適用を示しています。LOD 1 と LOD 2 の違いは小さいですが、LOD 1 は分割された平面のみを生成し、すべてのZ Adjust 編集を無視するのに対し、LOD 2 は Z Adjust 編集を組み込んだテクスチャ付き立方体オブジェクトでボリューム表現を生成します。
LOD 3 を作成するには、以下に示すように、必要な詳細を追加するためにいくつかの追加アセットを挿入する必要があります。
これらの LOD は非常によく似ていますが、ズームインすると、細部の違いは明らかです。これは、モデルがどのように体験されるかに基づいて考慮することが重要です。次の例は、これを示しています。
2D ファサード表現と画像スケーリングにより、シンプルな表現を提供
奥行き感を与えるために、一般的なファサード構成要素にアクセントを表現
奥行き感と建築様式を表現するための、特定のファサード構成要素のディテール化
ファサード ウィザード ルール テンプレートを他の CGA ルールにインポートする場合 (たとえば、チュートリアルの最後の部分の MassModel.cga ファイルで行うように)、プライマリ CGA ファイル (> attr LOD = 2) で LOD 属性も初期化する必要があります。
LOD 3 を作成するためには、モデル階層でのシェープのハイライト表示、CGA におけるコードのハイライト表示、カスタム作成されたアセットの挿入を組み合わせることが目的です。
まず、MassModel.cga ファイルを編集します。
attr LOD = 3
attr buildingHeight = 25
import gen_Facade_AdvancedFacade:"gen_Facade_AdvancedFacade.cga"
Lot-->
extrude(buildingHeight)
comp(f) { side : gen_Facade_AdvancedFacade.Facade }
ファサードの装飾品を調べた後、次のアセットを導入できます。
• tympanon.obj
• triangularPediment.obj
• squarePediment.obj
• entryArc.obj
三角形のペディメント アセットから始めて、[CGA Editor] ウィンドウで gen_Facade_AdvancedFacade.cga ルールを開きます。
下部に三角形のペディメント アセットの新しいルールを追加します。
insertTriangularPedimentAsset -->
case LOD ==3 : Shape
t(0, 0, '1)
s('1, '1, 0.25)
i("triangularPediment.obj")
projectUV(0) Asset
else : Shape
LOD 3 の場合は、obj アセットをロードします。t() と s() は、アセットを正しく配置してスケーリングします。projectUV() は、アセット上のファサードテクスチャをオーバーレイします。
insertSquarePedimentAsset -->
case LOD ==3 :
Shape
t(0, 0, '1) s('1, '1, 0.25) i("squarePediment.obj")
projectUV(0) Asset
else : Shape
insertArcEntryAsset -->
case LOD ==3 :
t(0, 0, -0.35) s('1, '1, 0.5) i("entryArc.obj")
projectUV(0) Asset
else : Shape
addTympanonAsset -->
case LOD ==3 :
t(0, 0, '1) i("tympanon.obj")
projectUV(0) Asset
else : Shape
entryArc.obj アセットと tympanon.obj アセットは既存のシェープのジオメトリーを置き換え、triangularPediment.obj アセットと squarePediment.obj アセットは既存のシェープの上に配置されます。ルールの主なコードの違いは、ルールの最初のシェープです。
これで、次の画像が示すように、新しいルールにリンクし、アセットを挿入できる正しいターミナル シェープを見つけます。
Facade__1_3_1_2_2_2 -->
case LOD <= 1:
setupProjection(0, scope.xy, '8.0953, '19.2869, '-0.1945, '-11.3296)
projectUV(0)
else:
setupProjection(0, scope.xy, '8.0953, '19.2869, '-0.1945, '-11.3296)
t(0, 0, -0.2)
s('1, '1, 0.2)
i("builtin:cube")
projectUV(0) insertTriangularPedimentAsset
最後のステップは、屋根の外側の要素を削除することです。
Facade__1_5 -->
split(x, noAdjust) { 2.68: NIL | ~10.62: Facade__1_5_2 | 2.66: NIL }
必要なルールをすべてリンクしたら、inspector で LOD 属性を更新し、Facade Wizard を使用して作成したすべての異なる LOD を試します。LOD 3 の場合、生成されたファサードは次のようになります。
この例では、ポリゴン数がカウントされます。(ファサードのみ)
• LOD 0 = 4
• LOD 1 = 1288
• LOD 2 = 6616
• LOD 3 = 9654
このチュートリアル プロジェクト フォルダーで提供される目的の結果を表示するには、scene フォルダー内の FacadeWizard_5_Advanced.cej ファイルを開き、rules フォルダー内の MassModel_Advanced_tutorial_part_3.cga を開きます。このルールは、参照用に gen_AdvancedFacade_tutorial_part_3.cga ルールをインポートしています。
これで、ささまざまな 3D 建物テンプレートに割り当てたり、詳細度を変更したり、動的にスケーリングしたりできるファサード ルールが作成されました。
2D ファサードを操作する場合は、[Crop Image] ツールの画像のトリミングとサイズ変更の機能も検討してみてください。