お問い合わせを戴いたので、near_meの左目頂点順序と左肩の切り分けを修正する方法を載せてみようと思う。手順自体は頭すげ替えキャラとかを作るのとあんまり変わらないけど、そういう手法もマイナーになってきたので、改めて図多めでやってみる。
最初にお断りしておくが、これはあくまでも正式に修正版がリリースされるまでのツナギだ。自己責任で、必ず元のデータが失われないような形で(バックアップをとりながら)実行して欲しい。
必要なのは、Poserとテキストエディタとモデラ。
モデラはWavefront OBJ形式が扱えて、UVが失われないソフトならなんでも使えると思う。自分は最初Shadeで作業した。Shadeではポリゴングループに一つのマテリアルグループしか割り当てられないので、一連の作業の後にPoserでマテリアルグループを割り当てる作業が必要になる。
ここではHexagon 2.2を使って説明する。全26工程。
手順1:まず、Poserでライブラリからnear_meをロードする。
手順2:次に、フィギュアメニューで両足のインバースキネマティクス(IK)をオフにして、ウィンドウメニューの「連結パラメータ編集」でジョイントエディタを表示させ、「ゼロフィギュア」のボタンをぽっちりクリックする。
手順3:ファイルメニューの「書き出し」から「Wavefront OBJ...」を選択。
手順4:書き出し範囲はそのまま「現在のフレーム」の状態でOKをクリック。
手順5:次に書き出すパーツを尋ねてくるので、near_meの左目以外のパートを選択する。
手順6:そいでもって名前をつけて保存。ここでは「near_me_FixBody.obj」という名前にした。保存場所はどこでも構わない。
手順7:次に出力オプションを尋ねてくるので、「ポリゴングループにパーツ名を含める」だけにチェックをいれて、OKをクリック。これで左目以外のパーツを書き出した。
手順8:もう一度ファイルメニューからWavefront OBJの書き出しを選択し、今度は右目だけを選択する。左目じゃないので要注意。オプション類は先ほどと同じ。
ファイル名は「near_me_FixRightEye.obj」とした。まあ何のファイルか判別できるなら、なんでもいいと思う。でも日本語は避けるのが吉。
右目の反転はモデラで行う。X=0を中心に鏡面移動できるなら、具体的な操作方法は任意だ。ここではHexagonでの一例を記述する。Hexagon2.2には頂点順序が変わってしまうバグがあるが、今回は無事に作業できた。単一グループだったからかも知れない。
手順9:Hexagonを起動して、Fileメニューから"Import..."を選ぶ。
手順10:ファイルを開くダイアログが出てくるので、まずインポートするWavefront OBJのファイル形式を"Enable:"のリストの中から選択し、先ほど書き出した右目のファイルを開く。
ちなみにHexagon、ウチの環境では何故か外部ドライブのファイル読み込みに失敗する。
手順11:読み込みするときのオプションでは、"Import scale Factor"で縮尺を100倍にしておく。Hexagonの数値入力は大雑把すぎて、そのままでは正確な作業ができないからだ。1000倍でも10000倍でもまあご自由に。あとのチェックは外す。
画面上にでっかい目玉が表示されたら、そのまま右のSceneパレットとPropertiesパレットで形状を反転する。
手順12:まず、SceneパレットでrEyeをクリックし、Propertiesパレットで"Relative"(相対)のラジオボタンをクリック。下の9つのマスの数字が変わるので、左下(SizeのX値)の"1"にマイナスをつけて"-1"にする。そして"Apply"(適用)ボタンをクリックすれば、形状がその位置で反転する。
手順13:次に、ラジオボタンで"Absolute"(絶対)を選択し、マス目の左上(PositionのX値)の数字(多分-1.317になっている筈)からマイナスを消して、"Apply"をクリックする。これで形状が中心軸を挟んで右側に移動するはずだ。
手順14:さらに、"Name"のテキストボックスで名前を"rEye"から"lEye"に変更する。これも"Apply"をクリックして変更を確定しておこう。
これで反転できたので、形状を出力する。
手順15:FileメニューからExport > Wavefront OBJを選択。
手順16:インポート時に100倍で読み込んでいるので、"Export scale factor"を0.01にしておく。あと"Export UVs"にチェックを入れて、UV値もちゃんと書き出しておく。
ファイル名は適当に「near_me_FixLeftEye.obj」とかそんな感じで。ここまででモデラの作業は終了。
手順17:再びPoserを起動し、ファイルメニューから「読み込み」>「Wavefront OBJ...」を選択。最初に書き出した「near_me_FixBody.obj」と先程反転させた「near_me_FixLeftEye.obj」をインポートする。
手順18:オプションでは、「near_me_FixBody.obj」はすべてのチェックを外し、「near_me_FixLeftEye.obj」では「Uテクスチャ座標値を反転」にのみチェックを入れる。
左目のUV値を左右反転させるのは、モデラの反転作業でUV値がそのまま右目と線対称の状態になっているからだ。このままでは、瞳のお星さまが対称になってしまう。UVはモデラで予め反転させても構わないけど、こちらの方が楽なので。
体と左目を読み込んだ状態。
さてここで、ついでに左肩と左腕のパートの切り分けも右肩と同じにしてみよう。ここからの作業は蛇足なので、左目だけ直ればいいや、という方は手順22まで読み飛ばしてもらって構わない。それにcr2自体はちゃんと左右対称になっているので、前回のエントリにも書いた通り、この切り分けの違いは服作りなどにはなんにも影響を与えない(理由は服作りをしている人に訊いてみよう)。なので、見た目がちょっとイヤだわ、という方だけ作業してもらえればいいと思う。
手順19:まず、小道具near_me_FixBodyを選択して、ポリゴン編集ツールを表示する。次にポリゴンの追加ボタンがアクティブになっていることを確認して、リストの中から左肩「lCollar」を選ぶ。赤くなったのはlCollarのポリゴングループに含まれている部分だ。ここで、右肩の切り分けと同じようになるよう、腕のポリゴンをクリックやドラッグで選択していく。
カメラを回して、ちゃんと背面や見にくいところも選択していこう。
手順20:ぐるりと一周選択できたら、ポリゴン編集パレットの下部にある「グループを結合」ボタンをクリックして、元の境目を消す。結合許容値はそのままでいいだろう。
次に、このままでは左肩と左腕のポリゴンが一周分重複してしまっているので、左腕から肩に含めたポリゴンを削除する。
手順21:リストから左腕「lShldr」を選択し、「グループから削除...」ボタンをクリックする。表示されたダイアログのリストから左肩「lCollar」を選択してOKをクリック。
これで切り分けの修正が終了。境目が消えてしまっているけど、気にしない。
ここまで来たら、あと一息。
手順22:ここで、体と左目のジオメトリを一緒に書き出す。ファイルメニューの「書き出し」>「Wavefront OBJ...」で、出力する形状を選択する。オプションでは「ポリゴングループに既存グループを含める」にチェックを入れる。今回出力するのはフィギュアではなく小道具の形状なので、パーツ名は=小道具名になるからだ。
ファイルの名前は「near_me_Fix.obj」としてみた。
手順23:ここでいったんFinderまたはデスクトップに戻り、たった今出力したファイルをnear_meがインストールされているランタイムのGeometriesフォルダ(のnear_meフォルダ)に放り込んでしまおう。一緒に出力されるmtlという拡張子のファイルは、簡単な材質設定のファイルだ。外部のモデラでインポートする時にはあった方がいいが、ここでは不要なので削除してしまってもいい。
手順24:次に、同じランタイム下のLibraries>Character>near_meのフォルダを開き、near_me.cr2のファイルを複製する。
手順25:複製したファイルをテキストエディタで開き、最初の方にある"figureResFile~"という行の行末を"near_me.obj"から自分で作ったファイルの名前に変更する。
"figureResFile~"という行は下の方にもう一個所あるので、検索して同じように書き換えよう。
手順26:Poserに戻ってnear_meフォルダを開き、複製したファイルをロードしてみよう。
目の三つのモーフを動かして、奇麗に表示されていれば成功だ。
もし上手くいかなかったら、Hexagon2.2のバグか、モデラでの反転作業に失敗してるか、途中の作業を間違えているかだろう。バグならうまくいくまで挑戦するか、2.1にバージョンダウンしてみると良いのではないかと思う。Shadeの場合はここから左目のマテリアルグループを割当て直し、もう一度出力し直す必要がある。
いずれFix版はリリースされると思うけど、まあそれまでのツナギということで。
こちらは出し惜しみ(爆)