45 char strMessage[255] = {0};
53 sprintf(strMessage,
"Unable to find the file: %s!", strFileName);
54 cout << strMessage << endl;
68 sprintf(strMessage,
"Unable to load PRIMARY chuck from file: %s!", strFileName);
69 cout << strMessage << endl;
116 newMaterial.
color[0] = 0;newMaterial.
color[1] = 0;newMaterial.
color[2] = 0;
123 unsigned int version = 0;
124 int buffer[50000] = {0};
154 cout <<
"This 3DS file is over version 3 so it may load incorrectly" << endl;
201 pModel->
pObject.push_back(newObject);
251 int buffer[50000] = {0};
323 int buffer[50000] = {0};
447 while(*(pBuffer + index++) != 0) {
454 return strlen(pBuffer) + 1;
499 unsigned short index = 0;
518 for(
int j = 0; j < 4; j++)
588 float fTempY = pObject->
pVerts[i].
y;
595 pObject->
pVerts[i].
z = -fTempY;
608 char strMaterial[255] = {0};
609 int buffer[50000] = {0};
630 if(strcmp(strMaterial, pModel->
pMaterials[i].strName) == 0)
637 if( pModel->
pMaterials[i].texMaps.size() > 0 ) {
666 #define Mag(Normal)(sqrt(Normal.x*Normal.x + Normal.y*Normal.y + Normal.z*Normal.z)) 673 vVector.
x = vPoint1.
x - vPoint2.
x;
674 vVector.
y = vPoint1.
y - vPoint2.
y;
675 vVector.
z = vPoint1.
z - vPoint2.
z;
685 vResult.
x = vVector2.
x + vVector1.
x;
686 vResult.
y = vVector2.
y + vVector1.
y;
687 vResult.
z = vVector2.
z + vVector1.
z;
697 vResult.
x = vVector1.
x / Scaler;
698 vResult.
y = vVector1.
y / Scaler;
699 vResult.
z = vVector1.
z / Scaler;
709 vCross.
x =((vVector1.
y * vVector2.
z) -(vVector1.
z * vVector2.
y));
711 vCross.
y =((vVector1.
z * vVector2.
x) -(vVector1.
x * vVector2.
z));
713 vCross.
z =((vVector1.
x * vVector2.
y) -(vVector1.
y * vVector2.
x));
723 Magnitude =
Mag(vNormal);
725 vNormal.
x /=(float)Magnitude;
726 vNormal.
y /=(float)Magnitude;
727 vNormal.
z /=(float)Magnitude;
742 CVector3 vVector1, vVector2, vNormal, vPoly[3];
778 vVector1 =
Vector(vPoly[0], vPoly[2]);
779 vVector2 =
Vector(vPoly[2], vPoly[1]);
781 vNormal =
Cross(vVector1, vVector2);
782 pTempNormals[i] = vNormal;
785 pNormals[i] = vNormal;
818 delete [] pTempNormals;
void ProcessNextObjectChunk(mo3DSModel *pModel, mo3DSObject *pObject, tChunk *)
#define MAT_DIFFUSE_COLOR
void ComputeNormals(mo3DSModel *pModel)
void ProcessNextChunk(mo3DSModel *pModel, tChunk *)
CVector3 AddVector(CVector3 vVector1, CVector3 vVector2)
void ReadColorChunk(mo3DSMaterialInfo *pMaterial, tChunk *pChunk, int color)
void ReadUVCoordinates(mo3DSObject *pObject, tChunk *)
#define MAT_SHININESS_MAP_CHUNK
#define MAT_OPACITY_MAP_CHUNK
#define MAT_SELF_ILLUM_MAP_CHUNK
void ReadVertices(mo3DSObject *pObject, tChunk *)
#define MAT_TEXTURE_MAP2_CHUNK
#define MAT_TEXTURE_MAP1_CHUNK
#define MAT_AMBIENT_COLOR
void ReadObjectMaterial(mo3DSModel *pModel, mo3DSObject *pObject, tChunk *pPreviousChunk)
#define MAT_SPECULAR_MAP_CHUNK
CVector3 Vector(CVector3 vPoint1, CVector3 vPoint2)
CVector3 Cross(CVector3 vVector1, CVector3 vVector2)
vector< mo3DSObject > pObject
#define MAT_SPECULAR_COLOR
CVector3 Normalize(CVector3 vNormal)
bool Import3DS(mo3DSModel *pModel, char *strFileName)
void ProcessNextMaterialChunk(mo3DSModel *pModel, tChunk *)
#define MAT_REFLECTION_MAP_CHUNK
CVector3 DivideVectorByScaler(CVector3 vVector1, float Scaler)
vector< mo3DSMaterialInfo > pMaterials
void ReadVertexIndices(mo3DSObject *pObject, tChunk *)
#define MAT_BUMP_MAP_CHUNK