2017-03-12 4 views
0

Ich habe ein texture2D-Objekt aus einem Bild erstellt, das ich aus der Galerie auswähle (ich arbeite an einer Android-App). Ich habe ein Material namens "main" in meinem Ressourcen-Ordner, und es ist ein Skybox/Cubemap-Material. Wenn ich die Materialtextur in meinem Skript einstellen möchte, brauche ich eine Cubemap-Textur, keine Texturtexture. Meine Frage ist also: Wie kann ich Texture2D in Cubemap umwandeln? Ich poste ein Stück meines Codes, um mein Problem besser zu erklären (ich weiß nicht, was ich in "// from mainImage to cubetex ??" schreiben soll).von texture2D nach cubemap

private Texture2D mainImage; 
private Cubemap cubetex = new Cubemap (2048, TextureFormat.RGB24, false); 
private Material mat; 

mainImage = new Texture2D (www.texture.width, www.texture.height); 
mainImage.SetPixels32 (www.texture.GetPixels32()); 
mainImage.Apply(); 

// from mainImage to cubetex ????? 

mat = Resources.Load("main") as Material; 
mat.SetTexture ("_Tex", cubetex); 

Antwort

0

Also ist der Code, den ich verwendet habe, um verschiedene Bilder auf jeder Seite des Würfels zu setzen. Es benötigt eine Texture2d mit einer Reihe von Bildern.

atlas = new Texture2D(512, 512); 
    atlasUVs = atlas.PackTextures(atlasTextures, 1, 512); 

    GetComponent<Renderer>().material.mainTexture = atlas; 

    mesh = GetComponent<MeshFilter>().mesh; 
    originalUVs = new Vector2[mesh.vertices.Length]; 

    // Front 
    originalUVs[0] = new Vector2(atlasUVs[0].xMin, atlasUVs[0].yMin); 
    originalUVs[1] = new Vector2(atlasUVs[0].xMax, atlasUVs[0].yMin); 
    originalUVs[2] = new Vector2(atlasUVs[0].xMin, atlasUVs[0].yMax); 
    originalUVs[3] = new Vector2(atlasUVs[0].xMax, atlasUVs[0].yMax); 
    // Top 
    originalUVs[4] = new Vector2(atlasUVs[1].xMin, atlasUVs[1].yMax); 
    originalUVs[5] = new Vector2(atlasUVs[1].xMax, atlasUVs[1].yMax); 
    originalUVs[8] = new Vector2(atlasUVs[1].xMin, atlasUVs[1].yMin); 
    originalUVs[9] = new Vector2(atlasUVs[1].xMax, atlasUVs[1].yMin); 
    // Back 
    originalUVs[6] = new Vector2(atlasUVs[2].xMax, atlasUVs[2].yMin); 
    originalUVs[7] = new Vector2(atlasUVs[2].xMin, atlasUVs[2].yMin); 
    originalUVs[10] = new Vector2(atlasUVs[2].xMax, atlasUVs[2].yMax); 
    originalUVs[11] = new Vector2(atlasUVs[2].xMin, atlasUVs[2].yMax); 
    // Bottom 
    originalUVs[12] = new Vector2(atlasUVs[3].xMin, atlasUVs[3].yMin); 
    originalUVs[13] = new Vector2(atlasUVs[3].xMin, atlasUVs[3].yMax); 
    originalUVs[14] = new Vector2(atlasUVs[3].xMax, atlasUVs[3].yMax); 
    originalUVs[15] = new Vector2(atlasUVs[3].xMax, atlasUVs[3].yMin); 
    // Left 
    originalUVs[16] = new Vector2(atlasUVs[4].xMin, atlasUVs[4].yMin); 
    originalUVs[17] = new Vector2(atlasUVs[4].xMin, atlasUVs[4].yMax); 
    originalUVs[18] = new Vector2(atlasUVs[4].xMax, atlasUVs[4].yMax); 
    originalUVs[19] = new Vector2(atlasUVs[4].xMax, atlasUVs[4].yMin); 
    // Right   
    originalUVs[20] = new Vector2(atlasUVs[5].xMin, atlasUVs[5].yMin); 
    originalUVs[21] = new Vector2(atlasUVs[5].xMin, atlasUVs[5].yMax); 
    originalUVs[22] = new Vector2(atlasUVs[5].xMax, atlasUVs[5].yMax); 
    originalUVs[23] = new Vector2(atlasUVs[5].xMax, atlasUVs[5].yMin); 
    mesh.uv = originalUVs; 

hier ist der Link, dass es auf basiert:

http://answers.unity3d.com/questions/542787/change-texture-of-cube-sides.html

Verwandte Themen