public override void draw() { if (isSleep) { return; } if (isUpdateSolver) { fluidSolver.update(); } if (drawFluidBmp) { int num = fluidSolver.getNumCells(); // redraw texture for (int i = 0; i < num; i++) { float d = drawV; imgFluid.pixels [i] = color(fluidSolver.r [i] * d, fluidSolver.g [i] * d, fluidSolver.b [i] * d); } imgFluid.updatePixels(); // fastblur(imgFluid, 2); image(imgFluid, 0, 0, width, height); } if (isUpdatePsys) { p5particleSystem.updateAndDraw(); } if (enableDrawDebugFluidUV) { // draw UV DebugDrawFluidUV(); } DrawExtra(); }
void Start() { // duplicate the original texture and assign to the material invWidth = 1.0f/WIDTH; invHeight = 1.0f/HEIGHT; aspectRatio = WIDTH * invHeight; aspectRatio2 = aspectRatio * aspectRatio; fluidSolver = new MSAFluidSolver2D(128,128); fluidSolver.enableRGB(true).setFadeSpeed(0.003f).setDeltaT(0.5f).setVisc(0.0001f); //Debug.Log(fluidSolver.getWidth()+":::"+ fluidSolver.getHeight()); texture = new Texture2D(fluidSolver.getWidth(),fluidSolver.getHeight()); renderer.material.mainTexture = texture; sourceTexture = (Texture2D)Resources.Load("otoko130");//WH128+2=130 Color[] cols = sourceTexture.GetPixels();//130*130 for(var i = 0; i < fluidSolver.getNumCells(); i++){ fluidSolver.rOld[i] = cols[i].r; fluidSolver.gOld[i] = cols[i].g; fluidSolver.bOld[i] = cols[i].b; } }