Maya 2024 devkit の新機能

Update:

Linux、macOS、Xcode、Visual Studio、.NET、および CMake の新しくサポートされる最小バージョンがあります。「新しくサポートされる最小バージョン」を参照してください。

Apple Silicon マシン上にビルドされたプラグインの新しいビルド手順があります。「Apple Silicon マシン上でプラグインをビルドするための新しいビルド手順」を参照してください。

Qt のサンプルは専用フォルダに移動されました。「Qt のサンプルが移動されました」を参照してください。

MFnAnimCurve::evaluate()MFnAnimCurve::addKey()MTime を正しく処理できない原因となったバグが修正されました。このバグを処理するために追加した回避策を削除する必要があります。「MFnAnimCurve のメソッドによって MTime を処理する方法の修正」を参照してください。

apiMeshShape のサンプルが更新され、OpenGL を使用できるようになりました。コードをマイグレートして glFunctionTable ではなく OpenGL 呼び出しを使用できるようにする方法については、この例に含まれる Readme を参照してください。

{{toc}}

 

新しくサポートされる最小バージョン

オペレーティング システム、コンパイラ、またはツール 最小バージョン
Linux RHEL 8.6 以降、gcc 11.2.1 を備えた DTS-11 を使用
macOS macOS 11
Xcode 13.4
Visual Studio Visual Studio 2022
.NET 4.8.1
CMake 3.22.1

先頭に戻る

 

Apple Silicon マシン上でプラグインをビルドするための新しいビルド手順

Maya プラグインは、Apple Silicon マシンでビルドできます

Apple Silicon マシンの既定の arm64 ターミナルでプラグインをビルドすると、arm64 バイナリが生成されます。

Intel アーキテクチャ用のバイナリを生成するには、CMAKE_OSX_ARCHITECTURES cmake オプションを使用します。

たとえば、Intel86_64 バイナリを生成するには、次を使用します。

sh cmake -H. -Bbuild -G Xcode -DCMAKE_OSX_ARCHITECTURES=x86_64

また、Intel86_64 と arm64 のバイナリを生成するには、次のコマンドを使用します。

 cmake -H. -Bbuild -G Xcode -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"

先頭に戻る

Apple Silicon の制限事項

Apple Silicon マシンで Maya を実行する場合、いくつかの制限事項があります。

先頭に戻る

 

Qt のサンプルが移動されました

devkit に付属している Qt のサンプルは移動されました。

各 Qt サンプルは、plug-ins フォルダのそれぞれのフォルダにあります。

ファイル plug-ins の新規のフォルダ
grabUV.prograbUVMain.cppgrabUVProperties.melgrabUVValues.mel grabUV
helixQtCmd.prohelixQtCmd.cpphelixQtCmd.h helixQtCmd
qtAdskStyleProxy.proqtAdskStyleProxy.cppqtAdskStyleProxy.hqtAdskStyleProxy.json qtAdskStyleProxy
qtForms.proqtForms.cppqtForms.hqtForms.qrcsphereForm.uicubeForm.ui qtForms
saveSwatchesCmd.prosaveSwatchesCmd.cppsaveSwatchesCmd.h saveSwatchesCmd
workspaceControlCmd.proworkspaceControlCmd.cppworkspaceControlCmd.h workspaceControlCmd

qtConfig ファイルは最上位の plug-ins フォルダから移動されていません。

先頭に戻る

 

MFnAnimCurve のメソッドによって MTime を処理する方法の修正

MFnAnimCurveevaluate() メソッドと addKey() メソッドのバグにより MTime が時間ではなくティックとして処理されていた問題が修正されました。

この問題に対する回避策が C++ または Python プラグインに実装されている場合は、それらを削除してプラグインをリビルドする必要があります。

先頭に戻る

Python ハッシュ サポートが MObjectHandle に追加されました

Python ハッシュ サポートが MObjectHandle に追加されました。タイプ MObjectHandle のオブジェクトをハッシュを必要とする Python コンテナのキーとして使用できるようになりました。

