{{toc}}
カスタム トランスフォームで jointOrient の動作を複製するために、2 つのクラスが Maya API に追加されました。
MPxTransformPreRotation を使用すると、ユーザ定義のトランスフォームで事前回転を行うことができ、MPxTransformationMatrixPreRotation を使用すると、ユーザ定義の変換行列で事前回転を行うことができます。
これらの 2 つのクラスを使用しているコードは、Maya PR132 で MPxTransformationMatrix::preRotation() と MPxTransform::getPreRotation() を使用するように記述し直す必要があります。
Qt のダウンロード先が https://github.com/autodesk-forks/qt5/releases/tag/Maya2022.2 に変更されました
PySide のダウンロード先が https://github.com/autodesk-forks/pyside-set-up/releases/tag/Maya2022.2 に変更されました
MGeometry::DrawMode に kSelectionHighlighting が追加されました。
MRenderItem::setDrawMode() に kSelectionHighlighting を渡した場合、選択ハイライトが有効になっている場合にのみレンダー項目が描画されます。
この新しい enum を使用するために、devkit サンプルの gpuCache が更新されました。
MSelectionInfo に snapToActive() メソッドが追加されました。
bool MHWRender::MSelectionInfo::snapToActive (MStatus* ReturnStatus = nullptr) const
snapToActive() は、アクティブなオブジェクトをスナップする必要がある場合は true を返し、それ以外の場合は false を返します。
MUint64 MRenderItem::InternalObjectId() const は、レンダー項目の一意の識別子を返します。2 つの MRenderItem が同じ内部レンダー項目を保持する場合、これらには同一の InternalObjectIds が存在します。
Maya Python API 2.0 の maya.api.OpenMaya.MFnMesh() を空のメッシュで初期化した場合、エラーを返すようになりました。この変更により、maya.OpenMesh.MFnMesh() Maya Python API 1.0 での空のメッシュの処理方法と一致するようになりました。
MFnReference に新しいメソッド isValidReference() が追加されました。
bool isValidReference(MStatus* ReturnStatus = NULL) const
参照が有効なファイル参照である場合、このメソッドは true を返します。このメソッドは、例外がトリガされるのを回避するために、MFnReferemce::isLoaded() などの他のメソッドに渡す前にファイル参照を検証する場合に使用されます。
MFnDependencyNode に新しいメソッド uniqueName() が追加されました。
MString uniqueName(MStatus* ReturnStatus = NULL) const
パラメータとして dagPath を持つ新しいオーバーロードされた getReferenceNodes() が MFileIO に追加されました。
MStatus MFileIO::getReferenceNodes(const MString& fileName, MStringArray& nodes, bool dagPath)
dagPath を true に設定すると、返される DAG オブジェクトの名前に名前の一意性を確保するために必要なパスが含まれるようになります。false に設定すると、DAG オブジェクトの名前はパスなしで返されます。
dagPath は既定で false になります。getReferenceNodes(const MString& fileName, MStringArray& nodes) はパスを含まない DAG オブジェクトの名前を返します。
ビューポート 2.0 の選択に使用する精度を指定する MSelectionContext::SelectionLevel 列挙に 3 つの新しい選択レベルが追加されました。
MSelectionContext::setSelectionLevel() で kComponent、kObject、kFace、kEdge、kVertex の 5 つの選択レベルのいずれかを選択できるようになりました。
同様に、MSelectionContext::selectionLevel() で kComponent、kObject、kFace、kEdge、kVertex の 5 つの選択レベルのいずれかを返すことができるようになりました。
Maya 2022 およびその更新では、MIntersection::selectionLevel() は引き続き kObject または kComponent を返します。ただし、Maya PR132 では、MIntersection::selectionLevel() は kComponent を返さなくなりました。代わりに、MIntersection::selectionLevel() は 3 つの新しいレベルの中の 1 つを返します。
Maya PR132 を使用するときに、検索された選択内容の選択レベルが kComponent レベルであるかテストするプラグインがある場合、3 つの新しいレベルがテスト対象になるようにプラグインを更新する必要があります。
MHWRender::MRenderItem に新しい enum と 2 つの新しいメソッドが追加され、ビューポートの既定のマテリアル設定に基づいて MRenderItem をフィルタできるようになりました。
enum DefaultMaterialFiltering は、既定のマテリアル モードがアクティブな場合の描画の処理方法を指定します。
void setDefaultMaterialHandling(MRenderItem::DefaultMaterialFiltering state) は、既定のマテリアル モードがアクティブな場合に、このオブジェクトを描画するかどうかを決定します。
MRenderItem::DefaultMaterialFiltering getDefaultMaterialHandling() const は、既定のマテリアル モードがアクティブな場合に、このレンダー項目を描画するかどうかを返します。
MFn.kAttribute2Long と MFn.kAttribute3Long の Maya Python API 2.0 アトリビュートは廃止されました。代わりに MFn.kAttribute2Int および MFn.kAttribute3Int を使用してください。
pyside2-uic と pyside2-rcc が Maya に含まれるようになりました。
ユーザは pyside2-uic を使用して、.ui ファイルから Python コードを生成できるようになりました。
Maya の Qt ディストリビューションに QML が含まれるようになりました
Maya Linux の最小バージョンが CentOS 7.6 に更新されました。
現在、devkit には gcc 9.3.1 と Visual Studio 2019.7 が必要です。
必要な Linux ライブラリが更新されました。
必要な Linux ライブラリの完全なリストについては、「Maya インストールに必要な追加の Linux パッケージ」を参照してください。
Linux 用と Windows 用の Maya 2022 で、Python 2 と Python 3 が両方ともサポートされるようになりました。ただし、Maya の将来のバージョンでは、Python 3 のみがサポートされる予定です。
macOS 用の Maya 2022 では、Python 3 のみがサポートされます。
注: Linux 用と Windows 用の Maya 2022 で、Python 2 と Python 3 が両方ともサポートされるようになりました。ただし、Maya の将来のバージョンでは、Python 3 のみがサポートされる予定です。
macOS 用の Maya 2022 では、Python 3 のみがサポートされます。
Windows および Linux の Maya が、既定で Python 3 モードで起動するようになりました。ただし、必要に応じて、Python 2 モードで起動することもできます。
Maya を Python 2 モードで起動するには、コマンド ラインで -pythonver 2 オプションを指定して Maya を起動します。たとえば、Windows で Maya を Python 2 モードで起動するには、コマンド ウィンドウから maya.exe -pythonver 2 を実行します。
また、環境変数 MAYA_PYTHON_VERSION を使用して Python モードを設定することもできます。
Maya の起動コマンドで指定した Python モードによって、MAYA_PYTHON_VERSION で指定したモードがオーバーライドされます。
Windows および Linux のコマンド ライン レンダラに pythonver コマンド ライン オプションが追加されました。これにより、ユーザはコマンド ライン レンダラを Python 2 モードと Python 3 モードのいずれで実行するかを選択できます。
Python 2 を使用するには、Render.exe -pythonver 2 (Windows)または ./Render -pythonver 2 を使用します。
Python 3 を使用するには、Render.exe -pythonver 3 (Windows)または ./Render -pythonver 3 を使用します。
mayapy で、pip と一緒に Python 3 モジュールをインストールできるようになりました。mayapy で pip を使用するには、次のコマンドを使用します。
Linux | ./mayapy -m pip <command> |
macOS | ./mayapy -m pip <command> |
Windows | mayapy -m pip <command> |
詳細については、「mayapy と pip を使用して Python パッケージを管理する」を参照してください。
Maya で使用される Qt および PySide のバージョンがバージョン 5.15.2 に更新されました。古いバージョンの Qt を使用するコードは、再コンパイルする必要があります。
Maya にパッケージ化された Alembic および OpenEXR ライブラリが更新されました。Alembic にマイナーなセキュリティ更新が行われ、OpenEXR がバージョン 2.4.1 に更新されました。
これらのライブラリを利用するプラグインは再コンパイルする必要があります。
これ以降、Qt Creator という補助ツール全体が Maya と一緒に配布されることはなくなります。
Qt Creator ツールは、Qt の Web サイトからダウンロードできます。
PySide 5.14 以降、pysideuic モジュールは QtC によって削除されています。
.ui ファイルから Python コードを生成するには、
uic -g python <ui_file> -o <output_python_file>
を使用する必要があります。
Maya スクリプト エディタで Unicode 文字が完全にサポートされるようになりました。PEP-263 で規定されている UTF-8 エンコーディングを使用して Python スクリプトが保存されるようになったため、ファイルを開き直しても、ファイルの内容が破損することはなくなりました。
UTF-8 をサポートしていない旧バージョンの Maya のスクリプト エディタで国際文字を含むスクリプトを読み込む必要がある場合は、Maya プリファレンス(Preferences)メニューの新しいオプションを選択し、代わりにシステム エンコーディングを使用してファイルを保存できるようになりました。プリファレンス > 設定 > ファイル/プロジェクト(Preferences -> Settings -> Files/Projects)に移動し、スクリプト エディタ(Script Editor)が表示されるまで下にスクロールし、ドロップダウン メニューからシステム エンコーディング(system encoding)を選択します。
スクリプト エディタに正しく読み込まれるようになり、必要に応じて、使用するエンコーディングを示すマジック コメントを挿入できるようになりました。
2 つの新しい環境変数 MAYA_BATCH_STDOUT_LOGGING_LEVEL と MAYA_BATCH_STDERR_LOGGING_LEVEL が追加され、stderr および stdout への出力内容を、スクリプト、コマンド、API 呼び出しでコントロールできるようになりました。
どちらの変数も、有効値は all、info、result、warning、error、および none です。
MAYA_BATCH_STDOUT_LOGGING_LEVEL の既定値は「none」、MAYA_BATCH_STDERR_LOGGING_LEVEL の既定値は「all」です。
「出力ストリーム変数」を参照してください。
Maya をバッチ モードで起動すると、既定で解析が実行されます。解析を実行しないようにするには、Maya を起動する前に MAYA_DISABLE_ADP を 1 に設定します。
「一般的な変数」を参照してください。
Autodesk App Store 形式でプラグインを配布する場合に使用される PackageContents.xml ファイルに、AutoLoadOnce という新しいオプションが追加されました。このオプションを True に設定すると、Maya がインストールされた後の初回起動時に、プラグインが自動的にロードされます。ただし、プラグイン マネージャでプラグインの自動ロード オプションがオフになっている場合、以降の起動時には自動的にロードされません。
<ComponentEntry ModuleName="./Contents/plug-ins/myNode.py" AutoLoadOnce="True" />
詳細については、Autodesk App Store を使用したアプリケーションの配布に関するセクションを参照してください。
MSharedPtr<> が Maya に追加されました。
MSharedPtr<> オブジェクトは、オブジェクトの所有権を明確するために Maya API で使用されます。これらのオブジェクトは、MSharedPtr<> を使用する Maya API で使用する必要があります。MSharedPtr<> を使用するときに、他のオブジェクト所有権スキームを使用することはできません。
他のスマート ポインタと同様に、後で再利用する可能性のあるすべてのオブジェクトに対して MSharedPtr<> を保持します。Maya では、オブジェクトが破棄されて割り当て解除されるのを防ぐために、後で再使用される可能性のあるすべてのオブジェクトに対して独自の MSharedPtr<> が保持されます。
MayaQclocaleDoubleValidator が maya.internal.common.qt.doubleValidator に追加され、小数点の値にピリオドでなくカンマを使用するロケールに対応できるようになりました。
PySide を使用してユーザ インタフェースを開発する場合は、QDoubleValidator の代わりにこの検証機能を使用する必要があります。
OpenMayaAnim モジュールに MFalloffContext が追加されました。
MFloatVectorArray にアクセスするための MFnFloatVectorArrayData が追加されました。これは、GPU デフォーマのアップグレードの一部です。
MRenderItem 固有の評価を実行する MPxViewportComputeItem が追加されました。MPxViewportComputeItem と MRenderItem を関連付ける MRenderItem::addViewportComputeItem() および MRenderItem::viewportComputeItem() が追加されました。
Python API 1.0 と 2.0 の両方に新しいイテレータ構文が追加されました。
既存の構文は、オブジェクトに関して next を呼び出します(iterator.next())。
新しく追加された構文は、iterator をパラメータとして指定して next を呼び出します(next(iterator))。
既存の構文は Maya Python API で廃止されておらず、既存の構文を使用するプラグインやアプリケーションを、新しい構文を使用するように更新する必要はありません。
既存の構文を使用したサンプルは、新しい構文を使用するように更新されています。
空のセレクション リストを使用して MGlobal::setActiveSelectionList() を呼び出した場合に、ListAdjustment パラメータ値に関係なく、アクティブなセレクション リストがクリアされることはなくなりました。
現在、MGlobal::setActiveSelectionList() は予期したとおりに動作します。空のセレクション リストを指定して呼び出した場合、ListAdjustment が kReplaceList に設定されていればリストを削除し、それ以外の場合は何も行いません。
MCacheSchema クラスが次のように変更されました。
reset() は廃止されました。これを使用するすべてのコードから削除する必要があります。
attributes() は MPlug ではなく MObject の範囲になりました。この変更に合わせて、このメソッドを使用するすべてのコードを修正する必要があります。
たとえば、元のコードが次のように使用されているとします。
for (MPlug plug : schema.attributes()) { //... }
この場合は、コードを次のように変更する必要があります。
for (MObject attribute : schema.attributes()) { //... }
新しいコンストラクタが 2 つ追加されました。
componentTagExpression で指定されたジオメトリのサブセット内で反復する場合は、新しい空でないコンストラクタが使用されます。
また、
MItGeometry (MDataHandle &dataHandle, unsigned int groupId, bool readOnly, MStatus *ReturnStatus)
の動作が変更されました。このコンストラクタに値が 0 の groupID が渡された場合、すべての頂点ではなく、ゼロの頂点が返されるようになりました。すべての頂点を返すには、このコンストラクタに値が -1 の groupID を渡します。
MRenderItem に 6 つのメソッドが追加されました。
プラグインによって明示的に作成された RenderItem のプリミティブ タイプを設定するメソッドが 1 つ追加されました。
オブジェクトに表示フィルタ用のマークを付けるための新しいメソッドが 2 つ追加されました。
setObjectTypeExclusionFlag() はオブジェクト タイプに基づいて表示フィルタ用のビット フラグを設定します。objectTypeExclusionFlag() はビット フラグを照会します。
新しい MSharedPtr を使用するメソッドが 3 つ追加されました。
次の 3 つのメソッドが廃止されました。
注: コード内の setShaderFromNode() のすべてのインスタンスを setShaderFromNode2() に置き換える必要があります。
OpenMayaAnim モジュールの MPxGeometry フィルタに componentTagExpression アトリビュートが追加されました。
次の新しいメソッドもクラスに追加されました。
MFnGeometryData::SubsetState getGeometryIterator (MItGeometry &iter, MDataBlock &block, MDataHandle &dataHandle, unsigned int multiIndex, bool readOnly=true, MStatus *ReturnStatus=nullptr) const
既定のビューポート 2.0 の選択をオーバーライドする次のインタフェースが MRenderOverride に追加されました。
virtual bool MRenderOverride::select(const MFrameContext& frameContext, const MSelectionInfo& selectInfo, bool useDepth, MSelectionList& selectionList, MPointArray& worldSpaceHitPts)
次のメソッドが MSelectionInfo に追加されました。
pointSnapping() は、スナップ ポイントを検索するためのビューポート 2.0 の選択が開始されているかどうかを判別し、cursorPoint() は、ビューポートの左下隅を基準にしてカーソル ポイントを照会します。
MItDependencyGraph に、さまざまな関係に基づいてグラフ上をトラバースできるようにする新しいメソッドとタイプがいくつか追加されました。以前は「影響を与える」関係のみを辿っていましたが、ディペンデンシー 、ディペンデンシー グラフの接続、または評価グラフをトラバースできるようになりました。
新しいタイプ:
enum MItDependencyGraph::Relationship
新しいコンストラクタ:
新しいメソッド:
MFragmentManager に、特定のシェーダ ステージの入力パラメータを追加および削除する 2 つの新しいメソッドがそれぞれ追加されました。
パラメータ名と一時的な名前のマッピングを管理する新しいメソッドが 3 つ追加されました。
MStatus getPlug ( unsigned int index, bool convertComponents, MPlug &plug ) const が MSelectionList に追加されました。convertComponents は、選択したコンポーネントを同等なプラグに変換できる場合に、変換するかどうかをコントロールします。
MStatus deleteNode( const MObject & node, bool includeParents ) が MDGModifier に追加されました。このメソッドは、DAG ノードを削除するときに、親を削除対象に含めるかどうかをコントロールするブーリアン パラメータを公開しています。
MPxGPUDeformer に次の 2 つの新しいメソッドが追加されました。
getFixedSetupData() を使用すると、デフォーマ ノードの CPU バージョンと GPU バージョン間でセットアップ データを共有できます。
hadPlugBeenModified() は、MPxGPUDeformer::evaluate() に対する前回の呼び出し以降にプラグが変更されたかどうかを示します。
getFixedSetupData() を使用するように offsetNode のサンプルが更新されました。
MFnNurbsCurve に次の新しいメソッドが追加されました。
double findParamFromLength( double partLength, double tolerance, MStatus * ReturnStatus = NULL ) const
このメソッドは、2 つのパラメータを持つ findParamFromLength() メソッドと同じですが、検索精度をコントロールする tolerance パラメータが追加されています。
MEvaluationNode に次の 2 つの新しいメソッドが追加されました。
skipEvaluation() は、評価エンジンによって評価されないように、アトリビュートにスキップ可能のマークを付けます。skippingEvaluation() は、アトリビュートにスキップ可能のマークが付いている場合、true を返します。
これらの新しいメソッドの使用法を示す新しいサンプル simpleSkipNode が追加されました。
MPxCustomEvaluator に次の 2 つの新しいメソッドが追加されました。
これらの新しいメソッドの使用法を示す新しいサンプル evaluationPruningEvaluator が追加されました。
MGPUDeformerRegistrationInfo に次の 4 つの新しいメソッドが追加されました。
MGPUDeformerBuffer に次の 2 つの新しいメソッドが追加されました。
MGPUDeformerBuffer() のシグネチャが変更されました。変更前:
MGPUDeformerBuffer(const MUniqueString& name, bool readOnly, unsigned int elementSizeInBytes, unsigned int elementCount, unsigned int capacityInBytes, const MAutoCLMem& buffer, const MAutoCLEvent& event);
から
MGPUDeformerBuffer::MGPUDeformerBuffer(const MPlug& plug, const MUniqueString& name, bool readOnly, unsigned int elementSizeInBytes, unsigned int elementCount, unsigned int capacityInBytes, const MAutoCLMem& buffer, const MAutoCLEvent& event);
MGPUDeformerData::getBuffer() のシグネチャが変更されました
virtual MGPUDeformerBuffer MGPUDeformerData::getBuffer (const MUniqueString &name) const
から
virtual MGPUDeformerBuffer MGPUDeformerData::getBuffer(const MUniqueString& name, const MPlug& plug) const
MPxGPUDeformer::evaluate() のシグネチャが変更されました。変更前:
virtual DeformerStatus evaluate (MDataBlock &block, const MEvaluationNode &evaluationNode, const MPlug &outputPlug, const MGPUDeformerData &inputData, MGPUDeformerData &outputData)
から
virtual DeformerStatus evaluate(MDataBlock& block, const MEvaluationNode& evaluationNode, const MPlug& outputPlug, const MPlugArray& inputPlugs, const MGPUDeformerData& inputData, MGPUDeformerData& outputData)
Python API 2.0 では、MPxCommand.setResult に新しい引数 append が追加されました。この引数を False に設定すると、setResult はリストではなく単一の値を返します。
下位互換性を維持するために、append は既定で True に設定されています。
複数の例のノード ID (MTypeID)が変更されました。
これらの変更により、すべてのサンプルで使用されるノード ID の一意性が確保されるようになりました。
ただし、変更されたノード ID を持つサンプルを使用して作成されたシーンは、開かれなくなります。サンプルを再コンパイルして、シーンを再作成する必要があります。
本番環境でサンプルを使用する場合は、http://mayaid.autodesk.io/ に一意の ID を要求し、提供されたノード ID をサンプル内で使用してから、コンパイルします。
Python API 1.0 のサンプル名が変更されて、py1 という接頭辞が付加されるようになりました。また、Python API 2.0 のサンプル名が変更されて、py2 という接頭辞が付加されるようになりました。
さらに、Python のサンプルが scripting フォルダから python フォルダに移動されました。
プラットフォーム | Python API 1.0 | Python API 2.0 | Python スタンドアローン アプリケーション |
---|---|---|---|
Windows | devkit\plug-ins\python\api1 | devkit\plug-ins\python\api2 | devkit\applications\python |
macOS および Linux | devkit/plug-ins/python/api1 | devkit/plug-ins/python/api2 | devkit/applications/python |
次のサンプルが更新されました。
Maya は Alembic の HDF5 バリアントをサポートしなくなりました。このため、次の devkit のサンプルは Ogawa Alembic ファイルのみをサポートするようになりました。
次のサンプルが削除されました。
一部のコマンドが UFE パスの文字列を受け入れるようになりました。
UFE 対応コマンドは、UFE に対応していないコマンドと異なる構文になります。
次に、UFE 対応コマンドのリストを示します。これらのコマンドを使用する前に、該当するテクニカル ドキュメントを参照することをお勧めします。
{{#style "tablenobordernocolor"}}
| | | | | --- | --- | --- | ||
{{/style}}
FBXExtPlugin コマンドが fbxmaya プラグインに追加されました。このコマンドを使用すると、ユーザは FBX Extensions プラグインに引数を渡すことができます。
mimicManipulation コマンドが Maya に追加されました。
mergeBaseAnimLayer (mbl)およびuiLoadConfiguration (ulc)オプションが file コマンドに追加されました。
autoExpandAnimatedShapes (xas)フラグが outlinerEditor コマンドに追加されました。
noIntermediate (ni)フラグが sets コマンドに追加されました。
dumpInfo (di)オプションが deformerEvaluator コマンドに追加されました。deformerEvaluator -di を実行すると、デフォーマ エバリュエータのクラスタに関するデバッグ情報が JSON 形式で出力されます。
startTime (s)および endTime (e)の 2 つの新しいオプションが filterCurve コマンドに追加されました。これらのオプションで、フィルタするセクションの開始時間と終了時間をそれぞれ指定します。
stash、unstash、および clearStash の 3 つの新しいオプションが optVar コマンドに追加されました。これらのオプションを使用すると、変数をバックアップして復元できます。
geometryAttrInfo および deformableShape コマンドに、変形可能なチェーンに関連する新しいオプションがいくつか追加されました。
ghosting コマンドに、新しいゴースト化エディタのワークフローをサポートする新しいオプションがいくつか追加されました。
deformableShape コマンドのcomponentTagInjection (cti)オプションの名前が tagInjectionList (til)に変更され、createUpstreamTagInjectionNode、tagInjectionNode、および upstreamTagInjectionNode の 3 つの新しいオプションが追加されました。
deleteAttr、affectedNet、および dynExpression コマンドから name フラグが削除されました。
cutKey Python コマンドを使用する場合にすべてのキーを指定するには、time=() ではなく、time=(None,None) を使用します。
performSkinCluster.mel スクリプトが削除されました。以下を使用すると、同等の機能を実現できます。
import maya.internal.nodes.skincluster.cmd_create as sk_create sk_create.Command().executeWithDefaults()