SceneDelegate::SceneDelegate(void) {
	const unsigned int numberOfMeshes = 4;

	// use TSL to generate some geometry
	tsl::IndexedMesh meshes[numberOfMeshes];
	tsl::CreateBox( 50, 50, 15, 10, &meshes[0] );
	tsl::CreateCube( 5, 2, &meshes[1] );
	tsl::CreateCone( 3, 5, 10, &meshes[2] );
	tsl::CreateSphere( 3, 10, &meshes[3] );
	bool invertNormals[numberOfMeshes] = {true, false, false, false};

	// convert TSL geometry into framework format
	mesh_.resize(numberOfMeshes);
	for (unsigned int i=0; i<numberOfMeshes; ++i) {
		const unsigned int numberOfTriangles = tsl::ConvertPolygonsToTriangles(&meshes[i]);
		const unsigned int numberOfVertices = meshes[i].vertex_array.size();
		mesh_[i].vertexArray.assign((const Float3*) &meshes[i].vertex_array.front(),
			(const Float3*) &meshes[i].vertex_array.back()+1);
		mesh_[i].normalArray.assign((const Float3*) &meshes[i].normal_array.front(),
			(const Float3*) &meshes[i].normal_array.back()+1);
		mesh_[i].indexArray.assign(&meshes[i].index_array.front(), &meshes[i].index_array.back()+1);
		normalizeMesh(invertNormals[i], &mesh_[i]);
	}

	// initialise shapes
	const unsigned int numberOfShapes = 4;
	const Float3 shapePositions[numberOfShapes] = {
		Float3(0, 0, 7.5f), Float3(-8, 0, 2.5f), Float3(0, 0, 0), Float3(8, 0, 3) };
		shape_.resize(numberOfShapes);
		for (unsigned int i=0; i<numberOfShapes; ++i) {
			shape_[i].meshIndex = i;
			shape_[i].position = shapePositions[i];
		}

		// initialise lights
		const unsigned int numberOfLights = 2;
		light_.resize(numberOfLights);
		for (unsigned int i=0; i<numberOfLights; ++i) {
			light_[i].coneAngle = 1;
			light_[i].direction = Float3(0, 0, -1);
			light_[i].intensity = 1;
		}
		light_[0].intensity = 0.8f;
		light_[1].position = Float3(-10, -10, 1);
		light_[1].direction = Float3(0, 1, 0);
		light_[1].coneAngle = 0.3f;
		light_[1].intensity = 0.5f;

		// provide an opportunity for the animation code to modify shapes and lights
		animate(0);
}
Esempio n. 2
0
void ofApp::drawNormalized(ofxFaceTracker& tracker) {
	ofClear(0, 0);
	ofMesh mesh = tracker.getMeanObjectMesh();
	normalizeMesh(mesh);	
	mesh.draw();
}