3ds Max Alembic ファイルの拡張機能リファレンス

3ds Max は、追加データを保存し、他のアプリケーションとのデータ交換の機能を強化するために、Alembic ファイルの仕様を拡張しました。これらの拡張機能はオートデスクの標準に準拠し、他のオートデスク製品(Maya など)との相互運用性が強化されています。このトピックでは、オートデスクの標準について説明し、3ds Max が Alembic ファイルの書き出しのために強化した特定の拡張機能をリストします。

一般的な注記

  • ノードとプロパティの名前にはスペースは使用されません。
  • カスタム アトリビュートは、.userProperties プロパティに保存されます。これは、.geom または .xform のどちらのノードにも保存でき、ジオメトリのないオブジェクトでもカスタム データを持つことができます。

追加の UV チャネル

  • 追加の UV チャネルは、.geom プロパティの .arbGeomParams に保存されます。
  • プロパティ名はチャネル名です。
  • UV データのみが書き出され、UVW データは書き出されません。
  • .vals は、範囲 = 2 の kFloat32POD の配列です。
  • .indices は、範囲 = 1 の kUint32POD の配列です。

書き出し対象外のデータ

スプラインは Alembic ではサポートされません。スプラインを書き出す場合は NURBS に変換されます。

インスタンス

インスタンスは、Alembic 仕様に準拠している場合にサポートされます。ただし、反復するジオメトリは検出されず、読み込み時にインスタンスに変換されません。

カメラ

3ds Max シーン カメラは Alembic にエクスポートされます。

既定では、Maya はパース カメラ(正面、パース、側面、上面)を書き出します。

3ds Max カスタム データ ノード

最大ノード
ノード タイプ ノート
Node/Node/MaxVisibility スカラー: Float32

MAX オブジェクト属性を保持するためのコンテナ。サポートされている属性は次のとおりです:

{ kHide, _T("Hide"), CustomAttribute::DataType::kBool},

{ kFreeze, _T("Freeze"), CustomAttribute::DataType::kBool},

{ kSeeThrough, _T("SeeThrough"), CustomAttribute::DataType::kBool},

{ kDisplayAsBox,_T("DisplayAsBox"), CustomAttribute::DataType::kBool },

{ kBackfaceCull,_T("BackfaceCull"), CustomAttribute::DataType::kBool },

{ kEdgesOnly,_T("EdgesOnly"), CustomAttribute::DataType::kBool},

{ kVertexTicks,_T("VertexTicks"), CustomAttribute::DataType::kBool},

 kMotionPaths,_T("MotionPaths"), CustomAttribute::DataType::kBool},

{ kIgnoreExtents,_T("IgnoreExtents"), CustomAttribute::DataType::kBool},

{ kShowFrozenInGray,_T("ShowFrozenInGray"), CustomAttribute::DataType::kBool},

{ kNeverDegrade,_T("NeverDegrade"), CustomAttribute::DataType::kBool},

{ kRenderable,_T("Renderable"), CustomAttribute::DataType::kBool},

{ kInheritVisibility,_T("InheritVisibility"), CustomAttribute::DataType::kBool },

{ kVisibleToCamera,_T("VisibleToCamera"), CustomAttribute::DataType::kBool},

{ kVisibleToReflection,_T("VisibleToReflection"), CustomAttribute::DataType::kBool },

{ kReceiveShadows,_T("ReceiveShadows"), CustomAttribute::DataType::kBool},

{ kCastShadows,_T("CastShadows"), CustomAttribute::DataType::kBool},

{ kApplyAtmospherics,_T("ApplyAtmospherics"), CustomAttribute::DataType::kBool},

{ kRenderOccludedObjects,_T("RenderOccludedObjects"), CustomAttribute::DataType::kBool },

{ kDisplayByLayer,_T("DisplayByLayer"), CustomAttribute::DataType::kBool },

{ kRenderingByLayer,_T("RenderingByLayer"), CustomAttribute::DataType::kBool },

{ kMotionBlurByLayer,_T("MotionBlurByLayer"), CustomAttribute::DataType::kBool },

{ kMotionBlurEnabled,_T("MotionBlurEnabled"), CustomAttribute::DataType::kBool},

{ kMotionBlurMultiplier,_T("MotionBlurMultiplier"), CustomAttribute::DataType::kFloat},

{ kMotionBlurType,_T("MotionBlurType"), CustomAttribute::DataType::kInt },

{ kObjectID,_T("ObjectID"), CustomAttribute::DataType::kULong },

{ kUserPropBuffer,_T("UserPropBuffer"), CustomAttribute::DataType::kString },
Node/Node/MaxCustomAttributes_BaseObject 複合

基本オブジェクトに割り当てられたカスタム アトリビュートを保持するコンテナ。すべての CA タイプが直接サポートされますが、Nodes、Texmaps、および Material は例外です。これらの参照名は文字列および配列として保存され、選択された要素インデックスのみを保存します。

メタデータ「max_a_uihint」が各アトリビュートに接続され、データがどのように使用されるかのヒントを提供します。これは ParamType および ParamType2 列挙型です。

Node/Node/MaxCustomAttributes_Modifier 複合 オブジェクト モディファイヤに割り当てられたカスタム アトリビュートを保持するコンテナ。前述の内容と同じです。 注記: 現在読み込み時にはサポートされていません。

