【課題】
地形(高度とテクスチャ)をテンプレートに含むには、一工夫が必要です。これは、VRMでは部品と地形が異なる考え方で管理されていることによります。
部品は、VRMレイアウト上に配置されたそれぞれについて、その座標と高さが記録されていきます。これに対し地形は、VRMレイアウトを縦横Nゲージ寸法20mm幅のメッシュに分割し、このメッシュ毎に地形の高さとテクスチャが記録されます。この管理方法の差異により、現行VRMレイアウターでは地形のコピー&ペーストをおこなうことができません。VRMテンプレート構想では、テンプレート=グループのコピー&ペースト、と考えているため、このままでは地形をテンプレートに含むことができません。
このような管理方法が採られているのにはそれなりの理由があるはずで、おそらくそれはビュワー表示時の速度を稼ぐためと思われます。これは、現行VRMシステムの部品/地形管理方法の差異をなくせ、コピー&ペースト可能な仕様に変更しろ、という主張が「禁じ手」であることを意味しています。
そこで、この現行仕様を追認したままで、VRMテンプレート構想に地形を含む方法を考えることにしましょう。
【解決策】
仮称「地形生成部品」の導入を提案します。
ここでいう地形生成部品とは、以下のようなものです。
(1) それ自身はビュワーでは表示されない。「透明橋脚」を想起すべし。
(2) たとえばそれは扇状の形をしており、その半径と中心角でバリエーションが何種かある。
(3) 扇の弦の部分を高度原点(この部品の高度が0mmの場合、絶対高度0mmに設置する部分)とし、扇の要の部分をたとえば高度30mmとする。
(4) 上記(2)(3)により、半径のバリエーションが斜面の度合いのバリエーションとなる。
(5) この部品は、他のVRM部品同様に自由に配置・高度設定・回転でき、テンプレートに含むこともできる、とする。
(6) この部品は然るべきタイミングで、自分の形状に近似した地形を作り出す。
このアイデアのミソは、部品を配置するのと同じノリで地形が作れる代わりに、その結果出来上がる地形の形状の多少の粗さには目をつむる、という割り切りです。現行の地形作成機能を廃止するワケではないので、精密な地形の作り込みがしたい人は従来の手順を踏めばよろしい。その場合であっても、地形生成部品を部分的に活用すれば、従来よりも生産性は向上するはずです。
技術的には、地形生成部品は従来の部品に比べて「部品用地造成」をおこなう際に参照される高度を複数かつ精密(と言っても、地形のメッシュの精密さ=20mm四方を超える必要はない)に持った部品、ということになります。
この方法の利点は、少なくともビュワーには一切変更を加える必要がない点です。逆に、現行レイアウターに「1つの部品に複数の部品用地造成用高度情報を与えることができない」という制約があるのであれば、その実装がユーザーが想像するほど容易でないことは認めざるを得ません。
なお、地形テクスチャについては、ユーザー側でテクスチャ番号の割り当てを変更できるという仕様から考えて、テンプレートに含まない方が得策ではないか、と思われます。VRM4レイアウターでは、設定されたテクスチャがレイアウトウィンドウに展開されるようになったので、ビギナーの方にとってもそれほど作業負荷がないと思われますし、むしろテクスチャはテンプレート利用者が個性を主張する余地として残すべきかと。
【回避策】
このような部品を導入せずとも、現行VRMシステムで以下の手順を踏むことで似たようなことが実現できます。
(1) テンプレート製作者は、表現したい地形を、たとえば「高架プレート128-132mmB」のような部品で表現します。
(2) テンプレート製作者は、このような部品を必ずグループ化するものとします。テンプレートはグループとして提供されるので、グループ内にもう1つグループを入れ子で作ることになります。
(3) テンプレート利用者は、テンプレートをレイアウト上の適切な場所に配置した後に(2)の部品に対して「部品用地造成」をおこないます。
(4) 地形ができたら、その部品(グループ)を削除します。
VRM3ベースの内容ですが、
こちらの拙稿も合わせてご参照ください。
ご覧の通り実現は可能ですが、あまり現実的な手順とは言えません。したがって、この課題についてはVRMシステム側で解決されないのであれば、むしろ「テンプレートに地形は含まない」というルールを定めた方が良いとも考えられます。
【派生課題】
このエントリでは
・地形生成部品導入の是非。
・是として、その形状やバリエーションはどうあるべきか。
を議論します。
以下の課題は派生として後日扱います。
・作業上、どのタイミングで地形生成部品は地形に高度を与えるべきか。地形生成部品を配置後に移動させた場合、どのような動作であればわかりやすいか。
・勾配区間のテンプレートをどう扱うか。あるいは手軽さを優先してテンプレートには勾配を持ち込まないとするか。
・テンプレートを、そのオリジナルの高度から変更して扱う場合にどうするか。