D Текстуры Для Unity3D
- Хорошая коллекция бесшовных широкоформатных текстур грунта, почвы. Текстура земли для cinema.
- Unity Вики Сообщество разработчиков Unity 3D. Добавить свой проект Задать вопрос Загрузить Web Player Добавить видео. 3ddd - Текстуры для интерьера, камень, дерево, резка, плитка и т.д. 400+ White8Man Маленькая частная коллекция 100+. Shumer3d - Частная коллекция. История помощи в создании страницы: Administrator - 2014:03:03 05:14:44.
- Текстура травы, бесшовная текстура травы для cinema 4d, для фотошопа, для unity3d, для 3d max (3д макса). Текстура земли с травой.
И так, уже давненько ломаю голову над всевозможными решениями данной задачи. Ну да, террейн в Юнити есть, и есть редактор, в котором каждый школьник может по-быстрому натворить, почти любой ландшафт. Но будет ли это ландшафтом приемлемого уровня? Не говоря уж про уровень игр AAA, про который всё больше упоминается вокруг да около Юнити. И если допустить что будет, то насколько приемлема окажется стоимость такого качества ландшафта, в смысле ресурсов системы? Проблема количества текстур террейна, в Unity3d Незнаю, как с этим обстоят дела в других движках, но в Unity3d всё упирается в довольно существенные падения fps, которые начинаются уже даже от абсолютно чистого, только что созданого террейна. Вот создаю новый террейн, запускаю, и где-то как минимум, минус 30 fps, уже улетает в никуда.
Скрипты и текстуры. Для профессиональной работы с Unity 3D необходимо.
Текстуры - это ещё одна 'хромая нога', в Юнити-террейне. Везде можно найти советы умников, не использовать на террейне более 4 текстур (4 диффуз + 4 нормал) Ну и какие игры могут быть созданы, с таким бедным набором текстур? Уж явно, это будут игры не этого века, а прошлого (если конечно это не спецефичные игры-бродилки, в которых не требуется разнообразие поверхности террейна и гор) Понятно и ежу, что для современного левел-дизайна, тестур нужно больше. И вот какая просадка по fps, лично у меня получается: 0 текстур = 51-52fps 1-4 текстуры = 49-52fps 5-8 текстур = 38-42fps 9-12 текстур = 34-36fps 13-16 текстур = 28-31fps Причём, текстуры просаживают fps независимо от того, использованы они на террейне, и в какой мере использованы. оно и понятно, так как лишь первые 4 текстуры, отрисовывает основной шейдер за один проход. А для отрисовки кажой четвёрки дополнительных текстур, вызывается дополнителный шейдер, и отрисовывает их по 4 текстуры за 1 проход. Тоесть 8 текстур = 2 прохода, 12 текстур = 3 прохода, 16 текстур = 4 прохода шейдера.
В итоге, даже с всего 4 текстурками, получается джопа. При узком окне во вкладке редактора, ещё так-себе, где-то порядка 40 fps в сцэне, не нагруженой ничем, кроме террейна с небольшим количеством горок. Но при разворачивании экрана на широкоэкранный монитор, шириной 1280 - fps уже падает до 30, а местами и ниже. Проблемы тайлинга текстур Другая проблема - тайлинг текстур на террейне.
(ну для меняэто уже давно не проблема, но с этой проблемой сталкивается любой новичёк) Многие конечно замечали, как издали некрасиво выглядят однотиипные ковры текстур на террейне, которые вблизи, вроде бы смотрелись очень ничего. Проблема конечно не столь велика, и методы борьбы с ней уже придуманы и описаны не раз в интернете. Один из методов - наслоение одной и той же текстуры, но с различным тайлингом, одна поверх другой.
Другой метод - наслоение двух разных текстур, одна на другую. Но для обоих методов, нам нужны 2 текстуры, из 4 возможных (если поджимает fps) Ну и оставшаяся пара у нас пойдёт на горы, чтобы они хоть какой-то вид имели. Вобщем, с текстурами нужно серьёзно допиливать движёк. Либо как-то хитро изъёживаться. Интересно, что иностранцы наоборот, идут по пути увеличения числа применяемых текстур.
Есть очень интересные решения и мастерклассы, и я постараюсь в этой теме, их все рассмотреть. Многие я попробовал, есть такие что ну очень впечатляют.
Но расход ресурсов зачастую такой, что почти не оставляет места, для серьёзной игровой логики, и мультиплеерных функций. Кстати, эти решения, главным образом направлены на борьбу с ещё одной пробьлемой в Unity terrain - плохой, мыльной детализацией текстур, и такой же плохой рельефностью. Редактор террейна в Unity3d Редактор террейна в Юнити конечно не плохой, но удобным я бы его не назвал. Вобщем, чем больше с ним работаю, - тем больше осознаю, что нужно делать свой. Например, куда удобней выполнять все работы по оформлению игрового мира, непосредственно бегая или летая по миру, админским персонажем, создавая где надо горы и впадины, нанося нужные текстуры, подгоняя с большой точностью любые элементы и рельеф, устанавливая растительность и прочие игровые объекты. Первые эксперементальные шаги в этом, я уже сделал. Уже могу прямо в запущеном проекте, бегать чаром, и мышкой изменять рельеф террейна, создавая возвышенности и горы, либо убирая их.
Поскольку происходит редактирование самой terrainData, то результаты изменения поверхности, не требуют сохранения. В принципе, я уже продумал ряд интересных решений, которые можно дополнительно реализовать, таких как клонирующая кисть, наподобии как в фотошопе, а так же выделение частей рельефа на террейне, вырезание их, вставка, копирование или произвольное перемещение по террейну.
Так же возможно и расширение наборов кистей, и управление их настройками. Например, в стандартном редакторе террейна, я замучился пытаться сделать ступеньчатые склоны или спуски, да и просто плавные спуски-подъёмы, ровными сделать не так уж легко. Правда сейчас упёрся в некоторую делему, с проблемой: Нанесение возвышеностей на террейн, происходит паттерном, представляющим из себя двумерный массив: float, heights = new floatx,z; Его размерность задаёт габариты кисти, а значения его ячеек - форму кисти, и силу её воздействия на террейн. И вот сейчас ломаю голову, как бы лучше эти кисти организовать, чтобы по возможности не пересчитывать их при каждом мазке, и в то же время, в любой момент можно было изменять размеры кисти, её форму и силу.
Есть мысль, попытатся в качестве шаблонов кистей, использовать небольшие png карты высот. Но пока что не нашёл способа конвертации png в двумерный float-массив. Ну и по изменению размеров кисти - видимо, было бы удобнее всего, изменять габариты этой карты высот, и затем конвертировать в паттерн. Но как это реализовать программно на С# - пока что тоже неизвестно. Когда разберусь с этой частью реализации, буду думать над функциями нанесения текстур, и возможно, над новым принципом текстурирования террейна. Идея есть, но её ещё нужно обдумать и проэкспериментировать. Нарыл вот такой интересный пост, в зарубежной конфе, на оффсайте Unity3d: Там приводится некий умопомрачительный скрипт.
Видимо, для кешировани материалов и объектов?! Ага, VBO это Vertex Buffer Object Вот ещё статейка про похожую проблему: Пока что остаётся пытаться спасаться через оптимальный Pixel Error, ну и Base Map Dist. Тоже малость экономит, на не прорисовке дальних текстур.
Видимо, для слабых неигровых систем, прорисовка и детализация ландшафта, уходящего вдаль - непозволительная роскошь. И ещё мне кажется, что даже Pixel Error не всегда спасает. Вроде бы на каком-то ландшафте, он уж слишком капитально обрезал весь вид, но экономия выходила не особо радостная. Чудеса с Pixel Error Pixel Error - опция в настройках террейна, управляющая упрощением геометрии рельефа террейна, по мере его отдаления от камеры. И чем значение Pixel Error выше - тем обычно, сильнее он действует на террейн, больше экономится дравколов и фпс.
Казалось бы, всё просто! Чем больше - тем лучше! Но результаты сегодняшнего эксперимента, меня весьма озадачили. Создаю чистый проект, и такой же чистый террейн.
Выставляю настройки: 512 на 512 размер, высота 200, детайл и прочие текстуры - 1024, хейджмап резолюшин 513, детайл резолюшин пер патш - 8 Подгружаю на террейн 4 стандартные текстурки, и хейджмап. Получаю простенький горный рельеф. Ставлю источник освещения и камеру, чтобы был нормальный вид. Выставляю Pixel Error = 39, и запускаю: - 24 дравкола и 59 фпс Выставляю Pixel Error = 29, и вижу: - 43 дравкола, 507 фпс! (небывалое для моего компьютера!) Что интересно, в свёрнутом во вкладку редактора окне, фпс ниже, но всёравно выше чем на первом скрине: Едем дальше, Pixel Error = 100: Pixel Error = 200 (максимум): - Террейн до нельзя упростился, дравколы снизились до 10, но прироста фпс как небывало. Ну и чтоб совсем уж оконьчательно всё запутать, я снова уменьшаю Pixel Error, но до 25: - Эффекта нет!
Получается, что есть какой-то диапазон, который наиболее оптимальный для данного террейна или вообще, и его нужно нащупать опытным путём? Или всё это глюки Видеокарты, либо Юнити? На всякий случай, я уже не один раз перезапускал всё и проверял - ничего не меняется. Даже наоборот, опытным путём удалось выяснить, что повысив немного Pixel Error до 37, можно попасть в ещё более оптимальную точку, и фпс поднимается до 600!
Вот такие чудеса. Вобщем, описаный выше прирост фпс, на двух других террейнах стандартного по умолчанию размера, небыл замечен. Значит и рассчитывать на него нет смысла. Решил пойти немного иным путём, взял скрипт, для експорта террейна в мешь, экспортнул для начала с настройкой хальф. Открыл в максе - ох мама родная!
524 288 полигонов! Но это ведь ещё упрощённый террейн. Экспортировал полный - за миллион полигонов перевалило! Макс вылетел с ошибкой, при попытке загрузки. Собственно, такого количества полигонов и следовало от террейна ожидать, если размер хейджмапы 1024х1024 то 1024.1024 = 1 048 576 полигонов. А юнити работает с трисами, тоесть, делит все полигоны, на треугольники, в итоге будет за два миллиона трисов.
А ведь в интернете можно то там то сям встретить заверения некоторых умников, что наиболее оптимальный террейн - это стандартный террейн Юнити (тот который 2000 на 2000) Вот собственно, откуда и ростут основные тормоза, стандартного террейна в Юнити. Изза того, что террейн совершенно не оптимизируется, перед использованием. А ведь есть технология Редукции полигонов, применяемая уже давно в играх и движках: Вобщем, выгрузил я хейджмапу, отбрезал в фотошопе лишние пустые поля, и сделал из неё террейн размерами 512х512 (габариты хейджмапы: 513х513). Особо много это не сэкономило, почти ничего не изменилось. Экспортировал это тиррейн в мешь, загрузил в макс, экспортировал в fbx.
В результате увидел вот это: Перетянул на сцену - террейн увидел, но начались такие тормоза, что даже ничего делать не мог, ничего толком не работало, и я его удалил. Затем снова вернулся в макс, к мешу этого террейна: Добавил модификатор опитимизации сетки, со стандартными настройками, и получил такую мешь: После импорта в Юнити: В этот раз тормозов уже небыло, и 8 мешей тоже. Вверху слева, выводятся два подсчёта фпс, по двум разным методикам, найденым в зарубежных коммунити. Странно, но почему-то ни один из методов показа фпс, не сходится с фпс в редакторе.
С этим тоже ещё предстоит разобраться. Но верхнее, самое левое значение, практически соответствует показаниям фрапса! На полном экране примерно: 45 - 47 fps С выключеным мешем: 58 - 58 fps С выключеным мешем и выключеным персонажем: 63 - 78 fps А на прежнем стандартном террейне, с этим же рельефом: 22-25 fps - Вот и чему верить?
Судя по ФПС в статистике редактора, выигрышь уже просто чудесный! А вот судя по фрапсу и фпс, измеряемому первым скриптом - выигрышь пока не так уж велик, но есть. В любом случае, единая мешь - далеко ещё не самый оптимальный вариант. По-видимому, для серьёзных проектов, с большим и сложным рельефом, террейн Юнити НЕ пригоден, и может использоваться лишь отчасти, для начальной разработки ландшафта. Видимо, имеет смысл, делать ландшафт мешами. И даже не просто меши, а меши + их LODы.
PS: скомпилил тестовый билд с этим оптимизированым мешем, который выше - фпс в режиме 1280x768 принципе порадовал. Ну или вообще без террейнов, всё на мешах делать. Вот в этом варианте, который выше, есть один существенный минус - это большой разброс в размерах треугольников. Рисовать-то траву и текстуры, в Юнити можно и на мешах, но вот только выглядят они, на полигонах разного размера, кажется по-разному. Где полигон вытянутый и большой - текстура выглядит тоже растянутой. Кстати, это ещё одна из бед, и стандартного террейна. Ретовский монеты ханов династии гиреево. На крутых скалах, это сильно заметный дефект.
Возможно выходом тут будет, делать горы мешем одной размерности полигонов, а равнину - мешем с другой размерностью, где полигоны больше по размерам. Но все эти вопросы, в принципе решаемы, я думаю.
Как нарисовать качественную текстуру для Unity3D 08:40 Решил перевести старый гайд по созданию качественной сай-фай текстуры, а также немного адаптировать его для Unity3D. Нам понадобится блендер и и фотошоп. Перевод некоторых терминов будет немного корявым, так как я привык работать на английском. Прошу заранее простить меня за это. 1) Для начала вам нужно придумать модель, которую вы хотите воплотить в жизнь. Чем реалистичнее модель, чем правдоподобнее на ней расположены детали, такие как: заклёпки, швы, болты, тем лучше. Теперь создаёте в блендере (или в другом пакете 3д графики) высокополигональную модель, не скупясь на детали.
2) Следующий шаг - создание UV развёртки и карты ambient освещения. В блендере выбираете вашу модель, и делаете развёртку Project from view, расположив камеру так, чтобы модель была развёрнута прямо на нас. Для этого выбираете все полигоны модели в edit mode, нажимаете на U и выбираете project from view В окошке редактирования текстуры в блендере выбираете UVs- Export UV layout.
Сохраняете файл в желаемом разрешении для текстуры. Затем нужно запечь карту ambient освещения. Для этого в блендере в окошке свойств, в закладке world ставите галочку на ambient occlusion, заходите в закладку render, выбираете Bake и меняете тип запекания на ambient occlusion. Перед тем как запекать, вам нужно создать новую текстуру. В окошке редактирования текстуры создаёте новую текстурку image- new image, выбираете цвет белый и разрешение, такое же как и у развёртки. Выберите полигоны модельки и назначьте их на ваш белый листик, просто выбрав его в списке текстур. Заходите в Render и нажимаете Bake.
Не забудьте убрать лишнее освещение, так как карта может получится слишком светлой. Должно получится что-то вроде этого: 3) Создание цветовой палитры Заходите в фотошоп и создавайте новую текстуру, используя базовый фоновый цвет или простую текстуру с малым количеством деталей, например снимок бетонной стены или куска металла.
Добавляете поверх слой с ambient и в свойствах слоя делаете режим 'умножение' (multiply). Настраиваете прозрачность. Также добавляете слой с развёрткой и выбираете режим 'экран' (screen), ставите прозрачность около 20-25%. У нас есть базовый шаблон, по которому можно рисовать палитру.
4) Потёртости и царапины. Любая металлическая деталь как правило покрыта краской. По прошествии времени часть краски слезает и возникают потёртости и царапины.
Создаёте новый слой, выбираете режим экран с прозрачностью около 30% и берёте любую кисточку в фотошопе, у которой самое меньшее сглаживание. Ambient карта может дать нам хорошее представление, где больше слезает краска. Как правило это углы и края деталей.
Неплохой идеей будет добавить второй слой потёртостей поверх, с меньшей прозрачностью. Далее царапины. Также создаёте новый слой в режиме экрана с небольшой прозрачностью, выбираете карандаш белого цвета и расчёркиваете металл прямыми линиями, создавая поцарапанные поверхности.
5) Закрашивание поверхностей. Заливка в фотошопе имеет отличное свойство 'все слои'. Выбираете необходимый цвет, в свойствах заливки наверху ставите галочку 'все слои' (all layers) и закрашиваете определённые кусочки деталей в свой цвет. Заливка будет ориентироваться на детали и царапины, однако вам нужно чутко регулировать чувствительность инструмента. Для создания двухцветной окраски можно создать свой собственный шаблон заливки под себя. Как правило металлические поверхности имеют несколько слоёв краски.
Для создания второго слоя, сделайте слой под основными слоями краски. С помощью волшебной палочки, создайте выделение из уже залитой краски, потом с помощью панели выделение, увеличьте выделение на 2-3 пикселя в зависимости от вашего разрешения. Теперь вы можете, используя это выделение, рисовать второй слой краски под основным слоём. 6) Создание Bump текстуры. Бамп текстура создаёт визуальный объём и выпуклость для вашей текстуры. Конечно сейчас есть программы, которые создают её автоматически, такие как CrazyBump, однако мы попробуем сделать её вручную.
Для её создания сохраните вашу палитру в отдельный файл, и сделайте все слои чёрно-белыми с помощью меню 'изображение.' Двухцветные палитры замените на одноцветный слой, все царапины и потёртости обратите в чёрный цвет, чтобы в игре они впадали внутрь. Вся краска будет примерно одго тона, нижний слой чуть темнее.
Все лишнии детали смазаны, чтобы придать карте более гладкий вид. Карты ambient и развёртка отключены. 7) Дополнительные детали Отличным способом придать детализованности вашей палитре будет добавление дополнительных текстур поверх, таких как бетон, металл, ткани, пластик или ржавчина. Задайте слабую прозрачность и поиграйте с режимами слоёв, чтобы добиться мягкого и органично выглядящего эффекта. Эффект ржавчины можно сделать рисуя обычной смазанной кситю жёлтого/бурого/зелёного цвета в режиме умножения и с малой прозрачностью. Также можете добавить детали, такие как надписи, стрелочки и цифры из других готовых изображений или используя инструмент текста.
Вот так выглядит наша финальная палитра: 8) Карта отражений. Карта отражений даёт вам возможность регулировать отражающие свойства материала при рендере или в игре.
Она создаётся почти также, как и карта бампа. Более светлые части отражают больше, более тёмные - меньше. Соответственно все царапины и места со слезшей краской у нас снова тёмные, а основная поверхность более светлая. Карта ambient включена.
9) Финальный шаг Ну вот, наша текстура почти готова. Для использования её в рендере уже можно брать прямо так, однако для импорта в юнити нам нужно сделать ещё кое-что. Дело в том, что базовые шейдеры Юнити читают бамп карту отдельно, а карту отражений берут из палитры.
Чтобы они могли использовать нашу текстуру, нужно вставить карту отражений вовнутрь палитры. Для этого открываем окошко 'Каналы' и создаём новый канал, который будет называться альфа 1. Копируем карту отражений из файла, и вставляем её в палитру в альфа канал, для этого он должен быть выделен.
Подгоняем размер, и сохраняем получившуюся текстуру в формате TGA. Категория: Просмотров: 20018 Рейтинг: 5.0/2 Теги:, Дополнительные опции: Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга: Игровые объявления и предложения. Если вас заинтересовал материал «Как нарисовать качественную текстуру для Unity3D», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы:. Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.
Ибуфен Д Для Детей
Всего комментариев: 11.