3ds Max는 Alembic 파일 사양을 보강하여 추가 데이터를 저장하고 다른 응용 프로그램과 보다 원활하게 데이터를 교환할 수 있도록 지원합니다. 이 확장은 Autodesk 표준을 따르며 다른 Autodesk 제품(예: Maya)과의 상호 운용성을 개선합니다. 이 항목에서는 Autodesk 표준에 대해 설명하고 Alembic 파일 내보내기를 위해 3ds Max에서 입력하는 확장 목록을 제공합니다.
스플라인은 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 | Ouint3OUInt32Property2property | 노드의 오브젝트 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 );
지원되지 않습니다.
단순 파티클 및 PFlow 파티클이 OPointsSchema를 통해 지원됩니다.