Esempio n. 1
0
void UVViewWindow::DrawScene ()
{
	Model *mdl = editor->GetMdl ();
	glDisable (GL_CULL_FACE);
	glDisable (GL_DEPTH_TEST);
	glColor3ub (255,255,255);

	const float border=0.1f;
	const float scale=2.0f*(1.0f-border);

	glPushMatrix ();
	glScalef (scale, scale, 1.0f);
	glTranslatef (-0.5f,-0.5f,1.0f);

	if (SetupChannelMask ())
	{
		// draw texture on background
		glBegin (GL_QUADS);
			glTexCoord2f(-border, -border);
			glVertex2f  (-border, -border);
			glTexCoord2f (1.0f+border, -border);
			glVertex2f   (1.0f+border, -border);
			glTexCoord2f (1.0f+border,  1.0f+border);
			glVertex2f   (1.0f+border,  1.0f+border);
			glTexCoord2f(-border,  1.0f+border);
			glVertex2f  (-border,  1.0f+border);
		glEnd ();

		DisableChannelMask ();
	}

	// draw (0,0)-(1,1) texture box
	glPolygonMode (GL_FRONT_AND_BACK, GL_LINE);
	glBegin (GL_QUADS);
		glVertex2f (0.0f, 0.0f);
		glVertex2f (1.0f, 0.0f);
		glVertex2f (1.0f, 1.0f);
		glVertex2f (0.0f, 1.0f);
	glEnd ();

	// draw model vertices
	vector <MdlObject*> objs = mdl->GetObjectList ();
	for (unsigned int a=0;a<objs.size();a++) {
		MdlObject *obj = objs[a];
		for (PolyIterator pi(obj);!pi.End();pi.Next()) {
			if (!pi.verts())
				continue;

			glBegin(GL_POLYGON);
			for (unsigned int v=0;v<pi->verts.size();v++) {
				Vertex &vrt = (* pi.verts()) [pi->verts[v]];
				glVertex2f (vrt.tc[0].x, vrt.tc[0].y);
			}
			glEnd ();
		}
	}
	glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);

	glPopMatrix ();
}
Esempio n. 2
0
void MappingUI::mirrorUVs()
{
	Model* mdl = callback->GetMdl ();
	vector<MdlObject*> obj = mdl->GetObjectList ();

	for (unsigned int a=0;a<obj.size();a++)
	{
		MdlObject *o = obj[a];

		for (VertexIterator vi(o); !vi.End(); vi.Next())
			vi->tc[0].x = 1.0f - vi->tc[0].x;
	}
}