LightWave3D(Intel)モデラープラグイン

Calcium  Ver 1.53 (LW[6]対応版)


・始めに

このプラグインの著作権は、Molypにあります。最新バージョンは、 天然立体工房にて公開しています。
質問、要望等は私宛にメールをお願いします。


Calciumは、LightWave3Dv5.6に標準でバンドルされるSkeletonMakerの拡張版とも言えるプラグインです。
SkeletonMakerを使ったことのある方ならご存知でしょうが、あのプラグインはひとつのカーブをボーンの連続に置き換えるだけで、複数のカーブを使っても、それぞれは独立した親子関係になってしまいます。
また、SkeletonMakerはゴールオブジェクトを置く設定もできますが、なぜかボーンの先端に作成されてしまいます。
言うまでもなく、LightWave3Dのゴールはボーンの根元に置かねばなりません。

そこで、Calciumはそういった問題点を解消し、簡単に複雑なボーンを仕込むことができます。
 
 

・インストール

Calcium.zip(英語版はCalcium_e.zip)を展開して、Calcium.pをモデラプラグインのディレクトリにコピーし、モデラで「Add Plugin」してください。
オブジェクトタブのプラグインに「Moly_Calcium」が現れます。

注:
ver1.0以前のCalciumをお使いの方は、いったんlwm.cfgからCalciumのエントリーを消してからAdd Pluginしなおしてください。
 
 

・使い方

Dialog

プラグインを起動すると、上のダイアログが出ます。
 
 

Scene File
シーンファイル
作成するシーン名を指定します。すでに存在していても無条件に上書きしますのでご注意。
Object File
オブジェクトファイル
ボーンを埋め込むオブジェクトファイルを指定します。
指定しないとNULLを代わりに置きます。
Bone Color
Bone色
シーンでのボーンの表示色です。
Use surface name for Bone name
サーフェス名をBone名にする
カーブにつけられているサーフェス名をそのままボーン名として使用します。
チェックしなかった場合、「Bone」という名前で作成されます。
Activate Bone
アクティブにする
ボーンをアクティブな状態で作成します。
Create Goal object (name : "<Bone name>_Goal")
各Boneの先端にゴールを置く(名称は"Bone名_Goal")
各カーブの先端のボーンにゴールオブジェクトを作成します。
Goal color
ゴール色
ゴールの表示色です。
Don't create goal if surface name has "_NG" suffix
"_NG"で終わるサーフェス名はゴールを作らない
サーフェス名の末尾に "_NG"がついている場合、そのカーブにはゴールを作りません。

Create 'Goal bone'
Goal Boneを入れる

ゴールを作る際に、先端にもうひとつダミーのボーン(ゴールボーン)を作成し、そのボーンにゴールを設定します。
こうすることで、本来の末端のボーンの先端がゴールに従うように見えます。
ゴールボーンは、強さが0ですのでボーン変形には影響しません。
また、その長さは先端ボーンの1%となりますので、ほとんど見えません。
Optimize goal's parent
ゴールの親を最適化する
ゴールの親を、そのボーンが属する祖先のボーンのうち、名前の違うボーンとします。
これにより、ゴールがその祖先のボーンの動きに従うことになります。

OKを押すと指定したシーンファイルにそのオブジェクトとボーンの指定を書き出します。
 
 

・ボーンの仕込み方

・作ってみよう

 

まず、カーブを一本書いてみます。
このとき、必ず「開いたカーブ」にしてください。「閉じたカーブ」は親子関係がループしてしまうため使えません。

とりあえず、「Create Goal object」OFFにしてCalciumを実行してみます。
シーンファイルは適当に指定してください。
成功したらそのシーンファイルを開いてみます。

 

このように、カーブと同じ形状でボーンが作られました。
カーブの各ポイントがボーンの根と先端になります。カーブはスプラインですので曲線を描きますが、この曲線はボーンの形状には影響しません。あくまでポイントだけを使用します。
そして、カーブの最初の点を親ボーンの起点として、子ボーンのリンクが作られています。

