Текст на изображениях появляется неровно / неровно при получении текстуры из URL изображения - PullRequest
0 голосов
/ 13 февраля 2020

Я использую следующий код, чтобы получить текстуру из URL-адреса изображения (.png) и установить ее для сценария Raw Image:

UnityWebRequest request = UnityWebRequestTexture.GetTexture(imageUrl);
yield return request.SendWebRequest();
...
imageObject.texture = ((DownloadHandlerTexture)request.downloadHandler).texture;

Это отлично работает, но для изображений с текстом Текст выглядит очень неровным. Ниже приведен пример сравнения; верхнее изображение - это текстура, загруженная из кода выше, нижнее изображение - это то же изображение, но загруженное как обычный актив в единстве с Texture Type, установленным на Default.

enter image description here

Что я могу сделать, чтобы улучшить качество текста на этих изображениях? Я попробовал это, но это, казалось, не имело значения:

imageObject.texture.wrapMode = TextureWrapMode.Clamp;
imageObject.texture.filterMode = FilterMode.Trilinear;
imageObject.texture.anisoLevel = 5;

1 Ответ

0 голосов
/ 14 февраля 2020

Полагаю, вам нужно сгенерировать мипмапы для рассматриваемой текстуры. Я обнаружил пару из рекомендаций , но TLDR заключается в том, что мип-карты генерируются только при вызове Применить , а их доступность определяется при создании текстуры .

Это приводит к следующей, казалось бы, избыточной рекомендации:

UnityWebRequest request = UnityWebRequestTexture.GetTexture(imageUrl);
yield return request.SendWebRequest();
var tempTexture = ((DownloadHandlerTexture)request.downloadHandler).texture;

// create new texture, mipmaps enabled by default
var mipTexture = new Texture(tempTexture.width, tempTexture.height);

// copy the pixels over, this should all go into mip level 0
mipTexture.SetPixels(tempTexture.GetPixels());

// Unity should be smart enough to generate the rest.
mipTexture.Apply();

Надеюсь, это поможет!

Еще один тест: если вы не уверены, связана ли проблема чтобы отразить отображение, лучший способ проверить это - убедиться, что Unity отображает интерфейс с идеальным пикселем, установите смешивание равным FilterMode.Point и представьте текстуру без масштабирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...