【MOD使い方講座】Procedural Objectsのすゝめ

【MOD使い方講座】Procedural Objectsのすゝめ

皆さん初めまして…ではないですよね。先週のMOD「Move It」についてコラムを寄稿させて頂きました、ケミカルと申す者です。前回に引き続きMODの紹介を任されました。今回もよろしくお願いします。

突然ですがあなたは3Dモデリングができますか? 

私はできません(笑)

SteamWorkshopでは多数のアセットが頒布されていますが、これは有志のユーザーの方々が時間をかけて3Dモデリングをして制作されている物です。しかし素晴らしいアセットなのに、大きさが、色が、形が、イメージとちょっとだけ違うことがあるでしょう。

Move Itを使いこなせるようになれば表現の幅が格段に増えます。しかしMove Itでは物の色や大きさまでは変更することができませんよね。この場合、自分の街にジャストフィットするアセットを自分で作るしかないため、3Dモデリングが出来ない人はそのまま泣き寝入りするしかありませんでした。既にあるアセットの形を活かして都市のディテールを上げたい…。

今回はそんな方にオススメのMOD「Procedural Objects」を紹介します。

 

【初級編】そもそもMOD「Procedural Objects」って何?

Procedural Objectsは、既存のアセットを自分好みのアセットに変更できるMODです。好きな大きさ、好きな色、好きな形に変更したり、建物の天井を潰してその上に別の建物を重ねて建てたり、建物付属のプロップだけを消すことができます。上達すると、プロップの配色全てを変更したり、時間が経つと表示が変わる発車標や、光る踏切警報機を作ることもできます。

Procedural Objectsの技術をマスターすれば、あらゆる物体をまるで3Dモデリングを嗜むかのように思いのままに操ることができるようになるでしょう。

曖昧さ回避のため、本稿ではMOD名はProcedural Objects、Procedural Objectsによって変換された物体のことをPOと呼び、この変換をPO化と呼びます。(本稿公開当時のProcedural Objectsはver.1.6.3です)

Procedural Objectsで作られた発車標(駅の電光掲示板)。 時間経過によって表示が切り替わる。 表示内容は”ゲーム内で”自由に変更できる

Procedural Objectsは、Move Itを理解した上でさらに再現性の高い景観都市を作りたい方におススメのMODです。Move Itを理解していた方がProcedural Objectsを覚えるのに何かと都合がいいので、Move Itの使い方を先ず覚えることをおススメします。ちょうどいいことに、先週私が書いたコラムでMove Itを紹介しましたのでご覧ください。

《PO・PO化の概念》

POは、Move Itにおける7つのカテゴリ(Building,Prop,Decal,Surface,Tree,Node,Segment)とは全く特徴の違う8つ目のカテゴリが追加されるものだと考えると理解がしやすいです。

《POの特徴》
  1. 接地判定はなく、宙に浮かせられる
  2. PO化前の機能は消滅する
  3. ブルドーザーツールで削除できない
  4. 削除は取り消せない

POに変換すると、たとえMove Itの分類におけるビルディングのように「観光客を受け入れる」「従業員を雇い、生産物を売り買いする」「発電する」「バスを出庫する」などの機能を持っていたとしても、PO化の工程で機能は無くなってしまいます。

Move Itの分類でいうところのプロップに近いでしょう。POに人の往来はありません。プロップも人の往来は勿論ありません。プロップを触れて建物の情報を見ることはできませんが、POも、PO化の過程で機能を失うことで建物情報は出てきませんから、同じくPOをクリックして触れることはできません。

一見似ているPOとプロップですが、決定的な違いがあります。POはブルドーザーツールで破壊することができません。ご存知でしょうが、Move Itで分類してある7つのカテゴリ(Building,Prop,Decal,Surface,Tree,Node,Segment)全てはバニラのブルドーザーツールで破壊することができます。プロップもその例外ではありません。しかしPOはブルドーザーツールで選択できません。

ではどうやってPOを削除すればいいのでしょうか。POは、Procedural Objectsを起動してPOを選択し、Deleteキーを押すか、Deleteボタンをクリックすることで消去ができます。餅は餅屋に、POはProcedural Objectsにということですね。

Procedural ObjectsのUI。UIはドラッグアンドドロップで好きな位置に移動可能

