3ds Max enrichit la spécification des fichiers Alembic pour permettre le stockage de données supplémentaires et améliorer les échanges de données avec d'autres applications. Ces extensions se basent sur les normes Autodesk pour améliorer l'interopérabilité avec les autres produits Autodesk (Maya, par exemple). Cette rubrique décrit les normes Autodesk et répertorie les extensions spécifiques générées par 3ds Max pour les exportations de fichiers Alembic.
Les splines ne sont pas prises en charge dans Alembic. Les splines sont converties en NURBS pour l'exportation.
Les instances sont prises en charge lorsqu'elles respectent la spécification Alembic. Toutefois, les géométries répétées ne sont pas détectées et sont converties en instances lors de l'importation.
Les caméras de scène 3ds Max sont exportées dans Alembic.
Maya exporte par défaut les caméras en perspective (vue de face, de perspective, de côté et de dessus).
Noeud | Type | Remarques |
---|---|---|
Node/Node/MaxVisibility | Scalaire : Float32 |
Conteneur des attributs d'objet 3ds Max. Les attributs pris en charge sont les suivants : { 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 | Objet composé |
Conteneur des attributs personnalisés affectés à l'objet de base. Tous les types d'attributs personnalisés sont pris en charge directement, sauf les noeuds, les texmaps et les matériaux. En effet, leur nom de référence est enregistré sous la forme d'une chaîne et de réseaux, donc seul l'index de l'élément sélectionné est enregistré. Métadonnées : "max_a_uihint" est associé à chaque attribut pour indiquer comment les données sont utilisées (énumérations ParamType et ParamType2). |
Node/Node/MaxCustomAttributes_Modifier | Objet composé | Conteneur des attributs personnalisés affectés au modificateur des objets. Identique à la description ci-dessus. REMARQUE : non pris en charge actuellement lors de l'importation. |
Noeud | Type | Commentaires |
---|---|---|
Node/Node/.userProperties/Max_CustomAttributes_BaseObject | ||
Node/Node/.userProperties/Max_CustomAttributes_Modifier | ||
Node/Node/.userProperties/Max_CustomAttributes_Modifier | OStringProperty | Indique le nom de la couche contenant ce noeud. |
Node/Node/.geom/.arbGeomParams/Max_Map_Channel "Name" | Objet composé | Conteneur d'un canal. |
Node/Node/.geom/.arbGeomParams/Max_Map_Channel "Name"/.vals | Réseau d'OV2fGeomParam ou d'OV3fGeomParam | Contient les données de texture. |
Node/Node/.geom/.arbGeomParams/Max_Map_Channel "Name"/.indices | Réseau d'OInt32Property | Contient les indices de texture. |
Node/Node/.geom/.arbGeomParams/Max_Map_Channel "Name"/Max_Map_ChannelNumber | Oint32property scalaire | Canal texture utilisé par 3ds max. |
Node/Node/.geom/.arbGeomParams/Max_Vertex_Color_Map | Objet composé | Conteneur pour le canal de couleur de sommet. |
Node/Node/.geom/.arbGeomParams/Max_Vertex_Color_Map/.vals | Réseau d'OC3fGeomParam | Contient les données de couleur de sommet. |
Node/Node/.geom/.arbGeomParams/Max_Vertex_Color_Map/.indices | Réseau d'OInt32Property | Indices de couleur de sommet. |
Node/Node/.geom/.userProperties/Max_MaterialName | OStringProperty | Contient le nom du matériau du noeud. |
Node/Node/.geom/.userProperties/Max_ObjectID | OUInt32Property | Contient l'ID d'objet du noeud. |
Node/Node/.geom/Max_MaterialID_# | Objet composé | Contient le schéma du jeu de faces 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 | Propriété supplémentaire de l'ID de matériau de la face. |
Noeud | Type | Commentaires |
---|---|---|
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 |
Les propriétés de caméra prises en charge et la façon dont elles sont spécifiées dans 3dsMax sont décrites ci-dessous.
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 );
Non prises en charge.
Les particules simples et PFlow sont prises par OPointsSchema.