Jump to content
Sign in to follow this  
lordserpent

What Is The Best Translation Site?

Recommended Posts

V3D - Especificación del Formato

El fichero V3D almacena una variedad de datos en forma de “chunksâ€, incluyendo una cabecera que describe los contenidos del fichero.

Descripción de los Chunks

Los chunks comienzan por un identificador de 32 bits seguido por un entero sin signo que declara el tamaño de los datos que siguen a continuación. Las cadenas de texto dentro de los chunks van precedidas por un entero sin signo de 16 bits que indica el tamaño de dicha cadena.

A fecha de creación del documento los chunks definidos son los siguientes:

Nombre del Chunk ID Descripción

ID_HEADER 0xCABE Cabecera

ID_MTLLIST 0x1000 Lista de materiales

    ID_MULTIMATERIAL 0x1100 Lista de submateriales

        ID_SUBMAT 0x1110 Material

ID_GEOMOBJECT 0x2000 Objeto geométrico (estático o dinámico)

    ID_VERTEXLIST 0x2100 Lista de vértices en cualquier FVF

    ID_INDEXLIST 0x2300 Lista de indices de 16 o 32 bits

    ID_SUBSETLIST 0x2400 Lista de subsets

ID_ANIMMESH 0x6000 Malla animada del modelo geométrico

ID_POSEINITIAL 0x7000 Pose inicial para los modelos dinámicos (para q puedan ser pintados sin animación)

ID_CAMERAOBJECT 0x3000 Objeto Cámara

ID_LIGHTOBJECT 0x4000 Objeto Luz

ID_HELPEROBJECT 0x5000 Objeto Helper

ID_TERRAINOBJECT 0x8000 Objeto Terreno

ID_OCTTREE 0x8100 Octree

ID_ANIM_CAMERA 0x9000 Animación de cámara

ID_END 0x00FF Fin del fichero V3D

Chunk de Cabecera ( ID_HEADER )

El chunk de cabecera comienza con dos cadenas de texto, la primera es la descripción del fichero y suele contener “V3D_File†y la segunda es el nombre del desarrollador o creador del fichero, suele tener el valor “Ruboâ€. Tras esto, se encuentran los datos de la estructura de cabecera V3D, que contiene los siguientes campos:

Tipo de Dato Nombre del campo Descripción

DWORD Version Versión del fichero * 100

CRealColor Ambient Color ambiente con las componentes RGBA en rango 0.0-1.0

CRealColor BackGround Color de fondo con las componentes RGBA en rango 0.0-1.0

UINT nOriginalVertices Número total de vértices originales (sin duplicar)

UINT nVertices Número total de vértices (incluyendo duplicados)

UINT nFaces Número total de caras

UINT nObjects Número total de objetos con geometría

UINT nLights Número total de luces

UINT nCameras Número total de camaras

UINT nHelpers Número total de helpers

UINT nNodes Número total de nodos

UINT nTextures Número total de texturas

UINT nMultiMtl Número total de multimateriales

UINT nSubMaterials Número total de submateriales

UINT nRootChild Número de hijos del nodo raiz

UINT bHasAnimation Indica si el fichero contiene datos de animación o no

UINT AnimRangeStart Primer tick del rango de animación (en ticks de 3DS Max )

UINT AnimRangeEnd Último tick del rango de animación (en ticks de 3DS Max)

UINT TicksPerFrame Número de ticks por frame de 3DS Max

UINT StartFrame Frame inicial de la animación

UINT EndFrame Frame final de la animación

UINT Frames Número de frames de animación

UINT fps Frames por Segundo de la animación

eExportMode ExportMode Modo de Exportación (ver abajo)

CVector3 GlobalMinPoint Punto mínimo de la Bounding Box Global

CVector3 GlobalMaxPoint Punto máximo de la Bounding Box Global

eModeTM TransformMode Modo de Transformación

(ver abajo)

UINT ConstTicksPerSec Constante de Ticks por degundo

float TimeAniSecs Duración de la animación en segundos

Notas:

