ichiyonnana / nntools_maya Goto Github PK
View Code? Open in Web Editor NEWmodeling utility and scripts for Maya
License: MIT License
modeling utility and scripts for Maya
License: MIT License
ラティスをデフォーム先が無い状態の単独オブジェクトとしてシーンに保持したい。SI のラティスオブジェクトみたいな感じ。
プリミティブ見たいな一般的なノードにカスタムアトリビュート追加してインポートエクスポートや複製が出来るようにしたい。
表になろうとして崩れるので一回表にして処理した後裏に戻す。
選択UVをシェル選択に変換、多数決で裏なら反転、選択UVのみ optimize/unfold 、また反転。
位置ずれないように 2 回の反転のピボットは同一に。
UV 選択以外だとオブジェクト全体が unfold される
とりあえず以下の2機能
・選択した複数シェルをその複数シェルが存在するバウンディングボックス内でレイアウト (スケール・回転は無し)
・選択シェルをプロジェクションしてサイズをもとのシェルのバウンディングボックスに収めるようにスケールする。複数選択時は現在のシェル分けごとにそれぞれプロジェクション処理
nnsimplify みたいな使い勝手で指定エッジ列をカテナリー曲線で整列する。
パラメーターは一つにしたい
法線・頂点カラー・UV等のコンポーネントの値のみをミラーする機能。
頂点オーダー変えずにカジュアルにミラーしたいシーンがよくある。
選択コンポーネントのみを対象とする
+/- 方向はユーザー指定
法線、頂点カラー、UV、XYZポジション(優先実装はローカル)
対向頂点特定は位置 or トポロジー (UV は優先度低)
トポロジーは隣接頂点数等で頂点をベクトル化してベクトルの類似度マッチ
基本は 100% マッチ、オプションでマッチ率下げる
類似度は正規化して内積取るだけで良い
取得はAPI、Set は出来れば cmds。 重ければ API。Undo は snapshot でいい
ボーダーエッジが選択されている場合は他の選択コンポーネントで所属シェルの多数決をして多い方のシェルのUVが選択されている物として処理する。
シンメトリモード有効なら X=0 の点を交点扱いしてカーブ切断する。
カスタムアトリビュートで直接追加して良い。
提出用カメラには間違って付けないように一工夫したい。あとシーン内一括削除も。
コードはあるので nnmisc かどこかへ
NNMirror にシーン内全削除 or 選択 Transform 配下削除するボタン付けても (duplicate/extract で出来がちなので)
エッジ選択時は頂点に変換する。
UV選択時は頂点フェースに変換する。
複数オブジェクトのコンポーネント選択時はオブジェクト毎に処理する。
現状ただの矩形化が RectiLinearize になってる。
凹 とか 凸 みたいな UV シェルを自動で直線化する。
他の issue 片付いたら一回整える
ヒストリー削除を独自のスクリプトに差し替える。 2022 以降ボーダーウェイトが壊れがち。余裕あれば新点のウェイトも自前で計算する。
スキンクラスターが無ければ通常通りの処理
スキンクラスターがある場合
Orig とトポロジーが同じなら通常通り処理
トポロジーが違う場合
ヒストリー削除前に一時ファイル (or オンメモリ) にウェイトエクスポート
ヒストリー削除
メッシュのボーダーとなっている頂点を調べる
xml 直接読んで nearest でウェイト上書きする
最初に同じインデックスの頂点調べる
位置が 1.0-e7 くらいならそのまま上書き
一致しなければ全頂点eachだけど極近い頂点見つけた時点で切り上げる
複数シェル選択して実行するとそれぞれのシェルがそれぞれの中心とテクセル密度を維持しながら再プロジェクションされる感じ。
選択フェースから選択範囲やシェープ作成する。
jsx 生成して実行中の Photoshop に実行させる。
ソースとなる複数頂点してい。エッジ選択で実行して同一ウェイトをコピーする
ソフト選択状態で頂点選択してスライダーやボタン操作したら現在の値とソフト選択の強度でブレンドして欲しい。
スライダーはスライダー開始時の値キャッシュして、動かす度に重複ブレンドしないようにして。
シンメトリ編集中に UV 選択した場合、選択 UV が p1, p2、 対向 UV が p3, p4 だった場合に p1 p3 等の組み合わせで getTexel しようとするのを直す。所属シェルやシェルの裏表で判断する。
Equalize パラメーターが n と n+1 の比率になってるけど最初と最後のエッジの比率にする
計算式は変えずに現在スライダーで取っている比率をエッジ数 n を元に log(n, ratio) みたいなので再計算する
メンバー取得が Set 経由なのでコンポーネントタグ使ってると AddMember とか動かない。
セット利用して同一オブジェクト内でのコピーしたい。結合済みスカートの表→裏とか。
単純なオブジェクトからオブジェクトも出来るようにする。
正規表現によるジョイント名読み替え出来るように。
UVまとめて選択してXYZの比率に合わせて直線化する。
UVの順序が前後しててもトポロジー解析して順番ソートする。
シーン開き直すと PyNode オブジェクトが失効して面倒くさい。
ダイアログでテキスト入力してフェーズ毎のバックアップ ("20240202_1500_UV展開前]hoge.ma" みたいなの) を作る。
書き出し先は scenes で良い
isolate 中にカーブ作ったら自動で isolate のメンバーに追加する
エッジ collapse 後の頂点位置を、閉じるエッジの左右のエッジの延長線の交点位置 (やその中間) にしたい。
collapse と頂点の移動は別処理にして頂点移動の処理流用してデベベルも作る
・ミラー境界に近い頂点座標の微細値を 0 にする
・完全に重なった頂点の事前マージ
・ハードエッジの保存・復帰
分割数変更時にSTU単独で変更したい。あるいは入力時に即時適応 (危ないので大きい値ははじく)
カーブ生成前に一旦等間隔折れ線を生成してそこからカーブ生成する。
現状だと終端のエッジが短い場合にカーブが暴れがち。
Maya 標準のレイヤーパネルが複数選択・複数操作に向かないのでもっとクリック数が少ないやつ欲しい。
頂点選択して import weight したら選択頂点にだけインポートして欲しい。
スライダーの左に数値エディットボックス付ける。直接入力でボタン押下と同じ振る舞い、スライダーにも反映。スポイト時はスライダーと共に値更新。
最低限 全 .py の import でエラーが出ないか。
discover 用に init.py は全部作成する
頂点選択して実行したら隣接エッジの成す角が均一になるように頂点移動させたい。
距離均等にするかはオプション、基本法線方向の直線上のどこかに再配置で良い。
チャネル個別に上書きするときに残りのチャンネルの既存の値を頂点単位で取得してるので色が平均化されてる。頂点フェース単位で取得する
カットモードはあるけど片側を自動削除する機能欲しい。
自動削除せず選択だけでも良いかも
J1 - J2 - J3 という階層があったとき、バインドポーズと比較して J2 だけが変形していたら基本的に J2 とその親の J1 間でのウェイト調整なのでインフルエンス指定せず [親を強くする] [子を強くする] の2操作で調整できるはず。
inViewMessage とかでウェイトがどんな数値になったのかは表示する。
選択エッジの 始点-終点 で作成したベクトルと生成カーブの始点-終点から作成したベクトルで類似度取って逆向きならカーブをリバースする。現状向きがバラバラで Equalize しづらい。
正規表現パターンでオブジェクト選択出来たい
SIWE が強制マージなのでマージ無しが欲しい。
あと単一メッシュに複数 skinCluster がある場合のマージ。
現状自動で断面は円にしてるけど縦横比指定したいことの方が多いのでデフォルトを Custom にしたい。
rowColumnLayout 追加
リストの追加
setPos, getPos がオブジェクト全体のみなので頂点選択で部分的に使えたい。
同一頂点オーダーにしか使えないのはそのままで良い。
Maya 側の選択シェルで開いている Photoshop でシェープ・塗りつぶしレイヤー・選択範囲等を作成する。
シェルからシェープレイヤー (マスクとか)
シェルからアイランド塗り分け (IDマップとか)
一時ファイルで jsx 生成して実行中の Photoshop に実行させる。
複数シェル選択して実行すると裏返しになっているシェルだけそのシェルが存在するタイル内の中心を基準に flipU/V
標準の Gather 微妙に重い。あと結果は一意なのでわざわざ UV エディタ開きたくない。
コア機能作成済みなので nnuvtk に統合する。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.