Esempio n. 1
0
Triangle Mesh::GetTriangle(int index)
{
	Triangle T;
	GetVertexes(index, T.vertexes);
	T.normal.Right(T.vertexes[0], T.vertexes[1], T.vertexes[2]);
	return T;
}
Esempio n. 2
0
Matrix Mesh::GetTangentSpace(int index)
{
	Vector V [3];
	Vector T [3];
	
	GetVertexes(index, V);
	GetTexCoords(index, T);

	Matrix TBN;
	TBN.Tangent(V, T);
	return TBN;
}
Esempio n. 3
0
//_______________________________________________________________________________________________________
   void Draw(void) {

      ShapeHeader();
      GetVertexes();

      GetNormals();	

      fprintf(TIVFile::File, "\tSeparator {\n");

      Draw2File();

      fprintf(TIVFile::File, "\t}\n");

   }   	
Esempio n. 4
0
S3DOPiece* C3DOParser::LoadPiece(S3DModel* model, int pos, S3DOPiece* parent, int* numobj, const std::vector<unsigned char>& fileBuf)
{
	(*numobj)++;

	_3DObject me;
	int curOffset = pos;
	READ_3DOBJECT(me, fileBuf, curOffset);

	std::string s = GET_TEXT(me.OffsetToObjectName, fileBuf, curOffset);
	StringToLowerInPlace(s);

	S3DOPiece* piece = new S3DOPiece();
		piece->name = s;
		piece->parent = parent;
		piece->offset.x =  me.XFromParent * SCALE_FACTOR_3DO;
		piece->offset.y =  me.YFromParent * SCALE_FACTOR_3DO;
		piece->offset.z = -me.ZFromParent * SCALE_FACTOR_3DO;
		piece->goffset = piece->offset + ((parent != NULL)? parent->goffset: ZeroVector);

	GetVertexes(&me, piece, fileBuf);
	GetPrimitives(piece, me.OffsetToPrimitiveArray, me.NumberOfPrimitives, ((pos == 0)? me.SelectionPrimitive: -1), fileBuf);
	piece->CalcNormals();
	piece->SetMinMaxExtends();

	piece->emitPos = ZeroVector;
	piece->emitDir = FwdVector;
	if (piece->vertexPos.size() >= 2) {
		piece->emitPos = piece->vertexPos[0];
		piece->emitDir = piece->vertexPos[1] - piece->vertexPos[0];
	} else 	if (piece->vertexPos.size() == 1) {
		piece->emitDir = piece->vertexPos[0];
	}

	model->mins = float3::min(piece->goffset + piece->mins, model->mins);
	model->maxs = float3::max(piece->goffset + piece->maxs, model->maxs);

	piece->SetCollisionVolume(CollisionVolume("box", piece->maxs - piece->mins, (piece->maxs + piece->mins) * 0.5f));

	if (me.OffsetToChildObject > 0) {
		piece->children.push_back(LoadPiece(model, me.OffsetToChildObject, piece, numobj, fileBuf));
	}

	if (me.OffsetToSiblingObject > 0) {
		parent->children.push_back(LoadPiece(model, me.OffsetToSiblingObject, parent, numobj, fileBuf));
	}

	return piece;
}
Esempio n. 5
0
   void Draw(void) {
      Prep();	
      ShapeHeader();
      GetVertexes();
      GetNormals();	
      NormalCorrection();	

      fprintf(TIVFile::File, "\tSeparator {\n");

      Draw2File();

      for(int i = 1; i < TIVTube::NCDiv; i ++) fprintf(
         TIVFile::File,
         "\t    Rotation { rotation 0 0 1 %f }\n"
         "\t    Separator { USE TubeUpperSector }\n",
         TIVTube::Xa
         );
      fprintf(TIVFile::File, "\t}\n");

   }   	
Esempio n. 6
0
   void Draw(void) {
      TIVTubs::Prep();


      for(int i = 0; i < TIVTube::NDiv; i++) {
         fprintf(TIVFile::File, "\tSeparator {\n");

         ShapeHeader();
         GetVertexes(i);
         GetNormals(i);
         //	    NormalCorrection();


         fprintf(TIVFile::File, "\tSeparator {\n");

         Draw2File();				

         fprintf(TIVFile::File, "\t}\n");
         fprintf(TIVFile::File, "\t}\n");
      } 
   }
Esempio n. 7
0
   void Draw(void) {
      for(int i = 0; i < Nz - 1; i++) {
         if(vDz[i] == vDz[i + 1]) continue;  
         Prep(i);
         GetVertexes(i);
         GetNormals();	
         TIVCone::NormalCorrection();	

         fprintf(TIVFile::File, "\tSeparator {\n");

         Draw2File();

         for(int j = 1; j < TIVTube::NCDiv; j++) fprintf(
            TIVFile::File,
            "\t    Rotation { rotation 0 0 1 %f }\n"
            "\t    Separator { USE TubeUpperSector }\n",
            TIVTube::Xa
            );
         fprintf(TIVFile::File, "\t}\n");

      }

   }
Esempio n. 8
0
void Mesh::GetVertexes(int index, Vector *V)
{
	GetVertexes(faces[index].points, V);
}