- La estructura de cabecera contiene 52 bytes adicionales para su uso futuro.

- eExportMode define los siguientes modos de exportación:

o EM_STATIC, exporta objetos no animados.

o EM_DYNAMIC, exporta objetos animados.

o EM_ONLYANIMATION, exporta únicamente la animación.

o EM_CAM_ANIMATION, exporta únicamente la animación de cámara.

o EM_CUSTOM, exporta datos personalizados.

- eModeTM define los siguientes modos de transformación:

o MODETM_NOOFFSET, las matrices no contienen la OffsetTM (matriz de desplazamiento).

o MODETM_OFFSET, las matrices contienen la OffsetTM (matriz de desplazamiento).

Chunk de Lista de Materiales ( ID_MTLLIST )

Este chunk contiene un entero sin signo de 32 bits que indica el número de chunks de multimateriales que contiene y, detrás de él, dichos chunks.

Chunk de Lista de Submateriales ( ID_MULTIMATERIAL )

Este chunk esta compuesto de dos enteros sin signo, el número de submaterial y el número de materiales que contiene, seguidos por los chunks de los submateriales en si. En caso de que alguno de los submateriales sea erroneo, se grabara un material NULO.

Chunk de Submaterial ( ID_SUBMAT )

El primer valor que encontramos es un byte que corresponde a un booleano que indica si el submaterial es valido o no. Si es valido, encontraremos un entero con el indice de submaterial seguido por una cadena con el nombre del mismo. A continuación esta grabada una estructura V3DFMT::SMtlInfo ( definida en typesV3D.h ). Detrás, los siguientes datos:

bool bTwoSided          // Doble Cara

bool bAlpha                // Alpha Presente

DWORD SrcBlend      // Source Blending

DWORD DstBlend      // Dest Blending

bool bMask                  // Mascaras

 

mas 4 DWORDS reservados para uso futuro.

Completa el chunk la información sobre las texturas. Esto incluye un DWORD con el numero de texturas ( pueden ser 3, Refracción, reflexión y difuso)  y las descripciones correspondientes.

Las descripciones de las texturas vienen en el siguiente formato:

UINT numero de textura dentro de 3DS Max

UINT enumerado de tipo de textura V3DFMT::eMapID

float con el valor de cantidad de textura entre 0.0 y 1.0

UINT enumerado eMtlMode con el modo de textura (suele valer MM_PLAINTEXTURE )

UINT con el número de bitmaps

Seguido de la información de los bitmaps:

UINT stage de la textura

UINT canal de mapping asociado a la textura

Cadena con el nombre de la textura y el path completo

Cadena con el nombre sin path de la textura.

Si se intentó exportar algo que no era un bitmap, las cadenas estarán vacias.

Chunk de Objeto Geométrico ( ID_GEOMOBJECT )

Este chunk se compone de los siguientes datos:

DWORD Type , 0 si es un objeto estatico o 1 si es dinamico o animación.

DWORD Properties, propiedades del objeto.

DWORD[3], 3 DWORD reservados para uso futuro

Cabecera del Objeto:

DWORD Tipo de Nodo, en este caso V3DFMT::ID_GEOMOBJECT

UINT Children, numero de hijos exportables de este nodo

UINT Idx, Ãndice del objeto geométrico

Cadena con el nombre del Nodo

Cadena con el nombre del padre del nodo, vacia si no tiene o es Root

V3DFMT::STransform Transforms, 3 matrices (Vertex, Parent2World y World) , si las tres 

matrices estan a identidad, el nodo era NULL al exportar.

CRealColor WireColor, RGBA entre 0.0 y 1.0, detallando el color del wireframe

Si el modo de exportacion no es ONLY_ANIMATION se exportan a continuación los siguientes datos:

CAlignBox bbox, Bounding box del objeto

CSphere bsphere, Bounding sphere del objeto

Int iMultiMtlID, identificador de multi-material de la malla

Y los chunks de Vértices, Caras y Subsets. ( ver documentación de dichos chunks )

