Poly to Poly
Main/History
GraphiX
LScript
Plugin
Knowledge
Blog

 本末転倒 LScript。LightwaveのLScriptを配布しています。 ご利用は事故自己責任で。
 Lightwave 7.5/8.5/9.x向け、Lightwave 7.5c/dのLScript 2.6では未テスト。
 (6.5B:2.1、7.0B:2.4、7.5:2.5/2.51、7.5B-D:2.6、8.x:2.7、9.0:2.8、9.2:2.9、9.3:2.11)。
 LWが日本語(2Byte文字コメント)に対応出来ず、*.lsのままではプラグイン追加は出来ないかもしれません。
 その場合、コメントを削除するか、LSコンパイラでLSC化すればプラグイン追加出来るようになります。
 ご意見ご感想ご質問ご要望、うごかねぇぞヽ(;`д´)ノバーヤなどなど、掲示板にでも書き込んで下さい(´ω`)

Modeler用  Layout用  MultiKeyingNumeric(Layout)

Multi Keying Numeric0.851 (LScript2.5〜)
 複数選択してキーを一括操作する為の物。
 任意のチャンネル、フレームに任意値のキーを打ちたい、一連のキーに加減算したい、一連のキーをコピーしたい等々。
 Rotate()の様に90度が89.999〜になったりしません。

 最初に選択したアイテムの値が初期値として入ってますが、入力処理されなかった部分へは作用しません。

 XYZ/HPB/sXsYsZの数値入力欄の右側のボタンは入力チェックボタンです。

 数値入力欄内で実際に数値+リターンキー(またはTAB)で入力したり、数値を変更せずにリターンを打つと「入力処理した」事になり、ONになります。
 数値入力をしなくてもONにすれば「入力処理した」事になり、値を入力した後でもOFFにすれば「入力処理してない」事になります。
 [Position][Rotation][Scale]、それぞれ右側のボタンで移動/回転/スケールの括りで一括ON/OFFに出来ます(出来ない時もありますorz)。

 数値入力欄左のボタンは±反転ボタンです。 CopyモードとSeqCopyモード、PairCopyモード時に作用します。 内部で-1倍されて値の±が反転します。  ONにした際に自動的に入力チェックボタンもONになります。

 Frame欄は現在フレームと違うフレームにキーを打ちたい場合に指定します。
 SeqCopy/SeqAddを選択すると二つ目の入力欄が有効になり、開始フレームと終了フレームとして扱われます。
 Shift欄はSeqCopyでのみ有効になります(後述)。
 開始欄の横のボタンはPreviewStartFrameを、終了欄の横は〜Endを入力するボタンです(タイムライン表示の範囲に相当します)。  ボタンを押す事でそれぞれの欄にそれぞれのフレーム番号が入ります。

Setモード。(固定の任意値)
 選択中の全アイテムの任意チャンネルに対してキーを打つか、既存のキーがあれば値を変更します。

Copyモード。(コピー)
 最初に選択したアイテム"以外"のアイテムの任意チャンネルに対してキーを打つか、既存のキーがあれば値を変更します。  コピー元アイテムの現在フレームにキーがある場合、そのキーのIncomingCurve(Hermiteの属性は除く)もコピーします。
 ±反転ボタンのON/OFF状態が反映されます。
 コピーとは言っても、1つ目のアイテムに作用しないだけで、依然入力欄への数値入力は有効です。
 SelfWback(Self Writeback)ボタンをONにした場合、アイテム選択が一つでも動作し、一番目の選択アイテムにも作用するようになります。

Addモード。(加減算)
 選択中の全アイテムの任意チャンネルに対して入力値を加算したキーを打つか、既存のキーがあれば値を変更します。
 内部的には「現在値 + 入力値」なので、減算したい場合はマイナス値を入力します。

ExAddモード。(累積型加減算)
 選択中の全アイテムの任意チャンネルに対して入力値を加算したキーを打つか、既存のキーがあれば値を変更しますが、選択アイテムの個数に応じた倍数が加算されます。
 1番目のアイテムも処理対象になるので注意(入力値の一倍が加算されます)。
 Nullを10個作って1M間隔で並べたい時などは、2〜10番目(計9個)のNullを選択し+1Mで実行する事で、全10個が0M〜9Mに並びます。

SeqAddモード。(一連の範囲/シーケンスへの加減算)
 選択中の全アイテムの任意チャンネルの指定範囲にあるキーに対して入力値を加算します。
 AddやExAddモードと違い、既存のキーにのみ作用します。
 適用先のチャンネルの指定範囲内にキーがなければ何も起こりません。

