示例#1
0
    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;
        }
    }