2006年09月

2006年09月30日

ボーン変形について考える その9 modo 202

仕様を少し変更したので、ここで改めて全体像を紹介しておこうと思う。

出来る事と出来ない事

  • 変形させたいメッシュの直下にペアレントしたBone構造をそれぞれの記録位置からアイテムごとに回転、移動させてBoneDeformボタンを押すとそれにあわせた変形がメッシュに対して適用される
  • Boneの変位として認識されるのは移動と回転のみでBone尺度や長さの変化は認識されない。
  • Bone変形はBoneDeformを起動して初めて開始され、リアルタイムの変形は出来ない。
  • Bone自体はロックされていて内部の編集は出来ない。Boneの操作は必ずアイテム単位で行う。
  • 変形されるメッシュは他のアイテムにペアレントしていても構わない。
  • BoneDeformする時は変形したいメッシュか、それにペアレントしたBoneを選択している必要がある。
  • BoneはAdd Bone または Convert to Bone で作成出来る。ただしAdd Boneで追加できるBoneは長さ1mのものだけで今現在は長さの変更が出来ない。
  • Boneの名前はそのまま対応するWeightMap名になる。名前が一致しないと変形されない
  • メッシュに直接変形をかける代りに手動でメッシュにモーフマップを作成して、それに変形を適用することが出来る。その場合、オリジナルの形状が変わらないので次に変形させる時に直前の変形の影響が出ないので便利である。
  • Convert to Bone を使うには、Boneを配置したい位置に2点ポリゴンの繋がったものを作成し、Boneの開始位置をVertex選択で1点だけ選択してスクリプトを起動する。この時2点ポリゴンのエッジに選択セットで名前を付けるとそれがBoneの名称になる。名前が無ければBone01から通し番号の名前が付く。
  • Boneの位置記録はSet Boneで行う。
  • Boneの位置を記録位置に戻すにはReset BoneかReset All Bone を使う。Reset All Boneは選択されているアイテムに属する全てのBoneを記録位置に戻す。
  • Boneの位置はSave Poseによってファイルに書き出し、Load Poseで読み込める。ただし読み書きはBoneの変位のみなので記録位置が変わってしまっている場合はその変化が加わった位置になる。
  • Boneとメッシュの影響関係はuse Weight Map Only にチェックを入れることで両者の距離に無関係にウェイトマップのみによって決めることも出来るし、距離によって影響を減衰させることも出来る。ただしWeight Map のみ使った場合でもその変形は常態化される。
  • 距離による影響の減衰はFall Off設定によってパターンを変えることが出来る。距離に反比例から距離の128乗に反比例まで8種類ある。

以上が現在の仕様だな。今までダウンロードして使ってた人はBoneの中身にロックがかかったのでうっかりBoneのメッシュを加工しちゃうミスが無くなったこととConvert to Boneの名前指定がVertex Selection Set から Edge Selection Set になったこと、今まで一番下の階層のメッシュを変形対象にしていたのをBone直下のメッシュに切り替えて、メッシュ自体を他にペアレントできるようにしたことが変更点かな。

今後の予定としてはBoneの個別プロパティ設定とかBone Weight Map によるWeightMapの自動生成とかかな。いずれにせよ、簡易マニュアル的なものは作らないとならないかな。大まかな操作については9月28日の記事を最新版に合わせて書き換えたのでそちらを見てくれ。

スクリプトまとめページ(ダウンロードはこちらから)



take_z_ultima at 11:02|この記事のURLComments(0)TrackBack(1)modo | CG

2006年09月29日

ボーン変形について考える その8 modo 202

昨日の予告通り距離のFallOffを導入してみた。LightWaveのボーンを参考に作っているのだが、まだいまいちかっちりした概念を分析しきれていないので、変形する対象のメッシュが大きくなったり小さくなったりした時にどのような影響が出るかあやふやだ。少し検証の必要がありそうだ。とりあえずウェイトマップ1枚のみ貼ったメッシュで変形させてみた。falloffが効いているのでちゃんと曲がってる。

マップ1枚のみで変形

それからさっき気付いたんだが、エッジにも選択セットがあったんだな(汗)。Convert To Bone でヴァ−テクスの選択セットでボーンの名前付けをしているけど、エッジの方がいいな。後で調べて見ようと思う。距離のFallOffが入ったのでパネルもFallOffの種類とUse WeightMap Onlyのチェックボックスが増えた。これがチェックされていると距離のFallOffが効かない今までの方式だ。だいぶBoneシステムも完成に近付いた。ただ、注意して欲しいのは、LightWaveのBoneと違ってWeightMapが施されているMeshにしか反応しないという事だ。もちろんLightWaveでもBoneプロパティでWeightMapを設定すれば同じ状態になる。簡単にウェイトマップを利用したい場合には確かにWeightMap無しで全部に影響が出るモードもいいのかも知れないが、処理量をいたずらに増やしそうだしなぁ。とか悩みつつまた次回。ダウンロードは以下のリンクから。

スクリプトまとめページ



take_z_ultima at 12:37|この記事のURLComments(0)TrackBack(0)modo | CG

2006年09月28日

ボーン変形について考える その7 (06年9月30日変更) modo 202