次に、途中から枝分かれさせてみます。

 

矢印のポイントは、最初のカーブのポイントと枝の始点が共有されています。
このように、あるカーブの始点以外のポイントから開始するカーブは、そこから親子関係を結びます。
ポイントが共有されていないとペアレント設定はされないので注意してください。

 

 

このようになりました。
一番左の親ボーンを動かしてみると、枝の部分まで親子関係があることが確認できます。

 

このようにポイント共有による親子関係を作るのは、カーブの始点以外のポイントから別のカーブが始まっている場合のみです。
始点同士途中のポイント同士が共有されている場合は親子にはなりません
どちらが親か決定できないからです。
もちろん、カーブの終点から他のカーブが始まるのはOKです。
この場合、ボーンの親子関係は一本のカーブで作ったのと同じことになりますが、後に述べるゴールの置き方が変わります。
 
 

・ゴールオブジェクト

次にこのボーンにIKのゴールを作成してみます。
Create Goal object」ON「Create 'Goal bone'」OFFにして実行してください。

 

このようになりました。
各カーブの先端のボーンの根元にゴールオブジェクト(ここでは赤のNULL)が作られました。
一番左の親ボーンを動かしてみると、枝の部分まで親子関係があることが確認できます。

 


 

・ゴールボーン

LightWave3Dの仕様で、IKゴールはボーンの根元を基準にすることになっています。
しかし、これでは先頭のボーンのIKによる動きが見た目の直感に反する気がします。
そこで、普通なら先端に短いボーンを追加してIKを設定しますが、Calciumではそれを自動的に行えます。
「Create 'Goal bone'」ONにして実行してください。

一見、ボーンの先端にゴールがあるように見えますが、実はさらにその先に非常に小さなボーンが自動的に追加されています。
このボーンのことをCalciumでは「ゴールボーン」と呼んでいます。
ゴールボーンはStrengthが0に設定されているので、ボーン変形には一切影響しません。
これで、ゴールを動かすとそのボーンの先端がゴールに従うように見えます。

 

・ボーン/ゴール名

さて、ここまではボーンに名前をつけずにきました。
そのため、

このようにデフォルトのサーフェス名でボーンが作られています。

わかりやすくするため、カーブにサーフェス名をつけてみます。

 

ボーンとゴールにサーフェス名がつけられました。
ゴールボーンは、"親ボーンの名称_GoalBone"となっています。


 

・抑えボーン

さて、通常、オブジェクトの芯にボーンを入れただけでは曲げたときに内側がへこんでしまう「ゴムホース現象」が起こることがあります。
抑えボーンなしの場合

こんなとき、抑えボーンを入れると、関節をより自然にできます。
Boneの「Joint Compensation」では思うように制御ができない時に有効です。

おさえボーンを入れた場合

このボーンはあくまで補助なので普通はゴールをつけません。
こんなときは、サーフェス名の末尾に "_NG"(No Goal)をつけます。(例: 「腕抑え_NG」)
そうすると、そのサーフェス名を持つカーブにはゴールが作られません。
ボーン名は、この_NGは除いた名前となります。
Don't create goal if surface name has "_NG" suffix」がOFFの場合はこの機能は働きません。
 
 
 

・浮動ボーン

浮動ボーンとは、親子関係はあるが親の先端にはつながっていないボーンです。
これは、主に抑えボーンに無駄なボーンを作りたくない場合や不正変形をさせないためにオブジェクトの一部を本体から離して作成する場合に重宝します。

浮動ボーンを作るには、まず普通に親子関係を作りたいポイントからカーブを作り、ポリゴンパネルの「開始点(StartCP)」を実行します。

 

このように、UpperカーブとDownerカーブで「開始点」を実行してみました。
この状態でCalciumを実行します。

 

まさに、カーブの見た目通りに浮いたボーンができました。
しかも親子関係は「開始点」をする前と同じ親と結ばれていますが、そのカーブから作られたボーンの先頭のボーンは省略されています。
ちなみに「終了点(EndCP)」は設定してもボーンには影響しません。


 