先頭に戻る

新しいクラス

3 つの新しいディスプレイ レイヤ クラスが追加されました

Maya devkit に 3 つの新しいクラス MDisplayLayerMessageMFnDisplayLayer、および MFnDisplayLayerManager が追加されました。

MDisplayLayerMessage はディスプレイ レイヤ メンバーシップの変更に対するコールバックを登録します。

MFnDisplayLayer はディスプレイ レイヤの内容を照会する関数セットです。

MFnDisplayLayerManager は Ufe アイテムが含まれるディスプレイ レイヤを照会するために使用される関数セットです。

新しいデータ サーバ クラスが追加されました

新しいデータ サーバ クラス MDataServerOperationOpenMayaRender に追加されました。

MDataServerOperation により、ビューポートによって生成された未処理のレンダリング可能なジオメトリ データを、カスタム レンダリング用の独自のプラグインで使用できます。

MDataServerOperation はまだ開発中の機能のテクノロジ プレビューです。これは時間の経過とともに変更されます。プラグインでこのクラスを使用する場合は、Maya の新しいリリースごとにこのクラスの API リファレンスを確認してください。

パブリック MayaUSD git リポジトリで使用可能な MayaHydra プラグインは、この新しいクラスの使用例を示します。

先頭に戻る

新しいメソッド

inAlternateContext() と doExitRegion() が MPxContext に追加されました

MPxContext に、inAlternateContext()doExitRegion() の 2 つの新しいメソッドが追加されました。

inAlternateContext() は、代替コンテキストがアクティブな場合に true を返します。

doExitRegion() はマウスがビューポートから離れるときに呼び出されます。これは、マウスがビューポートから離れるときに何らかのアクションを実行する必要がある場合にオーバーライドする必要がある仮想メソッドです。

先頭に戻る

indexMapper() と envelopeWeights() が MPxDeformerNode に追加されました

MPxDeformerNode に、indexMapper()envelopeWeights() の 2 つの新しいメソッドが追加されました。

indexMapper() はデフォーマの indexMapper を返し、envelopeWeights() はデフォーマのエンベロープ ウェイトを返します。これはペイントされたウェイトと減衰ウェイトの組み合わせです。

const float* envelopeWeights( MDataBlock& block,
                                  unsigned int multiIndex,
                                  unsigned int* numWeights);

const MIndexMapper&  indexMapper(unsigned int multiIndex, MStatus* ReturnStatus) const; 

先頭に戻る

indexMapper() が MPxGeometryFilter に追加されました

indexMapper() が MPxGeometryFilter に追加されました。

const MIndexMapper& indexMapper(unsigned int multiIndex, MStatus* ReturnStatus) const;

先頭に戻る

manipulationActive() と contextGraph() が MEvaluationGraph に追加されました

blendShape デフォーマの操作状態にアクセスするための 2 つの新しいメソッド manipulationActive()contextGraph()MEvaluationGraph に追加されました。

```cpp bool manipulationActive() const;

static MEvaluationGraph contextGraph(const MDGContext &context); ```

先頭に戻る

setOverrideBlendState() が MUIDrawManager に追加されました

MHWRender::MUIDrawManager に、新しいメソッド setOverrideBlendState() が追加されました。

void setOverrideBlendState (const MHWRender::MTargetBlendDesc &blendStateDesc)

setOverrideBlendState() では、新しいブレンド状態を指定して、UI ペインタの既定のブレンド状態をオーバーライドできます。新しいブレンド状態は、MTargetBlendDesc で設定できる任意の構成にすることができます(乗算済みアルファ ブレンドを含む)。

オーバーライド ブレンド状態は、メッシュ、ライン、ポイント、円、球など、描画マネージャを介して描画されたメッシュライクの UI オブジェクトに適用されます。テキストまたはアイコンの UI オブジェクトには適用されません。

先頭に戻る

lastEvaluatedOnGPU() が MPxGPUDeformer に追加されました

MPxGPUDeformer に、新しいメソッド lastEvaluatedOnGPU() が追加されました。

