/** * @brief cwGeometryItersecter::addTriangles * @param object * * Add the object to the itersector */ void cwGeometryItersecter::addObject(const cwGeometryItersecter::Object &object) { switch(object.type()) { case Triangles: addTriangles(object); break; case Lines: addLines(object); break; default: break; } }
void RenderSky(float x, float z) { glDisable(GL_DEPTH_TEST); // No textures please glBindTexture(GL_TEXTURE_2D,0); // We will make a cone of triangles glBegin(GL_TRIANGLE_FAN); // A dark blue for the high sky. The light colour is defined in magrathea.h glColor3f(0.08984f,0.39453f,0.80859f); glVertex3f(x,400.f,z); glColor3fv(skyColor); // The sin and cos describes a circe surrounding the given position. for (int i = 21; i>=0; i--) glVertex3f(x+1000*sin(i/20.f*3.1415*2),0.f,z+1000*cos(i/20.f*3.1415*2)); glEnd(); // And just for the hell of it, tell me how many triangles this contributes to the total. addTriangles(21); glEnable(GL_DEPTH_TEST); }
void PerlinFace::updateVertices() { const GLubyte SKIN_COLOR[] = {255, 214, 163}; const GLubyte MOUSE_COLOR[] = {200, 159, 108}; const GLubyte HAIR_COLOR[] = {0, 0, 0}; _trianglesCount = 0; _trianglesPos = _triangles; _normalsPos = _normals; _colorsPos = _colors; std::swap(_oldNormals, _newNormals); // Brows addTriangles(BROW_LEFT, BROW_MID_TOP, BROW_MID_BOTTOM, 0, 0, 0); addTriangles(BROW_MID_BOTTOM, BROW_MID_TOP, BROW_RIGHT_TOP, 0, 0, 0); addTriangles(BROW_MID_BOTTOM, BROW_RIGHT_TOP, BROW_RIGHT_BOTTOM, 0, 0, 0); // Forehead addTriangles(FOREHEAD_LEFT, FOREHEAD_RIGHT, BROW_MID_TOP, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(FOREHEAD_LEFT, BROW_MID_TOP, BROW_LEFT, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(FOREHEAD_RIGHT, BROW_RIGHT_TOP, BROW_MID_TOP, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addJunction(FOREHEAD_RIGHT, BROW_RIGHT_TOP, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addJunction(BROW_RIGHT_TOP, BROW_RIGHT_BOTTOM, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); // Eyes addTriangles(BROW_LEFT, BROW_MID_BOTTOM, EYE_LEFT, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(EYE_LEFT, BROW_MID_BOTTOM, EYE_MID_TOP, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(BROW_MID_BOTTOM, BROW_RIGHT_BOTTOM, EYE_MID_TOP, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(EYE_MID_TOP, BROW_RIGHT_BOTTOM, EYE_RIGHT, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addJunction(BROW_RIGHT_BOTTOM, EYE_RIGHT, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); // Temp eye draw addTriangles(EYE_LEFT, EYE_MID_TOP, EYEBALL_MID, 255, 255, 255); addTriangles(EYE_MID_TOP, EYE_RIGHT, EYEBALL_MID, 255, 255, 255); addTriangles(EYE_RIGHT, EYE_MID_BOTTOM, EYEBALL_MID, 255, 255, 255); addTriangles(EYE_MID_BOTTOM, EYE_LEFT, EYEBALL_MID, 255, 255, 255); // Chick addTriangles(EAR_CENTER, FOREHEAD_LEFT, BROW_LEFT, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(BROW_LEFT, CHICK_LEFT, EAR_CENTER, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(BROW_LEFT, EYE_LEFT, CHICK_LEFT, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(EYE_LEFT, EYE_MID_BOTTOM, CHICK_LEFT, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(EYE_MID_BOTTOM, EYE_RIGHT, NOSTRIL_LEFT, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(CHICK_LEFT, EYE_MID_BOTTOM, NOSTRIL_LEFT, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(CHICK_LEFT, NOSTRIL_LEFT, CHICK_MID, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(CHICK_MID, NOSTRIL_LEFT, MOUTH_TOP_OUT, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(CHICK_MID, MOUTH_TOP_OUT, MOUTH_MID_OUT, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(CHICK_MID, MOUTH_MID_OUT, CHIN_TIP, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(CHICK_MID, CHIN_TIP, CHICK_RIGHT, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(CHICK_RIGHT, CHIN_TIP, CHIN_BOTTOM, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(CHICK_LEFT, CHICK_MID, CHICK_RIGHT, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(EAR_CENTER, CHICK_LEFT, JAW_LEFT, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(JAW_LEFT, CHICK_LEFT, CHICK_RIGHT, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); // Nose addTriangles(EYE_RIGHT, NOSE_LEFT, NOSTRIL_LEFT, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(EYE_RIGHT, NOSE_RIGHT, NOSE_LEFT, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(NOSE_LEFT, NOSE_RIGHT, NOSTRIL_TOP, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addJunction(EYE_RIGHT, NOSE_RIGHT, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addJunction(NOSE_RIGHT, NOSTRIL_TOP, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(NOSTRIL_LEFT, NOSE_LEFT, NOSTRIL_TOP, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(NOSTRIL_LEFT, NOSTRIL_TOP, NOSTRIL_BOTTOM, 0, 0, 0); addJunction(NOSTRIL_TOP, NOSTRIL_BOTTOM, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(NOSTRIL_LEFT, NOSTRIL_BOTTOM, MOUTH_TOP_OUT, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addJunction(NOSTRIL_BOTTOM, MOUTH_TOP_OUT, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); // Mouth addTriangles(MOUTH_TOP_OUT, MOUTH_TOP_IN, MOUTH_MID_OUT, MOUSE_COLOR[0], MOUSE_COLOR[1], MOUSE_COLOR[2]); addTriangles(MOUTH_TOP_IN, MOUTH_MID_IN, MOUTH_MID_OUT, MOUSE_COLOR[0], MOUSE_COLOR[1], MOUSE_COLOR[2]); addTriangles(MOUTH_MID_OUT, MOUTH_MID_IN, MOUTH_BOTTOM_OUT, MOUSE_COLOR[0], MOUSE_COLOR[1], MOUSE_COLOR[2]); addTriangles(MOUTH_MID_IN, MOUTH_BOTTOM_IN, MOUTH_BOTTOM_OUT, MOUSE_COLOR[0], MOUSE_COLOR[1], MOUSE_COLOR[2]); addJunction(MOUTH_TOP_OUT, MOUTH_TOP_IN, MOUSE_COLOR[0], MOUSE_COLOR[1], MOUSE_COLOR[2]); addJunction(MOUTH_BOTTOM_OUT, MOUTH_BOTTOM_IN, MOUSE_COLOR[0], MOUSE_COLOR[1], MOUSE_COLOR[2]); addTriangles(MOUTH_MID_IN, MOUTH_TOP_IN, MOUTH_BOTTOM_IN, 0, 0, 0); addJunction(MOUTH_TOP_IN, MOUTH_BOTTOM_IN, 0, 0, 0); // Chin addTriangles(MOUTH_MID_OUT, MOUTH_BOTTOM_OUT, CHIN_IN, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(MOUTH_MID_OUT, CHIN_IN, CHIN_TIP, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addJunction(MOUTH_BOTTOM_OUT, CHIN_IN, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addJunction(CHIN_IN, CHIN_TIP, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addJunction(CHIN_TIP, CHIN_BOTTOM, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); // Jaw addTriangles(JAW_BOTTOM_LEFT, JAW_LEFT, CHICK_RIGHT, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(JAW_LEFT, JAW_BOTTOM_LEFT, EAR_CENTER, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(JAW_BOTTOM_LEFT, CHICK_RIGHT, CHIN_BOTTOM, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(JAW_BOTTOM_LEFT, CHIN_BOTTOM, JAW_BOTTOM, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addJunction(CHIN_BOTTOM, JAW_BOTTOM, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); // Ear addTriangles(FOREHEAD_LEFT, EAR_CENTER, EAR_TOP_RIGHT, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(JAW_BOTTOM_LEFT, EAR_BOTTOM_RIGHT, EAR_CENTER, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(EAR_BOTTOM_RIGHT, EAR_TOP_RIGHT, EAR_CENTER, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(EAR_BOTTOM_RIGHT, EAR_BOTTOM_LEFT, EAR_TOP_LEFT, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(EAR_TOP_LEFT, EAR_TOP_MID, EAR_TOP_RIGHT, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(EAR_TOP_RIGHT, EAR_BOTTOM_RIGHT, EAR_TOP_LEFT, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(EAR_TOP_RIGHT, EAR_TOP_MID, EAR_BACK, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(EAR_TOP_LEFT, EAR_TOP_MID, EAR_BACK, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(EAR_BOTTOM_LEFT, EAR_TOP_LEFT, EAR_BACK, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); addTriangles(EAR_BOTTOM_LEFT, EAR_BOTTOM_RIGHT, EAR_BACK, SKIN_COLOR[0], SKIN_COLOR[1], SKIN_COLOR[2]); // hair addTriangles(FOREHEAD_RIGHT, FOREHEAD_LEFT, HAIR_1, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addTriangles(FOREHEAD_LEFT, HAIR_2, HAIR_1, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addTriangles(FOREHEAD_LEFT, HAIR_3, HAIR_2, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addTriangles(FOREHEAD_LEFT, HAIR_SIDE_1, HAIR_3, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addTriangles(FOREHEAD_LEFT, HAIR_SIDE_2, HAIR_SIDE_1, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addTriangles(FOREHEAD_LEFT, HAIR_SIDE_3, HAIR_SIDE_2, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addTriangles(FOREHEAD_LEFT, EAR_TOP_RIGHT, HAIR_SIDE_3, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addTriangles(EAR_TOP_RIGHT, HAIR_SIDE_4, HAIR_SIDE_3, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addTriangles(EAR_TOP_RIGHT, EAR_BOTTOM_RIGHT, HAIR_SIDE_4, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addTriangles(EAR_BOTTOM_RIGHT, HAIR_SIDE_5, HAIR_SIDE_4, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addTriangles(EAR_BOTTOM_RIGHT, JAW_BOTTOM_LEFT, HAIR_SIDE_5, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addTriangles(HAIR_3, HAIR_SIDE_1, HAIR_4, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addTriangles(HAIR_SIDE_1, HAIR_SIDE_2, HAIR_4, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addTriangles(HAIR_SIDE_2, HAIR_5, HAIR_4, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addTriangles(HAIR_SIDE_2, HAIR_6, HAIR_5, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addTriangles(HAIR_SIDE_2, HAIR_SIDE_3, HAIR_6, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addTriangles(HAIR_SIDE_3, HAIR_7, HAIR_6, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addTriangles(HAIR_SIDE_3, HAIR_SIDE_4, HAIR_7, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addTriangles(HAIR_SIDE_4, HAIR_8, HAIR_7, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addTriangles(HAIR_SIDE_4, HAIR_SIDE_5, HAIR_8, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addTriangles(HAIR_SIDE_5, HAIR_9, HAIR_8, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addTriangles(HAIR_SIDE_5, JAW_BOTTOM, HAIR_9, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addTriangles(HAIR_SIDE_5, JAW_BOTTOM, JAW_BOTTOM_LEFT, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addJunction(FOREHEAD_RIGHT, HAIR_1, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addJunction(HAIR_1, HAIR_2, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addJunction(HAIR_2, HAIR_3, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addJunction(HAIR_3, HAIR_4, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addJunction(HAIR_4, HAIR_5, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addJunction(HAIR_5, HAIR_6, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addJunction(HAIR_6, HAIR_7, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addJunction(HAIR_7, HAIR_8, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addJunction(HAIR_8, HAIR_9, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); addJunction(HAIR_9, JAW_BOTTOM, HAIR_COLOR[0], HAIR_COLOR[1], HAIR_COLOR[2]); // Now that we have summed up the normals for each point, let's normalize them. for (int i = 0; i < _vertexNumber; ++i) { _newNormals[i] = glm::normalize(_newNormals[i]); } }
CardBuilder::CardBuilder(const CardSpecifications& specifications) : _specifications(specifications) { float w = _specifications.width() / 2.0f; float h = _specifications.height() / 2.0f; float cr = _specifications.cornerRadius(); int cd = _specifications.cornerDetail(); int vertexCount = 8 * cd + 16; _vertices.reserve(vertexCount * 3); _textureCoordinates.reserve(vertexCount * 2); // upper left corner addVertex(cr - w, h - cr, cr / _specifications.width(), cr / _specifications.height()); addVertex(-w, h - cr, 0.0f, cr / _specifications.height()); float theta = 90.0f / float(cd); for (int i = 1; i < cd; ++i) { float radians = float(i) * theta * (3.1415926535898f / 180.0f); float dx = cr * cos(radians); float dy = cr * sin(radians); addVertex(cr - w - dx, h - cr + dy, (cr - dx) / _specifications.width(), (cr - dy) / _specifications.height()); } addVertex(cr - w, h, cr / _specifications.width(), 0.0f); // upper right corner addVertex(-_vertices[0], _vertices[1], 1.0f - _textureCoordinates[0], _textureCoordinates[1]); int previousVertex = _vertices.size() - 6; int previousTexture = _textureCoordinates.size() - 4; int mirrorVertex = _vertices.size() - 12; int mirrorTexture = _textureCoordinates.size() - 8; for (int i = 0; i <= cd; ++i) { addVertex(-_vertices[mirrorVertex], _vertices[mirrorVertex + 1], 1.0f - _textureCoordinates[mirrorTexture], _textureCoordinates[mirrorTexture + 1]); mirrorVertex -= 6; mirrorTexture -= 4; } // lower right corner addVertex(_vertices[previousVertex], -_vertices[previousVertex + 1], _textureCoordinates[previousTexture], 1.0f - _textureCoordinates[previousTexture + 1]); previousVertex = _vertices.size() - 6; previousTexture = _textureCoordinates.size() - 4; mirrorVertex = _vertices.size() - 12; mirrorTexture = _textureCoordinates.size() - 8; for (int i = 0; i <= cd; ++i) { addVertex(_vertices[mirrorVertex], -_vertices[mirrorVertex + 1], _textureCoordinates[mirrorTexture], 1.0f - _textureCoordinates[mirrorTexture + 1]); mirrorVertex -= 6; mirrorTexture -= 4; } // lower left corner addVertex(-_vertices[previousVertex], _vertices[previousVertex + 1], 1.0f - _textureCoordinates[previousTexture], _textureCoordinates[previousTexture + 1]); previousVertex = _vertices.size() - 6; previousTexture = _textureCoordinates.size() - 4; mirrorVertex = _vertices.size() - 12; mirrorTexture = _textureCoordinates.size() - 8; for (int i = 0; i <= cd; ++i) { addVertex(-_vertices[mirrorVertex], _vertices[mirrorVertex + 1], 1.0f - _textureCoordinates[mirrorTexture], _textureCoordinates[mirrorTexture + 1]); mirrorVertex -= 6; mirrorTexture -= 4; } // texture correction for (int i = 0; i < vertexCount; ++i) { int index = i * 2 + 1; _textureCoordinates[index] = 1.0f - _textureCoordinates[index]; } // index creation int triangleCount = 16 * cd + 28; int middleTriangleCount = 8 * cd + 8; int topTriangleCount = (triangleCount - middleTriangleCount) / 2; _topIndices.reserve(topTriangleCount * 3); _middleIndices.reserve(middleTriangleCount * 3); _bottomIndices.reserve(topTriangleCount * 3); GLushort corners[5]; int cornerSize = 2 * cd + 4; for (int i = 0; i < 5; ++i) corners[i] = cornerSize * i; for (int i = 0; i < 4; ++i) { int i4 = (i + 1) % 4; addQuads(corners[i], corners[i + 1] - 2, corners[i4] + 2, corners[i4]); addQuad(corners[i + 1] - 2, corners[i + 1] - 1, corners[i4] + 3, corners[i4] + 2); for (int j = 0; j < cd; ++j) { int k = 2 * (j + 1); addTriangles(corners[i], corners[i] + k, corners[i] + k + 2); addQuad(corners[i] + k, corners[i] + k + 1, corners[i] + k + 3, corners[i] + k + 2); } } addQuads(corners[0], corners[1], corners[2], corners[3]); }
void CardBuilder::addQuads(GLushort a, GLushort b, GLushort c, GLushort d) { addTriangles(a, b, c); addTriangles(a, c, d); }
void testApp::update() { kinect.update(); if(!panel.getValueB("pause") && kinect.isFrameNew()) { zCutoff = panel.getValueF("zCutoff"); float fovWidth = panel.getValueF("fovWidth"); float fovHeight = panel.getValueF("fovHeight"); int left = Xres * (1 - fovWidth) / 2; int top = Yres * (1 - fovHeight) / 2; int right = left + Xres * fovWidth; int bottom = top + Yres * fovHeight; roiStart = Point2d(left, top); roiEnd = Point2d(right, bottom); ofVec3f nw = ConvertProjectiveToRealWorld(roiStart.x, roiStart.y, zCutoff); ofVec3f se = ConvertProjectiveToRealWorld(roiEnd.x - 1, roiEnd.y - 1, zCutoff); float width = (se - nw).x; float height = (se - nw).y; globalScale = panel.getValueF("stlSize") / MAX(width, height); backOffset = panel.getValueF("backOffset") / globalScale; cutoffKinect(); if(panel.getValueB("useSmoothing")) { smoothKinect(); } if(panel.getValueB("useWatermark")) { startTimer(); injectWatermark(); injectWatermarkTime = stopTimer(); } startTimer(); updateSurface(); updateSurfaceTime = stopTimer(); bool exportStl = panel.getValueB("exportStl"); bool useRandomExport = panel.getValueB("useRandomExport"); startTimer(); if((exportStl && useRandomExport) || panel.getValueB("useRandom")) { updateTrianglesRandom(); } else if(panel.getValueB("useSimplify")) { updateTrianglesSimplify(); } else { updateTriangles(); } calculateNormals(triangles, normals); updateTrianglesTime = stopTimer(); startTimer(); updateBack(); updateBackTime = stopTimer(); startTimer(); postProcess(); postProcessTime = stopTimer(); if(exportStl) { string pocoTime = Poco::DateTimeFormatter::format(Poco::LocalDateTime(), "%Y-%m-%d at %H.%M.%S"); ofxSTLExporter exporter; exporter.beginModel("Kinect Export"); addTriangles(exporter, triangles, normals); addTriangles(exporter, backTriangles, backNormals); exporter.saveModel("Kinect Export " + pocoTime + ".stl"); #ifdef USE_REPLICATORG if(printer.isConnected()) { printer.printToFile("/home/matt/MakerBot/repg_workspace/ReplicatorG/examples/Snake.stl", "/home/matt/Desktop/snake.s3g"); } #endif panel.setValueB("exportStl", false); } } float diffuse = panel.getValueF("diffuseAmount"); redLight.setDiffuseColor(ofColor(diffuse / 2, diffuse / 2, 0)); greenLight.setDiffuseColor(ofColor(0, diffuse / 2, diffuse / 2)); blueLight.setDiffuseColor(ofColor(diffuse / 2, 0, diffuse / 2)); float ambient = 255 - diffuse; redLight.setAmbientColor(ofColor(ambient / 2, ambient / 2, 0)); greenLight.setAmbientColor(ofColor(0, ambient / 2, ambient / 2)); blueLight.setAmbientColor(ofColor(ambient / 2, 0, ambient / 2)); float lightY = ofGetHeight() / 2 + panel.getValueF("lightY"); float lightZ = panel.getValueF("lightZ"); float lightDistance = panel.getValueF("lightDistance"); float lightRotation = panel.getValueF("lightRotation"); redLight.setPosition(ofGetWidth() / 2 + cos(lightRotation + 0 * TWO_PI / 3) * lightDistance, lightY + sin(lightRotation + 0 * TWO_PI / 3) * lightDistance, lightZ); greenLight.setPosition(ofGetWidth() / 2 + cos(lightRotation + 1 * TWO_PI / 3) * lightDistance, lightY + sin(lightRotation + 1 * TWO_PI / 3) * lightDistance, lightZ); blueLight.setPosition(ofGetWidth() / 2 + cos(lightRotation + 2 * TWO_PI / 3) * lightDistance, lightY + sin(lightRotation + 2 * TWO_PI / 3) * lightDistance, lightZ); }