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();
    }
}
Exemple #2
0
	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();
}
Exemple #10
0
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();
}