このメソッドは、このノードの以前の評価が GPU 上にあった場合に true を返します。

先頭に戻る

isExactlyEqual() が MPlug に追加されました

MPlug に、新しいメソッド isExactlyEqual() が追加されました。

bool isExactlyEqual (const MPlug &other) const

このメソッドは、== および != 演算子の代わりにマルチインデックスを比較するために使用されます。

== および != 演算子はマルチインデックスの比較には使用できません。

先頭に戻る

balanceTransformation() が MFnTransform に追加されました

MFnTransformbalanceTransformation() が追加されました。このメソッドは、ワールド行列をジョイントに適用する場合に変換のバランスを調整します。

void MFnTransform::balanceTransformation(
    MVector& localTranslate, MEulerRotation& localRotate, MVector& localScale, 
    const MTransformationMatrix& mtx, const MQuaternion& rotateAxis = MQuaternion::identity,
    const MQuaternion& jointOrient = MQuaternion::identity, 
    const bool segmentScaleCompensate = true, const MVector& inverseScale = MVector::one,
    const MEulerRotation::RotationOrder& rotateOrder = MEulerRotation::kXYZ 
)

この新しいメソッドの使用方法を示すため、rebalanceTransform のサンプルが追加されました。

先頭に戻る

MRenderItem に 4 つの新しいメソッドが追加されました。

MRenderItem に、isHideOnPlayback()setHideOnPlayback()setDrawLast()、 および isDrawLast() の 4 つの新しいメソッドが追加されました。

void MHWRender::MRenderItem::setHideOnPlayback(bool state)

bool MHWRender::MRenderItem::isHideOnPlayback() 

void MRenderItem::setDrawLast(bool state)

bool MRenderItem::isDrawLast()

truesetHideOnPlayback() に渡すと、再生中にレンダー項目を非表示にする必要があることを示します。isHideOnPlayback() は、レンダー項目が再生中に非表示になっている場合、true を返します。それ以外の場合は false を返します。

truesetDrawLast() に渡すことは、レンダー項目がシーン内の他のすべてのオブジェクトの後に描画されることを示します。項目がシーンの最後に描画される場合、isDrawLast()true を返します。それ以外の場合は false を返します。

先頭に戻る

MPxGPUStandardDeformer に 4 つの新しいメソッドが追加されました

MPxGPUStandardDeformer に次の 4 つの新しいメソッドが追加されました。

unsigned int multiIndex() const;

const MPlug& inputPlug() const;

const MIndexMapper& indexMapper() const;

virtual bool passThroughWithZeroEnvelope() const;

先頭に戻る

MFrameContext に getDisplayStyleOfAllViewports() が追加されました

MHWRender::MFrameContext に 新しいメソッド getDisplayStyleOfAllViewports() が追加されました。このメソッドは、アクティブなすべての表示可能な 3D ビューポートの表示スタイルの和を返します。

unsigned int getDisplayStyleOfAllViewports() const

先頭に戻る

廃止されたクラス

以下のクラスは廃止されました。

先頭に戻る

その他の API の変更点

先頭に戻る

更新されたサンプル

cvColorNode の更新

cvColorNode のバグが修正されました。サンプルの最新バージョンでは、線

cpp cvColorData->pointArray = cvData.array(&stat);

は、次に置き換えられました:

cpp cvData.copyTo(cvColorData->pointArray);

先頭に戻る

apiMeshShape の更新

apiMeshShape のサンプルが更新され、OpenGL を使用できるようになりました。

このサンプルに含まれる Readme には、glFunctionTable ではなく、OpenGL 呼び出しを使用できるようにコードをマイグレートする方法についての情報が記載されています。

先頭に戻る

スクリプトの変更点

先頭に戻る

新しいノード

absolute acos and asin atan atan2
average ceil clampRange cos Determinant equal
floor greaterThan inverseLerp length lerp lessThan
log max min modulo multiply negate
normalize not or pi power round
rotateVector sin smoothStep sum truncate tan

先頭に戻る