もきもき3D

アクセスカウンタ

zoom RSS MeshEditOpの追加関数メモ(vmap系)

<<   作成日時 : 2008/12/07 03:55   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

○vMapSelect()
 pointVSet()相当品。
 但し、存在しないvmapを指定した場合、予約的にVMapIDを割当てる。
 が、頂点にvmap値を適用する迄そのvmapは存在しないと思われる(pointVSetではNULLが返る)。
 vMapSelect("hoe")→pointVSet("hoe")の様に連投した場合、vMapSelect()はVMapIDを返すがpointVSet()は"hoe"が無い物としてNULLを返す。
 通常、vmap作成後に頂点から値を削除したvmapはモデラ上のリストに残るが、vMapSelect()しただけのvmapは痕跡が残らない。
 vMapSelect()を複数回、違うvmap名で実行した後に下記vMapExists()で存在確認をすると全て真となった。
 どの機能に対して予約が成立するか(SurfFunc/TextureFuncが予約VMapを使えるか)等は未確認。
 また予約したうちの一部だけを実際に頂点に割当てた場合にどうなるかも未確認。
 vmap名文字列にNULLを充てると不正終了する。

○vMapExists()
 vMapSelect()で予約されているvmapを在る物として応える(真を返す)。

○vMapGetDimension()
 vMapSelect()、pointVSetで(内部的に)選択されているvmapが無いと不正終了する。
 ドキュメント上では0が返る事になっているが、次元数0のvmapは存在する。
 vmap選択が無いと落ちるってのは不正な手続きだから当然という見方も出来るわけで、非選択時に0が返るというのは筆記者が何か勘違いしてる可能性大。
 でも、そもそも次元数を取るような事自体あるのか・・・? 未知のvmapタイプを勝手に扱う為??
 そうとしてもLWIDの下調べ等を先にするだろうから、その段階で次元数も判ってるだろうに・・・。
 遠回りだけどObjectFunc->vmapDim()でもよくね?

○vMapSet
 pntVMap()とpntVPMap()相当品。
 vmap選択とpnt/pol IDだけで使えるから記述量が減らせるのが利点か。 後、速度?
 vMapSelect()による書き込み対象マップの指定が必須。 pointVSet()での指定は効かない(不正落ちする)。
 vMapSelect()は書き込み専用、pointVSet()は読み込み専用といった所か(・з・)
 
○vMapSetIdeal
 頂点にvmapが充てられていない場合は普通にVMAPになる。
 vmapが既に充てられており、与える値が既存の値と違う場合、VMADになる。
 与える値と既存の値が同じ場合、既存VMADは破棄されVMAPに統一される。
 こんな感じか?
 実動作未確認。

○vMapRename
 リネーム。
 実動作未確認。

○vMapRemove
 pntVMap()でNULLを代入するのに類似。
 頂点個別ではなく、選択中vmapで一括処理するので、そういうケースで記述量の低減を出来るのが利点?
 pntVMap(〜,map,〜)のように関数がmapを掴む事が無い、って感じ?(故に↓のmap選択解除が成せる)

 MeshEditBegin()
 (scanFuncでpntID取得)
 vMapSelect()(新規作成)
 vMapSet()
(edit->done()&再MeshEditBegin())
 vMapRemove()
 edit->done
 とすると落ちる。間の(done&再edit)で一度確定させた場合でも落ちる。
 vMapSelectするのが「プラグイン実行開始時に存在するvmap」だったなら問題無い。
 pntVMap()でのケース(http://fault0d.at.webry.info/200712/article_10.html)と同様に出来ない事なのか('A`)
 捨てマップを作成&削除で無選択状態を作れないか期待したのに('A`)
 何時になったらモーフマップ選択解除をしての頂点移動が出来るようになるのやら(・з・)


 MeshEdit(1st)
 scanFunc
 pntVMap(vmapを新設する)
 edit-done(ERR_NONE)

 MeshEdit(2nd)
 pointVSet(1stで作ったvmapを選択)
 vMapRemove
 edit->done(ERR_NONE)

 MeshEdit(3rd)
 頂点類の任意の編集
 edit->done(ERR_NONE)

 この流れであれば一応モーフ選択を解除しての頂点編集が出来る。
 (2nd)内のRemoveの後に続けてpntMove等を行っても反映されない。
 CmdSequenceのUndoGroup〜()を使ってUNDOバッファを浪費しないようにするのを推奨ですな('A`)

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
MeshEditOpの追加関数メモ(vmap系) もきもき3D/BIGLOBEウェブリブログ
文字サイズ:       閉じる