3ds Max Alembic-Dateierweiterung – Referenz

3ds Max erweitert die Alembic-Dateispezifikation, um zusätzliche Daten zu speichern und einen produktiveren Datenaustausch mit anderen Anwendungen zu ermöglichen. Die Erweiterungen entsprechen den Autodesk-Vorgaben, um die Interoperabilität mit anderen Autodesk-Produkten (wie Maya) zu verbessern. In diesem Thema werden die Autodesk-Vorgaben beschrieben und die spezifischen Erweiterungen aufgeführt, die 3ds Max für Alembic-Dateiexporte auffüllt.

Allgemeine Hinweise

  • Knoten und Eigenschaften haben keine Leerzeichen im Namen.
  • Benutzerdefinierte Attribute werden in einer Eigenschaft vom Typ .userProperties gespeichert. Diese können sich entweder unter .geom- oder .xform-Knoten befinden, um zuzulassen, dass Objekte ohne Geometrie über benutzerdefinierte Daten verfügen.

Weitere UV-Kanäle

  • Zusätzliche UV-Kanäle werden unter .arbGeomParams in der Eigenschaft .geom gespeichert.
  • Der Name der Eigenschaft ist der Kanalname.
  • Nur UV-Daten werden exportiert, keine UVW.
  • .vals ist eine Anordnung von kFloat32POD mit Erweiterung = 2
  • .indices ist eine Anordnung von kUint32POD mit Erweiterung = 1

Nicht exportierte Daten

In Alembic werden keine Splines unterstützt. Splines werden für den Export in NURBS konvertiert.

Instanzen

Instanzen werden unterstützt, wenn sie der Alembic-Spezifikation entsprechen. Wiederholte Geometrie wird jedoch nicht erkannt und beim Import in Instanzen umgewandelt.

Kameras

3ds Max-Szenenkameras werden in Alembic exportiert.

Maya exportiert vorgabemäßig Perspektivkameras (vorne, Perspektive, Seite und oben).

Benutzerdefinierte 3ds Max-Datenknoten

Max-Knoten
Knoten Typ Anmerkungen
Knoten/Knoten/Maxvisibility Skalar: Float32

Container für Max-Objektattribute. Unterstützte Attribute:

{ 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 Verbund

Container für benutzerdefinierte Attribute, die dem Basisobjekt zugewiesen sind. Hinweis: Alle CA-Typen werden direkt unterstützt, mit Ausnahme von Knoten, Texmaps und Materialien, bei denen der Referenzname als Zeichenfolge gespeichert wird, sowie Anordnungen, die nur den Index des ausgewählten Elements speichern.

Metadaten: "max_a_uihint" wird an jedes Attribut angehängt, um einen Hinweis darauf zu geben, wie die Daten genutzt werden, und zwar mit den Aufzählungswerten ParamType und ParamType2.

Node/Node/MaxCustomAttributes_Modifier Verbund Container für benutzerdefinierte Attribute, die dem Objektmodifikator zugewiesen sind. Siehe oben. HINWEIS: wird beim Import derzeit nicht unterstützt.

Neu in 1.0.0
Knoten Typ Kommentare
Node/Node/.userProperties/Max_CustomAttributes_BaseObject
Node/Node/.userProperties/Max_CustomAttributes_Modifier
Node/Node/.userProperties/Max_CustomAttributes_Modifier OStringProperty Enthält den Namen des Layers, der diesen Knoten enthält
Node/Node/.geom/.arbGeomParams/Max_Map_Channel "Name" Verbund Container, der einen einzelnen Kanal enthält
Node/Node/.geom/.arbGeomParams/Max_Map_Channel "Name"/.vals Anordnung von OV2fGeomParam oder OV3fGeomParam Enthält die Texturdaten
Node/Node/.geom/.arbGeomParams/Max_Map_Channel "Name"/.indices Anordnung von OInt32Property Enthält die Texturindizes
Node/Node/.geom/.arbGeomParams/Max_Map_Channel "Name"/Max_Map_ChannelNumber Skalar OInt32Property Der von Max verwendete Map-Kanal.
Node/Node/.geom/.arbGeomParams/Max_Vertex_Color_Map Verbund Container für den Scheitelpunktfarbkanal
Node/Node/.geom/.arbGeomParams/Max_Vertex_Color_Map/.vals Anordnung von OC3fGeomParam Enthält die Scheitelpunktfarbdaten
Node/Node/.geom/.arbGeomParams/Max_Vertex_Color_Map/.indices Anordnung von OInt32Property Die Scheitelpunktfarbenindizes
Node/Node/.geom/.userProperties/Max_MaterialName OStringProperty Enthält den Namen des Materials des Knotens
Node/Node/.geom/.userProperties/Max_ObjectID OUInt32Property Enthält die Objekt-ID des Knotens
Node/Node/.geom/Max_MaterialID_# Verbund Enthält das Flächensatzschema 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 Zusätzliche Eigenschaft für die Flächenmaterial-ID

Unterstützte Kurveneigenschaften

Knoten Typ Kommentare
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

Unterstützte Kameraeigenschaften

Nachstehend finden Sie Informationen zu den unterstützten Kameraeigenschaften und ihrer Berechnung in 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 );

Unterstützte Unterteileigenschaften

Keine Unterstützung.

Unterstützte Punktgrundkörpereigenschaften

Einfache und PFluss-Partikel werden in OPointsSchema unterstützt.