2017-03-12 5 views
0

갤러리에서 선택한 이미지에서 texture2D 오브젝트를 만들었습니다. (안드로이드 앱에서 작업 중입니다). 내 Resources 폴더에 "main"이라는 소재가 있고 Skybox/Cubemap 자료입니다. 스크립트에서 머티리얼 텍스처를 설정하려면 Texture2D 텍스처가 아닌 Cubemap 텍스처가 필요합니다. 그래서, 제 질문은 : 어떻게 Texture2D를 Cubemap으로 변환 할 수 있습니까? 내 문제를 더 잘 설명하기 위해 코드를 게시합니다 ("mainImage에서 cubetex로 무엇을 써야할지 모르겠다"부분).texture2D에서 큐브 맵

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

답변

0

그래서 나는 큐브의 모든면에 다른 이미지를 넣는 데 사용한 코드를 사용합니다. Texture2d에는 일련의 이미지가 포함되어 있어야합니다.

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

: 여기
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; 

그것이 기반으로하는 링크입니다
관련 문제