Selection modeでPOを選択するとメニューが開く。これでDeleteキーかDeleteをクリックして、POを削除できる。

注意:Procedural ObjectsでもMove It同様Ctrl+Z(戻る)が使えますが、POの削除はやり直すことできません。

《Procedural Objects で変換できる物体・変換できない物体》

便利なProcedural Objectsですが、PO化できるものには制限があります。PO化できるのは、Move It の分類における、ビルディングとプロップのみです。また、地形追従のあるアセットや一部のバニラアセットなどは、PO化するとオブジェクトが消えて見えなくなってしまいます。制限を理解して、POに変換できる物を正しく選びましょう。

  1. Move It における分類で「Building」或は「Prop」のみ変換できる
  2. 地形追従によって物体の形状が変化するアセットは変換できない(例えばバニラの墓地・公園など)
  3. その他一部のアセットは変換できない(バニラのアセットは特に変換できないと報告されている)

POにするためには、PO化できる建物を置く際にProcedural ObjectsのUIからConvert into POをクリックしてください。

《Procedural Objectsの起動》

Procedural ObjectsのUIをクリックするとSelection Modeが起動します。するとPOに十字マークが表示されて選択できます。

左マウスボタンで範囲選択、Ctrlで個別選択・個別選択解除、Ctrl+左マウスボタンで範囲選択の重ねがけが出来ます。「Move ItはShift,Procedural ObjectsはCtrlで個別選択」。これだけは覚えておきましょう。

他にもPOを選択すると項目が出てきます。ここから複製、Align Heights(PO同士での高さ合わせ)、消去、色の変更などができます。※本稿ではMove to機能についての説明を省きます。

《色塗り機能:Painter Boxについて》

色の変更について少し詳しく説明をします。色の変更は項目一番下の四角形。Painter Boxと呼ばれています。

Painter Boxは色、もしくは明るさの調整ができます。写真のヤリスのように車体の色を変えられるものもありますし、パトカーのパトランプのようにPOの一部しか色が変わらないものもあります。色が変更できる部位はPOする前のオブジェクトの構造に依存します。

Procedural Objectsを起動し、Painter Boxを展開した後の表示画面

ライト部分を暗くすることで現実的な表現ができる

Propのヤリス(上)とPOのヤリス(下)。Propのみ光っている。PO化の過程でPropの光源は失われるようだ

 

【中級編】Move Itとの互換性と物体の大まかなエディットについて

Procedural Objectsを導入するとMove Itの機能が拡張されます。Procedural Objectsだけではできない機能も追加されるためこれらはセットで使うことをオススメします。両方のMODを導入するとMove It に「Toggle Procedural Objects」が追加されます。これをONにすると、Procedural Objectsがピンク色のハイライトで表示されて選択できるようになります。

ピンク色のハイライトとともにPOが選択できるようになった

これにより、POを簡単に移動、複製、整列することが可能になります。またMove It/ToolboxのOther Toolsの一番上にconvert to POというツールが追加されます。Procedural Objects単体では建物を新しく配置する時しかPO化できませんが、Move Itを使うと既存の建物もPO化することができます。勿論複数選択できますから、全てを一度にPO化できます。

《Procedural Objectsの分かりやすいエディットツール群について》

Procedural Objectsならではの機能について解説していきます。これを読んで物体の大まかなエディットができるようになりましょう。POの大きさを変えたり、薄っぺらくしたり、逆さまにしてみたりできるようになります。

Scaleモード

まずはGeneral toolのScaleモードです。POの大きさを変えることができます。

Positionツールと同じく物体の中心座標から3次元ベクトルがあり、左マウスボタンでXYZ軸方向だけの大きさを変更することができます。PgUP/PgDnで全体の大きさを変更できます。XYZ各座標方向に等倍率に変更できますから便利ですね。

Positionツール同様、Alt+Shift併用で、快適で繊細な操作ができます。是非試してみてください。これで大きすぎるものは小さく、小さすぎるものは大きくエディットできますね。

大きいのはみんな好きでしょう?…大きいにも…限度があると思う

Rotateモード

次にGeneral toolのRotateモードです。POを傾けることができます。

物体の中心座標に今度は回転方向の3次元ベクトルが出現して、左マウスボタンで回転させることができます。前後左右矢印キー/PgUP/PgDnでXYZ軸方向へ物体を傾けることができます。これで横転した車や、水鏡(デフォルトの水では鏡映しの表現は厳しい)などの再現もできそうです。

