Poly to Poly
Main/History
GraphiX
LScript
Plugin
Knowledge
Blog

 Lightwave 3Dのプラグインを配布しています。 ご利用は事故自己責任で。
 ご意見ご感想ご質問ご要望等はTwitter辺りで(´ω`)
 SSE2を使います(Pentium4,Athlon64等)、x64ではSSE3も使います(P4/Prescott,Ath64/Venice以降)。
 Microsoftのmsvcr80.dll(MS9-35以上)を使います。 不足又は古い場合はMicrosoftからVC++ 2005 SP1 再頒布可能パッケージの最新版を導入して下さい(http://support.microsoft.com/kb/2538242/ja)。
 「AStools」というグループ名を付けています。 AddPlugin直後、EditMenuLayoutやEditKeyBoardShortcutに反映されない場合は再起動で。
 モデラ用の変形させる物は基本的にPrimaryLayerにしか作用しません(〜LW8.5。9からは可)。
 選択時が単一のFGレイヤならそれが、複数のFGレイヤ選択時はLWOファイル内で順番の若いレイヤ(但し条件によっては不定)がPrimaryLayerになります。
 ※Lightwave 3D 10.x(9.6.1)での動作チェックは杜撰です。 ファイルを扱わない物なら多分大丈夫だと思いますが、日本語データは化けます(対処済みも有り)。

Modeler用  Layout用  Maya用  Blender用

VecLength 0.113 (x86/x64)(75/85/9x/11x) (160414)
 (VecLength.p は SetVecLength,SetRightAngle,SetVecByEllipseAngle,SetDivAngle,GetLength,GetAngle,MovPntCrvInterpPos の7個のプラグインとして登録されます)
SetVecLength
 頂点間の距離が指定値になるように対象頂点を二点ベクトルに沿って移動します。
 選択頂点数が偶数の場合、交互に選択された対として処理します。
 例)[0:1][2:3][4:5]...
 奇数の場合は端数を捨て、[始点:終点]から始まる半数の対として処理します。
 例)[0:7][1:6][2:5][3:4]
 [circle]にした場合、[0]:[1〜]の対として[1〜]を移動します。

SetRightAngle
 選択中の頂点を3つで一つの組(始点A,中心B,終点C)として、角ABCが直角になる位置にBもしくはCを移動します。
 cros/flatではABCで基準面を定め、4点目(D〜)以降を移動します。

SetVecByEllipseAngle
 選択した頂点を円弧(真円/楕円)を書くように並べます。0-90度の円弧です。

SetDivAngle
 選択頂点を選択から求まる角度内に均等配置します。

GetLength
 選択した、複数頂点間、複数エッジ、単一ポリゴン外縁エッジ、単一カーブ、モードに応じていずれかの長さをクリップボードにコピーします。

GetAngle
 選択した、3頂点、頂点を共有する2エッジ、モードに応じていずれかが成す角度(Degree)をクリップボードにコピーします。

MovPntCrvInterpPos
 選択した最初の4点をモデラカーブ(p0,p1,p2,p3)と看做し、残りの頂点をp1,p2間の仮想曲線上に均等配置します。
 と言っても、パラメータtを均等割りしてるだけで、曲線上の距離を均等割りする訳ではありません(;'з`)


SurfHelper 0.100 (x86/x64)(75/85/9x/11x) (160226)
 (SurfHelper.p は RemapSurface,SelSurfByPol,SelSurf2ClipBrd,の3個のプラグインとして登録されます)
RemapSurface
 選択中のポリゴンのサーフェスを対象にして、サーフェス名の簡易的な置換処理と
内容のコピーを行います。

SelSurfByPol
 最後に選択したポリゴンのサーフェスをサーフェスエディタ上で選択します。
 LW11.5からのPickSurfaceの簡易版の様な物ですが、一応2バイト文字への対応をしています(PickSurfも11.6.1であれば結果的に日本語名でも使えますが)。

SelSurf2ClipBrd
 選択中のポリゴンに充てられているサーフェス名のリストをクリップボードにコピーします。
 各ポリゴンと対になるリストではなく、ポリゴン群で使われている物のリストです。


AS PMX Loader 0.100 (x86/x64)(75/85/9x/10x/11x) (140101)
 MikuMikuDance等のPMX形式のインポート(読込)プラグイン。
 主だった要素のみ読込みます。 出力は出来ません。


LatticeDeform 0.103 (x86/x64)(75/85/9x/11.x) (160105)
 格子変形をするツールクラスプラグインです。
 操作関係は同梱txt参照。


AS X Loader 0.101 (x86/x64)(75/85/9x)(10) (111003)
 Direct3DのX形式(テキスト版)の基本的なデータを読み込みます。
 頂点、面(3/4角)、Inline/Externalマテリアル、イメージテクスチャ、UVマップ、頂点カラー、に対応しています。
 (PMD Helperに含んでいた物を独立させただけ)


AS PMD Helper 0.115 (x86/x64)(75/85/9x) (111003)
AS PMD Helper 0.122 (75/85/9x/10x/11x) (140101)(暫定版)
 MikuMikuDanceのPMD形式のインポート/エクスポート(読込/出力)プラグイン。
 その他に細々としたPMD作成補助用プラグイン入り。
 D3DのX形式読み込みはv0.115で独立させました。

 PMDデータの作成にはこちらのスレッドの情報が必要になるかも。

 MMD ver3迄の対応なのでVer4の捻りボーンやVer5の物理演算用データに対応していません。

 v0.1.2.xはLightwave 10/11で動きますが、作成用途での検証は殆どしてません。(日本語文字列を扱う性質上、10/11で保存したLWOはLW9.6を含めた他ソフトと互換性が無くなる事に留意して下さい。)


