ランダムに本を配置する
イントロダクション
前のチュートリアルではパラメトリックな棚を作成するためにRailCloneを使用しました。このチュートリアルでは、引き続きRailCloneを使用して、これらの棚の中でランダムに本を配置します。本を生成するパスを作成するには、さまざまな方法がありますが、このチュートリアルでは、各シェルフの背面に沿ってスプラインを配置した1次元配列の使用に焦点を当てます。これは、棚の高さが等しくない場合に理想的です。またシェルフが均等に配置されている場合は、単純な高さと幅のディメンションに基づいてすべてのシェルフを自動的に作成するために、2Dアレイで同じ手法を使用することができます。両方のテクニックの例については、シーンファイルを参照してください。
シーンファイルのダウンロード
このチュートリアルを完了すると、次のことが可能になります
- ジオメトリをランダムにし、選択したセグメントの確率を制御する
- マテリアルをランダムにする
- transformオペレータを使用したalignment、rotation、translation、scaleパラメータの調整
- conditionalオペレータを使用して、スプラインセグメントに沿って距離をテストする
- ネストジェネレータを使う
ジオメトリの準備
このスタイルで使用される本のための特別なモデリングは必要ありません。さまざまなサイズとシェイプを使用することで多様性とリアリズムが向上しますが、1つの本ジオメトリでも同様にセグメントの Properties > Transform > Randomise > Scale controlsを使用してサイズをランダム化することができます。
本は2つのマテリアルIDを使用します。ID:1はページのエッジ部分に使われ、ID:2はカバー部分に割り当てられます。RailCloneオブジェクトに既に適用されているマルチサブマテリアルには、ID 2〜100のブックカバーテクスチャが99個あります。
本のテクスチャ
このチュートリアルで使用されているテクスチャはNikita Gushchinによって作成されました。ライセンスの制限により、チュートリアルファイルには含まれませんが、 HQ Detailsを通じて無料で入手できます。
コンテンツのダウンロード
このチュートリアルの演習ファイルには、V-RayおよびMental Rayと互換性のある次の.maxシーンが含まれています。
- books_start.max:
チュートリアルに従う際のスタートファイル - books_end.max:
完了したチュートリアルの結果 - books_2d_array.max:
2次元配列で使用されているものと同じスタイルのデモンストレーション - books_plus_shelf.max:
このチュートリアルのテクニックを以前のチュートリアルと組み合わせて、1つのオブジェクトに本棚と本を自動的に作成する方法を示す例です。
スタイルを作成する
ステップ1:並べられたを作成する
- シーンから「RC_books」を選択し、スタイルエディタを開きます。時間を節約するために、すでにスタイルに11冊の本が追加されていますが、セグメントのデフォルト設定は変更されていません。
- 新しいLinear 1S(L1S)オペレータとSplineノードを追加し、それらを接続します。
- Splineノードを選択し、シーンから「spline_shelves」を割り当てます。
- スプラインの終端部分でにいくつかの本がスライスされていることがわかります。これを防ぐためにジェネレータのadaptiveモードをオンにすることができますが、ランダムな幅のセグメントで使用すると、時折オーバーシュートが発生し、理想的ではありません。代わりに、Conditionalオペレータを使用して、スプラインセグメントの長さの終わり近くにセグメントが生成されないようにします。これを行うには、TransformノードとMaterialノードの間に新しいConditionalオペレータを追加します。
積み重ねられたり、傾いたりしている本を作成するために、複数のRailCloneオブジェクトをネストします。次の2つのステップでは、これらの2つの新しいスタイルを作成し、最終ステップでそれらを組み込みます。
ステップ2:積み重なった本を作成する
- 作成した「RC_books」オブジェクトをクローンし、「books_stacked」という名前を付けます。
- 新しいRailCloneオブジェクトを選択した状態で、スタイルエディタを開き、Splineノードを見つけ、シーンから「spline_stack」を選択します。
- スタックにランダム化を追加するには、Transformノードの設定でTransform > Random > Translation をオンにし、YとZの最小値(左側のボックス)を-0.02mに設定し、最大値(右側のボックス)を0.02mに設定します。
- 本は積み重ねられていますが、シード値を変更すると、常に同じ高さになることがわかります。さまざまな高さの積み重なりを作成するために、シーケンスに空のセグメントをランダムに追加することができます。パディング値を持たない空のセグメントを追加すると、配列が「中断」します。これは、そのポイント以降にセグメントが出現しないことを意味します。
- Randomizeオペレータを追加しTransformノードを接続します。このRaodomizeノードをMaterialノードに接続し、既存のConditionalノードは削除します。上記のノードツリーを参照してください。
- 新しいセグメントを作成し、Rondomオペレータの2番目の入力に接続します。シード値を変更すると、積み重ねられたの本の冊数が変わることがわかります。空のセグメントが選択される確率を変更するには、RandomizeオペレータのプロパティからPresence%を変更します。空のセグメントのpresenceを減らすと、重ねられた本の高さが高くなります。
ステップ3:傾いた本を作成する
- 角度付きブックを作成するには、作成した「books_stacked」オブジェクトを複製し、名前を「Books_angled_left」に変更して 「spline_books_left」というスプラインを割り当てます。
- randomのtranslationと rotationのランダム化チェックボックスをオフにします。
- 最後に、傾いた本がもたれかかるの通常の真っ直ぐな本を追加する必要があります。これを行うには、本のセグメントに直接接続されているRandomiseノードを新しいTransformオペレータに配線します。新しいTransformノードのProperties > General > Alignment Yパラメータをtopに設定し、これをL1SジェネレータのStart入力に配線します。
- 「spline_books_right」という名前のスプラインを割り当てます。
- 本を傾けるTransformオペレータを見つけ、 Properties > Transform > Fixed > Xの値を5に変更します。
- 最後に、2番目のRandomizeノードの空のSegmentを、作成したComposeオペレータに置き換えます。
ステップ4:RailCloneオブジェクトをネスティングする
- シーンから「rc_books」を選択し、スタイルエディタを開きます。
- 新しくRandomiseオペレータを作成し、これらの新しいセグメントを接続します。
- これらの大きなセグメントがスプラインの端に近づきすぎてスライスされないようにするには、既存のConditionalオペレータを複製し、新しいRandomizeノードをFalse入力に接続します。本のRandomizeノードをTrueに接続します。このConditionalノードの Position on Spline Segmentを約90%に減らしTransformノードに接続します。
- 最後に、もう1つ新しくRandomizeノードを作成し、既存の2つのRandomizeオペレータに接続し、新しくConditionalオペレータを作成しTrue入力に接続します。Randomizeオペレータのパラメータでは、Conditional入力のpresenceを10%に設定します。
- presenceの値を調整するだけで、スタイルに表示される斜めに積み重ねられた本の数を制御できます。
このスタイルでは、3つのRailCloneオブジェクトを入れ子にして、ランダムな角度のついた積み重ねられた本を作成しました。本を生成するために、このスタイルでは1つのスプラインを1つのシェルフで使用していますが、A2SジェネレータのX Evenlyスロットで全く同じテクニックを使用して、単純なスプラインと高さのディメンションから等間隔の本棚を自動的に生成することもできます。あるいはこれを以前の本棚のチュートリアルに組み込んで、棚と本を1つのスタイルで生成することもできます。これらの方法の例は、ダウンロードできるシーンファイル内にあります。