忍者ブログ
なんでもかんでも中途半端なcamo(カモ)が、30代半ばを目前にして技術の向上を伝えていく(予定)のブログ。
     
<< | 2024年04月 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | >>
[106]  [105]  [104]  [103]  [102]  [101]  [100]  [99]  [98]  [97
Updated   
2024.04.24 (Wed)
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Updated   
2014.07.30 (Wed)
先日行われたmodo801 Launchイベントin大阪に参加して、柳村さんからリプリケータに関するいい情報を教えてもらったので紹介する。

僕の仕事ではたまに施設を作ることがある。

例えばこんな感じで。



そこで行われるイベントがメインなので施設の作りはかなりアバウトでOKなのだが、座席をキレイに配置しておくとそこそこ雰囲気が出るのだ。

そのためにリプリケータを使用してインスタンス配置をしていくのだが、Rに沿った座席となると思った通りできないことがある。

以前の味の素スタジアムを作った時は知らなかったので座席の配置は困難を極めたが、あることをすれば思い通りにキレイに配置できる。

以下、簡単ではあるけども座席の配置方法を書いておくよ。



まずはRと直線を持った簡単な競技場を作るよ。

こんな感じ。



できればここでRの部分の1ポリゴンが座席の位置と合う方が望ましい。

望ましいがリプリケータ用のポイントソースの問題なので、そこまで分割割けないという場合はポイントソースだけ後で作ればいいので問題ない。

今回は図面がないので分割は適当。


リプリケータを知らない人のためにリプリケータの説明をしておく。

リプリケータとは今回のようにあるメッシュを大量複製したい時に非常に重宝する機能で、必要なものは3つ。

1つ目は大量複製したいベースメッシュ(今回で言えば会場の座席)
2つ目はそのメッシュを配置する情報となるポイントソース(メッシュでも頂点でもよい
3つ目はリプリケータアイテム

リプリケータアイテム設定で、ポイントソースを元にベースメッシュをインスタンス複製してくれるのでメモリを消費しないというメリットがある。

ランダム設定もできるので、今回のような規則的なものから不規則的な配置のものまで使えるのもよい(パーティクルポイントソースでももちろん可能)。

リプリケータはアイテムメニューからリプリケータの項目にある。
画面右クリックででるプルダウンメニューからももちろん生成できる。



リプリケータの設定は後で解説するよ。


とりあえずここではまず新規メッシュを作成し必要な座席を作る。

今回は簡易的にこんなもので。

名前を「seat」とした。


この時複製元となる形状は原点をセンターにしておく。

位置を変えたい場合はポイントソースで動かすようにしないと、途中で変更があった時にややこしくなる恐れがあるのだ。

次は座席を配置するためのポイントソースを作る。

ポイントソースはゼロから新たに作るより、椅子を配置する競技場メッシュを有効活用したい。

椅子を配置したい場所は以下のエリアなのでまずはこのメッシュを複製する。



名前を「seat_PS」としておく(わかりやすい名前でよい。


リプリケータではメッシュ状態でも使用できるのでひとまずこれでリプリケータの設定をしてみる。

リプリケータの設定はこんな感じ。

Prototypeには配置したいメッシュ「seat」を、Point Sourceには配置元となる「seat_PS」を。
メッシュで配置なのでSource Modeを「Use Polygons」に。

すると一瞬で大量に椅子が複製配置される。



やった!これで完璧!

と思ったがよくよく見るとおかしい場所が。

直線部分はきれいなのに


R部分ではてんでバラバラになり


反対側の直線では真逆を向いてる。


そのまま使える場合もあるらしいが、直線では問題なくてもRに沿った配列になると大体がこのように崩れてしまう。

しかしリプリケータの設定ではこれ以上いじることができない。

下にある回転項目はランダム設定なので、設定した角度の範囲内でランダムに回転してしまって使えない。


そこで使うのが「Transform map」だ。

これは頂点マップで頂点に対する変形情報を管理するマップなのだ。


頂点マップなので、まずは今使用している「seat_PS」のメッシュを頂点だけに変更する。

頂点はこのポリゴンのセンターに置きたいので少し面倒な作業を施す。



まず列に平行なようにループスライスを使ってセンターにエッヂを追加する。



続いてそれに垂直に走るエッヂを追加する(各端のエッヂを順に二本選択して、上矢印キーで追加選択する)



あとは頂点モードにして今作ったセンターのポイントを一つおきに選択し、選択反転でいらない頂点を消去すればできあがり。



頂点が見えない場合は「O」キーをおしてActive Meshesのタブの項目から頂点表示を選択しておこう。




まだこのままでは先ほどのメッシュの時と変わらないため、「seat_PS」メッシュを選択してからListsタブの「Particle Maps」から新規マップをクリックして、プルダウンメニューから「Transform Map」を作成する。



これを使って頂点に回転情報を与えるわけだが、いちいちR部分の頂点を一つずつ回転させるのは至難の業。

そこでフォールオフを使って一度にきれいに回転させよう。

直線部分は回転させる必要はないので、半円のR部分だけ作業しやすいよう非表示にしておく。




列によって半径が違うので、一列ずつ選択して一列ずつ変形する。

一列選択したらフォールオフからリニアを選択し、奥から手前に配置し、Shape Presetを「Ease-in」にする。

そして変形ツールの回転から90度回転させるときれいに中心を向いた配置ができあがり!

(うまくいかない場合はShape Presetをカスタムに変えて手動で変更してみる

以下二列と手前側も同様にして頂点に変形を加える。

頂点マップを使った変形を元に配置し直したらリプリケータのSource Modeは「Align to Surface」にする。

椅子の元データやポイントソースは非表示で問題ない。
これで完成。



実際には競技場なんかの椅子は一様にセンターを向いているのではなくワンブロック毎に同じ向きだったりするので、そういう場合はブロック毎に頂点を選択して回転をかければよい。

各頂点に情報が記録されるので、ある部分だけ向きを変えるといったことも容易に行えるし、こういった以外のものでも色んなシーンで使えると思う。
PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字