Exemplo n.º 1
0
void cApp::keyDown( KeyEvent event ){
    switch( event.getChar() ){
        case 'S': mExp.startRender(); break;
        case 's': mExp.snapShot(); break;
        case ' ': bStart = !bStart; break;
    }
}
Exemplo n.º 2
0
Arquivo: cApp.cpp Projeto: stdmtb/n9
void cApp::setup(){
    
    int w = win_w*master_scale;
    int h = win_h*master_scale;
    
    setFrameRate( fps );
    setWindowSize( w*0.5, h*0.5 );
    setWindowPos( 0, 0 );
    mExp.setup( w, h, 0, 3000, GL_RGB, mt::getRenderPath(), 0);
    
    CameraPersp cam( w, h, 54.4f, 1, 10000 );
    cam.lookAt( Vec3f(0,0, 1300), Vec3f(0,0,0) );
    cam.setCenterOfInterestPoint( Vec3f(0,0,0) );
    camUi.setCurrentCam( cam );

    assetDir = mt::getAssetPath();
    simDir.push_back( assetDir/"sim"/"red_particle3"/"rpc2");
    
    int nSim = simDir.size();
    vbo.assign( nSim, VboSet() );
    
#ifdef RENDER
    mExp.startRender();
#endif
}
Exemplo n.º 3
0
void cApp::keyDown( KeyEvent event ) {
    char key = event.getChar();
    switch (key) {
        case 'S': mExp.startRender();  break;
        case 'T': mExp.stopRender();  break;
        case 's': mExp.snapShot();  break;
        case ' ': bStart = !bStart; break;
        case 'c': mt::printCamera( camUi.getCamera() ); break;
    }
}
Exemplo n.º 4
0
Arquivo: cApp.cpp Projeto: stdmtb/n9
void cApp::keyDown( KeyEvent event ){
    switch (event.getChar()) {
        case '1': camUi.setCurrentCam(cams[0]);     break;
        case '2': camUi.setCurrentCam(cams[1]);     break;
        case '3': camUi.setCurrentCam(cams[2]);     break;
        case '4': camUi.setCurrentCam(cams[3]);     break;
        case '5': camUi.setCurrentCam(cams[4]);     break;
        case 'R': mExp.startRender();               break;
        case 'T': mExp.stopRender();                break;
        case 'f': frame+=100;                       break;
        case '0': frame=0; simDirNum++;             break;
    }
}
Exemplo n.º 5
0
Arquivo: cApp.cpp Projeto: stdmtb/n9
void cApp::setup(){
    setWindowPos( 0, 0 );
    setWindowSize( mW*mScale, mH*mScale );
    setFrameRate(25);
    assetDir = mt::getAssetPath();
    
    mExp.setup( mW, mH, 0, 2999, GL_RGB, mt::getRenderPath(), 0 );
    
    setupFromBlender();
    
#ifdef RENDER
    mExp.startRender();
#endif

}
Exemplo n.º 6
0
Arquivo: cApp.cpp Projeto: stdmtb/n9
void cApp::setup(){
    
    setWindowPos( 0, 0 );
    setWindowSize( mW*0.5, mH*0.5 );
    mExp.setup( mW*mScale, mH*mScale,0, 2999, GL_RGB, mt::getRenderPath() );
    
    mPln.setOctaves(4);
    mPln.setSeed(1332);

    randSeed( mt::getSeed() );
    
    int count = 0;
    for( int i=0; i<100; i++){
        StrangeAgent sa;
        sa.setRandom();
        mSAs.push_back( sa );

        for(int j=0; j<sa.points.size(); j++){
            mPlnPts.push_back( Vec3f(count*scale,0,0) );
            count++;
        }
    }
    
    total = count;
    
    if( 1 ){
        CameraPersp cam;
        cam.setNearClip(0.1);
        cam.setFarClip(1000000);
        cam.setFov(60);
        cam.setEyePoint( Vec3f(0,0,-30 ) );
        cam.setCenterOfInterestPoint( Vec3f(0,0,0) );
        cam.setAspectRatio( (float)mW/mH );
        mCamUi.setCurrentCam(cam);
    }else{
        ortho.setNearClip(0.1);
        ortho.setFarClip(1000000);
        ortho.setEyePoint( Vec3f(0,0,-7 ) );
        ortho.setCenterOfInterestPoint( Vec3f(0,0,0) );
        ortho.setAspectRatio( (float)mW/mH );
    }
    
#ifdef RENDER
    mExp.startRender();
#endif
}
Exemplo n.º 7
0
Arquivo: cApp.cpp Projeto: stdmtb/n9
void cApp::setup(){
    
    setFrameRate( 25 );
    setWindowSize( win_w*0.5, win_h*0.5 );
    setWindowPos( 0, 0 );
    mExp.setup( win_w, win_h, 0, 3000, GL_RGB, mt::getRenderPath(), 0);
    
    assetDir = mt::getAssetPath();
    mt::loadColorSample("img/colorSample/n5pickCol_2.png", mColorSample1 );
    mt::loadColorSample("img/colorSample/n5pickCol_3.png", mColorSample2 );
    
    guide.load( assetDir/"svg"/"n5_guide.svg" );
    
#ifdef RENDER
    mExp.startRender();
#endif
}
Exemplo n.º 8
0
void cApp::setup(){
    setWindowPos( 0, 0 );
    
    float w = 1920;
    float h = 1080*3;
    
    setWindowSize( w*0.2, h*0.2 );
    mExp.setup( w, h, 0, 550-1, GL_RGB, mt::getRenderPath(), 0);
    
    cam = CameraPersp(w, h, 55.0f, 0.1, 1000000 );
    
    if(0){
        cam.lookAt( vec3(0,0,800), vec3(0,0,0) );
        cam.setLensShift( 0,0 );
    }else{
        cam.setNearClip(0.100000);
        cam.setFarClip(1000000.000000);
        cam.setAspectRatio(0.592593);
        cam.setFov(55.000000);
        cam.setEyePoint(vec3(326.924622,-381.081604,259.431519));
        cam.setWorldUp(vec3(0.000000,1.000000,0.000000));
        cam.setLensShift(vec2(0.000000,0.000000));
        cam.setViewDirection(vec3(-0.578462,0.674288,-0.459040));
        cam.lookAt(vec3(326.924622,-381.081604,259.431519)+vec3(-0.578462,0.674288,-0.459040));
    }
    
    camUi.setCamera( &cam );
    
    mPln.setSeed(123);
    mPln.setOctaves(4);
    
    for( int i=0; i<6; i++){
        Ramses r(eSimType,i);
        rms.push_back( r );
    }

    makeGui();
    
#ifdef RENDER
    mExp.startRender();
#endif
    
}
Exemplo n.º 9
0
Arquivo: cApp.cpp Projeto: stdmtb/n9
void cApp::setup(){
    setFrameRate( 25 );
    setWindowPos( 0, 0 );
    setWindowSize( mW*mScale, mH*mScale );
    mExp.setup( mW*mScale, mH*mScale, 0, 2999, GL_RGB, mt::getRenderPath() );
    
    mPln.setOctaves( 3 );
    mPln.setSeed( 551 );
    
    mt::loadColorSample("img/Mx80_2_org_B.jpg", mColorSample1 );
    mt::loadColorSample("img/Mx80_2_org_B.jpg", mColorSample2 );

    
    {
        // Audio Setup
        auto ctx = audio::Context::master();
        audio::DeviceRef device = audio::Device::getDefaultOutput();
        audio::Device::Format format;
        format.sampleRate( 192000 );
        format.framesPerBlock( mFpb );
        device->updateFormat( format );
        
        cout << "--- Audio Setting --- " << endl;
        cout << "device name      : " << device->getName() << endl;
        cout << "Sample Rate      : " << ctx->getSampleRate() << endl;
        cout << "frames per Block : " << ctx->getFramesPerBlock() << endl;

        mWaves.assign( 7, Wave() );
        
        for( int i=0; i<mWaves.size(); i++ ){
            mWaves[i].create( "snd/test/3s1e_192k_" + toString(i+1)+ ".wav" );
        }

        ctx->enable();
    }
    
    
#ifdef RENDER
    mExp.startRender();
#endif

}
Exemplo n.º 10
0
Arquivo: cApp.cpp Projeto: stdmtb/n9
void cApp::keyDown( KeyEvent event ){

    switch (event.getChar()) {
        
        case 'R':
            mExp.startRender();
            break;

        case 'T':
            mExp.stopRender();
            break;

        case 'f':
            frame+=100;
            break;
            
        default:
            break;
    }
}
Exemplo n.º 11
0
void cApp::keyDown( KeyEvent event ) {
    char key = event.getChar();
    switch (key) {
        case 'S':
            mExp.snapShot();
            break;
        
        case 'R':
            mExp.startRender();
            break;

         case 'T':
            mExp.stopRender();
            break;
            
        case ' ':
            bStart = !bStart;
            break;
    }
}
Exemplo n.º 12
0
void cApp::setup(){
    
    mPln.setSeed( 345 );
    mPln.setOctaves( 4 );
    
    openDir();
    
    fs::path path = dir/("f_00000.png");
    sur = Surface8u( loadImage( path) );
    int w = sur.getWidth();
    int h = sur.getHeight();
    
    pcam = CameraPersp(w, h, 50, 1, 10000);
    camUi.setCamera( &pcam );
    mExp.setup( w, h, 0, 3000-1, GL_RGB, mt::getRenderPath(), 0 );
    setWindowSize( w*0.5, h*0.5 );
    setWindowPos(0, 0);
    
    
#ifdef RENDER
    mExp.startRender();
#endif
}
Exemplo n.º 13
0
void cApp::setup(){
    setWindowPos( 0, 0 );

    float w = 1920;
    float h = 1080;
    
    setWindowSize( w*0.6, h*0.6 );
    mExp.setup( w, h, 0, 1000, GL_RGB, mt::getRenderPath(), 0 );
    
    cams.assign(6, CameraPersp());
    camUis.assign(6, CameraUi());
    
    for( int i=0; i<6; i++){
        cams[i] = CameraPersp(w, h, 55.0f, 1, 100000 );
        cams[i].lookAt( eye, vec3(0,0,0) );
        
        int col = i%3;
        int row = i/3;
        
        cams[i].setLensShift( -0.666+0.666*col, -0.5+row*1.0);
        camUis[i].setCamera( &cams[i] );
    }
    
    mPln.setSeed(123);
    mPln.setOctaves(4);
    
    for( int i=0; i<6; i++){
        rms.push_back( Ramses(simType,i) );
    }
    makeGui();
    
    
#ifdef RENDER
    mExp.startRender();
#endif
    
}
Exemplo n.º 14
0
void cApp::makeGui(){
    gui = params::InterfaceGl::create( getWindow(), "Ramses", vec2(300, getWindowHeight()) );
    gui->setOptions( "", "position=`0 0` valueswidth=100" );
    
    function<void(void)> update = [&](){
        for( int i=0; i<rms.size(); i++){
            rms[i].updateVbo(eye);
        }
    };
    
    
    function<void(void)> sx = [this](){
        saveXml();
    };
    
    function<void(void)> ld = [this](){
        loadXml();
        for( int i=0; i<rms.size(); i++){
            rms[i].eSimType = simType;
            rms[i].loadSimData(frame);
            rms[i].updateVbo(eye);
        }
    };

    function<void(void)> ren = [this](){
        bStart = true;
        mExp.startRender();
    };
    
    gui->addText( "main" );
    gui->addParam("start", &bStart );
    gui->addParam("frame", &frame ).updateFn(update);
    gui->addParam("ortho", &bOrtho );
    gui->addParam("xyz global scale", &Ramses::globalScale ).step(0.01).updateFn(update);
    //gui->addParam("r(x) resolution", &Ramses::boxelx, true );
    //gui->addParam("theta(y) resolution", &Ramses::boxely, true );
    gui->addButton("save XML", sx );
    gui->addButton("load XML", ld );
    gui->addButton("start Render", ren );

    gui->addSeparator();
    
    for( int i=0; i<6; i++){
        string p = to_string(simType) + "_"+  Ramses::prm[i];
        
        function<void(void)> up = [i, this](){
            rms[i].updateVbo(eye);
        };
        
        function<void(void)> up2 = [i, this](){
            rms[i].loadSimData(this->frame);
            rms[i].updateVbo(eye);
        };
        
        gui->addParam(p+" show", &rms[i].bShow ).group(p).updateFn(up2);
        //gui->addParam(p+" polar coordinate", &rms[i].bPolar ).group(p).updateFn(up2);
        
        gui->addParam(p+" Auto Min Max", &rms[i].bAutoMinMax ).group(p).updateFn(up);
        gui->addParam(p+" in min", &rms[i].in_min).step(0.05f).group(p).updateFn(up);
        gui->addParam(p+" in max", &rms[i].in_max).step(0.05f).group(p).updateFn(up);
        
        gui->addParam(p+" z extrude", &rms[i].extrude).step(1.0f).group(p).updateFn(up);
        //gui->addParam(p+" x offset", &rms[i].xoffset).step(1.0f).group(p).updateFn(up);
        //gui->addParam(p+" y offset", &rms[i].yoffset).step(1.0f).group(p).updateFn(up);
        //gui->addParam(p+" z offset", &rms[i].zoffset).step(1.0f).group(p).updateFn(up);
        
        gui->addParam(p+" xy scale", &rms[i].scale).step(1.0f).group(p).updateFn(up);
        //gui->addParam(p+" visible thresh", &rms[i].visible_thresh).step(0.005f).min(0.0f).max(1.0f).group(p).updateFn(up);
        gui->addParam(p+" log", &rms[i].eStretch).step(1).min(0).max(1).group(p).updateFn(up2);
        
        // read only
        //gui->addParam(p+" r(x) resolution", &rms[eSimType][i].boxelx, true );
        //gui->addParam(p+" theta(y) resolution", &rms[eSimType][i].boxely, true );
        
        //gui->addParam(p+" visible rate(%)", &rms[i].visible_rate, true ).group(p);
        //gui->addParam(p+" num particle", &rms[i].nParticle, true).group(p);
        
        gui->addSeparator();
        
    }
}
Exemplo n.º 15
0
void cApp::makeGui(){
    gui = params::InterfaceGl::create( getWindow(), Ramses::simType[eSimType], vec2(300, getWindowHeight()) );
    gui->setOptions( "", "position=`0 0` valueswidth=100" );
    
    function<void(void)> update = [&](){
        for( int i=0; i<rms.size(); i++){ rms[i].updateVbo(resolution); }
    };
    
    function<void(void)> changeSym = [this](){
        for( int i=0; i<rms.size(); i++){
            rms[i].eSimType = eSimType;
            rms[i].loadSimData(frame);
            rms[i].updateVbo(resolution);
        }
    };
    
    function<void(void)> sx = [this](){
        saveXml();
    };
    
    function<void(void)> ld = [this](){
        loadXml();
        for( int i=0; i<rms.size(); i++){
            rms[i].eSimType = eSimType;
            rms[i].loadSimData(frame);
            rms[i].updateVbo(resolution);
        }
    };
    
    function<void(void)> ren = [this](){
        bStart = true;
        mExp.startRender();
    };
    
    function<void(void)> norm = [this](){

        norms.resetCol();
        norms.resetPos();
        norms.resetVbo();
        
        for( int i=0; i<rms.size(); i++){
            if(rms[i].bShow){
                feature3d( rms[i].pos );
            }
        }
        norms.init(GL_LINES);
    };
    
    gui->addText( "main" );
    gui->addParam("simType", &eSimType ).min(0).max(4).updateFn( changeSym );
    gui->addParam("start", &bStart );
    gui->addParam("frame", &frame ).updateFn(update);
    gui->addParam("ortho", &bOrtho );
    gui->addButton("Compute Norm", norm );

    gui->addParam("xyz global scale", &Ramses::globalScale ).step(0.01).updateFn(update);
    gui->addParam("r(x) resolution", &Ramses::boxelx, true );
    gui->addParam("theta(y) resolution", &Ramses::boxely, true );
    gui->addButton("save XML", sx );
    gui->addButton("load XML", ld );
    gui->addButton("start render", ren );
    
    gui->addSeparator();
    
    for( int i=0; i<6; i++){
        string p = Ramses::prm[i];
        //gui->addText( p );
        
        //function<void(void)> up = bind(&Ramses::updateVbo, &rms[i]);
        function<void(void)> up = [i, this](){
            rms[i].updateVbo(resolution);
        };
        
        function<void(void)> up2 = [i, this](){
            rms[i].loadSimData(this->frame);
            rms[i].updateVbo(resolution);
        };
        
        gui->addParam(p+" show", &rms[i].bShow ).group(p).updateFn(up2);
        gui->addParam(p+" polar coordinate", &rms[i].bPolar ).group(p).updateFn(up2);
        gui->addParam(p+" Auto Min Max", &rms[i].bAutoMinMax ).group(p).updateFn(up);
        gui->addParam(p+" in min", &rms[i].in_min).step(0.05f).group(p).updateFn(up);
        gui->addParam(p+" in max", &rms[i].in_max).step(0.05f).group(p).updateFn(up);
        
        gui->addParam(p+" z extrude", &rms[i].extrude).step(1.0f).group(p).updateFn(up);
        gui->addParam(p+" x offset", &rms[i].xoffset).step(1.0f).group(p).updateFn(up);
        gui->addParam(p+" y offset", &rms[i].yoffset).step(1.0f).group(p).updateFn(up);
        gui->addParam(p+" z offset", &rms[i].zoffset).step(1.0f).group(p).updateFn(up);
        
        gui->addParam(p+" xy scale", &rms[i].scale).step(1.0f).group(p).updateFn(up);
        //gui->addParam(p+" visible thresh", &rms[i].visible_thresh).step(0.005f).min(0.0f).max(1.0f).group(p).updateFn(up);
        gui->addParam(p+" log", &rms[i].eStretch).step(1).min(0).max(1).group(p).updateFn(up2);
        gui->addParam(p+" inAngle", &rms[i].inAngle).step(1).min(-180).max(180).group(p).updateFn(up);
        gui->addParam(p+" outAngle", &rms[i].outAngle).step(1).min(-180).max(180).group(p).updateFn(up);
        gui->addParam(p+" offsetRotateAngle", &rms[i].offsetRotateAngle).step(0.01).group(p).updateFn(up);
        gui->addParam(p+" rotateSpeed", &rms[i].rotateSpeed).step(0.01).group(p).updateFn(up);
        
        // read only
        //gui->addParam(p+" visible rate(%)", &rms[i].visible_rate, true ).group(p);
        //gui->addParam(p+" num particle", &rms[i].nParticle, true).group(p);
        
        gui->addSeparator();
    }
}
Exemplo n.º 16
0
void cApp::setup(){
    
    setWindowPos( 0, 0 );
    setWindowSize( 1080*3*0.5, 1920*0.5 );
    mExp.setup( 1080*3, 1920, 3000, GL_RGB, mt::getRenderPath(), 0);
    
    CameraPersp cam(1080*3, 1920, 54.4f, 0.1, 10000 );
    cam.lookAt( Vec3f(0,0, 1600), Vec3f(0,0,0) );
    cam.setCenterOfInterestPoint( Vec3f(0,0,0) );
    camUi.setCurrentCam( cam );
    
    mPln.setSeed(123);
    mPln.setOctaves(4);
    
    fs::path assetPath = mt::getAssetPath();
    
    {
        // make VectorMap
        Surface32f sAspect( loadImage(assetPath/("img/00/halpha3000_aspect_32bit.tif")) );
        Surface32f sSlope( loadImage(assetPath/("img/00/halpha3000_slope1.tif")) );

        int w = sAspect.getWidth();
        int h = sAspect.getHeight();
        
        mVecMap.assign(w, vector<Vec2f>(h) );

        for( int i=0; i<sAspect.getWidth(); i++) {
            for( int j=0; j<sAspect.getHeight(); j++ ) {
                
                Vec2i pos(i, j);
                float aspect = *sAspect.getDataRed( pos );
                float slope = *sSlope.getDataRed( pos );
                if( slope!=0 && aspect!=-9999 ){

                    Vec2f vel( 0, slope*10.0 );
                    vel.rotate( toRadians(aspect) );
                    mVecMap[i][j] = vel;
                }else{
                    mVecMap[i][j] = Vec2f::zero();
                }
                
                mVelocity.push_back( Vec3f(mVecMap[i][j].x, mVecMap[i][j].y, 0) );
            }
        }
    }
    
    {
        // make point from intensity
        Surface32f sIntensity( loadImage(assetPath/("img/00/halpha3000-skv3264879915580.tiff")) );
        intensityW = sIntensity.getWidth();
        intensityH = sIntensity.getHeight();
        
        Surface32f::Iter itr = sIntensity.getIter();
        float threashold = 0.15;
        float extrusion = 300;
        while ( itr.line() ) {
            while( itr.pixel() ){
                float gray = itr.r();
                if( threashold < gray ){
                    Vec2i pos = itr.getPos();
                    Vec3f v(pos.x, pos.y, gray*extrusion );
                    Vec3f noise = mPln.dfBm( Vec3f(pos.x, pos.y, gray) ) * 2.0;
                    ps.push_back( v + noise );
                    float c = gray + 0.2f;
                    float a = lmap(c, 0.0f, 1.0f, 0.3f, 0.7f);
                    cs.push_back( ColorAf(c, c, c, a) );
                }
            }
        }
        
        
        mPoints = gl::VboMesh( ps.size(), 0, mt::getVboLayout(), GL_POINTS );
        gl::VboMesh::VertexIter vitr( mPoints );
        for(int i=0; i<ps.size(); i++ ){
            vitr.setPosition( ps[i] );
            vitr.setColorRGBA( cs[i] );

            ++vitr;
        }
    }
    
    
    mExp.startRender();
    bStart = true;
    
}
Exemplo n.º 17
0
Arquivo: cApp.cpp Projeto: stdmtb/n9
void cApp::update(){
    
    if( frame == endframe ){
        frame = 1;
        simDirNum++;
        if( 40<=simDirNum ){
            printf("DONE\n");
            quit();
        }else{
            printf(" --- DONE\n");
            printf("start rendering : simDirNum = %02d ", simDirNum );

            int w = win_w*master_scale;
            int h = win_h*master_scale;
            mExp.clear();
            mExp.setup( w, h, 0, 3000, GL_RGB, renderDir/to_string(simDirNum), 0);
#ifdef RENDER
            mExp.startRender();
#endif
        }
    }
    fs::path & simDir = simDirList[simDirNum];
    
    RfImporterBin rfIn;

    char m[255];
    //sprintf(m, "Circle01_%05d.bin", frame );
    sprintf(m, "Binary_Loader02_%05d.bin", frame );
    
    string fileName = toString(m);

    fs::path simFilePath = simDir / fileName;
    rfIn.load( simFilePath.string() );
    
    mDg.mDot.reset();

    numParticle = rfIn.gNumParticles;
    const vector<float> &p = rfIn.pPosition;
    const vector<float> &v = rfIn.pVelocity;
    const vector<int> &pid = rfIn.pId;
    
    vector<Vec3f> pos;
    vector<ColorAf> col;
    vector<ColorAf> col4Line;

    float scale = 55.0f;
    
    for (int i=0; i<numParticle; i++) {
        
        float x = p[i*3+0] * scale;
        float y = p[i*3+2] * scale;
        float z = p[i*3+1] * scale;
        pos.push_back( Vec3f(x, y, z) );
        
        float vx = v[i*3+0];
        float vy = v[i*3+2];
        float vz = v[i*3+1];
        float vel = sqrt(vx*vx + vy*vy + vz*vz);
        float velRate = lmap(vel, 0.03f, 15.0f, 0.0f, 1.0f);
        int colorId = pid[i] % mColorSample1.size();

        ColorAf c = mColorSample1[colorId];
        c.r += 0.2;
        c.g += 0.2;
        c.b += 0.2;
        
        c.g += velRate*0.1;
        c.a = 0.95;
        
        col.push_back( c );

        if( bDrawLine ){
            ColorAf c2 = mColorSample2[colorId];
            c2.a = lmap(vel, 0.0f, 1.0f, 0.1f, 0.6f);
            col4Line.push_back( c2 );
        }
    }
    
    mDg.createDot( pos, col, 0.0 );

    if( bDrawLine ){
        int num_line = 1;//randFloat(1,3);
        int num_dupl = 1;//randFloat(1,3);
        int vertex_per_point = num_line * num_dupl * 2;
        vector<Vec3f> out;
        out.assign( pos.size()*vertex_per_point, Vec3f(-99999, -99999, -99999) );
        vector<ColorAf> outc;
        outc.assign( pos.size()*vertex_per_point, ColorAf(0,0,0,0) );
        
        TbbNpFinder npf;
        npf.findNearestPoints( &pos[0], &out[0], &col4Line[0], &outc[0], pos.size(), num_line, num_dupl );
        mDg.addLine(out, outc);
    }
}
Exemplo n.º 18
0
Arquivo: cApp.cpp Projeto: stdmtb/n9
void cApp::setup(){
    
    int sub = 0;
    for( int i=0; i<=6; i++){
        
        sub+= pow(2, i);
    }
    
    int w = win_w*master_scale;
    int h = win_h*master_scale;
    
    setFrameRate( fps );
    setWindowSize( w*0.5, h*0.5 );
    setWindowPos( 0, 0 );
    renderDir = mt::getRenderPath();
    mExp.setup( w, h, 0, 3000, GL_RGB, renderDir/to_string(simDirNum), 0);
    
    if( bDrawLine ) mExp2.setup( w, h, 0, 3000, GL_RGB, mt::getRenderPath()/"line"/to_string(simDirNum), 0);
    
    CameraPersp top( w, h, 60, 1, 1000000 );
    top.lookAt( Vec3f(0,0, 1300), Vec3f(0,0,0) );
    top.setCenterOfInterestPoint( Vec3f(0,0,0) );
    
    CameraPersp side( w, h, 60, 1, 1000000 );
    side.lookAt( Vec3f(0, 1300, 0), Vec3f(0,0,0) );
    side.setLensShift(0, 0);
    side.setCenterOfInterestPoint( Vec3f(0,0,0) );

    CameraPersp side2( w, h, 60, 1, 1000000 );
    side2.lookAt( Vec3f(1300, 0, 0), Vec3f(0,0,0) );
    side2.setLensShift(0, 0);
    side2.setCenterOfInterestPoint( Vec3f(0,0,0) );

    CameraPersp diag( w, h, 60, 1, 1000000 );
    diag.lookAt( Vec3f(1300/sqrt(2), 1300/sqrt(2), 0), Vec3f(0,0,0) );
    diag.setLensShift(0, 0);
    diag.setCenterOfInterestPoint( Vec3f(0,0,0) );

    CameraPersp diag2( w, h, 60, 1, 1000000 );
    diag2.lookAt( Vec3f(0, 1300/sqrt(2), 1300/sqrt(2)), Vec3f(0,0,0) );
    diag2.setLensShift(0, 0);
    diag2.setCenterOfInterestPoint( Vec3f(0,0,0) );

    cams.push_back(top);
    cams.push_back(side);
    cams.push_back(side2);
    cams.push_back(diag);
    cams.push_back(diag2);

    camUi.setCurrentCam( top );

    assetDir = mt::getAssetPath();
    for( int i=0; i<40; i++){
        //boost::format fmt("Circle01_%02d"); fmt % i;
        //fs::path simDir = assetDir/"sim"/"smooth_r3"/fmt.str();
        
        fs::path simDir = assetDir/"sim"/"absorb_r1";
        
        simDirList.push_back( simDir );
    }

    
    loadColorSample(assetDir/"img"/"colorSample"/"n5pickCol_0.png", mColorSample1 );
    if( bDrawLine ) loadColorSample(assetDir/"img"/"colorSample"/"n5pickCol_1.png", mColorSample2 );
    
#ifdef RENDER
    mExp.startRender();
    if( bDrawLine )mExp2.startRender();
#endif
}