void FlockingApp::setup() { Rand::randomize(); mCenter = Vec3f( getWindowWidth() * 0.5f, getWindowHeight() * 0.5f, 0.0f ); mCentralGravity = true; mFlatten = false; mSaveFrames = false; mIsRenderingPrint = false; mZoneRadius = 80.0f; mLowerThresh = 0.5f; mHigherThresh = 0.8f; mAttractStrength = 0.004f; mRepelStrength = 0.01f; mOrientStrength = 0.01f; // SETUP CAMERA mCameraDistance = 350.0f; mEye = Vec3f( 0.0f, 0.0f, mCameraDistance ); mCenter = Vec3f::zero(); mUp = Vec3f::yAxis(); mCam.setPerspective( 75.0f, getWindowAspectRatio(), 5.0f, 5000.0f ); // SETUP PARAMS mParams = params::InterfaceGl( "Flocking", Vec2i( 200, 310 ) ); mParams.addParam( "Scene Rotation", &mSceneRotation, "opened=1" ); mParams.addSeparator(); mParams.addParam( "Eye Distance", &mCameraDistance, "min=100.0 max=2000.0 step=50.0 keyIncr=s keyDecr=w" ); mParams.addParam( "Center Gravity", &mCentralGravity, "keyIncr=g" ); mParams.addParam( "Flatten", &mFlatten, "keyIncr=f" ); mParams.addSeparator(); mParams.addParam( "Zone Radius", &mZoneRadius, "min=10.0 max=100.0 step=1.0 keyIncr=z keyDecr=Z" ); mParams.addParam( "Lower Thresh", &mLowerThresh, "min=0.025 max=1.0 step=0.025 keyIncr=l keyDecr=L" ); mParams.addParam( "Higher Thresh", &mHigherThresh, "min=0.025 max=1.0 step=0.025 keyIncr=h keyDecr=H" ); mParams.addSeparator(); mParams.addParam( "Attract Strength", &mAttractStrength, "min=0.001 max=0.1 step=0.001 keyIncr=a keyDecr=A" ); mParams.addParam( "Repel Strength", &mRepelStrength, "min=0.001 max=0.1 step=0.001 keyIncr=r keyDecr=R" ); mParams.addParam( "Orient Strength", &mOrientStrength, "min=0.001 max=0.1 step=0.001 keyIncr=o keyDecr=O" ); // CREATE PARTICLE CONTROLLER mParticleController.addParticles( NUM_INITIAL_PARTICLES ); mParticleController.addPredators( NUM_INITIAL_PREDATORS ); }