====== 海辺の遊歩道パート2 ====== \\ {{youtube>k59l-b2Pryc?large}} \\ \\ ==== 2次元配列を作成する ==== \\ 2次元配列を作成するためには**Array 2S(A2S)**ジェネレータを使用します。このシーンでは、以下のように個々の敷石をセグメントとして使用して舗装された護岸を作成します。この図は、このジェネレータを使用するときにターゲットにできる配列の一部を示しています。\\ {{ :itoo:rc:tute:tutorial-second-part_sp_p3_final.png |}} \\ このオブジェクトを作成することによって、以下の方法を学習します。 * 新しいA2Sジェネレータを作成する * 配列の長さとパスを制御するためにスプラインをアタッチする * Y Sizeの値を使用して幅を制御する * Transformをランダムにしてスケールと回転のバリエーションを作る * マテリアルIDをランダムにしてテクスチャのバリエーションを作る * 等間隔のセグメントを作る \\ 最初に新しいRailCloneオブジェクトを作成し、**RC_Floor**に名前を変更します。 \\ \\ - これから作成するノードツリーを見てみましょう。このスタイルでは2つのセグメントと1つのスプラインで構成されています。**Material**ノードはテクスチャをランダム化させ、Y dimensionはA2Sジェネレータ自体からのパラメータセットによって提供されます。\\ {{ :itoo:rc:tute:tutorial-second-part_sp_p3_node_tree.png |}}\\ \\ - **Style**ロールアウトからスタイルエディタを開き、アイテムリストからA2Sジェネレータ({{:itoo:rc:tute:array_2s.png}})をコンストラクションビューにドラッグして作成します。\\ \\ - 新しい**Spline**オブジェクトを作成し、**Base Objects**ロールアウトを使用してシーンから**「BaseLine」**を割り当てます。**Array 2S**ノードの **X Spline**入力に接続します。\\ \\ - 新しい**Segment**オブジェクトを作成し、**「Floor1」**という名前のメッシュを選択します。これは灰色の敷石です。\\ \\ - まだ幅が設定されていないため、ジオメトリは表示されません。**General > Y Size**に移動し、値を**4m**に設定します。オブジェクトがY Spline入力に接続されていない場合、この値で配列のY次元を決定します。\\ {{ :itoo:rc:tute:tutorial-second-part_sp_p3_4.png |}}\\ \\ - **Base Objects**ロールアウトから**Full Length**をオフにして、ベースラインに沿った生成を制限します。**Stat**を40m 、**Length**を20メートルに設定します。\\ \\ - **Display**ロールアウトに移動し、モードを**Mesh**に設定します。\\ \\ - セグメントの **Properties>Deform**の設定で、**Apply Box Mapping**と **Real-World Map Size**をオンにし、**Map Channels**の値を2に変更します。シーン内のマテリアルは、バンプテクスチャをマッピングするために2番目のチャネルを使用します。\\ \\ - **Properties > Transform > Random Rotation**に移動して、**Zの最小値**(左側のボックス)を **-1** に、**最大値**(右側のボックス)を **1** に設定して回転をわずかにランダム化させます。\\ {{ :itoo:rc:tute:tutorial-second-part_sp_p3_8.png |}} \\ - 同様に、RandomのScaleの最小値を100に変更し、最大値を120に変更してスケールをランダム化させます。\\ \\ - **Tranform Affects Size**をオフにします。これにより、隣接するセグメントの位置を計算するために使用されるバウンディングボックスのサイズに影響を与えるランダム化が防止されます。\\ {{ :itoo:rc:tute:tutorial-second-part_sp_p3_9.png |}} \\ 左:Transform Affects Sizeオンの場合、回転したセグメントの新しいサイズを補うために間隔が調整されることに注意してください。\\ 右:Transform Affects Sizeがオフの場合、セグメントの回転は隣接するセグメントの位置を計算するために使用されるボックスのサイズに影響を与えません。\\ \\ - 次に赤い敷石用に新しいSegmentオブジェクトを作成する必要があります。これを行うには、既存のセグメントを右クリックから**[Copy]**して**[Paste]**します。これで設定が保持されたSegmentノードが作成されます。\\ {{ :itoo:rc:tute:tutorial-second-part_sp_p3_11.png |}}\\ \\ - **「Floor2」**セグメントをジェネレータの**Top**、**Start**、**End**、 **Bottom**、**X Evenly**入力スロットに接続します。\\ \\ 「Floor1」を接続する前に、テクスチャをランダム化してより大きなバリエーションを作成します。提供されるマテリアルには、マテリアルID 1〜3に割り当てられた3つの異なるストーンマップがあります。オブジェクトマテリアルIDをランダム化するには、**Material**オペレータを使用します。\\ \\ - 新しく**Material**オペレータ({{:itoo:rc:tute:material.png}})をコンストラクションビューにドラッグします。\\ \\ - プロパティを開き**Replace Material ID**を **1** に設定し、**Mode**を**[Rondom]**にして**From = 1 To = 3**の範囲を設定します。\\ \\ - 「Floor1」セグメントをMaterialオペレータの入力スロットに接続し、これをジェネレータの**Default**スロットに接続します。\\ \\ - A2Sジェネレータから、**Properties > Rules> X Evenly > Distance**の値を **3m** に設して、3mごとに赤い敷石の列を作成し、**extend to side**をオンにします。\\ \\ - スプラインの長さで表示するには、**Display**ロールアウトでモードを**Points-Cloud**に設定してから**Base Objects**ロールアウトに移動し、**Full Length**をONに戻します。\\ {{ :itoo:rc:tute:tutorial-second-part_sp_pt_fin.png |}}\\ \\ このセクションでは、A2Sジェネレータを使用して2Dアレイを作成する基本について説明しました。次に、このテクニックを拡張して防波堤を作ります。\\ ---- ==== 2つのスプラインから2次元配列を作成する ==== {{ :itoo:rc:tute:tutorial-second-part_sp_p4_1.png |}} \\ 防波堤は個々のレンガでできています。これはテクスチャを使用して実現することができますが、この例ではRailCloneで膨大な量のインスタンス化されたジオメトリを簡単に作成してレンダリングできることを示しています。このセクションでは、以下の方法について学習します。\\ * 2つのスプラインを使用して曲がった2次元配列を作成する * Top Side入力を使う * Displayパラメータを使用してビューポートのパフォーマンスを向上させる * パディングを使用してセグメントをオーバーラップする \\ \\ - 堤防のノードツリーです。上の敷石のものと非常によく似ていますが、このスタイルではパス用に2つのスプラインを使用し、Y軸にシェイプを定義する別のスプラインを使用します。\\ {{ :itoo:rc:tute:tutorial-second-part_sp_p4_tree.png |}}\\ \\ - 新しいRailCloneオブジェクトを作成し、名前を 「**RC_Wall**」に変更します。\\ \\ - スタイルエディタを開き、新しいA2Sジェネレータを作成します。A2Sのプロパティから**Geometry > Y Spline**を**[X / Y]**に変更します。\\ {{ :itoo:rc:tute:seasidepromenade-2_00.png |}}\\ \\ - 2つの新しい**Spline**オブジェクトを作成し、1つに「**Length**」、もう 1つの「**Profile**」という名前を付けます。A2Sジェネレータの**X Spline**入力に「Length」を、**Y Spline**入力に「Profile」を接続します。\\ \\ - Base Objectsロールアウトから、リストから「Length」を選択し、シーンから「BaseLine」スプラインを割り当てます。次に、リストから「Profile」を選択し、シーンから「**Line03**」という名前のスプラインを割り当てます。\\ \\ - 2つの新しいSegmentノードを追加し、それぞれに「**Stone01**」と「**Stone-End**」を割り当て、後者を**Top**入力スロットに接続します。\\ \\ - Base Objectsロールアウトから**Full Length**をオフにして、ベースラインに沿った生成を制限します。**Start**を **0m** のままにし、**Length**を **20m** に設定します。**Display**ロールアウトに行き、**Display > Mesh**をオンにします。\\ \\ - 石の端は間違った方向に向いていています。「Stone-End」セグメントの**Transfrom Fixed**の**Z Translation**を**-0.6m**に、**Y Rotation**を**180**に変更することでこれを修正します。**Deform>Mapping** から**Apply Box Mapping**と**Real World Map Size**をオンにします。\\ \\ {{ :itoo:rc:tute:tutorial-second-part_sp_p4_7a.png |}} \\ 左:Rotation修正前 右: Z軸を回転させて正しい位置に修正 \\ \\ - 新しく**Material**オペレータを作成します。**Replace Material ID**を **1** にして**Mode**を**[random]**、範囲を**From=1 to=3に**設定します。\\ \\ - 「Stone01」Segmentノードを**Material**ノードに接続し、出力をジェネレータの**Default**スロットに接続します。\\ \\ - 今の状態では壁にはレンガ間にオーバーラップがありません。これを修正するには、「**Stone01**」Segmentノードの**Padding > Right**を**-0.321m** に調整します。\\ {{ :itoo:rc:tute:tutorial-second-part_sp_p4_10b.png |}}\\ \\ - Transform> Random> TranslationをONにしてZの、**最小値**(左)を**0m**、**最大値**(右)を**-0.03m**に設定して、 位置のランダムにさせます。これにより、壁がより自然で不均一な外観になります。\\ \\ - **Deform > Mapping** から **Apply Box Mapping** と **Real World Map Size**をオンにして**Map Channels** を **2** にします。\\ \\ - 壁は作成されていますが、調整が必要です。A2Sジェネレータから**General> X Rotation**に移動し、値を**-90**に設定して回転させます。\\ \\ - **Y Offset**の値を**-0.3**にして欄干部分からわずかに離します。\\ \\ - スプラインの長さで表示するには、**Display**ロールアウトでモードを**Points-Cloud**に設定します。これによりRailCloneポイント表示モードが有効になり、パフォーマンスを維持しながらビューポートのジオメトリを確認できます。**Base Objects**ロールアウトで、**Full Length**をONに戻します。\\ \\ {{ :itoo:rc:tute:tutorial-second-part_final.png |}} \\