SeqCopyモード。(一連の範囲/シーケンスのコピー)
 最初に選択したアイテムのアイテムの任意チャンネルの指定範囲内の一連のキーを取得し、他のアイテムの該当個所に対して複製します。
 ±反転ボタンのON/OFF状態が反映されます。
 適用先の対象範囲内に在る既存のキーは削除され、コピー元のキーがコピーされます(コピー元にキー1-3-9があり対象範囲が1-10の場合、適用先が1-5-10なら、適用後は5と10が消え1-3-9となります)。
 IncomingCurveもコピーしますがHermiteの属性はコピーしません。
 Shift欄に0以外のフレーム値を与える事で、適用先の範囲をずらす事が出来ます(コピー元が1-3-9で範囲1-10、Shift10とすると、適用先には11-13-19として複製されます。適用先に20があった場合、それは消えます)。
 SelfWback(Self Writeback)ボタンをONにした場合、アイテム選択が一つでも動作し、一番目の選択アイテムにも作用するようになります。  自身の一連のキーを別フレームにまとめてコピーしたり、軸反転させるような時が使い所。

PairCopyモード。(複数対でのコピー)
 選択中のアイテムの奇数番目(1,3,〜)と偶数番目(2,4,〜)を対として、奇数番目の任意チャンネルの内容を偶数番目にコピーします。  コピー元アイテムの現在フレームにキーがある場合、そのキーのIncomingCurve(Hermiteの属性は除く)もコピーします。
 ±反転ボタンのON/OFF状態が反映されます。

 Limit RotationボタンのON/OFFにより、回転制限(モーションパネルの設定)を反映させるかどうかを選択します。
 このボタンがONの場合、回転制限設定の範囲を越える値にはなりません。
 但し、Limit RotationボタンがONであっても、回転制限自体がOFFの場合は制限される事はありません。
(@define DEFAULT_LIMIT trueをfalseにする事で、実行時の初期状態をOFFに出来ます。)

 SelfWback(Self Writeback)ボタンはCopy/SeqCopy時のみ動作に影響を与えます。
 (@define DEFAULT_SELFWRITE falseをTrueにする事で、実行時の初期状態をONに出来ます。)

 1st欄には第一選択のアイテム名の表示がされています。

 Lightwaveのバージョンによっては入力の確定方法が奇異な物もあるので、その場合はそのバージョンの入力ルールに沿う必要があります(TAB確定不可リターン入力必須等)。

 KeyFramerやDupeTrackと機能的に重複するとこあるけどキニシナーイ(・ε・ 三 ・з・)

(070207)回転制限を反映するようにした。
(070224)LScriptシステムのレジストリの使い方がアレなので、パネルタイトルに入れていた第1選択アイテム名を別枠に移した。 無選択時のエラートラップ忘れてたのをFIX。
(070225)無駄の低減(?)。
(070305)回転制限関係のバグをFIX。Sequece COPY,Sequece ADDモードの追加。CopyモードでキーのIncomingCurve(Hermiteの属性は除く)もコピーするようにした。アイテムが一つでもExAddが動くように。細かい調整。
(070306)現在フレームより過去に向けたキー打ちが出来なくなってたのを修正。SeqCopyモード時は入力欄をOFFになるようにした。SeqCopy時に適用先フレームをずらせるようにした。
(070306)SeqCopy時のRot適用部のバグ潰し。
(070307)第一選択にキーがあった時の処理のバグ潰し('A`)カッコ抜けてた
(070307)多少のコストと引換えにシェイプアップ(プレコンパイルで30KB減った&見通しよくなった)。SeqCopyでシフトさせた時、時間値の不可知の誤差によって比較が成立せずエラーになる事があった問題をFIX。
(070308)さらにシェイプアップ(プレコンパイルで計41KB減った)。拡張を考えてパネル内配置の調整(DEFAULTは予約枠で未機能)。
(070308)SelfWbackボタンを付けた。ONで単一選択時でもCopy/SeqCopy動作するようにした。
(070310)選択順維持の為の調整。
(070314)1st欄をNonActiveにしてTAB移動時に邪魔にならないように。Frame欄をミニスライダにした。Frame開始/終了横にPreviewStart/Endを取得するボタン追加。配列への初期値代入の効率化。
(070315)Camera/Light時のエラーをFIX。Camera/Light時にScale関係の一部を非表示に。一部ボタンの配置調整。
(070316)微妙にシェイプアップ
(070318)↑で対象フレームの初期値算出でエンバグしてたのをFIX orz
(070623)PairCopyモード追加。
(070701)Rotationが処理対象では無い時もLimitRotate取得をしていたのをスキップするように。