問題タブ [maya-api]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 多数の頂点を反復するmaya python
Maya が頂点位置をある側から別の側にスワップするためのスクリプトを Python で作成しています。フリップをトポロジ ベースにしたいので、トポロジ シンメトリ選択ツールを使用して頂点の対応を見つけます。filterExpand と xform を使用してそれを行うことができました。問題は、ポリゴン数の多いメッシュでは非常に遅いことであり、代わりに openMaya を使用してこれを行う方法を考えていました。
maya.cmds をコマンドとしてインポート
ありがとうマウリツィオ
function - 2 つの Maya プラグイン間の通信
C++ で 2 つの Maya プラグインを開発しており、プラグイン #2 からプラグイン #1 の関数を呼び出し、関数とともにパラメータを送信したいと考えています。
呼び出し元のプラグインは MPxNode であり、呼び出されるプラグインは、いくつかのレンダリング VRayPlugins を作成する役割を持つ「一般的な」関数である必要があります。
適切な関数を宣言して呼び出すにはどうすればよいですか?
c++ - MPxLocatorNode 描画の最適化
MPxLocatorNode
C++ で Maya API を使用して作成しました。ノードにはメソッドがありません。メソッドcompute
で open gl を使用して描画されるさまざまなスタイルの形状があるだけですdraw
。
描画するスタイルの 1 つはクロスで、ロケーターとまったく同じです。そこで、ネイティブ ロケータと比較するためにいくつかのベンチマークを行ったところ、ノードのパフォーマンスがかなり遅いことに気付きました。Maya のロケータは約 4 倍高速でした!
1000 ノード
私のノード: 74 fps
Maya のロケータ: 300 fps
ノードのパフォーマンスを低下させている原因は何ですか? 私が考えることができる唯一のことは、メソッドでできるようにデータブロックからノードを取得するのとは異なり、メソッドでノードのMObjects
ビアを取得していることです。MPlug
draw
compute
私のcppファイルは以下です。速度低下のほとんどは draw メソッドにあります。
編集
コードの一部にコメントを付けて速度低下の原因を特定していましたが、gl draw メソッドのコメントを外すとすぐに、パフォーマンスが 300 fps から 80 fps に低下するように見えます。それとどうしたの??
qt - Maya のノード タイプに対応するアイコンを取得する
Maya 内の Qt ツールで Maya のノードにアウトライナが表示するのと同じアイコンを使用したいですか? タイプに応じて、Qt のノードのアイコンまたはアイコンのパスを見つける方法はありますか?
コードを使用してこれらのアイコンを取得する方法はありますか?
c++ - Maya API の複合配列アトリビュートの複製/削除
worldMatrix と円柱の可視性を入力として受け取るデフォーマ ノードを作成しています。円柱はグループに編成され、この構造がデフォーマに反映されます。私は 2D 配列を持っており、これは円柱を子としてグループごとに編成されており、各配列は複合属性であるため、グループ全体の可視性と個々の穴を制御できます。
これは属性の設定です:
これに円柱を追加するための Python スクリプトを作成しました。これにより、円柱が属するグループが特定され、新しいエントリが追加され、可視性と worldMatrix が接続されます。
この設定にはいくつか問題があります。まず、配列内のインスタンスを削除するために disconnectBehaviour を定義しているため、シリンダーの削除は期待どおりに機能します。ただし、グループを削除すると、手動でクリーンアップする必要がある階層の最上位に切断された属性が残ります。
第二に、削除は非常にうまく機能しますが、複製も使用できれば非常に便利です。したがって、誰かが円柱を複製した場合、配列エントリが作成され、必要な属性が接続されました。これは可能ですか?これまでデフォーマを使っている人は自然とそうしようとしていて、スクリプトを使わせていました。
c++11 - アニメーション キートラックを Maya にインポートする
C++ API を使用してプログラムで Maya に読み込みたい人間の二足歩行アニメーション ファイル フォーマットがあります。
アニメーション ファイルのフォーマットは、 Open Asset Importer のノードごとのアニメーション構造に似ています。
各ジョイントには、最大 60 個の 3D ベクトル キー (ジョイントの移動を記述するため) と 60 個のクォータニオン キー (ジョイントの回転を記述するため) があります。すべてのジョイントは、同じ数のキーを持つ (またはキーをまったく持たない) ことが保証されます。
アニメーションの長さ (秒単位) を指定または変更できます (たとえば、30 FPS アニメーションで 60 個のキーが 2 秒間にわたって発生するように設定できます)。
ジョイントの移動と回転はフレームごとにスケルトン ツリーに伝播し、アニメーションを生成します。
これがサンプルです。データ構造に関する追加の注釈は、ロギング機能によって追加されます。簡潔にするためにキーを切り捨てました。
C++ では、私が現在持っているデータ構造はこれに対応しています。
std::unordered_map<string, std::vector<Vector3>> TranslationKeyTrack
一連の平行移動ベクトルを対応するボーンにマップするために使用されます。
std::unordered_map<string, std::vector<Quaternion>> RotationKeyTrack
一連の回転クォータニオンを対応するボーンにマップするために使用されます。
追加メモ: 親ボーンに対して相対的に移動しないボーンがいくつかあります。これらのボーンにはキーがまったくありません (ただし、キーが 0 のエントリがあります)。回転のみ、または位置キーのみを持つボーンもあります。スケルトン データは別のファイルに保存されており、MFnIkJoint を使用して Maya に読み込むことができます。
アニメーション ファイルで指定されたボーンは、そのスケルトン データのボーンに対して 1:1 です。
このアニメーション データを Maya にインポートします。ただし、 C++ API を介してアニメーション データを受け入れる Maya の方法がわかりません。
特に、MFnAnimCurve 関数は、時間キーに関連付けられた単一の浮動小数点値のみを設定addKeyFrame
またはaddKey
受け入れますが、ベクトルとクォータニオンのリストがあります。MFnAnimCurve は「接線」も受け入れます。ドキュメントを読んだ後でも、持っているデータをこれらの接線に変換する方法がわかりません。
私の質問は、持っているデータを Maya が理解できるものに変換するにはどうすればよいですか?
例でよく理解できるので、いくつかのサンプル コードが役に立ちます。
c++ - Maya API を使用してメッシュの削除を元に戻すには?
C++ API を使用して Maya プラグインを作成しようとしています。このプラグインは、選択範囲内のメッシュを識別し (何かを計算し)、それらを削除してから、新しいメッシュをシーンに挿入します。
objExporterプラグインの例と同じ方法で、選択したメッシュを収集しています。を使用しMDagModifier
てメッシュ ノードを削除し、これらの変更を元に戻そうとしています。しかし、動作しundoIt
ていません...
これが私の簡略化されたコードです:
と
(私は C++ API に固執し、MEL/Python インターフェースを避けたいと思っています)。
deleteNode
アクションを適切に元に戻すにはどうすればよいですか?
python - Python で Maya にレンダー イメージ パスを設定する
Maya 2015 で特定の場所にイメージをレンダリングしたいと考えています。
そのために、python(pymelまたはcmds)で画像出力パスを設定したい。
上記のコードを使用すると、非常に近い結果が得られるプロジェクト ディレクトリを変更できます。
ただし、プロジェクトウィンドウの「画像」変数は画像に設定されています。
プロジェクト ウィンドウのイメージに「D:\my_renderpath」を追加するにはどうすればよいですか。