・ゴールの親を最適化 (New!)

LW[6]でオブジェクト以外のものでもオブジェクトの親にできるようになりました。
そこで、この機能を使って、ゴールオブジェクトをごく自然にIKに従わせることができる機能です。
従来のCalciumのゴール設定機能では、ゴールの親がオブジェクトそのものだったので、先端部のゴールは根元のボーンが変形しても置き去りになっていました。

この機能は、ゴールオブジェクトを作るときにそのゴールがゴール指定されるボーンの親をたどります。
そして、祖先に名前の違うボーンを見つけると、 そのボーンをゴールオブジェクトの親にします。
これにより、たとえば手首、指先にゴールがある場合、手首のゴールを動かせば指のゴールはそれにつれて自動的についてきます。


 

まず、このようにカーブを組み、Calciumを「ゴールの親を最適化する 」をOnにして実行します。
ここで重要なのは、指と手首で名称を変えていることです。
これにより、に設定されるゴールはその祖先の手首を親と認識します。  

 

このようにボーンが作られました。
今までどおりに見えますが、指の先についているゴールの親は実は手首のボーンになっています。
指_Goalの親がどうなっているか確認してみてください。

 

手首_Goalを動かしてどのように変形するか見てみましょう。
指先が手首ボーンの動きに追随し、手のひらが自然についてくるのがわかると思います。

 

さて、これでだいたい使い方はわかったと思います。
あとは、ボーンを仕込みたいオブジェクトを別レイヤに読み込んで、バックグラウンドに置いてガイドにしながらカーブを仕込むだけです!
 

 

 

・注意

Calciumは、ボーンをひとつめのレイヤーにしか作れません。
複数のレイヤーを持つオブジェクトでも、Calicumで作製されたシーンでは最初のレイヤーしか読み込まれません。

 


 

・最後に


このプラグインのバージョン1.3は、LightWave3D 5.6 (Intel/Mac) 用に作成されました。
その他のバージョンでは動作は保証しかねます。
また、 バージョン1.4 forLW[6]は、LightWave6.0(Intel)用です。その他のバージョンのLWでは動作しません。

このプラグインを使用したことによるあらゆる損害は補償しません。
自己責任において使用してください。

バグ報告、機能追加の要望等はお気軽にメールにてお願いします。

本プラグインはフリーです。
再配布する場合は、本ドキュメントを必ず添付してください。
転載する場合は、メールをお願いします。

本プラグインの著作権はMolyが持っています。

LightWave3Dについて詳しくは株式会社ディ・ストームへ。
 

 

・謝辞

Mac版Calciumの作成にあたって、極楽島宮地さんにご協力いただきました。
 

 

・更新履歴

1.53 (2000/8/22) Ambient Colorがとんでもない値になっていたのを修正
1.52 (2000/8/21) シーンファイルの形式が間違っていたのを修正
1.51 (2000/8/8) 複数レイヤーを持つオブジェクトでおかしくなるため、最初のレイヤーしか読み込まない
1.5 (2000/8/6) ゴールの親の最適化機能追加
1.4 for LW[6] (2000/8/5) 開始点指定でしかも2ポイントカーブを無視するように修正
1.3 for LW[6] (2000/4/17) LW[6]のために修正
1.2 (?) カーブの最大数増加(256->1000)
1.1 (1999/11/27) ゴールを作らない設定で「Create Goal bone」などが指定されていると異常なボーンを作ってしまうバグを修正
1.0m (1999/11/27) ゴールを作らない設定で「Create Goal bone」などが指定されていると異常なボーンを作ってしまうバグを修正
1.0 (1999/9/10) ゴールボーン作成機能追加
0.3 (1999/8/30) 浮動Boneの作成をサポート
0.2 (1999/8/19) 特定のBoneにゴールを作らない機能を追加
0.1 (1999/8/14) 1st release