void CloudsVisualSystemOscillations::selfGuiEvent(ofxUIEventArgs &e){ // if(e.widget->getName() == "Custom Button"){ // cout << "Button pressed!" << endl; // } //Check if the grid was updated if (e.widget->getName() == "Grid"){ BuildGrid(); } }
Grid::Grid(shared_ptr<RHI_Device> rhiDevice) { m_indexCount = 0; m_terrainHeight = 200; m_terrainWidth = 200; vector<RHI_Vertex_PosCol> vertices; vector<unsigned> indices; BuildGrid(&vertices, &indices); CreateBuffers(vertices, indices, rhiDevice); }
//normal update call void CloudsVisualSystemOscillations::selfUpdate(){ //MA: changed ofGetWidth() to getCanvasWidth() and ofGetHeight() to getCanvasHeight() width = getCanvasWidth(); height = getCanvasHeight(); offsetX += speed; if (renderLines){ mesh.setMode(OF_PRIMITIVE_LINE_LOOP); } else { mesh.setMode(OF_PRIMITIVE_POINTS); } //FIXME: This shouldn't happen unprovoked. It needs to be a callback to the UI. BuildGrid(); getCameraRef().setNearClip(clipPlanes.min); getCameraRef().setFarClip(clipPlanes.max); }
// selfSetup is called when the visual system is first instantiated // This will be called during a "loading" screen, so any big images or // geometry should be loaded here void CloudsVisualSystemOscillations::selfSetup(){ ofEnableAlphaBlending(); ofFloatColor zero = ofFloatColor(0,0,0); for (int i = 0; i < NUMPOINTS ; i++){ mesh.addColor(zero); mesh.addVertex(ofPoint(0,0,0)); } //TODO: Find way to update on every resize offsetX = offsetY = 0; BuildGrid(); crtShader.load(getVisualSystemDataPath() +"shaders/oscillationsShader"); }
//normal update call void CloudsVisualSystemOscillations::selfUpdate(){ width = ofGetWidth(); height = ofGetHeight(); offsetX += speed; float px, py, pz; ofFloatColor zero = invertColorScheme? ofFloatColor(1,1,1,0) : ofFloatColor(0,0,0,0); //neccessary to have two? ofFloatColor c = invertColorScheme? ofFloatColor(0,0,0,0.1) : ofFloatColor(1,1,1,0.2); for (int i = 0; i < NUMPOINTS; i++){ mesh.setColor(i, (i/(NUMPOINTS*1.0))>curveProgress ? zero : c); px = cos((0.7+ 0.09 * 0.3 / width) * i * precision + offsetX); py = sin(i * precision + offsetY); pz = abs((-NUMPOINTS/2.0)+i)/(NUMPOINTS/2.0); mesh.setVertex(i, ofPoint( -curveWidth/2.0 + px * curveWidth, -curveHeight/2.0 + py * curveHeight, -curveDepth/2.0 + curveZPos + pz * curveDepth)); } BuildGrid(); }
// selfSetup is called when the visual system is first instantiated // This will be called during a "loading" screen, so any big images or // geometry should be loaded here void CloudsVisualSystemOscillations::selfSetup(){ NUMPOINTS = 10000; GridPointSpacing = 100; cout<<"made it to selfsetup"<<endl; ofFloatColor zero = ofFloatColor(0,0,0); for (int i = 0; i < NUMPOINTS ; i++){ //the Zpos serves as an index mesh.addVertex(ofPoint(0,0,i)); mesh.addColor(ofFloatColor(1.,1.,1.,1.)); } cout<<"made it past mesh creation loop"<<endl; //TODO: Find way to update on every resize offsetX = offsetY = 0; BuildGrid(); cout<<"made it past build grid"<<endl; loadShader(); cout<<"made it past load shaders"<<endl; }
Simulation::gridXxYx4 Simulation::Grid() { Reset(); BuildGrid(); return grid; }
void CloudsVisualSystemOscillations::selfGuiEvent(ofxUIEventArgs &e){ //Check if the grid was updated if (e.widget->getName() == "Grid"){ BuildGrid(); } }
void Scene::InitScene() { m_Primitive = new Primitive*[500]; int pc = 0; // ground plane m_Primitive[pc] = new PlanePrim( vector3( 0, 1, 0 ), 4.4f ); m_Primitive[pc]->SetName( "plane" ); m_Primitive[pc]->GetMaterial()->SetReflection( 0.0f ); m_Primitive[pc]->GetMaterial()->SetRefraction( 0.0f ); m_Primitive[pc]->GetMaterial()->SetDiffuse( 1.0f ); m_Primitive[pc]->GetMaterial()->SetSpecular( 0.5f ); m_Primitive[pc]->GetMaterial()->SetColor( Color( 0.7f, 0.7f, 0.7f ) ); //m_Primitive[pc]->GetMaterial()->SetColor( Color( 0.4f, 0.3f, 0.3f ) ); m_Primitive[pc]->GetMaterial()->SetTexture( new Texture( "textures/checker.tga" ) ); //m_Primitive[pc]->GetMaterial()->SetUVScale( 0.05f, 0.05f ); m_Primitive[pc]->GetMaterial()->SetUVScale( 0.45f, 0.45f ); // big sphere pc++; //m_Primitive[pc] = new Sphere( vector3( 0, -0.8f, 7 ), 2 ); m_Primitive[pc] = new Sphere( vector3( 0, -0.8f, 7 ), 2 ); m_Primitive[pc]->SetName( "big sphere" ); //m_Primitive[pc]->GetMaterial()->SetReflection( 0.2f ); m_Primitive[pc]->GetMaterial()->SetReflection( 0.05f ); //m_Primitive[pc]->GetMaterial()->SetRefraction( 0.8f ); m_Primitive[pc]->GetMaterial()->SetRefraction( 0.0f ); m_Primitive[pc]->GetMaterial()->SetRefrIndex( 1.3f ); m_Primitive[pc]->GetMaterial()->SetDiffuse( 0.5f ); m_Primitive[pc]->GetMaterial()->SetSpecular( 0.8f ); m_Primitive[pc]->GetMaterial()->SetColor( Color( 2.7f, 2.7f, 3.0f ) ); //m_Primitive[pc]->GetMaterial()->SetColor( Color( 4.0f, 3.7f, 3.7f ) ); //m_Primitive[pc]->GetMaterial()->SetDiffuseRefl( 0.3f ); m_Primitive[1]->GetMaterial()->SetTexture( new Texture( "textures/marble.tga" ) ); m_Primitive[1]->GetMaterial()->SetUVScale( 0.8f, 0.8f ); // small sphere pc++; //m_Primitive[pc] = new Sphere( vector3( -5, -0.8f, 7 ), 2 ); m_Primitive[pc] = new Sphere( vector3( -5, -0.8f, 7 ), 2 ); m_Primitive[pc]->SetName( "small sphere" ); m_Primitive[pc]->GetMaterial()->SetReflection( 0.5f ); m_Primitive[pc]->GetMaterial()->SetRefraction( 0.0f ); m_Primitive[pc]->GetMaterial()->SetRefrIndex( 1.3f ); m_Primitive[pc]->GetMaterial()->SetDiffuse( 0.1f ); m_Primitive[pc]->GetMaterial()->SetColor( Color( 0.7f, 0.7f, 1.0f ) ); m_Primitive[pc]->GetMaterial()->SetDiffuseRefl( 0.6f ); // third sphere pc++; //m_Primitive[pc] = new Sphere( vector3( 5, -0.8f, 7 ), 2 ); m_Primitive[pc] = new Sphere( vector3( 5, -0.8f, 7 ), 0 ); m_Primitive[pc]->SetName( "small sphere" ); m_Primitive[pc]->GetMaterial()->SetReflection( 0.5f ); m_Primitive[pc]->GetMaterial()->SetRefraction( 0.0f ); m_Primitive[pc]->GetMaterial()->SetRefrIndex( 1.3f ); m_Primitive[pc]->GetMaterial()->SetDiffuse( 0.1f ); m_Primitive[pc]->GetMaterial()->SetColor( Color( 0.7f, 0.7f, 1.0f ) ); #if 1 // area light 1 Color lightColor = Color( 0.5f, 0.5f, 0.5f ); float h = 5.0f; pc++; m_Primitive[pc] = new Box( aabb( vector3( -1, h, 4 ), vector3( 2, 0.1f, 2 ) ) ); m_Primitive[pc]->Light( true ); m_Primitive[pc]->GetMaterial()->SetColor( lightColor ); // area light 2 pc++; m_Primitive[pc] = new Box( aabb( vector3( -6, h, 4 ), vector3( 2, 0.1f, 2 ) ) ); m_Primitive[pc]->Light( true ); m_Primitive[pc]->GetMaterial()->SetColor( lightColor ); // area light 3 pc++; m_Primitive[pc] = new Box( aabb( vector3( 4, h, 4 ), vector3( 2, 0.1f, 2 ) ) ); m_Primitive[pc]->Light( true ); m_Primitive[pc]->GetMaterial()->SetColor( lightColor ); #else // light source 1 m_Primitive[pc] = new Sphere( vector3( 0, 5, 5 ), 0.1f ); m_Primitive[pc]->Light( true ); m_Primitive[pc]->GetMaterial()->SetColor( Color( 1, 1, 1 ) ); #endif // back plane pc++; m_Primitive[pc] = new PlanePrim( vector3( 0, 0, -1 ), 10.4f ); m_Primitive[pc]->SetName( "backplane" ); m_Primitive[pc]->GetMaterial()->SetReflection( 0.0f ); m_Primitive[pc]->GetMaterial()->SetRefraction( 0.0f ); m_Primitive[pc]->GetMaterial()->SetDiffuse( 1.7f ); //m_Primitive[pc]->GetMaterial()->SetColor( Color( 0.4f, 0.3f, 0.3f ) ); m_Primitive[pc]->GetMaterial()->SetColor( Color( 0.4f, 0.3f, 0.3f ) ); // Box pc++; m_Primitive[pc] = new Box( aabb( vector3( 4, -2, 0.5f ), vector3( 0.25f, 3.5f, 12 ) ) ); m_Primitive[pc]->GetMaterial()->SetReflection( 0.2f ); m_Primitive[pc]->GetMaterial()->SetRefraction( 0.0f ); m_Primitive[pc]->GetMaterial()->SetDiffuse( 0.1f ); m_Primitive[pc]->GetMaterial()->SetColor( Color( 2.7f, 2.7f, 3.0f ) ); // Box ceiling pc++; m_Primitive[pc] = new Box( aabb( vector3( -15.0f, h+0.1f, 2.5f ), vector3( 30.0f, 0.25f, 30.0f ) ) ); m_Primitive[pc]->SetName( "Box ceiling" ); m_Primitive[pc]->GetMaterial()->SetReflection( 0.00f ); m_Primitive[pc]->GetMaterial()->SetRefraction( 0.0f ); m_Primitive[pc]->GetMaterial()->SetDiffuse( 0.0f ); m_Primitive[pc]->GetMaterial()->SetColor( Color( 12.7f, 12.7f, 13.0f ) ); // ceiling pc++; m_Primitive[pc] = new PlanePrim( vector3( 0, 1, 0 ), 5.0f ); m_Primitive[pc]->SetName( "ceiling" ); m_Primitive[pc]->GetMaterial()->SetReflection( 0.0f ); m_Primitive[pc]->GetMaterial()->SetRefraction( 0.5f ); m_Primitive[pc]->GetMaterial()->SetDiffuse( 0.0f ); m_Primitive[pc]->GetMaterial()->SetColor( Color( 0.4f, 0.3f, 0.3f ) ); m_Primitives = pc+1; // build the regular gird BuildGrid(); }
void Scene::InitScene() { m_Primitive = new Primitive*[25000]; // ground plane m_Primitive[0] = new PlanePrim( vector3( 0, 1, 0 ), 3.0f ); m_Primitive[0]->SetName( "plane" ); m_Primitive[0]->GetMaterial()->SetReflection( 0 ); m_Primitive[0]->GetMaterial()->SetRefraction( 0 ); m_Primitive[0]->GetMaterial()->SetDiffuse( 0.7f ); m_Primitive[0]->GetMaterial()->SetSpecular( 0.5f ); m_Primitive[0]->GetMaterial()->SetColor( Color( 0.4f, 0.3f, 0.3f ) ); // m_Primitive[0]->GetMaterial()->SetDiffuseRefl( 0.05f ); m_Primitive[0]->GetMaterial()->SetTexture( new Texture( "textures/wood.tga" ) ); m_Primitive[0]->GetMaterial()->SetUVScale( 0.05f, 0.05f ); // big sphere m_Primitive[1] = new Sphere( vector3( 0, 0.5f, 4 ), 2 ); m_Primitive[1]->SetName( "big sphere" ); m_Primitive[1]->GetMaterial()->SetReflection( 0.05f ); m_Primitive[1]->GetMaterial()->SetRefraction( 0.0f ); m_Primitive[1]->GetMaterial()->SetDiffuse( 0.5f ); m_Primitive[1]->GetMaterial()->SetSpecular( 0.8f ); m_Primitive[1]->GetMaterial()->SetColor( Color( 0.8f, 0.8f, 0.8f ) ); // m_Primitive[1]->GetMaterial()->SetDiffuseRefl( 0.3f ); m_Primitive[1]->GetMaterial()->SetTexture( new Texture( "textures/marble.tga" ) ); m_Primitive[1]->GetMaterial()->SetUVScale( 0.8f, 0.8f ); // small sphere m_Primitive[2] = new Sphere( vector3( -5, -0.8f, 7 ), 2 ); m_Primitive[2]->SetName( "small sphere" ); m_Primitive[2]->GetMaterial()->SetReflection( 0.2f ); m_Primitive[2]->GetMaterial()->SetRefraction( 0.0f ); m_Primitive[2]->GetMaterial()->SetDiffuse( 0.7f ); m_Primitive[2]->GetMaterial()->SetColor( Color( 0.7f, 0.7f, 1.0f ) ); m_Primitive[2]->GetMaterial()->SetTexture( new Texture( "textures/marble.tga" ) ); m_Primitive[2]->GetMaterial()->SetUVScale( 0.8f, 0.8f ); // m_Primitive[2]->GetMaterial()->SetDiffuseRefl( 0.6f ); // third sphere m_Primitive[3] = new Sphere( vector3( 5, -0.8f, 7 ), 2 ); m_Primitive[3]->SetName( "small sphere" ); m_Primitive[3]->GetMaterial()->SetReflection( 0.6f ); m_Primitive[3]->GetMaterial()->SetRefraction( 0.0f ); m_Primitive[3]->GetMaterial()->SetRefrIndex( 1.3f ); m_Primitive[3]->GetMaterial()->SetDiffuse( 0.4f ); m_Primitive[3]->GetMaterial()->SetColor( Color( 0.8f, 0.8f, 1.0f ) ); m_Primitive[3]->GetMaterial()->SetUVScale( 0.8f, 0.8f ); m_Primitive[3]->GetMaterial()->SetTexture( new Texture( "textures/marble.tga" ) ); // back plane m_Primitive[4] = new PlanePrim( vector3( 0, 0, -1 ), 22.4f ); m_Primitive[4]->SetName( "backplane" ); m_Primitive[4]->GetMaterial()->SetReflection( 0.0f ); m_Primitive[4]->GetMaterial()->SetRefraction( 0.0f ); m_Primitive[4]->GetMaterial()->SetDiffuse( 1.0f ); m_Primitive[4]->GetMaterial()->SetColor( Color( 0.6f, 0.5f, 0.5f ) ); m_Primitive[4]->GetMaterial()->SetTexture( new Texture( "textures/marble.tga" ) ); m_Primitive[4]->GetMaterial()->SetUVScale( 0.1f, 0.1f ); // left plane m_Primitive[5] = new PlanePrim( vector3( 1, 0, 0 ), 10 ); m_Primitive[5]->SetName( "backplane" ); m_Primitive[5]->GetMaterial()->SetReflection( 0.0f ); m_Primitive[5]->GetMaterial()->SetRefraction( 0.0f ); m_Primitive[5]->GetMaterial()->SetDiffuse( 1.0f ); m_Primitive[5]->GetMaterial()->SetColor( Color( 0.5f, 0.5f, 0.6f ) ); m_Primitive[5]->GetMaterial()->SetTexture( new Texture( "textures/marble.tga" ) ); m_Primitive[5]->GetMaterial()->SetUVScale( 0.1f, 0.1f ); // right plane m_Primitive[6] = new PlanePrim( vector3( -1, 0, 0 ), 10 ); m_Primitive[6]->SetName( "backplane" ); m_Primitive[6]->GetMaterial()->SetReflection( 0.0f ); m_Primitive[6]->GetMaterial()->SetRefraction( 0.0f ); m_Primitive[6]->GetMaterial()->SetDiffuse( 1.0f ); m_Primitive[6]->GetMaterial()->SetColor( Color( 0.5f, 0.5f, 0.6f ) ); m_Primitive[6]->GetMaterial()->SetTexture( new Texture( "textures/marble.tga" ) ); m_Primitive[6]->GetMaterial()->SetUVScale( 0.1f, 0.1f ); // ceiling m_Primitive[7] = new PlanePrim( vector3( 0, -1, 0 ), 5.2f ); m_Primitive[7]->SetName( "ceiling" ); m_Primitive[7]->GetMaterial()->SetReflection( 0.0f ); m_Primitive[7]->GetMaterial()->SetRefraction( 0.0f ); m_Primitive[7]->GetMaterial()->SetDiffuse( 1.0f ); m_Primitive[7]->GetMaterial()->SetColor( Color( 0.7f, 0.7f, 0.7f ) ); // m_Primitive[7]->GetMaterial()->SetTexture( new Texture( "textures/wood.tga" ) ); m_Primitive[7]->GetMaterial()->SetUVScale( 0.4f, 0.4f ); // statue m_Primitive[8] = new Box( aabb( vector3( -1.5f, -3, 2.5f ), vector3( 3, 1.5f, 3 ) ) ); m_Primitive[8]->GetMaterial()->SetReflection( 0.0f ); m_Primitive[8]->GetMaterial()->SetRefraction( 0.0f ); m_Primitive[8]->GetMaterial()->SetDiffuse( 1.0f ); m_Primitive[8]->GetMaterial()->SetColor( Color( 0.7f, 0.7f, 0.7f ) ); // m_Primitive[8]->GetMaterial()->SetTexture( new Texture( "textures/marble.tga" ) ); m_Primitive[8]->GetMaterial()->SetUVScale( 0.4f, 0.4f ); #if 0 // area light m_Primitive[9] = new Box( aabb( vector3( -1, 5, 4 ), vector3( 2, 0.1f, 2 ) ) ); m_Primitive[9]->Light( true ); m_Primitive[9]->GetMaterial()->SetColor( Color( 0.7f, 0.7f, 0.7f ) ); m_Primitive[10] = new Box( vector3( -1, 5, -1 ), vector3( 2, 0.1f, 2 ) ); m_Primitive[10]->Light( true ); m_Primitive[10]->GetMaterial()->SetColor( Color( 0.7f, 0.7f, 0.7f ) ); #else // light source 1 m_Primitive[9] = new Sphere( vector3( 4, 4, -4 ), 0.1f ); m_Primitive[9]->Light( true ); m_Primitive[9]->GetMaterial()->SetColor( Color( 0.6f, 0.6f, 0.7f ) ); m_Primitive[10] = new Sphere( vector3( 2, 5, -2 ), 0.1f ); m_Primitive[10]->Light( true ); m_Primitive[10]->GetMaterial()->SetColor( Color( 0.5f, 0.8f, 0.8f ) ); #endif // test mesh m_Primitives = 11; // build the regular gird BuildGrid(); }