bool DsView::loadFile(QString name){
  if(_scene.LoadFile(name.latin1())){
   
   mx=my=mz=0.0;
   int nVerticeTotal = 0;
   _max=0;
   
   for(int i=0;i<_scene.GetMeshCount();i++){
    LMesh * mesh = _scene.GetMesh(i);
    nVerticeTotal =+ mesh->GetVertexCount();
    for(int j=0;j<mesh->GetVertexCount();j++){
     LVector3 v = mesh->GetVertex(j);
     mx =+ v.x;
     my =+ v.y;
     mz =+ v.z;
    }
    
   }
   
   mx = mx/nVerticeTotal;
   #ifdef MYDEBUG
   qDebug(QString::number(mx).latin1());
   qDebug(QString::number(nVerticeTotal).latin1());
   #endif
   my = my/nVerticeTotal;
   #ifdef MYDEBUG
   qDebug(QString::number(my).latin1());
   #endif
   mz = mz/nVerticeTotal;
   #ifdef MYDEBUG
   qDebug(QString::number(mz).latin1());
   #endif
   for(int i=0;i<_scene.GetMeshCount();i++){
    LMesh * mesh = _scene.GetMesh(i);
    for(int j=0;j<mesh->GetVertexCount();j++){
     LVector3 v = mesh->GetVertex(j);
     _max = max(max(max(abs(v.x-mx),abs(v.y-my)),abs(v.z-mz)),_max);
    }
   }
   
   _ortho = _max;
   updateGL();
   
   return true;
  }else{ 
   
   return false;
  }
  
}
void Scene::AddTexturedObject(const std::string fname, Material* material, Shapes &objects, const std::string textName, const Point &ofs) const
{
	size_t index = Shape::GetUniqueID();

	// —читывание меша из файла
	L3DS *l3ds = new L3DS(fname.c_str());
	if(!l3ds || !l3ds->GetMeshCount())
		throw Error("Error in loading extern files");

	for(int i = 0; i<l3ds->GetMeshCount(); i++) {
		LMesh *mesh = l3ds->GetMesh(i);

		Texture *texture = new Texture(textName.c_str());

		for(int j = 0; j<mesh->GetTriangleCount(); j++) {
			LTriangle tr = mesh->GetTriangle(j);

			Point a(mesh->GetVertex(tr.a).x, mesh->GetVertex(tr.a).y, mesh->GetVertex(tr.a).z);
			Point b(mesh->GetVertex(tr.b).x, mesh->GetVertex(tr.b).y, mesh->GetVertex(tr.b).z);
			Point c(mesh->GetVertex(tr.c).x, mesh->GetVertex(tr.c).y, mesh->GetVertex(tr.c).z);	

			TextureCoords tA(mesh->GetUV(tr.a).u, mesh->GetUV(tr.a).v);
			TextureCoords tB(mesh->GetUV(tr.b).u, mesh->GetUV(tr.b).v);
			TextureCoords tC(mesh->GetUV(tr.c).u, mesh->GetUV(tr.c).v);

			tA.InvertU();
			tB.InvertU();
			tC.InvertU();

			tA*=8;
			tB*=8;
			tC*=8;

			if (Triangle::IsValidTrangle(a,b,c))
				objects.push_back(new Triangle(a-ofs, b-ofs, c-ofs, material, index, texture, tA, tB, tC));
		}
	}
}
void Scene::AddObject(const std::string& fname,Material* material, Shapes &objects, const Point &ofs) const
{
	size_t index = Shape::GetUniqueID();

	// —читывание меша из файла
	L3DS *l3ds = new L3DS(fname.c_str());
	if(!l3ds || !l3ds->GetMeshCount())
		throw Error("Error in loading extern files");

	for(int i = 0; i<l3ds->GetMeshCount(); i++) {
		LMesh *mesh = l3ds->GetMesh(i);

		for(int j = 0; j<mesh->GetTriangleCount(); j++) {
			LTriangle tr = mesh->GetTriangle(j);

			Point a(mesh->GetVertex(tr.a).x, mesh->GetVertex(tr.a).y, mesh->GetVertex(tr.a).z);
			Point b(mesh->GetVertex(tr.b).x, mesh->GetVertex(tr.b).y, mesh->GetVertex(tr.b).z);
			Point c(mesh->GetVertex(tr.c).x, mesh->GetVertex(tr.c).y, mesh->GetVertex(tr.c).z);	

			if (Triangle::IsValidTrangle(a,b,c))
				objects.push_back(new Triangle(a-ofs, b-ofs, c-ofs, material, index));
		}
	}
}