1.0.0 での新機能
ノード タイプ [コメント]
Node/Node/.userProperties/Max_CustomAttributes_BaseObject
Node/Node/.userProperties/Max_CustomAttributes_Modifier
Node/Node/.userProperties/Max_CustomAttributes_Modifier OStringProperty このノードを含むレイヤの名前を含みます
Node/Node/.geom/.arbGeomParams/Max_Map_Channel "Name" 複合 個々のチャネルを保持するコンテナ
Node/Node/.geom/.arbGeomParams/Max_Map_Channel "Name"/.vals OV2fGeomParam または OV3fGeomParam の配列 テクスチャ データを含みます
Node/Node/.geom/.arbGeomParams/Max_Map_Channel "Name"/.indices OInt32Property の配列 テクスチャ インデックスを含みます
Node/Node/.geom/.arbGeomParams/Max_Map_Channel "Name"/Max_Map_ChannelNumber スカラー OInt32Property Max によって使用されるマップ チャネル
Node/Node/.geom/.arbGeomParams/Max_Vertex_Color_Map 複合 頂点カラー チャネルのコンテナ
Node/Node/.geom/.arbGeomParams/Max_Vertex_Color_Map/.vals OC3fGeomParam の配列 頂点カラー データを含む
Node/Node/.geom/.arbGeomParams/Max_Vertex_Color_Map/.indices OInt32Property の配列 頂点カラー インデックス
Node/Node/.geom/.userProperties/Max_MaterialName OStringProperty ノードのマテリアルの名前を含む
Node/Node/.geom/.userProperties/Max_ObjectID OUInt32Property ノードのオブジェクト ID を含む
Node/Node/.geom/Max_MaterialID_# 複合 面セット スキーマ OFaceSetSchema を含む
Node/Node/.geom/Max_MaterialID_#/.faceset
Node/Node/.geom/Max_MaterialID_#/.faceset/.selfBnds
Node/Node/.geom/Max_MaterialID_#/.faceset/.faces
Node/Node/.geom/Max_MaterialID_#/Max_MaterialID OInt32Property 面マテリアル ID の追加プロパティ

サポートされているカーブ プロパティ

ノード タイプ [コメント]
BezierName/BezierName:#
BezierName/BezierName:#/.geom/
BezierName/BezierName:#/.geom/.selfBnds
BezierName/BezierName:#/.geom/.P
BezierName/BezierName:#/.geom/nVertices
BezierName/BezierName:#/.geom/curveBasisAndType
BezierName/BezierName:#/.geom/width
BezierName/BezierName:#/MaxLayerName
BezierName/BezierName:#/\MaxObjectID
Node/NURBSName
Node/NURBSName/.geom/
Node/NURBSName/.geom/.selfBnds
Node/NURBSName/.geom/.P
Node/NURBSName/.geom/nVertices
Node/NURBSName/.geom/curveBasisAndType
Node/NURBSName/.geom/width
Node/NURBSName/MaxLayerName
Node/NURBSName/\MaxObjectID

サポートされているカメラ プロパティ

以下に、サポートされているカメラのプロパティとそれらが Max でどのように計算されるかを示します。

       CameraState lCameraState;

       Interval lValid( TIME_NegInfinity, TIME_PosInfinity );
       RefResult lRefResult;

       lRefResult = lGenCamera->EvalCameraState( t, lValid, &lCameraState );
       Interface *lMaxInterface = GetCOREInterface();

       double lLensSqueeenzeRatio = lMaxInterface ? lMaxInterface->GetRendApect() : 1.0;
       mSample.setLensSqueezeRatio( lLensSqueeenzeRatio );

       double lApertureWidth = 3.6f;
       double lApertureHeight = 2.4f;
       if ( lMaxInterface ) {
             lApertureWidth = lMaxInterface->GetRendApertureWidth() * MATH_MM_TO_CM;
             float lImageAspect = lMaxInterface->GetRendImageAspect();
             if ( lImageAspect <= 0.0f ) {
                    lImageAspect = 0.001f;
             }

             lApertureHeight = lApertureWidth * ( 1.0 / lImageAspect );
       }
       mSample.setHorizontalAperture( lApertureWidth );
       mSample.setVerticalAperture( lApertureHeight );      

       double lAngleOfView = lCameraState.fov * MATH_RAD_TO_DEG;
       int lFovType = lGenCamera->GetFOVType();
       double lFocalLength = CalculateFocalLength( lAngleOfView, lApertureWidth,
             lApertureHeight, lFovType, lLensSqueeenzeRatio ) * ( 1.0 / MATH_MM_TO_CM );
       mSample.setFocalLength( lFocalLength );
      

       mSample.setNearClippingPlane( lCameraState.nearRange );
       mSample.setFarClippingPlane( lCameraState.farRange );
       mSample.setFStop( lGenCamera->GetDOFFStop( t ) );
       mSample.setFocusDistance( lCameraState.tdist );

サポートされている SubDiv プロパティ

サポートされていません。

サポートされている点プリミティブ プロパティ

単純な PFlow パーティクルは OPointsSchema を通じてサポートされています。