Poly to Poly
Main/History
GraphiX
LScript
Plugin
Knowledge
Blog

 [ 仕様面 八苦 9.2対策 9.3対策 9.3.1対策 ]

◇Lightwave9.3.1のバグや問題点と対応策を思いつくままだらだらとメモしとく(08/04/05更新)。
 W2K、ATI RADEON 800GT/Catalyst6.2,GF7600GT/94.24での話。
 DStormのβフォーラムにも書いてるから気になる人は見てね;-)
 そしてそれは9.3.1段階での問題点がそのまま9.5でも残ってると言う事・・・(-_-;

 Catmull-Clarkが色々問題抱えてるのは相変わらず。 何も改善されてないと言っても過言では無い状態。

○モデラ

●SmoothShift
 四角ポリゴンの法線の状態によっては正常に機能しない。
 LW9.3から法線計算が変わったみたいで、LW9.3以前で問題の出ないデータでもLW9.3/9.3.1では破綻する。
 基本的にLW9.3での法線表示がされない状態のポリゴンで問題が出る。
 三角や「く」の字状態になってる四角ポリゴンがあるとNGって感じ。 それがトリガーになって周囲にも影響するのが味噌。
 対策としては法線表示が出るようにポリゴンを構成する頂点順をLW9.3の計算に都合の良いように組み替えるか、三角分割してからSmoothShiftする。かな。

●頂点選択状態とRevertCurrentObject(再読込み)
 オブジェクトにある程度の頂点数(データ量?)があり、幾ばくかの頂点選択がある状態で実行すると落ちる。
 遡ったらLW8.5でも落ちた。
 LW9.2の時の問題と同じ根を持つかも。LW9.2の時は頂点追加の影響で顕著化してただけとか。
 球を三角分割20とかで作り(約4000頂点)保存した物に数点の移動と100〜1000程度の点選択した状態でRevert実行すると落ちる。
 600頂点程度のモデルでも数点の選択をした状態でRevertを数回すると落ちる。
 オブジェクトの頂点数が多い程落ちる確率が高い?
 対策用のLS LSだけじゃ選択モードを維持して各モードの選択を解除出来ないので拙作の選択解除プラグイン(DeSelectsAll)が必要(;・з・)
 InvertHide対策とRevert対策を1ファイルに纏めたプラグイン版(DeSelectsAll不要)。

●InsertLayer/DeleteLayer( LSC )
 両方同梱されるように戻った(9.3では欠落してただけ?)。
 AutoScanPluginがONの場合、DStormのInsertLayer.pによる登録を上書きする可能性があるので注意が必要。
 9.2βの頃迄は問題を抱えてたLSCなので注意が必要。

●SetCC/Face/Subpatch
 ModelerTools.pとModeling_Pack.pの両方に入ってる。どちらが登録されるかは環境依存(自動/手動登録etc)。
 どちらが正式(メンテ対象)なのかは不明だけど、Toolsの方がServerTagが多く、また初期設定もToolsのSet〜なので、本命はToolsの方かも。
 何か問題が出たら差し替えて(プラグイン登録し直して)確認してみるのがよさげ。

●Catmull-Clarkとモーフ
 Catmull-ClarkでFreeze Curve&Patchesするとモーフが消える。
 解決策無し。

●BGConform
 モデルファイルを跨いで実行すると落ちる。
 同一ファイル内であれば大丈夫。(ファイルを跨いでても8.5では問題なく処理され、9.0では落ちないが処理は行われない。)
 モデルA(1Layer)を作成&保存。 そのままモデルB(1Layer)として別名保存。 Aを読み込み。
 A,BをFG/BGに配してBGConformを実行すると無言で即落ち。
 モデルA,Bを読み込み。 同様に配して実行するとWindowsのアプリケーションエラーダイアログを出して落ち。
 モデルA,Bを新規に作成(未保存)。 同様に配して実行するとWindowsのアプリケーションエラーダイアログを出して落ち。
 対応策はファイルを跨ぐな。 使うな?(゜д゜)
 運用スタイルにもよるけど、レイヤ内データの有無変化に対応出来てないHUBによるアイテム無限増殖問題と衝突するから、数珠繋ぎにコレへの対策も必要。

●ユーザコマンド
 相変わらずLW9から壊れたまま放置。
 モデラのSaveCommandListで取れるリストの各項目のパラメータ部は文字化けしてる。レイアウトは問題無し。
 対応策無し。 無い物と思うしかなさげ。
 LScriptのCommandInputで使えるのはリスト内の上からclose_all(aboutの上)迄(多分メニューのExecuteCommandでも同じ)。
 メニューのUserCommandは外部プラグイン+meshedit迄しか出ない。

●表示オプション/レガシーGL表示のON/OFF
 設定を記録しないので毎回パネルを開いて設定し直さないといけない。
 対応策無し。

●新GL表示のMultiTexture。
 サブパッチ状態においてSubD種&UV補完状態を問わずStreamとVBOでテクスチャ表示が変わる。
 GLSL、LegacyGLでは問題無し。左記の表示はstream時と合致する。
 田型ポリをサブパッチ化した時の四隅の陰影から見ると、形状の実分割状態とUV計算上用いる分割状態が合致してない感じ?
 nVidia(GF7600/94.92)では問題なし。 但し上記四隅の描画が黒で潰れるので論外。
(ATIでは未確認、nVidiaの問題点は9.5で解消。)

●モーフ表示(新GL表示)
 同一モーフを持つレイヤ/ファイルが複数あり、いずれかのレイヤを表示中にモーフ選択状態(右下やVMapWindow)を変更した場合、非表示だったレイヤを表示対象にした際に不正な表示になる。
 対応策は、まともな表示になるまでモーフ選択のOn/Offを繰り返す。 VBOで駄目ならStreamに切り替えてみる。

●UV FreeMove
 不連続UVの値が 値n<=0.0 や 値n=>1.0 の個所等に対して、ポリゴン選択とFreeMove+Dragを使い頂点に触ると、VMAD側頂点がVMAP側頂点座標に強制的にスナップされる。
 発生条件に多少の御幣あり。 シリンダ/スフィアでUV作成した時などによく問題になる。
 △分割の球を作り、円柱でUV作成する。上の方の△の羅列をポリゴン選択し、UVの-X側にはみ出てる三角の左端頂点をクリックすると+X(右側)にすっ飛んでいく。
 対応策は「そうするな」って感じか。 やっちゃっても取り返しはつくから我慢してね、と。

 ポリゴン選択で選択した状態でFreeMove ONで編集すると、選択範囲と非選択の境界部が不連続UV化される。
 これ自体にはデータの肥大化以外の害は無いけどね。
 FreeMove+ポリ選択は禁じ手。 ポイント選択で凌げ。

●Transform UV(UV値変換)
 UVマップが選択されていないとオブジェクト形状自体が変形される。
 対応策はUVマップを選択し忘れないで下さい、ってとこか。
 UVマップが空であっても選択さえされてれば形状に干渉はしない模様。

●UV補間とUVビューの描画
 UV補間モードがLinear以外の時、UVビュー上でクリック(Mouse Down)を受けている間は全ビューでLinear補間として表示される。
 ドラッグ中は曲線補間の描画(UV線画、プレビュ)を見る事が出来ない。 また、表示が逐次切り替わる為に操作しづらい上、クリック頻度によっては脈動してるみたい見えて気持ち悪い。
 これにより補間モードを変更している場合は実質的に役に立たない状態。
 対応策無し。

●内部動作
 editBegin(,OPSEL_D/U);〜done(,EDERR_NONE,n);内で何もしなくてもUndoを消費するようになった?
 選択頂点数の取得の為だけにeditBeginするような場合、出来るだけ明示的にUSERABORTさせるのがよさげ。
 で、これのせいで事前に状況走査してからパネルを出すタイプの内蔵機能でキャンセルをしてもundoバッファが消費されたり、LScriptに影響したりするわけと。

●LScript2.12
 hypot()は死んだまま。
 weldaverage()は死んだまま。

●内部コマンド selhide
 selhideで局所的にポリゴンを隠す処理をするとポリゴンは隠れるが選択マーカーが出たままになる(対称モードでの選択問題と同様)。
 ポリゴン選択では非表示ポリゴンを対象に出来ないので選択状態を解く事は出来ない。
 move等の別ツールでビューポート上をクリックすると不正なマーカーを消せる(表示の適正化のみを目的とする場合は何も無い所をクリックしないと駄目)。
 この状態はLScriptやプラグイン/コマンドに選択有りとして渡される模様。
 LScriptでは選択として認識されるが(不可視属性ゆえに?)存在しないとしてエラーになるみたい( selhide(SELECTED); selpolygon(CLEAR)の二行CodeでNG )。
 選択状態のみを見てる機能は隠れているポリゴンに対して通常の処理を行うっぽい(Deleteとかetc)
 モデラ自体のコマンドHide Selectedであれば上記現象は出ない。 LW9/2.8でも問題ない。
 LScriptのselhide()、CommandInput(〜selhide〜)、コマンドシーケンスプラグイン(DLL)でのexecute(〜SEL_HIDE〜)全てでNG。
 LScriptの場合、問題が発症している状態でmove()等を捨て実行(移動量0等)する事で回復出来るが、Undoバッファを消費する。
 バッファを消費させない為にselhide→move→undo→終了とすると、不正な状態に戻してから終了するので意味がない。バッファ消費は妥協するしかなさげ。
 SDKのSEL_系では解除不可。 MeshEditOpで一つ一つフラグを変更すれば恐らく解除可能(標準のDeselect Allのエッジへの処理では可能だった)。

●コマンド Hide Selected(9.2から)
 頂点選択状態を破棄する。エッジ選択状態は保持される。

●対称モードでの選択
 隠しているポリゴンも選択される。
 左右対称の箱作って片方を隠して、残った片方を選択すると、隠してる方も選択される、と。
 LScriptのselhide()と似た状態が出来る。 但しこちらは選択状態を変更しなければ選択解除用機能で解除は可能。
 それ以外ではselhide()と同じ。

●Invert Hidden(反転)(9.2から)
 Invert Hiddenで隠れる事になる点、ポリ、エッジに付いていた選択マーカーが残る。
 selhide、対象モードでの非表示ポリゴン選択問題に類する問題。
 対策用のLS LSだけじゃ選択モードを維持して各モードの選択を解除出来ないので拙作の選択解除プラグイン(DeSelectsAll)が必要(;・з・)
 InvertHide対策とRevert対策を1ファイルに纏めたプラグイン版(DeSelectsAll不要)。

●LWSを直接参照する機能/プラグイン
 Lightwave 9.2 ネイティブのLWS4を扱えない物。 LWS3としてエクスポートした物は可能。
 VertexPaint(vtxPaint.p)のVertexLoader(3.5.6)。
 MMRenamer.p。


○レイアウト

●TargetItem時のRotate
 アイテムを任意目標にターゲットした後、アイテムを移動させた直後はRotate値が適切に取得されず正しいキーが打てない。
 ターゲット→直後のRotate値更新(*1)→移動(RefreshするまでRotate値は*1のまま)→強制Refresh(*2)
 Rotateを正しく取得出来るのは(*1、*2)の時。
 対応策はショートカットキーにRefreshNow()を割り当てて連打(w。
 PiviotRotateに対応してないのもそのまま。 対応する気があるのかは謎。
(9.5で解消。)

●RenderGlobalのMultiplier(解像度の倍数)指定
 Multiplierを変更してもパネル上のWidth/Height値に反映されない。
 resolution(解像度)プルダウンに触る事で再描画される。
 それ以外ではレンダリングの事前処理として算出されるまで反映されない、って感じか。
 使わないのが吉か。

●GL表示
 頂点カラーが効かない。 頂点カラーを使う人には致命的。
 Transparencyにイメージや基本値以外の動的な値を使ってる場合は基本値に0以上(0.0001等)が必要(ATI/nVidia)
 Specular+Transparencyのサーフェスに他サーフェスのパラメータが干渉する(ATI)。

 線の描画が総じておかしくなった。 としか言い様が無い位に駄目駄目になった(ATI 800GT/cata6.2)。
 GLSL/Multi、Strem/VBOの設定変更は「異常の程度」が多少変わる位。
 プレビュー作成にも影響を及ぼす。

●グラフエディター
 Track Item Selections(トラックアイテム選択)は一部のSelect系コマンドしか捕捉しない。
 マシにはなったけど半端。

●カメラビュー時の常時MotionBlur
 カメラビュー使用時にビュー枠のプルダウンからMotionBlurの常時プレビューが選択出来る。
 但し、常にRefreshを掛けつづけるので、その間はAutoKey OFFによる未確定型(要キー打ち)のモーション編集が出来ない。
 移動/回転操作→Refreshが掛かってキャンセルの無限ループとなる。
 対応策はAutoKey ONで使え。

●MotionBlurプレビュー
 静的なBlurプレビューは第一ビューポートに対して効かない。
 また、第一ビューポートは常時BlurプレビューがONだと描画更新自体がされない。
 対応策は別のビューポートを使え。  但し、プレビュー作成は第一ビューポートで行われるので、Blur付きプレビュー作成は出来ないと言う事になる。

●プレビュー作成
 1フレーム目が適切に処理されずゴミデータになる。
 バッファをOpenGLのバックサーフェスにしている場合、1フレーム目でジオメトリが描画されない(サブパッチケージは表示される)。
 フロントの場合、表示されていた物(現在時の状態)が1フレーム目としてキャプチャされる。
 別項目をDirectDrawにする事でバッファにDirectDrawを指定する事も出来るが論外な結果になった(GPUやOS、ドライバに依存する可能性はある)。
 対応策はバッファをフロントにし、プレビュー作成を開始する際に現在時をその先頭フレームにしておく事で擬似的に正常な状態を得る。
 左右にゴミが残ったりするけどね。
 Solid以上での表示時、GLフロントの2フレーム目の背景グリッドの色が不正になるようになった。
 オブジェクトのサーフェス色に左右されるのでGLでの線描画色の指定が適切にされてないっぽい。
 GLSL/Multi、Strem/VBO、視点(カメラ、パース等)は問わず常に異常になる。
 バック問題への対応策を潰された感じ。 対策は「我慢しろ」って事か

●アドバンスドカメラ
 アドバンスドカメラで標準のセルエッジ等が出ないのは仕様。


○スクリーマネット


○その他