2016-03-26 4 views
0

Я создаю текстурный атлас по сценарию. Я использую 6 изображений, чтобы сделать это, и код выглядит следующим образом:Почему Texture2D.PackTextures() создает столько пространства в атласе?

atlasTextures = new Texture2D[6] {frontTexture, topTexture, backTexture, bottomTexture, leftTexture, rightTexture }; 

    Texture2D atlas = new Texture2D(1024, 1024); 
    Rect[] UVs = atlas.PackTextures(atlasTextures, 2, 1024); 

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

Результат упаковки выглядит следующим образом:

texture

Вопрос, почему этот код производит так много пустого пространства? Поскольку я всегда буду использовать только 6 текстур, возможно ли сделать атлас немного меньше?

+1

Я думаю, что ваши изображения примерно 256x256, и вы создаете атлас 1024x1024, поэтому не удивительно. Сделайте его кратным вашему размеру. 768x768 уже сэкономит вам. Не знаю, будет ли работать 512x768. –

+0

Каждая из этих текстур - 167x167. Я изменил размеры на Texture2D (512, 512) и PackTextures (atlasTextures, 2, 256); И он меньше. Вы знаете, что делает третий параметр в PackTextures()? –

+0

Это максимальный размер, который может иметь атлас. –

ответ

0

Графическое оборудование любит обрабатывать текстуры, имеющие две степени мощности, такие как 128x1024 (2^7 x 2^10). Они также могут обрабатывать другие размеры текстур, но менее эффективны. Вот почему двигатели обычно пытаются импортировать или генерировать текстуры с двумя размерами, даже если они оставляют неиспользуемое пространство текстуры. Разработчик должен решить, когда переопределить это.

+0

Итак, еще один вопрос, как это работает, если мои текстуры 167x167, и они могут быть упакованы в атласе размером 256x256 ('Debug.Log (atlas.width.ToString() +" "+ atlas.height.ToString ()), дает 256 256 –

+0

Ну, если вы имеете в виду, что все 6 ваших текстур содержатся в этом атласе 256x256, то, очевидно, они должны быть уменьшены. Если в этом атласе содержится только один, то он находится в там с его оригинальным размером 167x167, оставив некоторое пространство атласа неиспользованным. –

+0

Все вписываются в этот атлас. Возможно, некоторые сокращения сокращаются. –

Смежные вопросы