AS MQO Loader 0.237 (x86/x64)(75/85/9x/10x/11x) (160613)
 メタセコイアのMQO形式を読み込むプラグイン。
 少なくとも、かこみき氏のharuka091018は読める(w
 こちらの真希波も。
 ※LW9.6以降でないと真希波はテクスチャ画像のロードに失敗しますが、これはLW9.3.1迄のPNG.pの問題(bKGDチャンクに非対応)に起因します。
 該当画像からbKGDチャンクを削除すれば〜9.3.1でも読めるようになります。
 また、LW9.6のPNG.pに差し替える事でも対処出来ますが、PNGのセーブに影響がある可能性があります(ロードは概ね大丈夫なようです)。

 メタセコボーン(keyNote/Mikoto)をスケルゴンとして読みますが、オブジェクト命名規則の実情を把握してないので妥当性に難があるかもしれません。

 アイリス対策でMQO 1.1も読むようにしました、が細かなチェックをしてません('з`)


AS Absolute Size 0.125 (x86/x64)(75/85/9x)(10) (110728)
 標準添付のAbsoluteSize(LScript)の焼き直し。
 最終的にはモデラコマンドに流し込むのでパネル/操作系位しか違いはありません。  毎回手入力&微妙な遅延に耐えられる人には無用の長物(;・з・)

 後は添付テキスト参照(;・з・)


AS Make Polygon 0.202 (x86/x64)(75/85/9x)(10) (111025)
(AS_MakePoly.pはAS_MakePoly,AS_MakeLinePoly,AS_MirrorXの3つのプラグインとして登録されます)
AS_MakePoly
 選択頂点に対してポリゴンを作成します。
 選択点が1点の場合は点ポリゴンになります。
 選択点が2点の場合は線ポリゴンになります。
 選択点が3点の場合は三角ポリゴンになります。
 選択点が4点の場合は四角ポリゴンになります。
 選択点が4点以上の偶数の場合は以下の様になります。
 5-6-7-8
 | | | |
 4-3-2-1
 4点以上の奇数の時は何もしません。
 頂点とポリゴンを選択して実行した場合、選択中の一番目のポリゴンと同じSurface,Color,Partのポリゴンが作成されます。

AS_MakeLinePoly
 頂点を選択順に繋ぐ線ポリゴンを作成します。
 MakeOpenCurveの線ポリゴン版みたいなものです。
 頂点とポリゴンを選択して実行した場合はAS_MakePolyと同様にSurface等を変更します。

AS_MirrorX
 標準のミラーツールのお手軽版です。
 LW9.0からのMirror_Xスクリプトがホビロンなのでその代替品。
 ミラーツールのマージオプション対策(意図的に分離している頂点も一緒にマージされてしまう)も兼ねてます。
 頂点を選択して実行した場合はそのX座標を、選択が無い場合はX=0を中心座標としてX対称のミラーを行い、中心座標上の頂点だけをマージします。
 YやZで使いたい場合はEditUserCommandに引数を与えて登録したり、LScriptから使って下さい(添付txt参照)。


Transfer Any VMap 0.110 (x86/x64)(75/85/9x/11x) (181021)
 (TransferAnyVMap.p は TransferAnyVMapとNormalizeWghtMap,SetWgtByDistの3つのプラグインとして登録されます)

TransferAnyVMap
 BGの同位置にある頂点の任意のVMAPの情報をFGの頂点にコピーし同期させます。
 FGの頂点にあってBGの同位置の頂点には無いVMAPはFGの頂点から消えます。

 FGとBGを1レイヤづつでの処理が前提ですが、LW9.x以降ならそれぞれが複数あっても多分大丈夫です(無保証)。
 モデラでモーフを選択している場合、モーフ状態で位置判定をするので状況に依っては適切な結果にならない可能性があります。

 位置判定を単純な比較でしている為、DBL_EPSILON以上の位置ズレがあると反応しないと思うので、BGConform等で形状を一致させてから使う事を前提にしています。
 BG側に同位置の頂点が複数あった場合は若いIDの頂点が持つ値が優先されます(多分)。

 上部の[Weight][Morph][UV]でそれぞれのタイプのリスト表示を切り替えます。 「1〜3」キーそれぞれに対応しています。  [全選択][全解除]は現在表示しているリストに作用します。
 (仮にUVリスト表示中に[全選択]しても選択されるのはUVリスト内のみです)
 「q」「w」キーが対応しています。
 [UV]は不連続UVには対応してません。
 どのリストが表示中だったとしても、選択されているマップ全てが処理対象になります。

 リストの左欄には選択状態を示すチェックマークが付きます。 リスト中央はマップ名です。
 リストの右欄はマップの種類ですが、通常のウェイト、相対モーフ、UVには表示しません。サブパッチウェイトには「sub」、選択セットには「sel」、絶対モーフには「abs」が表示されます。

 リスト内での選択はLWによるハイライト表示とは一致しません。
 クリックでは単一のマップの選択がON/OFFされます。
 一連の複数の項目をまとめてON/OFFするには、一つ目のマップをクリック後に望む末尾のマップをシフト+クリック時します。  これにより、一つ目のマップの選択状態が続くマップにも適用されます。

NormalizeWghtMap
 選択した頂点の持つ任意数のウェイトVMAPマップ(値)をそれらを元に正規化します。
 対象としてリストアップされるのは選択頂点内で使用されている通常のウェイトマップのみです。 サブパッチウェイトは対象としてリストアップしません。
 エッジウェイトはVMAPではなくVMADであることが前提のデータなので本来リストアップされませんが、何かの理由でVMAPとして存在した場合はリストアップされると思います。

 ボーンで使うウェイトマップを指定する事でレイアウトのWeightNormalizationと同じ結果になります(多分)。

 WeightMap A:100、B:100、C:0、D:無し、という頂点に全マップ選択して適用すると、結果は A:50、B:50、C:0、D:無し、となります。
 A:100、B:100、C:100、D:100の頂点に、マップABCを対象にして実行すると、A:33.3333、B:33.3333、C:33.3333、D:100となります。 0と−値は無視します。

 [全選択][全解除]はリスト内マップの全選択と全解除です。
 リスト内マップの選択方法はTransfer〜と同じです。

SetWgtByDist
 選択した頂点の1点目を中心とし、最も離れた点を外縁とした円球状内の各点に対して距離に応じたweight値を割り当てます。


As Bug Wrapper 0.108 (x86/x64)(75/85/9x)(10) (110728)
 AS_BugWrapper.pは以下のプラグインとして登録されます。
Revert_Current_Object_wrap
 LW8以降用。7.5と9.6では不要。
 ある程度のデータ量を持つモデルで、頂点等の選択がある程度の数ある状態でRevertCurrentObjectをするとモデラが落ちるので、それを回避する為に全ての 選択を解除してからRevertを実行します。

Invert_Hidden_wrap
 LW9.2〜9.3.1用。
 頂点等の選択がある状態でInvertHideを実行すると、隠される要素に付いていた選択マーカーが残り選択操作も不能になるので、それを回避する為に全ての選択を解除してからInvertHideを実行します。


Merge Point No Requester 0.211 (x86/x64)(75/85/9x)(10) (110728)
 ポイント結合(MergePoint)のラッパーみたいなもの。
 パネルは出さずにRange:Automaticで実行するので同一位置の頂点にしか作用しません。
 また、点ポリ削除やMergeUVといったオマケ処理もしません。
 明示的な頂点選択が必要です。

 頂点のみを選択して実行した場合は上記通りのマージポイントをします。
 マージポイントは頂点間で異なるモーフマップ(及び値)を持つ場合はマージ処理がされませんが、この場合もそれに従います。

 頂点とその頂点を含むポリゴンを選択して実行した場合はモーフマップの辻褄を合わせてからマージします。
 選択しているポリゴンに含まれる頂点のモーフが変更対象になります。
 選択している頂点全てがポリゴンに含まれていたり、一つも含まれていなければ、結果的に何も起こらない場合があります。

 モデラでモーフが選択されている場合、マージ出来ません。
 但し、LW9.6ではモーフの選択解除/再選択を行ってマージ処理をします(解除の為に"TMP_MPNR"という名の絶対モーフマップを作成&削除します。 なので、同名の絶対モーフマップが存在する場合は誤動作します)。
 LW7.5〜LW9.5では選択解除が出来ない為、何もせずに終了します。 また、同じ理由により、処理後はモーフマップが選択された状態になります。

 LW7.5〜8.5では元に戻すのに1〜2回のUndoが必要です(モーフ処理の有無による)。
 LW9〜では1回のUndoで元に戻ります。多分。


Morph Helper 0.227 (x86/x64)(75/85/9x/11x)(10?) (190525)
 (MorphHelper.pはApply_Morphs,Morph_Diff,〜Diff2,Scale_Morph,Rotate_Morph,SetAbsMorphVal,RoundMorphValue,MorphModAnyAxisの8つのプラグインとして登録されます)

Apply_Morphs
 選択した頂点に最大8つ迄の任意のモーフマップを適用します。
 FGレイヤー上で使用されているマップのみをリストアップします。
 前回の選択/実行内容を記憶します。
 FGレイヤーが一つの場合のみ作動します。
 OKボタン、リターンキー、「d」キーで実行します。

 モデラ上でモーフマップが選択状態にある場合、テキスト表示欄にそのモーフ名が表示されますが、この欄は注意喚起以外の意味を持ちません。
 (モーフの選択解除や頂点本来の座標値のみを変更する手段が無いようなので)

 プルダウンメニューは先頭から隙間無く埋める必要はありません。 また、指定の重複もそのまま適用されます。
 %欄は通常の「モーフ適用」と同じ適用率です。
 プルダウン横の[ I ]nitボタンは同行の選択を「無し」にします。 選択解除の為にプルダウンの最上位迄辿る必要がありません。
 [ N ]extボタンは同行で選択されているモーフと行を始点として、下に続くプルダウンにリスト内の次のモーフを順次選択させます。  始点が「無し」だった場合はリストの一番目に置き換えて処理します。
 01〜10というモーフがあり、最上位プルダウンが「無し」の状態でその行の[N]ボタンを押した場合、最上位は「01」になり、以下を「02」〜「08」で埋めます。
 4行目のプルダウンが「08」の状態で同行の[N]を押せば、5行目は「09」、6行目は「10」となり、7、8行目は「無し」になります。

 %欄右の[ I ]nitボタンは値を「100%」にします。
 右上の[クリア]は全ての選択を「無し」、値を「100%」にします。

Morph_Diff
 選択した頂点の持つモーフ値の差分値を指定したモーフマップに格納します。
 多段階モーフの作成支援用。 FGレイヤーが一つの場合のみ作動します。
 前回の選択/実行内容を記憶します。

 相対モーフを元値とする場合は最大8つ迄モーフマップを指定出来ます。
 絶対モーフを元値とする場合は最大7つ迄モーフマップを指定出来ます。
 絶対モーフを使う場合、1番目に限りモーフ値の変わりに形状自体の値を使う事が出来ます(その場合、最大8つになります)。

 差分量の格納先として選べるのは相対モーフマップだけです。
 元モーフとして「絶対」と「相対」を混在させる事は出来ません。
 元モーフや格納先モーフの重複指定はそのまま適用されます。

 プルダウン欄は先頭(上)から隙間無く埋める必要があります。 「-- 無し --」は選択の終端を意味します。
 元モーフと格納先モーフの選択数が適切でないと実行されません。

 頂点が元モーフの値を一つも持っていない場合、格納先モーフが値を持っていればその値を0にします。 格納先モーフの値も持っていない場合は何もしません。  元モーフの値が片方しかない場合、相対モーフでは0、絶対モーフでは形状本来の座標値を用いて差分量を取ります。

 元モーフのプルダウンにはFGレイヤー上で使用されているマップのみがリストアップされます。
 格納先にはモデラ上に存在する相対モーフがリストアップされます。

 OKボタン、リターンキー、「d」キーで実行します。

 最上部(左側)の「絶対」「相対」タブで元になるモーフ種を指定します。
 それに応じてプルダウン等が切り替わります。 (右側の格納先は「相対」に固定です)

 プルダウン横の[ I ]nitボタンは同行の選択を「無し」にします。
 選択解除の為にプルダウンの最上位迄辿る必要がありません。
 [ N ]extボタンは同行で選択されているモーフと行を始点として、下に続くプルダウン欄にモーフリスト内の次のモーフを順次選択させます。
 始点が「無し」だった場合はモーフリストの一番目に置き換えて処理します。
 01〜10というモーフがあり、最上位プルダウンが「無し」の状態でその行の[N]ボタンを押した場合、最上位は「01」になり、以下を「02」〜「08」で埋めます。
 4行目のプルダウンが「08」の状態で同行の[N]を押せば、5行目は「09」、6行目は「10」となり、7、8行目は「無し」になります。

 各[クリア]はそれぞれ全ての選択を「無し」にします。

Morph Difference 2
 Morph Differenceでは選択の下位から上位を引きましたが、2では下位の各マップから最上位を引いた値が格納されます。
 最上位にXYZが1mm,1mm,1mmのマップを選び、下位に複数のマップを指定するとそれぞれのマップの値から1mmを引く事になります。

Scale_Morph
 単一マップ対象時や中心が0以外の時でもまともに動く(はずの)Scale Endomorph。
 FGレイヤが一つの場合のみ作動します。

 [各軸個別に指定]は拡大縮小率を個別に指定する場合にONにします。

 中心点取得は中心点の入力補助で、[前回]は前回実行時の値、[Pivot]はレイヤのPivot、[始点]は選択頂点の1番目の座標、[ゼロ]は0を中心点XYZに取り込みます。
 中心点は拡大縮小時の中心点です。

 [形状も拡大縮小する]がONの場合、形状自体の拡大縮小も同時に行います。 モデラでモーフが選択されている場合はONに出来ません。

Rotate_Morph
 単一マップ対象時や中心が0以外の時でもまともに動く(はずの)Rotate Endomorph。
 FGレイヤが一つの場合のみ作動します。

 精度の都合から通常の小数欄ですが入力すべき角度は度数です。

 その他はScale_Morphと同様です。

SetAbsMorphVal
 選択中の頂点の絶対モーフマップに頂点の本来の座標値を設定します。
 モデラで選択中のモーフマップが対象になります。

RoundMorphValue
 選択した頂点の任意、または全てのモーフ値を任意の桁で丸めます。
 選択中のモーフ、または前回対象にしたモーフを初期選択状態として取り込みます。
 [All Vmap]ボタンがONの場合、モーフ選択欄は無視され、頂点が持つ全てのモーフ値が対象になります。
 X/Y/ZボタンのON/OFFで適用軸を指定します。
 桁指定はフルキーの1〜9でも行えます。
 OKボタンやリターンキーの変わりに「d」キーでも確定出来ます。

Morph Modify Any Axis
 選択中の頂点の任意軸のモーフ値を変更します。
 選択中のモーフ、または前回対象にしたモーフを初期選択状態として取り込みます。
 [Set]では入力した値がそのまま適用されます。
 [Add/Sub]では現モーフ値に対して入力した値が加減算されます。
 [Multi]では現モーフ値に対して入力した値が乗算されます。
 [w]ボタンは頂点がモーフ値を持たない時にその頂点を無視するかどうかです。 ONの場合、モーフ値0を持つものとして算出し、付与します。 OFFの場合は付与しません。モーフ値を持たないままです。
 [X][Y][Z]ボタンは各軸の値を変更するかどうかです。 各列の[S]ボタンは対称扱いするかどうかです。
 ONの場合、それぞれの軸のマイナス側に位置する頂点に対しては入力値を±反転した値で処理します。
 各列の[I]ボタンは値を0mm/1.0に初期化します。
 「1」「2」「3」キーは[Set][Add/Sub][Multi]を切り替えます。 「q」「w」「e」キーは[X][Y][Z]ボタンに、「Q」「W」「E」キーは各列の[I]ボタンに対応しています。 スペースキーは[w]ボタンに対応しています。


Points Set Align 0.242 (x86/x64)(75/85/9x/10x/11x/(2018/2019)) (190717)
Points Set Align 0.238 (x86/x64)(75/85/9x/10x/11x) (160326)
 (PointsSetAlign.pはPoints SetAlign、Point_XSymmetrize、Point_YSymmetrize、Point_ZSymmetrize、Point_SnapSew、EseBGConform, EseLocalMrfの7つのプラグインとして登録されます)
 LW9以前ではPrimaryレイヤ(複数FGの内で一番IDが若いレイヤ)にのみ作用します。
 0.231からEseBGConformをspntからpntタイプに変更したので、再追加 or lwext*.cfgを書き換える必要があります。
Points SetAlign
 選択した頂点を任意軸の任意値に揃えます。

 [始点][終点]バウンディングボックスの[最小/中間/最大][ゼロ]何れかを選択する事でその値が数値入力欄に入ります(フルキーの1〜7がそれぞれに対応しています)。
 [始終]では数値に関係なく選択頂点の始点と終点を結ぶ線分に直交する位置に頂点を移動します。
 [均等]ボタンがONの場合、始終の線分上に均等に配置します。
 [X][Y][Z]の軸ボタンで適用する軸を決定します(「q」「w」「e」キーがXYZに対応しています)。
 数値入力欄に数値を直接入力した場合、自動的にその軸ボタンがONになりますが、入力後でも軸ボタンをON/OFF出来ます。
 [X][Y][Z]のボタンの並び右端のボタンで一括ON/OFF出来ます(スペースキーが対応しています)。
 [始終]では最低限2軸(からなる平面)を指定しないと意味のある結果になりません。

 OKボタンやリターンキー、「d」キーで実行します。
 この軸には始点の値、この軸には終点の値を入れて一度に処理、といった器用な事は出来ません。

Point_XSymmetrize 対になる選択頂点をX軸上の対称に配します(左右対称)。
Point_YSymmetrize 対になる選択頂点をY軸上の対称に配します(上下対称)。
Point_ZSymmetrize 対になる選択頂点をZ軸上の対称に配します(前後対称)。

 頂点の選択状態により動作が異なります。
 選択頂点数が偶数だった場合、1番目と2番目、3番目と4番目〜の様な対として扱います。
 1-2  2-1
 3-4  3-4 etc
 5-6  ...
 ...
 選択頂点数が奇数だった場合、1番目と3番目、2番目と4番目〜の様な対として扱います。
 最後の端数は無視します。
 1-4  1-3
 2-5  2-4 etc
 3-6  ..5
 ..7

Point_SnapSew
 対になる選択頂点を同位置に移動します。
 頂点の選択規則はPoint_Symmetrizeと同じです。

EseBGConform
 BGConformのパチもん。
 本来のBGConformはLW9からファイルを跨いだレイヤ選択に対して問題があるので、その回避策として(9では動作しない、9.2からは落ちる、9.5.1で直った)。
 HUB使用時にモデラでレイヤの増減をしてシーンを汚染したり、モデラでサーフェスリストの汚染をしたくない場合向け。
 相違点は閾値以上離れてる点には吸着しない事と進行表示を出すと操作が阻害されるので出さない事位だと思う。
 モデラに起因するBGレイヤの頂点取得ミス等の問題点はそのまま引き継いでます(明示的な頂点選択をしてる時のみ発症する?)。

 閾値のデフォルトは80mm(0.08)です。
 EditUserCommandやLScriptで引数に値を与え、閾値を設定する事が可能です。

EseLocalMrf
 LocalMrfのパチもん。
 トポロジの同じFG/BGレイヤで、選択した頂点をBGの位置に合わせます。

Round Point Value 0.222 (x86/x64)(75/85/9x/10x/11x) (140217)
 選択した頂点の座標値を任意桁で丸めます。

 桁指定はフルキーの1〜9でも行えます。
 X/Y/ZボタンのON/OFFで適用軸を指定します。
 OKボタンやリターンキーの変わりに「d」キーでも確定出来ます。


UV Helper 0.206 (x86/x64)(75/85/9x/11x) (160326)
(UV_Helper.pはUV_SetAlign,UV_XSymmetrize,UV_YSymmetrize,UV_Sym_Tool,UV_Sym_Pol,Round UV Value,UV_RotX,UV_RotY,UV_GetLength,UV_GetAngleの9つのプラグインとして登録されます)

UV_SetAlign
 最初に選んだ頂点のU値/V値/U&V値、もしくは始点と終点からなる仮想的な直線と直交する位置に揃えます。
 UVFitやUVTauntのパチモノ。
 選択中のUVマップが対象になります。 不連続UVには非対応です。

UV_XSymmetrize
 最初に選んだ頂点のU値を中心座標とし、続く選択頂点の対を左右対称にします。
 現在選択中のUVマップを対象にして処理します。 不連続UVには非対応です。
 2点目と3点目、4と5・・・の様な対として扱うので、適切な順で頂点選択する必要があります。
 中心とする点を1点選んだ後に対称モードで追加選択してから実行、などとするとよさげです。
 端数の頂点には何もしません。


UV_YSymmetrize
 最初に選んだ頂点のV値を中心座標とし、続く選択頂点の対を上下対称にします。
 現在選択中のUVマップを対象にして処理します。 不連続UVには非対応です。
 UV_XSymmetrizeと同じ選択規則を持ちます。

 2 4 6...
1 | |
 3 5


UV_Sym_Tool
 不連続UVに対称性を与える為のツール。 その場凌ぎの要素が大きいので注意。
 UV View上には独自描画が出来ないのでBack Viewにケージ類を描画します。
 指示入力はBack ViewかUV Viewで行います。

 頂点位置をCtrl+右クリックするとそのUV座標を対称化の中心点として取り込みます。
 中心点指定はパネルでの数値入力でも可能です。

 頂点を右クリックすると対称化の元座標として○マークが付きます。
 ○マークがある状態で頂点を左クリックすると、前述の中心点を中央として元座標の対称座標値を対象に適用します。(右→左→右→左と反復の作業が必要です)

 パネルのSym U/V[U][V]でUとVのどちらで対称化するか指定します。(右クリックの前に指定する必要があります。[U]→右→左→[V]→右→左 etc)

 [Accept]ボタンはその時点の状態で変更を一度確定した後に続行します。
 ツール内でのUndoは無いので回復不可能な誤操作等をした場合はView外をクリックして現状を破棄するしかありません(再実行はツールの終了&再実行か↓の[activate])

 [reset]はパネル上の設定だけを初期化します([U] U[0.5] V[0.5])。
 [activate]はツールがアクティブでもデータが用意されていない状態から新規に開始する為に使います。

 通常の(連続)UVだけで納まる場合はUV_Symmetrizeで処理して、不連続UVを扱う箇所でだけ使うとよさげです(;・з・)

UV_Sym_Pol
 UV_Symmetrizeの様な物ですが、頂点でなくポリゴンで指定します。
 中心座標を与える為にvmapを持つ頂点を一つ選択しておく必要があります。
 選択したポリゴンの偶数:奇数を対として、頂点のXYZ座標が対称な箇所のみを変更します。
 パネルの[sym decide]は形状の対称性判断を[X]軸上(左右)で行うか、[Y]軸上(上下)で行うかを指定します。
 [uv sym]は[U]軸上の対称化をするか[V]軸上の対称化をするかを指定します。

Round UV Value
 使用予定のイメージテクスチャの解像度(256,1024etc)に合わせ、選択頂点のUV値が画素の中央や境界になる様に調整します。

 モデラで選択中のUVマップに対して処理します。 不連続UVには非対応です。
 対象解像度は64〜4096迄の2n乗数と768、1536、3072です。

 「1〜0」キーが解像度に、「q」「w」「e」キーが[U][V][U&V]に、「a」「s」キーが[Center][Border]に対応しています。

UV_RotX / Y
 選択頂点の0番目を中心点とし、0->1番のベクトルがX+:Y0 / X0:Y+に向くようにUV値を回転させます。
 選択中のUVマップが対象になります。 不連続UVには非対応です。

UV_GetLength
 選択頂点間を繋いだUV値のベクトル長をクリップボードにコピーします。
 選択中のUVマップが対象になります。 不連続UVには非対応です。

UV_GetAngle
 選択頂点ABCの成す角度(Degree)をクリップボードにコピーします。
 選択中のUVマップが対象になります。 不連続UVには非対応です。


Select By AnyMap 0.207 (x86/x64)(75/85/9x)(10) (110728)
 (SelectByAnyMap.p は Sel_CurWeightMapとSel_CurMorphMap、SelectByAnyMap、Sel_NoMappedPntの4つのプラグインとして登録されます)
 ウェイトマップの有無に応じて頂点選択を追加したり削除する為のもの。

SelectByAnyMap
 標準のSelect By VMAPの「ウェイトとモーフで一覧を別けて、前回対象にしたマップを記憶しとく版」
 FGレイヤー上で使用されているマップのみがリストアップされます。
 対象になるのは、Weightとしてサブパッチウェイト、ウェイト、ポイントセット(SubPatchWeight、Weight、SelectionSet)の三種、Morphとして相対モーフ、絶対モーフ(Related、Absolute)の二種です。

 [Weight]、[Morph]ボタン、いずれかのアクティブな方が処理対象になります。
 ポップアップリストから選択した際に選択に応じて自動で切り替わります。
 それぞれの横の▼ボタンを押すと、モデラで選択中のマップがポップアップリスト内で選択されます。
 但し、ポイントセットは▼ボタンの対象外です。
 フルキーの「1」が[Weight]、「2」が[Morph]に対応しています。

 [Select]で選択の追加、[Deselect]で現状の選択から該当頂点を選択解除します。
 スペースキーでSelect/Deselectを切り替え可能です。

 [s]ボタンをONにすると対称モードの影響を受けなくなります。
 但し、LW9.2以下ではこのボタンは無効で、対称モードの影響を常に受けます。
 「s」キーが対応しています。このフラグはSel_CurWeightMapと共用しています。

 [a]ボタンをONにすると等号/不等号ボタン、閾値入力欄が有効になります。
 等号/不等号ボタン、閾値はWeightとMorphで動作が異なります。
 [Weight]の場合、閾値と等号/不等号で算数的に処理します。
 [Morph]の場合、閾値は無視され、等号の時にはモーフ値のXYZ全てが0の頂点が対象になり、不等号の時にはXYZに0以外の値を含む頂点が対象になります。
 「a」キーが閾値有効ボタンに対応し、閾値有効の時は「q」が[>=]、「w」が[==]、「e」が[<=]に対応します。
 但し、ポイントセットと絶対モーフは閾値処理の対象外です。

 サブパッチウェイトは[Weight]リスト内で「SubPatch Weight」として表示されます(「base」ではありません)。
 「base」という名のウェイトマップがあっても混同せずに処理します。
 Edge Weightもリストアップされますが、VMAPではなくVMADなので基本的に作用する事はありません。

Sel_CurWeightMap
 モデラで選択中のウェイトマップを持つ頂点を(追加)選択します。
 サブパッチウェイトと同名のウェイトがあっても適切に処理します。
 LW9.3以上で対称モードの影響を受けるかどうかはSelectByAnyMapの[s]ボタンの設定に依ります。 LW9.2以下では常に対称モードの影響を受けます。

Sel_CurMorphMap
 モデラで選択中のモーフマップを持つ頂点を(追加)選択します。
 相対/絶対モーフを問わず処理します。
 LW9.3以上で対称モードの影響を受けるかどうかはSelectByAnyMapの[s]ボタンの設定に依ります。 LW9.2以下では常に対称モードの影響を受けます。

Sel_NoMappedPnt
 対象とする分類の頂点マップに属さない頂点を(追加)選択します。
 言い換えると、頂点マップを持たない頂点を選択、ね。
 通常通り実行された場合はウェイト、モーフ(2種)、UVの中から対象分類を選ぶパネルが表示されるので、いずれかを指定します。
 [ignore Symmetry]ボタンONにすると対称モードの影響を受けなくなります。
 但し、LW9.2以下ではこのボタンは無効で、対称モードの影響を常に受けます。
 「s」キーが対応しています。このフラグはSelectByAnyMapと共用しています。

 EditUserCommandやLScriptから引数を付けて実行した場合、その分類を対象にして処理します。 受け付ける引数はLWID型(半角4文字)文字列です。
 パネルで一々選ぶのはマンドクセ('A`)って人は登録しておいて実行するのが良いと思いますが、使用頻度を考えると微妙です。
主な物は、「WGHT」=ウェイト、「MORF」=相対モーフ、「SPOT」=絶対モーフ、「TXUV」=UV、「PICK」選択セット、「MNVW」=サブパッチウェイト、「APSL」=APSL(但しVMAPでなくVMADなので処理対象になりません)
 LW9.3以上で対称モードの影響を受けるかどうかはSelectByAnyMapの[s]ボタンの設定に依ります。 LW9.2以下では常に対称モードの影響を受けます。


QuickSelect Surface/Part/Color 0.223 (x86/x64)(75/85/9x/10x/11x) (14015)
 現在選択している面と同じサーフェス/パート/カラーの面を(追加)選択する等。

QSelectSurf
 現在選択している面と同じサーフェスの面を(追加)選択します(9.2のSel Entire Surf相当)。

QSelectPart
 現在選択している面と同じパートの面を(追加)選択します(9.2のSel Entire Part相当)。

QSelectColor
 現在選択している面と同じスケッチカラーの面を(追加)選択します。


QSelectFace
 通常のポリゴンを(追加)選択します。

QSelectSubP
 通常のサブパッチを(追加)選択します。 Catmull-Clackは対象外。


SelIrregularPol
 同一頂点を複数回利用した不正なポリゴンがあれば選択します。

RandomDeSel
 実行時の選択モード(点/辺/面)に応じて、指定した選択数になるように選択状態をランダムに増減させます。


DeSelectsAll
 その時の選択モードを維持しつつ、頂点、面、エッジの選択全てを解除します。

DeSelectsCur
 現在の選択モードに応じて頂点、面、エッジいずれかの選択を全て解除します(LW9のDeselectAll相当)。

SelSurfByPol
 ポリゴンからサーフェスエディタ上のサーフェスを選択します(11.5のpickSurfの簡易版)。


Change or Init PivotPoint 0.216 (x86/x64)(75/85/9x)(10) (120119)
 頂点の選択状態に応じてPivot値を変更します。
 選択無しの場合はPivotを< 0,0,0 >に設定します。
 選択が1点の場合はその座標値をPivotに設定します。
 選択が2点の場合は2点で成される線分上の中点の座標値をPivotに設定します。
 選択が3点の場合は3点で成される三角の重心座標値をPivotに設定します。
 4点以上の選択をしていた場合はBoundingBoxの中心座標をPivotに設定します。 重心ではありません。
 FGレイヤ全てに単一値が適用されます(レイヤー毎に個別算出/適用はしません)。

 引数に「PANEL」を付けて実行すると、上記条件に応じた値の入ったパネルが開きます(EditUserCommandで引数を付けて登録するか、LScriptから呼び出して下さい)。
 標準のPivot ToolはPrimaryLayerにしか効かないので、一括して複数レイヤーに任意値のPivotを設定したい場合等に使うとよさげです。


Poly Point Order 0.116 (x86/x64)(75/85/9x)(10/11) (130824)
 (PolyPntOrder.pはPolyPointOrder, PolyPointOrderTool, Symmetry_PolyPntOrder, CheckSym_PolyPntOrderの4つのプラグインとして登録されます。

PolyPointOrder
 選択した四角ポリゴン各々を構成する頂点の順番をずらします。 頂点IDが変わるわけでは無いです。

 サブパッチの分割方向を確定させるのが主な目的です。
 サブパッチの内部的な三角分割方向は頂点順1と3で切り分けたものになります。
 (モデラ標準の三角分割で四角を分割する場合は基本的に2と4で切り分けられますが、非平面では不定、またレイアウトのポリゴン(サブパッチケージにあらず)に対する扱いは不明です)
 頂点の並びが変わる事で法線ベクトルが変わります。

 平滑な(平面)四角ポリゴンには殆ど影響しませんが、捻じれのある所(非平面)ではスムージングや変形具合に影響します。
 レイアウトでワイヤー表示にするか、モデラのウェイトシェイドやポリゴン表示の特性を見切ったり、実際にフリーズさせる事でのみ視認出来る部分なので注意。

 サブパッチ状態のまま適用すると挙動が怪しいのでポリゴン状態で使う事を推奨。
 一通り済ましたら念の為にDStormのRefinePolygonsで不正ポリが出来て無いか確認するのがよさげです(捻じれの激しいポリでは常に不正扱いされる可能性がありますが・・・)。

PolyPointOrderTool  PolyPointOrderをツールクラスにした物。
 ツール起動後に処理対象をクリックしていく事になります。
 ポリゴンをなぞるケージとその時点の分割方向を示す分割線が表示されます。
 分割線上の○を左クリックすると右回転で順番が1つずれます。
 右クリックで左回転で順番がずれます。 Ctrl+右クリックで初期状態に戻ります。
 numericパネルの[View]の[SubP]では1と3を結んだ分割線と第1頂点付近に「p1」を表示します。 [Face]では2と4を結んだ分割線と第2頂点付近に「p2」を表示します。
 各ビューポートタイプに対してガイド表示のON/OFFを指定出来ます。 また、ガイドのケージ表示をON/OFF指定出来ます。
(ツール使用中に選択解除やポリゴン削除等をした場合、LW9では不整合が起こらないように対処出来ていると思いますが、9以前では不可知な事なので対処しきれていません)

Symmetry_PolyPntOrder
 選択したポリゴンの1,3,5〜と2,4,6〜を対として、奇数番を元にして偶数番のポリゴンを構成する頂点順を変更し、左右対称性を得る為のものです。
 偶数番目のポリゴンにPolyPointOrderと同じ変更を加えます。

 形状がX=0での左右対称性を確保している事を前提としています。
 既に対称だった(変更対象にならなかった)ポリゴン、形状のズレから対として評価しなかったポリゴンへの選択を残して選択解除します。
 選択内容が対称かどうかを詳細にチェックしていないので注意。

CheckSym_PolyPntOrder
 選択した面の1,3,5〜と2,4,6〜を対として、奇数番と偶数番のポリゴンの頂点順を照合します。
 対称だったポリゴンの対を隠します。
 LW9.2/9.3ではバグ対策の為にUNDOバッファを消費します。


Clear PolygonTags 0.160 (x86/x64)(75/85/9x/10/11) (190529)
 (Clr_PolTags.pはClear_APSL,Clear_NORM,Clear_SketchCol,Copy_PTag,Sel_BoneWGHT,Set_NORM,Copy_VertCol,CpyVC_RGBMap,CpyVC_RGBAMap,FixMirrorEdgeWgt,Set_PTagBoneUp,Set_BoneWGHT の12個のプラグインとして登録されます)

Clear_APSL
 選択しているポリゴン(頂点)からAPSL型のVMAP&VMADを削除します。
 APSL型はLW9で新設された(ポリゴン毎)レンダーサブパッチ用の頂点マップ種です。

Clear_NORM
 選択しているポリゴン(頂点)から頂点ノーマルマップ(NORM型のVMAP&VMAD)を削除します。
 NORM型はLW9.5で新設されたサーフェススムージング用の頂点マップ種です。

Set_NORM
 選択しているポリゴンに頂点ノーマルマップ(NORM型のVMAD)を付与します。

Clear_SketchCol
 選択しているポリゴンからスケッチカラー(PTAG_COLR)を削除します。
 (LW9.2〜の)PolygonInfoやSketchColorで「カラー:None」を選択するのと同等です。

Copy_PTag
 最後に選択したポリゴンのSurface/Part/Colorを他の選択中のポリゴンに適用します。

Sel_BoneWGHT
 選択中のスケルゴン(ポリゴン)の中から最初に見つかったスケルゴンに割り当てられているウェイトマップを選択状態にします。

Copy_VertCol
 最後に選択した頂点/面の頂点カラー(vmap/vmad)を他の選択中の頂点/面にコピーします。

CpyVC_RGBMap, CpyVC_RGBAMap
 先立ってCopy_VertColでの処理対象のvmapを指定します。

FixMirrorEdgeWgt
 ミラーによって壊れたエッジウェイトを修復します。

Set_PTagBoneUp
 SkelegonのPTAG:BNUPに対してUpVector値を適用します。
Set_BoneWGHT
 Skelegon(PTAG:BONE)と同名のウェイトマップをスケルゴン(PTag.BNWT)に割り当てます。