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.