Esempio n. 1
0
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            tempIndex = (tempIndex + 1) % AllLightSHs.Length;
            tranferLight();
        }

        Vector3 delta = Input.mousePosition - LastMousePosition;

        rot += delta.x * 0.1f;

        mMat.SetFloat("_Rotation", rot * 180.0f / Mathf.PI);

        Matrix4x4 W2O = Matrix4x4.Rotate(Quaternion.Euler(0.0f, rot * 180.0f / Mathf.PI, 0.0f)).inverse;

        Vector3[] rotLight = SHRotate.Rotate(LightSH, W2O);

        for (int i = 0; i < mMesh.vertexCount; i++)
        {
            Vector3 targetColor = new Vector3(0.0f, 0.0f, 0.0f);
            for (int j = 0; j < rotLight.Length; j++)
            {
                targetColor += rotLight [j] * AllCoffeeSH [i].coffeeSHResult [j];
            }
            allMeshColors [i] = new Color(targetColor.x, targetColor.y, targetColor.z, 1.0f);
        }

        mMesh.colors = allMeshColors;

        LastMousePosition = Input.mousePosition;
    }
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            tempIndex = (tempIndex + 1) % AllLightSHs.Length;
            tranferLight();
        }

        Vector3 delta = Input.mousePosition - LastMousePosition;

        rot += delta.x * 0.1f;

        mMat.SetFloat("_Rotation", rot * 180.0f / Mathf.PI);

        Matrix4x4 W2O = Matrix4x4.Rotate(Quaternion.Euler(0.0f, rot * 180.0f / Mathf.PI, 0.0f)).inverse;

        Vector3[] rotLight = SHRotate.Rotate(LightSH, W2O);

        Matrix4x4 matR = new Matrix4x4();

        matR.m00 = rotLight [0].x;
        matR.m01 = rotLight [1].x;
        matR.m02 = rotLight [2].x;
        matR.m03 = rotLight [3].x;

        matR.m10 = rotLight [4].x;
        matR.m11 = rotLight [5].x;
        matR.m12 = rotLight [6].x;
        matR.m13 = rotLight [7].x;

        matR.m20 = rotLight [8].x;
        matR.m21 = rotLight [9].x;
        matR.m22 = rotLight [10].x;
        matR.m23 = rotLight [11].x;

        matR.m30 = rotLight [12].x;
        matR.m31 = rotLight [13].x;
        matR.m32 = rotLight [14].x;
        matR.m33 = rotLight [15].x;
        mSHMat.SetMatrix("rotRLight", matR);

        Matrix4x4 matG = new Matrix4x4();

        matG.m00 = rotLight [0].y;
        matG.m01 = rotLight [1].y;
        matG.m02 = rotLight [2].y;
        matG.m03 = rotLight [3].y;

        matG.m10 = rotLight [4].y;
        matG.m11 = rotLight [5].y;
        matG.m12 = rotLight [6].y;
        matG.m13 = rotLight [7].y;

        matG.m20 = rotLight [8].y;
        matG.m21 = rotLight [9].y;
        matG.m22 = rotLight [10].y;
        matG.m23 = rotLight [11].y;

        matG.m30 = rotLight [12].y;
        matG.m31 = rotLight [13].y;
        matG.m32 = rotLight [14].y;
        matG.m33 = rotLight [15].y;
        mSHMat.SetMatrix("rotGLight", matG);

        Matrix4x4 matB = new Matrix4x4();

        matB.m00 = rotLight [0].z;
        matB.m01 = rotLight [1].z;
        matB.m02 = rotLight [2].z;
        matB.m03 = rotLight [3].z;

        matB.m10 = rotLight [4].z;
        matB.m11 = rotLight [5].z;
        matB.m12 = rotLight [6].z;
        matB.m13 = rotLight [7].z;

        matB.m20 = rotLight [8].z;
        matB.m21 = rotLight [9].z;
        matB.m22 = rotLight [10].z;
        matB.m23 = rotLight [11].z;

        matB.m30 = rotLight [12].z;
        matB.m31 = rotLight [13].z;
        matB.m32 = rotLight [14].z;
        matB.m33 = rotLight [15].z;
        mSHMat.SetMatrix("rotBLight", matB);


        LastMousePosition = Input.mousePosition;
    }