void Camera::reset() { setPerspective(); eye.x = (float)w / 2.0f; eye.y = (float)h / 2.0f; float halfFov = PI * fieldOfView / 360.0f; float theTan = tanf(halfFov); eye.z = -eye.y / theTan; center.x = (float)w / 2.0f; center.y = (float)h / 2.0f; center.z = 0; up.x = 0; up.y = -1; up.z = 0; setClippingPlane(); }
void Camera::mouseDragged(ofMouseEventArgs& event) { if(event.button == 0) { tumble(prevMouseX, prevMouseY, event.x, event.y); } else if(event.button == 1) { track(prevMouseX, prevMouseY, event.x, event.y); } else if(event.button == 2) { dolly(prevMouseX, prevMouseY, event.x, event.y); setClippingPlane(); } prevMouseX = event.x; prevMouseY = event.y; mouseClicked = false;; }
ShaderExplodeVolumesAlpha::ShaderExplodeVolumesAlpha(bool withColorPerFace): m_wcpf(withColorPerFace) { m_nameVS = "ShaderExplodeVolumes_vs"; m_nameFS = "ShaderExplodeVolumes_fs"; m_nameGS = "ShaderExplodeVolumes_gs"; std::string glxvert(*GLSLShader::DEFINES_GL); glxvert.append(vertexShaderText); std::string glxgeom; glxgeom.append(GLSLShader::defines_Geom("lines_witw_adjacency", "triangle_strip", 3)); if (withColorPerFace) glxgeom.append("#define WITH_COLORPF 1\n"); glxgeom.append(geometryShaderText); std::string glxfrag(*GLSLShader::DEFINES_GL); glxfrag.append(fragmentShaderText); loadShadersFromMemory(glxvert.c_str(), glxfrag.c_str(), glxgeom.c_str(), GL_LINES_ADJACENCY_EXT , GL_TRIANGLE_STRIP,4); getLocations(); //Default values m_ambient = Geom::Vec4f(0.05f, 0.05f, 0.1f, 0.0f); m_backColor = Geom::Vec4f(1.0f, 0.1f, 0.1f, 0.0f); m_light_pos = Geom::Vec3f(10.0f, 10.0f, 1000.0f); m_plane = Geom::Vec4f(0.0f, 0.0f, 1000.f, 1000000000000000000000000000.0f); m_depthPeeling = 0; setAmbient(m_ambient); setBackColor(m_backColor); setLightPosition(m_light_pos); setClippingPlane(m_plane); setDepthPeeling(m_depthPeeling); }