Unidad – Textura en el plano se desvanece en el ángulo – ¿Genera mipmaps?

Buenos días, parece que me encontré con un problema que no puedo encontrar. Estoy creando un editor mundial para mi proyecto y generando un plano de cuadrícula que el usuario puede modificar. Cada vez que giro la camera como se ve a continuación, a un ángulo de vista más lateral, la textura de la cuadrícula se desvanece.

He cambiado los niveles de Aniso, intenté en diferentes configuraciones de calidad, también sombreadores diferentes para la textura.

Por el momento, estoy usando el sombreador Unlit/Transparent Cutout que da una apariencia nítida en la grilla. La resolución de la textura es para width y height mapSize(64 > 254)*gridDetail(4>32) . Se dan los mismos resultados sin importar el tamaño de detalle en la textura.

Parece que el centro del avión se desvanece más que los lados.

EDITAR: Bien, entonces descubrí cuál es el problema, ahora aquí está mi pregunta, ¿cómo puedo generar mipmaps para la textura? (La textura se crea con el siguiente código (no optimizado, lo sé):

 using UnityEngine; using System.Collections; public class MyScript: MonoBehaviour { public int sizeX,sizeZ; public int gridDetail; public Color smallGridColor = Color.white; public Color largeGridColor = Color.yellow; public bool drawSmallGrid,drawLargeGrid; Texture2D gridTexture() { Texture2D gridTex = new Texture2D(sizeZ * gridDetail + 1, sizeX * gridDetail + 1); Color[] gridColor = new Color[gridTex.width * gridTex.height]; Color[,] gridColor2 = new Color[gridTex.width, gridTex.height]; for (int i = 0; i < gridTex.width; i++) { for (int x = 0; x < gridTex.height; x++) { gridColor2[i, x] = Color.clear; } } if (drawSmallGrid) { for (int i = 0; i < gridTex.height - 1; i += gridDetail) { for (int j = 0; j < gridTex.width - 1; j++) { gridColor2[i, j] = smallGridColor; } } for (int i = 0; i < gridTex.width; i++) { for (int j = 0; j < gridTex.height; j += gridDetail) { gridColor2[i, j] = smallGridColor; } } } if (drawLargeGrid) { for (int i = 0; i < gridTex.height - 1; i += gridDetail * 4) { for (int j = 0; j < gridTex.width - 1; j++) { gridColor2[i, j] = largeGridColor; } } for (int i = 0; i < gridTex.width; i++) { for (int j = 0; j < gridTex.height; j += gridDetail * 4) { gridColor2[i, j] = largeGridColor; } } } for (int i = 0; i < gridTex.height; i++) { for (int j = 0; j < gridTex.width; j++) { gridColor[i * gridTex.width + j] = gridColor2[i, j]; } } gridTex.SetPixels(gridColor); gridTex.filterMode = FilterMode.Point; gridTex.wrapMode = TextureWrapMode.Clamp; gridTex.alphaIsTransparency = true; gridTex.Apply(); return gridTex; } } 

¿Algunas ideas?

Textura de cuadrícula desvaneciéndose.

Entonces, después de una investigación adicional, encontré esto: http://answers.unity3d.com/questions/10292/how-do-i-generate-mipmaps-at-runtime.html

Lo cual más o less responde mi pregunta. Para generar mipmaps para la textura recién creada. Uno debe hacer una segunda textura, y luego simplemente establecer los píxeles de la nueva textura a la original creada. (Lo mismo ocurre con la carga de texturas en el código a través de varios lugares) Esto es lo que he cambiado:

  ... // Modified at the bottom of my script just before the return. gridTex.SetPixels(gridColor); gridTex.filterMode = FilterMode.Point; gridTex.wrapMode = TextureWrapMode.Clamp; gridTex.alphaIsTransparency = true; gridTex.Apply(); Texture2D gridTex2 = new Texture2D(gridTex.width, gridTex.height); gridTex2.SetPixels(gridTex.GetPixels(0, 0, gridTex.width, gridTex.height)); gridTex2.Apply(); return gridTex2;