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.
In Alembic werden keine Splines unterstützt. Splines werden für den Export in NURBS konvertiert.
Instanzen werden unterstützt, wenn sie der Alembic-Spezifikation entsprechen. Wiederholte Geometrie wird jedoch nicht erkannt und beim Import in Instanzen umgewandelt.
3ds Max-Szenenkameras werden in Alembic exportiert.
Maya exportiert vorgabemäßig Perspektivkameras (vorne, Perspektive, Seite und oben).
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. |
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 |
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 |
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 );
Keine Unterstützung.
Einfache und PFluss-Partikel werden in OPointsSchema unterstützt.