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; }