さて、Convert To Bone の操作方法について説明する。

fig01まずボーン変形したい図形を用意する

fig02次にボーンを入れるためのメッシュレイヤを一つ作る

fig03VertexタブにあるVertexToolを使ってボーンをイメージした流れでヴァ−テクスを配置していく

fig04配置したヴァ−テクスを隣り合うものどうし2つ選択してPキーを押し2点ポリゴン化する

fig05全てのヴァ−テクスに対して同様の作業をして接続された2点ポリゴンの鎖を作る

このスクリプトではボーンの名前も同時に付けられるようになっている。仕組みは選択セットを使ったもので、2点ポリゴンを構成するエッジに選択セットで名前を付けるとそれをスクリプトが読み込んでボーンの名前にしてくれる。この名前と同名のウェイトマップが適用されたヴァ−テクスのみが変形に反応するので名前は重要である。省略するとデフォルトで「Bone番号」という名前のボーンになる。以下が選択セットを割り当てる手順である。

fig06一番左のエッジをエッジ選択してSelectメニューからAssign Selection Setを選択

fig07Bodyという名前の選択セットとしてこのエッジを追加する。

fig08以下同様にエッジを選択してAssign Selection Set を繰り返してこのように名前を付ける。

fig09完成した2点ポリゴンのレイヤーをボーンを割り当てたいメッシュレイヤーにドラッグ&ドロップする。

fig10このような状態にペアレントする。

fig11ボーンの開始位置のヴァ−テクスを1つだけ選択する。2つ以上選択すると何もしないで終了するので、必ず選択は1つだけにすること。

fig12ボーンコントロールパネルを出してConvert To Boneを起動するとこのように選択したヴァ−テクスを始点として選択セットで付けた名前でボーンが生成される。

fig13もしこのような場所のヴァ−テクスを選択してConvert To Bone を起動すると、

fig14このように選択したバーテクスから2方向に分かれる流れのボーンが生成される。

fig15ボーンの名前にあわせて変形させたい部分にウェイトマップを割り当てる。

fig16ボーンをアイテム単位で変形させる。ボーンは変換された時点でその位置も記録されているので、ResetAllBoneでその形状に戻すことも出来る。

Boneは単なる絵なのでこの絵を操作しても意味が無い。必ずアイテム単位で操作すること。

fig17変形した形状をモーフマップとして作成すると修正が楽だ。そこでモーフマップを追加するメッシュを選択する。この作業を忘れてモーフマップを作成すると、ボーンにモーフマップが作成されたりしてしまう。もちろんボーン変形はボーンに対しては行われないので見かけ上は何も起こらないように見える。

fig18相対モーフマップを1つ作成する。

fig19BoneDeformを起動するとモーフマップに変形後の形状が入る。モーフマップをクリックして非選択にするとモーフがかかっていない元の状態に戻り、もう一度選択するとモーフがかかっている変形状態になる。このように変形している状態で再びBoneDeformを起動しても、変形元のメッシュはモーフ適用前の図形なので直前のボーン変形の影響を受けずに何度でもBoneDeformが試せる。

以上がConvert To Bone の機能を使ったBoneの活用方法である。このボーンにはBoneの尺度に対応して無い。それではまた次回。

スクリプトまとめページ

シーンファイル
 



take_z_ultima at 10:56|この記事のURLComments(0)TrackBack(0)modo | CG

ほんのちょっとバグ修正

いかん・・・寝ようと思ったらバグに気づいて戻って来てしまった。さっきボーンのスクリプトをダウンロードした人がいたらそれはバグってるので新しいのを使ってくれ。バグの中身はボーン作成使ったスケルゴンをそのままペアレントしておくとデフォーメーションがエラーで終了するというもの。スケルゴンをペアレントから外せば問題ないけど気分悪いし、resetboneとか他の奴は直したんだけど肝心のデフォーメーションの方を修正し忘れたって事だ。いま直して試してみたけどOKみたいだ。

take_z_ultima at 03:13|この記事のURLComments(0)TrackBack(0)modo | CG

ボーン変形について考える その6 modo 202

ようやくConvert To Boneの機能が出来た。さっそくアップロードしといたけど解説は明日かな。2点ポリゴンを連ねたものをボーンを配置したいメッシュにペアレントして、ボーンの根元にしたいポイントを選択してスクリプトを起動すればボーンが生成されるよ。ポイントは必ず1つだけ選択しないと何もやらないようになっている。その時ボーンの先端にあたるバーテクスにSelectSetで名前を付けておくとそこから名前を拾い上げてボーンに同じ名前が付くようにしといた。これで何度も試しながらボーンを生成しなおしてもいちいち名前を変更する手間がかからなくて済む。ただ、残念な事にこの簡易スケルゴンにはロール回転の概念が無い事だ。まあそれでもアニメーションさせる訳でも無いのでそれほど困らないと思うけどな。思い立って約1週間。確かキャラクターのCG作ってた筈なんだけど、ようやくあのキャラクターもポーズが簡単に付けられるようになった。ふぅ。



take_z_ultima at 02:29|この記事のURLComments(0)TrackBack(0)modo | CG
Archives