2015-10-11 3 views
-1

У меня есть задание, где я должен сделать следующее:Текстурирование?

  1. Создать по крайней мере 5 объектов пользовательского интерфейса и 3 3D объектов в сцене, и импортировать по крайней мере 8 различных файлов текстур изображения для каждого из них. Если вы только хотите создать 3 3D-объекта, они должны быть одним кубом, один сфера и один цилиндр. Назначьте различные текстуры объектам.

  2. Напишите сценарий, чтобы прочитать информацию обо всех файлах изображений, используемых в качестве текстур в сцене, и сгенерировать один файл изображения текстуры, содержащий все используемые файлы текстурных изображений в сцене.

  3. Расширение файла сценария, написанного выше, чтобы иметь возможность автоматически и правильно отображать новый файл с одним текстурным изображением во все текстурированные объекты.

Я уверен, что я могу сделать первый без проблем, но я не уверен в части скриптов. Я искал учебники по этому вопросу, но они только говорят о применении текстур к объектам и ничего о скриптах. Кто-нибудь знает какие-либо видео или веб-страницы, которые могут помочь мне узнать эту часть?

ответ

0

Номер 2 может быть достигнут путем перебора каждого GameObject в сцене, используя GameObject[] allObjects = UnityEngine.Object.FindObjectsOfType<GameObject>(), а затем получить их Texture2D пути доступа к их соответствующему Material.mainTexture свойства (doc), что даст массив всех используемые Texture2D с. Следующая часть

и генерировать один файл текстуры изображение содержит все используемые файлы изображений текстур в сцене

является ambigious. Это может быть сделано любым способом, который вы считаете нужным, который генерирует одно изображение текстуры, например. помещая их все подряд. Тем не менее, это может указывать на функциональность текстурного атласа, и в этом случае вам нужно взглянуть на функцию Texture2D.PackTextures справа here. Эта функция упакует вам все данные текстуры (a Texture2D[]) в один атлас и вернет вам массив UV-координат.

Возвращает

Rect [] Массив прямоугольников, содержащих UV-координаты в атласе для каждого входного текстуры, или нулевой, если упаковка не удается.

Это ключ для решения номера 3. Если присвоят сгенерированную упакованную структуру обратно в 3D-объекты в Сене, то essiantial, что UV-координаты являются правильными, так что вы увидите только часть текстуры, которую она имела в начале. Назначьте соответствующие UV-координаты объектам из Rect[], которые дает вам функция PackTextures() (прямоугольник имеет два Vector2 в нем, один будет X/Y (вершина), другой будет U-V (tex-coord) нужно будет), и задача должна быть решена.

(Ссылка для УФ-части: http://answers.unity3d.com/questions/276212/what-is-the-simple-way-of-applying-texture-atlas-t.html)

+0

Я определенно попробовать это –