試しに横転させておきました。みんな大好き(?)プリ●ス

Advanced Edition Tools

はじめに言っておくと、あまり必要ない機能たちが沢山あります。

Position:XYHA指定できるのでMove ItのSet positionで代行しよう。
Snap to ground:Move ItのTo Terrain Heightで代行しよう。
Store height:To Object Heightで代行しよう。
Reset orientation:POにWorld space=矢印キー方向を向かせる。それほど重要なツールではない。
Show:時間帯によってPOを表示するかしないかを変更できる。Advanced Edition Toolsの中で一番優秀な機能(個人的見解)。

night time only(夜だけ表示)機能の応用の例を挙げよう

昼間働いた営業回りの公務員さん方、お疲れ様です

Flip faces:テクスチャの表裏を反転させる。
Normals Recalculation:光の反射具合が変わる。光の当たり方が気に入らない時に使えそう。
Changes history:Undo/Redo及び変更履歴を削除する機能。マウス操作でUndo/Redoをしたい方はどうぞ。
Mirror model:テクスチャをミラーさせる。影もミラーするので明らかにおかしくなる。何のための機能かは(ry
Stretch models:大きさを倍率で操作するときに必要になる。緻密な大きさの決まった大きさの変更には適しているが、ScaleモードのPgUP/PgDnでほぼ代行が可能なので、この機能も何のために(ry
Texture tiling:ファイルに準備したテクスチャを箱に貼り付けることができる。テクスチャを持っているならモデリングしたほうが早くね?という説もあるが、この読み込みは”ゲームを起動したまま”できる為、必要になった瞬間に呼び出せる。使用用途によっては非常に優秀な機能だったりする。

使えそうな機能はありましたか?Advanced Edition Toolsは謎な機能がたくさんありますので是非試してみてください。

 

【上級編】物体の細かなエディットと、レイヤーと、やっぱり大事なMove Itとの関係について

ここまで、POの位置・大きさ・傾き・色の変更については説明しましたが、Procedural Objectsにしかできない事の説明がおろそかになっています。この上級編ではより細かいPOの編集、例えば建物の天井の潰し方、要らない部分の消し方について解説していきます。

《Customization toolの開き方》

Procedural Objects→POを選択→Edit→General Toolの順に開き、Customizationを開きます。

《Customization toolの操作方法》

頂点の選択:左クリック
複数の頂点を選択:Ctrl
頂点の選択解除:Ctrl+左クリック
頂点の範囲選択:右マウスボタン
複数の頂点範囲選択:Ctrl+右マウスボタン
頂点の移動/回転/サイズ変更:左マウスボタン/上下左右矢印キー
ゆっくりと移動/回転/サイズ変更:Shift+左マウスボタン/上下左右矢印キー
スムーズに移動/回転/サイズ変更:Alt+左マウスボタン/上下左右矢印キー
ゆっくりとスムーズに移動/回転/サイズ変更:Shift+Alt+左マウスボタン/上下左右矢印キー
※Customization toolの3つのモードとGeneral Toolの同名のモードは操作方法に違いはありません。

「複数の頂点を選択するキーがCtrlであること」以外はMove Itと全く同じショートカットキーが使われていますね。物体によっては頂点が非常に密になっていますから「細かい調整をするために先にスケールを大きくする」選択肢もあると知っておきましょう。

 

非常に密な頂点…曲線が多いと必然的に頂点数も多くなる

<Customization tool 最重要機能:Actions>

Actionsの機能は知っておいて損はないでしょう。個人的には全部重要です。

Recenter Object origin:選択した頂点を元々の中央位置に頂点を移動させてくれる。先ほどのように中心座標と物体の中心がずれた時に有用。
Flatten selection:選択した頂点をフラットにする機能。従来はこの方法で物体を押しつぶして消去していた。
Snap selection to ground:選んだ物そのものを地面に合わせて移動させる。頂点同士の高さは変わらないので物体がつぶれることはない。
Snap each to ground:選んだ頂点全てを地面に合わせる。物体の頂点全てを選択すれば物体がつぶれる。
Marge verticles(最重要):選択した頂点全てをある一つの座標に集める。これによって物体の要らない部分だけを消去できる。

例えば酒屋さんの駐車場をMarge verticlesで消去してみる

このように駐車場及びフェンスを選択して…(動作は重くなる)

Marge verticlesを押すと全ての頂点を融合し「消去する」ことができる

《Customization toolの罠と対策》

ここで一つだけ注意しておきたいことがあります。Customization toolの移動(特にPositionツール)は、Move Itによる移動とも、Procedural ObjectsのMove toツールやPositionモードの移動とも仕組みが違うということです。

警察車両たち。実は「Move It的にもProcedural Objects的にも『POは全て駐車スペースの上にあり、一直線上に並んでいる』」と解釈されている

Move It視点。駐車できていない車両が選択できない代わりに何故か空の駐車スペースにPOの反応がある

Procedural Objects視点。空の駐車スペースの不明なPOを選択してみると、駐車できてないパトカーにハイライトがかかった。 たしかに『駐車できていないパトカーは駐車スペース上に存在している』ようだ

Move ItとProcedural ObjectsのMove toツール,General ToolのPositionモードは全て「物体の中心座標を移動させる」機能です。しかし、Procedural ObjectsのCustomization ToolのPositionモードは「物体の頂点を動かす」ことで、物体の中心座標を移動させること無く物体を移動させられます。これにより、見かけ上のPOの中心座標と実際のPOの中心座標に誤差が出ることがあります。パトカーの例は、分かりやすい説明のために故意にPOをCustomization toolでズラしたものですが、気づかぬうちにズレてしまっていることもあります。注意しましょう。

《Procedural ObjectsのImport/Export機能について》

Move Itでは、POを対象にしてインポート・エクスポート機能を使うことはできません。エクスポートしたデータにPOが含まれていると、エクスポートデータ自体が壊れてしまいインポートできません。POを含む場合は必ずProcedural ObjectsのImport/Export機能を利用してください。

Selection mode→General Toolからエクスポートができます。
名前を入力してExportをクリックすると、Selection modeのExported Objectsから確認できます。
複数のPOをエクスポートする場合は、Selection modeでCtrlキーを押して複数のPOを選択してください。この場合、単体選択の時にはあるEditの欄が消えて、Exportの欄が増えます。

ここで注意したいポイントが2点あります。

1点目は、ExportをクリックしてもSelection modeのExported Objectsに反映されない点です。正常に複数のPOのExportが完了していても、Selection modeのExportに反映されません。この対策としてExported Objectsの右上にRefreshボタンがありますから、これをクリック。すると「Selection Friday, July 10, 2020 3:31:08 AM」のように、Exportした日時が名前として記録されたExport Objectsが出てくるはずです。複数のPOをExportしたらすぐRefreshです。覚えておきましょう。

2点目ですが、複数選択されたPOをExportする場合、事前に名前を付けることはできない点です。Exportの後に自動生成された名前を名付け直すことになります。Export機能の役割は、Move Itと同様に、データを内部ファイルに格納することで別のマップでもそのまま呼び出して使用できる、口寄せの術が非常に優秀ですが、POは「削除を取り消せない」こともあり、万が一不慮の事故によってPOをロストしてしまった場合の保険としての役割も重たいです。万が一の際に、慌てた状態で、生成した日時だけが書いてあるファイルの中から、目的の保険のファイルを探し当てることが果たしてできるでしょうか。Refreshの後は、すぐに保存ファイルを分かりやすい名前に書き換える。忘れないようにしましょう。

《Procedural Objects最難関ツール:Text Customizationについて》

Text Customizationツールは、Procedural Objects最難関ツールにして、今までの説明が全く通用しない上に、この機能だけでコラムがもう一つ書けるような可能性を秘めた機能です。この機能を説明するには、まず3Dモデリングについて説明せねばなりません。特に難しい説明になることをご容赦ください。

Text Customizationでできることが多すぎるので、一例を示しておきます。

JPFonts+Text Customization+Customization+AnimUVParams で電光掲示板をカスタマイズ

JPFonts+Text Customization+Color Rectangles+Customization で高速道路の看板をアレンジ

Text Customization+Opacity Color Rectangles+scale mode でアレンジした水門

JPFonts+Text Customization+Opacity Color Rectangles +Customization+Marge verticles+…and more 料金所だってお好みに

シティーズでアセットを作る際には3Dモデリングをしますが、3Dオブジェクトとセットで必ず2Dテクスチャを準備します。2Dテクスチャは3Dの物体に貼り合わせて柄を付けるためにあります。3Dオブジェクトに合わせて2Dテクスチャの柄を切って貼ってとすることで立体化してあるのです。Text Customizationはこの2Dテクスチャを編集する機能です。

2Dテクスチャ自体を加工することはできませんが、上から好きな文字を重ねることができ、また長方形を重ねてテクスチャを塗りつぶすこともできます。

Text CustomizationのText fieldsは画像加工でいうところのレイヤーの考え方をします。Text fieldsの一番上にあるレイヤーが2Dテクスチャの最も下に貼り付けられ、どんどん上に重ねられて配置されます。そのため、2Dテクスチャを長方形で塗りつぶした上に文字を重ねる場合は、Text fieldsでは、重ねる文字よりも上に長方形を置くことになります。

《Text Customizationの操作方法》

Text CustomizationはMove Itの原理は勿論、Procedural Objectsの他の機能の原理が全く通用しません。操作方法を文章にすると冗長になるため、画像で説明します。

Procedural Objectsで使えるフォントは、Procedural Objectsとは別のMODとして配布されており、Text Customizationを多用する場合は導入しておきましょう。日本語フォントであればPekora氏のJPFontsを当たってみると良いでしょう

《ロード負荷軽減にも有用な Layerについて》

最後に今まで触れてこなかったLayer機能を解説します。最後に説明する理由は、Text Customizationの説明に使った「レイヤー」とはまた別物なので混同を避けたかったから、そして玄人市長しか使わない機能だと判断したからです。

話は少し逸れますが、実はこのコラムはMove Itと並行して仕上げ、一本のコラムとして投稿する予定でした。しかし、Move Itの内容がかなりボリューミーだった為、2本に分けて投稿された経緯があります。その為、前回のコラムで使用した官舎群は、Move ItだけでなくProcedural Objectsを説明することを前提に開発がされましたし、数多くのPOが既に配置されていました。

しかし前回のコラムの写真には、一枚たりとも、一つたりともPOは見当たりません。写真撮影時にPOを退避させたわけではなく、Layer機能で一時的に見えないようにしています。というように、くさいものに蓋をする用途で用いることができます。

使い方は以下の通りです。

まずSelection modeのLayersでNew Layerを追加します(例ではLayerを「A」と名付けています)。
その後、単体(複数)のPOを選択し、項目からSet Layerを選択します。
ここで登録済みのLayerが表示されますから、「A」をクリックします。
すると選択したPOが「A」のLayerとして登録されます。
あとはSelection modeのLayersから、Layer名の左の目のマークをクリックすることで、各Layerに登録されたPOの可視化、非可視化を選択できるようになります。

非可視化中は、Selection modeで選択できる十字のマークすらも消えてしまいます。こうして、POを全く動かすこと無く、カメラには見えないようにしていたということです。

実は先週の時点で既に沢山のPOが(見えない状態で)配置されていた。ステルス性はばっちりだ。

ところでこのLayer機能、POを表示しないことで、特にロード時間のPCの負荷を減らすことができるのです。筆者の環境でゲームのロード時間を比較すると次のようになった。

通常通りProcedural Objectsを表示させたままにした場合:11分43秒29
レイヤー機能でProcedural Objectsを全て非表示にした場合:10分26秒23

およそ1分強のロード時間を削減することができた。

備考:筆者の環境
CPU:Intel Core i7-8700
Memory:48GB+16GB Optane
Main Drive/Steam file:HDD 1TB
Map:Takahama
MODs:90
Assets:9322
Procedural Objects:207

Layerは複数準備することができるので、マップのエリアごとにLayerを設定し、今開発を進めているエリアだけPOを常時表示させておけば、PCへの過度な負荷を減らすことができるので、いいんじゃないかと。

 

【終わりに】

これにてMOD「Procedural Objects」の説明は以上となります。説明が非常に長くなってしまい申し訳ございません。

Procedural Objectsを説明するつもりが3割ぐらいMove Itの説明をしていた気がします。けれどProcedural Objectsはそれほど奥が深いMODなのです。

ただ一つだけ、この知識があなたのお役に立てたなら光栄です。

 

Procedural Objectsはこちら
https://steamcommunity.com/sharedfiles/filedetails/?id=1094334744