3ds Max 增强了 Alembic 文件规范来存储额外的数据,并且可以更好地与其他应用程序交换数据。这些扩展名遵循 Autodesk 标准,以增强与其他 Autodesk 产品(如 Maya)的互操作性。本主题介绍 Autodesk 标准,并列出了 3ds Max 为 Alembic 文件导出而增加的特定扩展名。
Alembic 中不支持样条线。样条线已转换为 NURBS 以便于导出。
实例需遵循 Alembic 规范才能受支持。但是,导入时不检测重复的几何体,也不将其转换为实例。
3ds Max 场景摄影机在 Alembic 中导出。
Maya 默认会导出透视摄影机(前、透视、侧和顶)。
节点 | 类型 | 注释 |
---|---|---|
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 类型均直接受支持,节点、纹理贴图、材质除外,其中参考名称存储为一个字符串以及仅存储选定元素索引的数组。 元数据:“max_a_uihint”附加到每个属性,以提供有关数据如何使用,以及哪些是 ParamType 和 ParamType2 枚举的提示。 |
Node/Node/MaxCustomAttributes_Modifier | 复合 | 用来容纳指定给对象修改器的自定义属性的容器。同上。当前导入时不支持注释。 |
节点 | 类型 | 注释 |
---|---|---|
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 );
不受支持。
简单和粒子流粒子在 OPointsSchema 中均受支持。