Chunk de Vertices ( ID_VERTEXLIST )

Este chunk se compone de:

UINT fvf, formato de los vértices

UINT VertexSize, tamaño del vértice

UINT nVertices, numero de vértices.

Seguido de un volcado de los vértices( VertexSize * nVertices bytes ).

Chunk de Caras ( ID_INDEXLIST )

Este chunk se compone de:

UINT uIndexSize, tamaño en bytes de los indices ( 2 o 4 )

UINT nIndices, numero de indices

Seguido de un volcado de los indices ( uIndexSize * nIndices bytes ).

Chunk de subsets ( ID_SUBSETLIST )

Este chunk se compone de:

UINT uSubsets, numero de subsets

Por cada subset:

UINT firstVertex, Indice de primer vertice del subset

UINT numVertices, Numero de vertices del subset

UINT startIdx, Primer Indice del subset

UINT numPrimitives, Numero de primitivas del subset

UINT subMtlID, Indice del submaterial

Chunk de Malla Animada ( ID_ANIMMESH )

Este chunk se compone de los siguientes datos:

UINT StartFrame, frame inicial de la animación

UINT EndFrame, frame final de la animación

UINT Frames, número de frames de la animación

bool FrameDeReferencia, indica si solo hay un frame porque la animación no cambia.

A continuación, por cada frame aparecen los siguientes datos:

CMatrix4x4 vertexTM, matriz de transformación

CAlignBox bbox, Bounding box

CSphere bsphere, Bounding sphere

DWORD fvf, formato de los vertices

UINT VertexSize, tamaño del vértice

UINT nVertices, número de vértices

seguido por el volcado de los vértices ( VertexSize * nVertices bytes ).

Chunk de Pose Inicial ( ID_POSEINITIAL )

Este chunk es prácticamente idéntico al anterior pero con menos datos.

CMatrix4x4 vertexTM, matriz de transformación

CAlignBox bbox, Bounding box

CSphere bsphere, Bounding sphere

DWORD fvf, formato de los vertices

UINT VertexSize, tamaño del vértice

UINT nVertices, número de vértices

A continuación va el volcado de los vértices ( VertexSize * nVertices bytes ).

Chunk de Objeto Cámara ( ID_CAMERAOBJECT )

Este chunk está organizado de la siguiente manera:

DWORD Tipo de Nodo, en este caso V3DFMT::ID_CAMERAOBJECT

UINT Children, numero de hijos exportables de este nodo

UINT Idx, Ãndice del objeto cámara

Cadena con el nombre del Nodo

Cadena con el nombre del padre del nodo, vacia si no tiene o es Root.

V3DFMT::STransform CamTransform, estructura con 3 CMatrix4x4, las matrices pueden ser identidad en caso de que al exportar el nodo fuera NULL.

V3DFMT::STransform TgtTransform, igual que la anterior pero con las matrices del target. Si la cámara no tiene target, esta información no se graba.

V3DFMT::SCameraSettings CamSettings, estructura datos de la cámara:

    float NearRange;              // Rango cercano

    float FarRange;                // Rango lejano

    float FOV;                        // Angulo (Field Of Vision) del ejeX

    float Roll;                        // Angulo Roll de la cámara

    float TargetDistance;      // Distancia del target

Chunk de Objeto Luz ( ID_LIGHTOBJECT )

DWORD Tipo de Nodo, en este caso V3DFMT::ID_LIGHTOBJECT

UINT Children, numero de hijos exportables de este nodo

UINT Idx, Ãndice del objeto luz

Cadena con el nombre del Nodo

Cadena con el nombre del padre del nodo, vacia si no tiene o es Root.

V3DFMT::STransform LightTransform, estructura con 3 CMatrix4x4, las matrices pueden ser identidad en caso de que al exportar el nodo fuera NULL.

V3DFMT::STransform TgtTransform, igual que la anterior pero con las matrices del target. Si la luz no tiene target, esta información no se graba.

V3DFMT::SLightSettings LightSettings, estructura datos de la luz:

    DWORD Type;                // Tipo de luz

    CRealColor DiffuseColor;    // Especifica el color difusse del material (0 - 1.0)

    float Intensity;            // El multiplicador aplicado al color

    float HotSize;              // El hotspot size en radianes

    float FallSize;            // El HotSpot fallof en radianes

    int UseNearAtten;          // se utiliza la atenuacion near?

    float NearAttenStart;      // Near attenuation start

    float NearAttenEnd;        // Near attenuation end

    int UseFarAtten;            // se utiliza la atenuacion far

    float FarAttenStart;        // far attenuation start

    float FarAttenEnd;          // far attenuation end

    float Aspect;              // Aspect ratio de la luz

    BOOL Overshoot;            // TRUE si la luz soprta overshoot

    BOOL Shadow;                // TRUE si las sombras estan activadas

    BOOL Enabled;              // TRUE si las luz esta ON

    BOOL AffectDiffuse;        // TRUE si affect diffuse is on

    BOOL AffectSpecular;        // TRUE si affect Specular is on

Chunk de Objeto Helper ( ID_HELPEROBJECT )

DWORD Tipo de Nodo, en este caso V3DFMT::ID_HELPEROBJECT

UINT Children, numero de hijos exportables de este nodo

UINT Idx, Ãndice del objeto helper

Cadena con el nombre del Nodo

Cadena con el nombre del padre del nodo, vacia si no tiene o es Root.

V3DFMT::STransform HelperTransform, estructura con 3 CMatrix4x4, las matrices pueden ser identidad en caso de que al exportar el nodo fuera NULL.

Cadena ClassName, cadena que contiene el nombre de la clase de objeto helper.

CVector3 LocalBBMin, Punto mínimo de la Bounding box local.

CVector3 LocalBBMax, Punto máximo de la Bounding box local.

CVector3 WorldBBMin, Punto mínimo de la Bounding box en coordenadas de mundo.

CVector3 WorldBBMax, Punto máximo de la Bounding box en coordenadas de mundo.

Chunk de Objeto Terreno ( ID_TERRAINOBJECT )

V3DFMT::STerrainObject descTerrain, Estructura descriptora de terreno

    CVector3 Origin;            // Origen del terreno

    CVector2 Size;              // Tamaño del terreno

    UINT CellsX;                // Celdas horizontales

    UINT CellsY;                // Celdas verticales (z)

    CVector2 CellSize;          // Tamaño de una celda

UINT uMtlID, ID del material del terreno

A continuación deben venir los chunks de VERTEXLIST, INDEXLIST y/o SUBSETLIST.

Chunk de Octtree ( ID_OCTTREE )

Este chunk contiene los datos que pertenecen a la clase CTreeNode. La clase implementa los metodos de grabación y lectura de sus datos, que son los siguientes:

UINT nChildren, numero de hijos

CAlignBox BBox, Bounding Box

CSPhere BSphere, Bounding Sphere

UINT nSubsets, numero de subsets

Por cada SubSet, se graba un UINT con su indice.

Por cada Hijo, se repite este proceso.

Chunk de Animación de Cámara ( ID_ANIM_CAMERA )

Este chunk se compone de los siguientes datos:

UINT StartFrame, frame inicial de la animación

UINT EndFrame, frame final de la animación

UINT Frames, número de frames de la animación

V3DFMT::SCameraSettings CamSettings, estructura datos de la cámara:

    float NearRange;              // Rango cercano

    float FarRange;                // Rango lejano

    float FOV;                        // Angulo (Field Of Vision) del ejeX

    float Roll;                        // Angulo Roll de la cámara

    float TargetDistance;      // Distancia del target

Para cada frame se exportan los siguientes datos:

V3DFMT::STransform CamTransform, Matrices de transformación de la cámara.

V3DFMT::SQuatTransform AbsQuat, Quaternion absoluto

V3DFMT::SQuatTransform RelQuat, Quaternion relative al primer frame

V3DFMT::STransform TgtTransform, Matrices de transformación del target.

this the text

a bit long he

it is spanish

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...