Софт

3d модели Unity3d

Рейтинг: 4.3/5.0 (664 проголосовавших)

Категория: Windows

Описание

Подготовка модели к экспорту из 3Ds Max в Unity3d

В данный момент я занимаюсь разработкой своей первой игры на Unity3d. Идея готова, заготовка готова. Но вот нормальных 3D-моделей в игре еще нет. А без красивой графики, детализированных моделей и прочих эффектов, 3D-игра деградирует в пародию на игры с приставок Nintendo и Dendy из 90-х. Оказалось, что в добавлении моделей в игру есть свои хитрости, которые стоит знать до начала экспорта.

Проблема, с которой я столкнулся знакома всем новичкам, которые впервые попытались экспортировать 3D-модель из (в моем случае) 3Ds Max’а в Unity и увидели… что модель перевернута! Это произошло потому, что Unity использует нестандартную систему координат сосью Y, направленной вверх :

Тогда как в классической 3D-математике вверх направлена ось Z :

Т.е. когда Unity пытается отобразить модель, он ожидает, что верхняя её часть находится там, куда направлена ось Y. И не важно, что у вас там, на самом деле, корма танка. После такого экспорта модель приходится поворачивать, выравнивать в самом движке, а это не очень удобно и утомительно. Чтобы этого избежать, есть два способа.

Первый, наивный: смоделировать, руководствуясь системой координат, принятой в Unity. Примерно вот так:

Модель в этом случае экспортируется "прямо". Нужно только не забыть указать при экспорте, что именно ось Y смотрит вверх (для 3Ds Max в секции Axis Conversion поле Up Axis нужно установить в Y-up ):

Второй способ. который, как оказалось, тоже хорошо работает — просто поставить при экспорте, что ось Z будет смотреть вверх (для 3Ds Max в секции Axis Conversion поле Up Axis нужно установить в Z-up ) и оставить модель так, как она есть, не поворачивая её.

В этом случае модель тоже появится в движке повернутой в “правильном” направлении, но это еще не гарантирует, что Unity будет правильно определять, где находится передняя часть модели.

О том, как быть уверенным, что при команде rigidbody.AddForce(this.transform.forward. 10*Time.deltaTime, ForceMode.Impulse) модель начнет двигаться вперед, а не будет уподобляться крабу, я расскажу в следующем посте .


Полезная статья? Их будет больше, если вы поддержите меня!

3d модели unity3d:

  • скачать
  • скачать
  • Другие статьи, обзоры программ, новости

    Создание компьютерных игр на базе Unity 3D - Программы и курсы - Дополнительное образование и повышение квалификации - ФДО ТУСУР

    Создание компьютерных игр на базе Unity 3D

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

    Unity — это полноценный игровой движок, рассчитанный на то, что весь процесс разработки (кроме подготовки контента и скриптинга) будет происходить в поставляемом комплекте (в Unity3D интегрировано большое количество мощных вспомогательных средств, связанных с проектированием и дизайном). Работать в Unityпросто и удобно, интерфейс дружелюбен и интуитивно понятен.

    Пакет Unity 3D позволяет создавать игры и интерактивные приложения для любых платформ и устройств – будь то компьютер, игровая приставка или смартфон. Игру можно запустить прямо на веб-странице в браузере. Так вы сможете оживить ваш сайт, блог, или форум.

    Плюсы Unity:
    • Кроссплатформенность — поддерживаются Windows, MacOS, Wii, iPhone, iPod, iPad, Android, PS3 и XBox 360.
    • Современный уровень графики (есть deferred освещение, встроенный редактор шейдеров, стандартный набор постпроцессинговых эффектов.
    • Физический движок — PhysX.
    • Полноценное 3D в браузере! Скорость и сложность разработки обычной браузерной казуалки на ней не выше, чем на Flash, а графическое превосходство — налицо. Да и wow-эффект! Яркий пример — Джаггернаут отечественных разработчиков (IT Territory LLC под эгидой mail.ru). Мощь и невероятные способности движка Unity3D позволили этой игре моментально завоевать огромную армию поклонников по всему миру.
    • В конце концов, на Unity можно делать сайты, презентации, визуализировать научные проекты. Все это можно было написать используя существующие средства, но в Unity в разы быстрее и качественнее.

    Таким образом, в случае с Unity мы имеем уже готовый пайплайн, готовый рендерер, готовую физ. аудио и сетевую библиотеки, кодить можно на знакомом языке — фактически, со стороны кодинга нам нужно только знать основы, допустим, JavaScript, (С# будет большим, но необязательным плюсом) Т.о. остается только пройти наш базовый курс по Unity!

    Разработка компьютерной игры — это серьезный процесс, требующий работы целой команды профессионалов. Моделлеры создают 3D-модели, композиторы сочиняют музыку, художники создают арт к игре. А программист Unity3D все это объединяет и оживляет.

    И это стоит того, чтобы попробовать Unity на практике!

    Для кого этот курс?

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

    Рекомендуемая подготовка

    Для успешного прохождения курса необходимы базовые навыки программирования на любом языке (очень пригодятся JavaScript, C#.), любовь к компьютерным играм и большое стремление самостоятельно их разрабатывать. Если вы никогда ранее не писали программ, то прохождение этого курса — отличный способ начать увлекательное путешествие в мир программирования и создания игр на базе современного и актуального движка Unity3D!

    Чему вы научитесь?

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

    В процессе обучения под руководством опытного преподавателя вы не только создадите собственную полноценную компьютерную игру, но и узнаете как наиболее эффективно монетизировать ваши произведения.

    В курсе рассматриваются следующие вопросы :

    1. История Unity3D. Плюсы и минусы игрового движка.

    2. Изучение интерфейса.

    3. Проект: Вращающийся кубик.

    • Компилирование и публикация проекта.
    • GameObject и Component – основная идея движка.
    • ОбзорстандартныхGameObject’ов: Cube, Sphere, Capsule, Cylinder, Plane.
    • Изменение параметров GameObject’ов и ассетов.

    4. Проект: Шутер от третьего лица.

    • Материалы и освещение.
    • Звуковое сопровождение.
    • Импорт моделей из 3Ds Max.
    • Звуки. Импорт и вставка звуков в проект.

    5. Проект: Создание 3D-галереи с видом от первого лица.

    • Гонки.
    • Префабы. Их назначение, создание, обновление.
    • Ландшафт. Генерация, изменение, добавление сторонних объектов на него.
    • Генератор деревьев.
    • Система частиц. Делаем след от колес.

    6. Проект: Шутеры от первого лица

    • Работаем с физикой.Collider’ы. Rigidbody. Cloth.Ragdoll.

    7. Проект: Мини-игра «Маленькая 2D игра на выбор».

    • Ролики на движке игры. Кат-сцены.
    • Камеры. Создание и настройка камер.

    8. Проект: Создаем свою первую кат-сцену.

    • Основы программирования.
    • Переменные
    • Комментарии
    • Оператор присваивания
    • Булевы операции, логика
    • Конструкторыif, for, while, case,…
    • Функции
    • Принципы объектно-ориентированного программирования.
    • Связь скрипт – компонент.
    • Разборосновныхклассов: Monobehaviour, GameObject, Transform, GUI.
    • Разбираем скрипты предыдущих проектов.
    • Разбор основных классов: AudioSource, Camera, Light, и другие.
    • Разбираем скрипты предыдущих проектов.
    • Инстанцирование.
    • Деструкция.
    • Управление персонажем. Изучение класса Input.
    • Отладка.Debug. Console. Profiler.
    • Основные ошибки новичков и способы их решения.

    9. Проект: Рассмотрение инструментов Unity3D

    • Создание игрового меню.
    • Логика построения игрового меню.
    • Работа с 3D Text.
    • Скриптование на C#. Программируем игровое меню.
    • Множественность сцен. Переход от одной сцены в другую.
    • Подготовка уровня
    • Настройка объектов
    • Инстанцирование объектов. Создаем оружие с трассирующими патронами. Проверяем попадание пули по объектам.
    • Постэффекты.
    • Навигация
    • Аудио. Добавляем звуки. Более подробное изучение.
    • Movie Texture. Вставляем интро — ролик в игру.
    • Работаем с анимацией. Плавные переходы между разными анимациями.
    • Сетевые технологии. Написание скриптов на C#.
    • Оптимизация.Методыоптимизациипроектов.
    • Drawcalls.
    • Forward иDeferred Lightning. Плюсыиминусы.
    • Lightmapping.
    • Occlusion Culling.
    Продолжительность обучения
    • Учебная программа: 80 часов;
    • Расписание занятий: 3 раза в неделю с 18:30 до 21:30 (4 ак. часа);
    • Продолжительность обучения: 1,5 месяца.
    Выдаваемые документы
    • Удостоверение о повышении квалификации установленного образца;
    • Сертификат ТУСУР и Mirball Studio.

    Brainy Studio - We Create Games! Создание трехмерной модели местности в Unity 3D

    Создание трехмерной модели местности в Unity 3D

    Written by Evgeniy Romin.

    Статья подготовлена специально для конференции Innotech - http://conference.msa.pstu.ru/

    Авторы: Галкин Никита и Ромин Евгений.

    При помощи компьютерных тренажеров, в современном мире, можно получить большой объем практических знаний, что стало возможно благодаря удешевлению вычислительной техники и появлению большого количества сред моделирования 3D реальности, но для того чтобы получить практические знания в более короткие сроки и более качественно необходимо создать тренажеры, которые будут наглядно и достоверно визуализировать учебный процесс. В настоящее время одной из актуальных задач при проектировании и создании тренажерных комплексов, является моделирование местности (ландшафта), который бы с высокой точностью повторял существующие ландшафты. Поэтому огромную роль играют «объективные» ландшафты, которые будут передавать четкую картинку местности (расположение объектов, рельеф, физику окружающей среды и т.д.) и иллюстрировать качественно действия рабочей техники в рамках образовательного процесса.

    Помимо симуляторов и тренажеров, 3D модели различных ландшафтов играют немаловажную роль в ГИС (геоинформационных системах) и различного рода игровых приложения, где моделируется окружающая 3D обстановка, которая придает всем этим приложениям не только увлекательность при использовании, но и наглядность. Таким образом существует необходимость в максимально доступном и простом способе моделировать ландшафты и местности с различными рельефными особенностями. В этой статье детально рассмотрен пример по созданию высоко детализированного ландшафта в Unity3D – мульти-платформенном инструменте для разработки трехмерных приложений.

    Рис 1. Интерфейс проектирования ландшафтов в Unity3D

    Стандартный процесс моделирования ландшафта в Unity выглядит следующим образом: [1]

    создание и задание основных параметров (высота, длинна, ширина) для пустого объекта Terrain (выглядит в виде прямоугольной плоскости)

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

    нанесение текстур (могут быть использованы как базовые текстуры, так и созданные в различных графических редакторах; наносить текстуры рекомендуется после создания конечного рельефа, т.к. в противном случае можно получить деформированные текстуры)

    добавление различных источников света (глобальных и локальных) и создание неба (в контексте Unity именуется, как SkyBox)

    проработка деталей, особенностей местности и объектов (деревья, трава, вода, камни и т.д.)

    расстановка камер (позволяет создавать визуальные эффекты или принуждает пользователя смотреть так, как хочет создатель приложения)

    Методы оптимизации при работе с ландшафтами в Unity3D

    Unity является довольно простым движком в освоении, а главное – бесплатным. Однако для работы с большими сценами и большим количеством объектов необходимо иметь достаточное количество вычислительных ресурсов. Поэтому с точки зрения работы с 3D моделями ландшафтов, необходимо уделять вниманию вопросам производительности и оптимизации этих моделей.

    Для уменьшения количества полигонов применяется алгоритм редукции полигонов. Редукция - процесс упрощения 3D модели путем уменьшения количества полигонов. Принцип работы метода заключается в замещении группы полигонов одним, наиболее близким к исходной группе по расположению вершин. Большинство 3D редакторов имеют возможность задавать интенсивность редукции, что позволяет выбрать нужное соотношение между уровнем проработки модели и экономией вычислительной мощности.[2]

    Рис. 2 Использование инструмента редукции полигонов для 3D модели ландшафта

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

    Также при моделировании ландшафта важно учитывать, что на нем могут присутствовать различные элементы (камни, деревья, здания и т.п.), которые будут придавать уникальность моделируемой местности. Процесс отрисовки каждого элемента это трудоемкая задача для компьютера. Occlusion Culling – функция Unity, которая отключает отрисовку объектов, невидимых камерой или заслоняемых другими объектами в данный момент времени. [3]

    Рис.3 Использование инструмента Occlusion Culling для отключения объектов, которые в данный момент не видны основной камере

    При создании ландшафта местности одним из ключевых вопросов является освещение, потому что при помощи света и тени можно скрыть недостатки сцены после оптимизации. Свет используется для освещения объектов и создания нужного визуального настроения. Unity позволяет моделировать разные типы источников света: солнце, фонари, горящие костры и прочее.

    К примеру, для создания «Солнца» обычно используется инструмент Direction Light, так как он влияет на все поверхности в сцене. Особенностью Direction Light является то, что для своей работы этот инструмент потребляет мало ресурсов графического процессора. Для создания других источников света, к примеру, уличных, автомобильных фонарей применяют инструмент Point Light, так как он идеально повторяет их естественный свет. Но данный тип освещения потребляет наибольшее количество ресурсов графического процессора.

    Рис. 4 Принцип работы Point и Direction Light

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

    Рис. 5 Пример работы инструмента SkyBox для моделирования неба

    Используя вышеописанные методы создания и оптимизации 3D ландшафтов, была создана тестовая сцена для интерактивного приложения WitchCraft в программном пакете Unity.

    Рис. 6 Конечный результат моделирования

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

    • операционная система: OS X Maverics
    • процессор: 1,3 GHz Intel Core i5 Haswell
    • оперативная память: 4 Gb 1600 Ghz DDR3
    • видеокарта: Intel HD 5000 1024 Mb

    Рис. 7 Ресурсоемкость тестовой сцены при заданной конфигурации

    На этапе тестирования, приложение показало хорошие показатели FPS, что говорит о том, что местность смоделирована «экономно», несмотря на большую площадь с разнообразным рельефом и достаточно большое количество объектов.

    Описанный подход к созданию и оптимизации трехмерной модели местности может быть применен для разработки интерактивных приложений на базе Unity3D для различного типа приложений (симуляторы, ГИС-системы и интерактивные игровые приложения), что делает его универсальным и полезным.

    1. «Unity 3D Basic Info and Tutorials» http://www.csit.carleton.ca/

    Unity3D Урок 5: Создание и экспорт модели в Unity3D

    Unity3D Урок 5: Создание и экспорт модели в Unity3D

    Пятый урок из серии обучающих видео по работе с игровым движком Unity3D В данном уроке мы будем создавать модель в Google SketchUp 2013 и после экспортировать в Unity3D Ссылка на 3D редактор Google SketchUp Наша группа по Unity3D ВКонтакте Наш сайт Заявки на уроки оставлять на нашем форуме

    Comments to the video: Unity3D Урок 5: Создание и экспорт модели в Unity3D

    Kirill Sandov 12 days ago

    Создатель молодчина! Объяснил все и показал, понятно и без заморочек. С меня лайки и подписка.?

    Kricun RED 1 month ago

    Блин глядеть не может быть что за скрипы видать поле от микрофона.жуть.перезалей видос тошнит глядеть.?

    Ramvel 3 months ago

    У меня неувязка с экспортом, потом окончания этой операции создаётся файлик, какой весит попросту капец будто не достаточно (7кб) и при прибавление его в Unity Там.Там пусто, что я не этак сделал? (Про гипотиза)?

    Капкан 3 months ago

    Так и дома можно сделать??

    фильм ищешь тогда тебе на мой канал 5 months ago

    У меня персонаж в игре проходит через Предметы! Как поправить??

    HitOkChannel 2 months ago

    Mr Besten Hack 333 6 months ago

    Ребят кто может изволь отзовитесь я желаю сделать онлайн игру для приложения вконтакте даже если она будет изнаночная мне всеровно в контакте все такие игры этак вот я смотрел различных ютуберов однако они не помогали я не сообразил ни будто сделать меню для игры не будто сделать онлайн игру и кому не жаль изволь у кого вышли обычные игры вы не сможете мне дать пару уроков если что вот мой скайп danila89525511496 я умоляю буду должен жизнью и если за игру буду получать средства то все заработанные средства отдам вам. ?

    Лёха Enderman 10 months ago

    классно, уже качаю прогу?

    KEEP CALM 1 year ago

    круто! спосибо огромное!?

    Саймон Говорит 1 year ago

    Зачем музыка в уроке. Лучше микрофон не облизывать. ?

    Саймон Говорит 11 months ago

    Хм. Разумеется, музыка отвлекает от восприятия инфы))) И насчет микрофона то же самое)

    классный дракон 1 year ago

    +Саймон Говорит ну-ка возжелал человек поставить музыку и что? для тебя что мешает она что ли? смотри в экран будто модель создаётся, а на музыку не обращай внимания, ты ведь смотришь видео для того чтоб поглядеть будто модельки отрисовывать верно, этак вот и смотри будто рисуется моделька,а не интересуйся для чего музыка в уроке,а насчёт микрофона тоже самое.

    GrandMayson 1 year ago

    Что мастерить если SketchUp 2014 время от времени выдаёт прямиком при работе Unable to update the evalution time. Make sure that С:\ProgramData\SketchUp\SketchUp14. If is writable. Как это поправить раскажите изволь по подробнее. У меня вроде ИЗ-ЗА ЭТОГО все сделанные вещи там сохроняются без текстур.?

    Twarex Channel 1 year ago

    Выучи English стиль )

    Розовая модель

    Ошибки в отображении 3D моделей в Unity 3D. Розовый, черный, белый цвет 3D модели в Unity. Проблемы с материалами, шейдерами, uv разверткой и кешем

    В данной статье рассматриваются проблемы, возникающие при работе с текстурами, материалами, uv-разверткой и шейдерами в Unity 3D, приводящие к окрашиванию 3D модели в черный, белый или розовый цвета, а также приводящие к смещению текстуры на поверхности 3 D модели. Данная статья является в некотором смысле продолжением статьи Артефакты, возникающие при импорте моделей в игровые движки на примере Unity 5. в которой были кпомянуты описанные выше проблемы, но не были рассмотрены способы их устранения. Сейчас мы исправим данное упущение и расскажем и покажем на примере 3D моделей, созданных в Blender’е и импортированных в Unity3D версии 5.

    Часто на различных форумах (не только русскоязычных), посвященным работе с игровыми движками, в частности, Unity 3D, можно встретить такие вопросы, как «Импортировал модель в Unity3D, поместил на сцену, а она темная. Почему?», «Импортированная модель перса окрашена розовым, что делать?» «Импортировал модель, наложил текстуру, а она смещена, лицо теперь находится на спине и руке», «Импортировал в Юнити модель, созданную в Блендере, почему не наложилась текстура на модель?», «Почему не экспортировалась модель из Blender’а в Unity», «Открыл/импортировал ассет в Unity, а вместо красивого спецэффекта вижу розовую плоскость. Где анимация взрыва?» И так далее… Так давайте рассмотрим, из-за чего случаются все эти казусы и как их избежать.
    Первой проблемой, которая рассмотрена в статье, является розовый окрас модели.

    На рисунке показана импортированная в Unity3D модель, которая после переноса на сцену (импорта, манипуляций с папками проекта, удаления папок, щейдеров или материалов и т.д.), окрашена в розовый цвет. В данном случае, как видно на рисунке, у модели саркофага отсутствует материал. Данная ситуация была смоделирована путем удаления назначенного материала из папкиAssets.

    В данном случае проблема связана с материалом, либо с назначенным ему шейдером:
    — модели не был назначен материал, материал не был импортирован вместе с моделью из ассета Unity, материал не был создан при импорте модели;
    — материалу не назначен шейдер;
    — в назначенном материалу шейдере присутствует ошибка.

    В случае отсутствия у 3D-модели материала или шейдера следует назначить ей материал или выбрать для материала подходящий шейдер (без ошибок), в зависимости от того, чего не хватает, и уже после того, как модель перестанет щеголять розовым цветом, назначить материалу текстуру, карту нормалей и т.д.

    На рисунке слева показана 3D-модель с удаленным в папкеAssetsшейдером. В отличие от предыдущего рисунка, здесь мы видим, что материал модели назначен (“NewMaterial”), а вот в полеShaderвместо названия шейдера можно заметить надпись “Hidden/InternalErrorShader”, кричащую об ошибку, связанную с шейдером.

    Чтобы создать материал, щелкните Правой Кнопкой Мыши в желаемой подпапке папки ассетов (Assets) и в открывшемся меню выберите вкладку Create, а в ней — Material. Введите имя будущего материала и нажмите клавишу Enter (Ввод) или щелкните Левой Кнопкой Мыши в любой точке экрана. Введите имя материала, как вы это делаете при создании файла или папки, например, в ОС MS Windows. Материал будет создан со стандартным шейдером
    3D модель может иметь несколько материалов, назначенных её составным объектам (мешам), так что в этом случае понадобится назначить им соответствующие материалы или создать новые, если таковых не имеется, и опять же назначить 3D модели.

    На рисунке показано меню создания материала.
    Чтобы назначить материал модели, выберите модель в окне сцены (“Scene”) Редактора или в окне Иерархии (Hierarchy), затем найдите вкладку материала модели в окне Инспектора (Inspector), затем перетащите созданный материал из папки ассетов на свою модель на сцене или вкладку в Иерархии. Далее перетащите текстуры (diffuse map), карты нормалей (normal maps), карту затенений (occlusion map) и т.д. в соответствующие слоты.

    На рисунке стрелками показан процесс назначения материалов в соответствующие слоты материала.

    Помните, что модель на сцене (импортированная модель, перетащенная на сцену) и префаб (перетащенная модель со сцены обратно в папку ассетов) представляют собой разные сущности, так что добавление материалу одной сущности, не затрагивает другую. Проще говоря, если вы назначите материал модели, то этот же материал вам нужно будет назначить и модели, содержащейся в префабе (не важно, на сцене ли, в Панели Иерерхии или папке ассетов).

    Чтобы назначить шейдер модели, сменить его на один из стандартных (включая Legacy шейдеры) или свой самописный (скачанный из интернета, переписанный из учебника по шейдерам, например, “Unity 5.x Shaders and Effects Cookbook”/”Шейдеры и эффекты в Unity. Книга рецептов”), необходимо выбрать модель и в окне Инспектора раскрыть свиток назначенного 3D модели материала и щелкнуть на стрелочке вниз справа от названия текущего шейдера, чтобы открыть выпадающий список шейдеров, встроенных в Unity3D или расположенных в папках вашего проекта.

    На рисунке показано меню выбора шейдера из доступных в проекте.

    Если же Unity сигналит вам об ошибке в шейдере вместо отображения его названия или в окне консоли (Colsole), следует исправить ошибку в шейдере либо найти шейдер, в котором уже исправлена данная ошибка, например, обновленную версию шейдера или ассета целиком, обновленного до версии, поддерживающей версию Unity3D, которая установлена на вашей машине. Если вам еще сложно разобраться в шейдерах Unity и исправить ошибку самому, вы можете скопировать текст ошибки в свой любимый поисковик и, скорее всего, вы найдете решение своей проблемы.

    После импорта ассета в проект Unity 5 и подтверждения в диалоговом окне API Update Required того, что мы сделали бэкап и готовы проапгрейдить все скрипты и сборки в папке Assets, Unity просигнализировал(а) в консоли об ошибке в шейдере “ HeatDistort”.

    На рисунке показано, как ругается Unity на шейдер “HeatDistort”, что, однако, не мешает запустить проект.

    Действительно, после запуска проекта вместо визуализированного эффекта взрывной волны мы видим лишь розовую плоскость.

    На рисунке показана работа ассета с ошибкой в шейдере. Та самая розовая плоскость.

    За решением того, как исправить данный баг, ходить далеко не пришлось: на странице ассета один из пользователей выложил решение проблемы.

    На рисунке показан шейдер с исправленным багом и рабочим ассетом. Детонатор работает и при этом остается бесплатным!

    Если вам не удалось найти ошибку среди результатов поиска, поищите ответ на свой вопрос или задайте его участникам сообщества Unity 3D в одном из разделов форумов, посвященных Unity3D.
    Ошибки в шейдерах зачастую возникают при импорте/использовании моделей из ассетов Unity 3D. Такие ассеты могли быть созданы в более ранних версиях Unity и, даже если импорт прошел без ошибок, не все составляющие ассетов поддерживаются в старших версиях Unity (не говоря уже про поддержку более свежих версий ассетов более старыми версиями Unitr3D), включая функции шейдеров, и не все ошибки в ассетах исправляются автоматически в процессе апдейта/обновления открываемого проекта. Описанные выше ошибки наблюдались при открытии в Unity5 ассетов с водой, упакованных в четвертой (или третьей) версии Unity3D и для неё же и предназначенных.

    На рисунке показан скриншот импортированного в Unity5 ассета для третьей версии Unity.

    Хотя были импортированы все содержащиеся в ассете компоненты, при запуске проекта вода была окрашена в розовый цвет, а в окне консоли показаны ошибки, которые к этому привели. Забив в поисковике текст ошибки, можно найти ее решение. Использовав найденное решение, можно вернуть проекту его первоначальный вид (ну, или близкий к нему). А можно использовать один из стандартных шейдеров Unity последней версии.

    На рисунке показана пара вариантов исправления шейдера воды.

    Также подобные ошибки могут возникнуть при экспорте/импорте моделей из ассетов, если импортировать лишь часть компонентов ассета и игнорировать их зависимости с другими компонентами. Та же ситуация возникает при использовании/импорте ассетов, в которые были добавлены модели/компоненты из Unity без сохранения их зависимостей/связей с другими компонентами, например, шейдерами и материалами, использующимися для визуализации конкретной 3D модели, т.е. в ассет были добавлены (экспортированы или перетащены из одного проекта в другой) лишь сами модели, а шейдеры и материалы — нет, поскольку пользователь не поставил галочку в диалоговом окне импорта напротив сохранения в ассете всех (или необходимых) связанных с моделью компонентов, в частности, отвечающих за визуализацию модели.

    На рисунке показано меню импорта в Unity5 ассета Car Tutorial. предназначенного для Unity 3со всеми выбранными (галочками) компонентами для импорта в проект.

    Как при импорте, так и при экспорте в ассет, вы можете и, зачастую, просто обязаны, сохранить существующие зависимости импортируемых моделей с остальными компонентами ассета/проекта (шейдерами, скриптами и т.д.). Снятие одного из флажком может порушить весь ассет после импорта в проект Unity 3D.
    Сохранение зависимостей обеспечивает импортирование в ваш проект не только целевого объекта (3D-модели в данном случае), но и всех связанных с ним компонентов. Поднабравшись опыта, вы сможете определять, какие связанные компоненты нужно импортировать в том или ином случае, а какие нет. А пока можно импортировать все, а потом уже руками удалить ненужные. Кроме того, для Unity существуют ассеты, позволяющие выявлять неиспользуемые элементы проекта, например, Asset Hunter, Resource Checker и т.д. либо воспользоваться скриптами из статьи Automatically locate all unused unity assets или скачать проект Unity целиком.

    Также данная проблема встречается при апдейте проекта, созданного, например, в Unity 4 до Unity 5. О том, что изменилось в работе с шейдерами и об изменениях в самих шейдерах можно почитать на официальной странице Shaders in Unity 5.0 .

    Если же вам ничего не помогает, например, 3D модели назначен материал, в шейдере нет ошибок и т.д. и т.п. то стоит попробовать очистить кеш проекта, для чего необходимо в главном меню выбрать вкладку Edit, в открывающемся списке которой выбрать Preferences. В открывшемся меню Unity Preferences выбрать в левой колонке GI Cache и щелкнуть на кнопке Clean Cache.

    На рисунке показано меню очистки кеша проектаUnity3D.

    Вторая проблема, которой уделена часть данной статьи описывает ошибки, связанные с автоматическим импортом материалов вместе с 3D моделью вUnity3D.

    Еще одна распространенная проблема, с которой сталкиваются начинающие Юниводы, связана с тем, что созданные в 3D-редакторе текстура и материал не импортируются вместе с моделью и не отображаются в игровых движках, Unity3D, Unreal Engine и других.

    На рисунке показан пример импортированной в Unity 3D-модели, созданной в Blender’е.

    Как видно на рисунке модель окрашена белым цветом по-умолчанию. Что же произошло? Все дело в том, что, созданные в Blender’е материалы и текстуры при помощи Cycles при помощи нодов/узлов не поддерживаются в Unity3D. В Unity поддерживаются лишь материалы, созданные нативными средствами Blender’а, причем не все настройки и характеристики материала сохраняются, а лишь малая его часть: название и цвет материала. Также в файле (или файлах, в зависимости от формата, в который экспортируется 3D модель) экспортированной модели сохраняется имя файла, примененной к материалу текстуры/текстур.
    Допустим, в Blender’е вы создали и назначили модели материал с именем CharacterMaterial, выставили ему красный цвет и назначили текстуру (диффузную карту) MyTexture.jpg. При экспорте модели, к примеру, в одном из рекомендуемых разработчиками формате, а именно FBX, текстура не экспортируется вместе с моделью, а экспортируется/запоминается в файле с моделью лишь uv-развертка модели, имя и цвет материала, имя используемой одной или нескольких текстур. При импорте модели в Unity игровой движок руководствуется своими правилами поиска текстуры для материала модели и создания самого материала. Настройки импорта материала становятся доступны в панели Инспектора ,если выбрать импортированную в Unity3D модель в окне инспектора.

    Также правила поиска текстуры, создания материала модели и назначения ему текстуры игровым движком Unity3D описаны в соответствующей статье на сайте Unity. Как мне импортировать модели из моего 3D редактора?

    Рассмотрим пример ручного импорта текстуры в Unity 3D. Такой вариант подходит, если вы скачали модель, например, в формате FBX или Blender, к которой была приложена текстура. Самым простым способом добавить/импортировать 3D-модель в Unity является перетаскивание этой самой модели из папки, расположенной на жестком диске, в одну из папок или подпапок Assets. По желанию, вы можете одним махом перетащить в Unity сразу файл модели, текстуру, карту нормалей, карту отражений и т.д. При импорте модели в Unity в папке, куда вы импортировали модель, будет создана подпапка Materials, в которой будет создан материал (или несколько материалов) по умолчанию или с уже назначенной текстурой и определенным именем, в зависимости от того, был ли назначен материал модели в 3D-редакторе, была ли там же назначена текстура и были ли соблюдены правила импорта моделей и текстур при экспорте/импорте моделей, упомянутые выше, т.е. какое имя у файла модели, материала, текстуры и так далее.
    Следующая серия причин неверного отображения текстуры на 3Dмоделях связана сuvразверткой модели.

    Даже если в Blender’е текстура смотрится отлично на вашей 3D модели, то в Unity 3D без созданной uv- развертки добиться такого же результата не получится.

    На рисунке показана модель сферы безuv-развертки с наложенной текстурой вBlender’е (вверху) и импортированная вUnity(внизу) через экспорт в форматеFBX.

    На рисунке показана модель сферы с созданнойuv-разверткой с наложенной текстурой вBlender’е (слева) и импортированная вUnity(справа) через экспорт в форматеFBX.

    На рисунке показана 3Dмодель (вторая справа и ее клон — крайняя справа) безuvразвертки, импортированная вUnity3D. Как можно заметить, вторая справа 3Dмодель окрашена в один из цветов назначенной ей текстуры (той же самой, что назначена первой и второй слева моделям). В качестве эксперимента самой крайней справа 3Dмодели был назначен материал, уже использовавшийся ранее. Как можно видеть, и здесь 3Dмодель приняла один из цветов назначенной ей текстуры.

    В зависимости от того, какие цвета присутствуют на назначенной 3D модели, такой и будет выбран цвет импортированной в Unity 3D без uv развертки.

    Как уже было сказано выше, данная проблема, как правило, связана с отсутствием у 3D-модели uv-развертки либо с неправильно созданной uv-разверткой. Следовательно, следует либо создать uv- развертку, либо исправить ее. В Blender’е доступны несколько видов создания uv-развертки, как вручную на основе созданных швов 3D-модели (как было показано выше), так и автоматически, например, из проекции, в зависимости от углов, как было показано на одном из скриншотах выше, демонстрирующем меню создание uv развертки.
    Если вы текстурировали свою 3D модель в Blendere при помощи нативых материалов или материалов, созданных в Cycles, то ее необходимо будет запечь согласно созданной uv-развертки модели. Вы также можете создать/нарисовать новую текстуру, воспользовавшись встроенным инструментом раскрашивания текстуры. Если у вас уже есть готовая карта текстуры для 3D-модели, для которой вы создали развертку, или для другой похожей модели, то при должном умении работы в редакторах изображений (том же Photoshop’е или GIMP’е), вы сможете переделать имеющуюся текстуру под uv-развертку своей 3D модели.
    Но прежде чем вы сможете запекать текстуру, карты нормалей, затененностей, смещения и т.д. вам придется создать, как минимум одно, изображение, чтобы запечь эти карты, как описано в статье Быстрый старт из MakeHuman в Unity3D. Создание low poly и high poly моделей персонажа. Запекание карты нормалей в Blender .

    Если для модели была создана uv-развертка и в Blendere текстура была наложена на модель согласно uv-развертке, то в Unity и Blender’е она будет отображаться одинаково, т.е. текстура будет распределена по поверхности 3D модели согласно uv-развертке, как в Unity3D, так и в любом другом игровом движке или 3D редакторе. Будьте готовы к тому, что в Blender’е, Unity3D, Unreal Engine 4 и других 3D редакторах и игровых движках, помимо всего прочего, используются свои шейдеры т настройки освещения, так что затекстурированная модель в Blender’е и, к примеру, в Unity 3D будет выглядеть по-разному, что можно заметить на последнем рисунке. Чтобы в игровом движке 3D модель выглядела так же, как и в вашем 3D редакторе, будь то Blender, 3ds Max, Maya, Modo и т.д. вам придется подобрать соответствующий шейдер (или несколько шейдеров), а также настройки освещения.

    Иногда, содержащаяся в blend-файле или импортированная в Blender модель имеет uv-развертку, но не имеет швов на самой модели, например, при импорте модели, созданной в MakeHuman. Про создание 3D модели в MakeHuman и импорт 3D модели в Unity 3D вместе с картой нормалей запеченной с high poly 3D модели в Blender’е вы можете прочитать в уже упомянутой выше статье.

    Чтобы посмотреть или отредактировать созданную uv-развертку достаточно выбрать под одним из окон 3D вида вкладку текущего типа редактора (по умолчанию куб в изометрической проекции) и выбрать в раскрывающемся меню вкладку UV/Image Editor, чтобы отобразить в текущем (активном) окне Редактор изображения/UV развёртки.

    На рисунке показано меню текущего типа редактора для конкретной области, в котором выбрана вкладка РедактораUV/Изображения.

    Итак, чтобы создать швы согласно островам развертки, вы можете:

    1) вручную выделить ребра на 3D модели;

    2) на uv-развертке и пометить их как швы;

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

    На рисунке показано создание швов наlowpoly3Dмодели персонажа из острововuv-развертки. На верхнем рисунке показано менюUVс выбранной вкладкой создания швов изuv-островов. На нижнем рисунке показан результат работы инструмента. Красным выделены созданные швыuv-развертки.

    Иногда вам придётся подправлять uv-развертку, чтобы избежать артефактов отображения текстур и/или запекания и использования карт(ы) нормалей, карты затенений (occlusion map) и т.д.
    3D-модель отлично будет себя чувствовать в игровых движках и без маркированных швов (но не без uv-развертки), однако, если вы захотите изменить uv-развертку, то в этом случае швы на 3D-модели вам понадобятся. Также помните, что при более-менее серьезном изменении развертки (перемещении uv-островов или их частей, вращении, масштабировании) или ее пересчете путем нажатия клавиши ‘U’ дважды (или после однократного нажатия клавиши U’ и выбора в открывшемся меню способа создания развертки), вам придется перерисовывать текстуру для своей модели, корректировать карту нормалей и все остальные карты, чтобы избежать артефактов отображения текстур. При небольших изменениях в геометрии 3D модели существует возможность закрепить вершины uv-развертки, чтобы при повторном ее создании, все закрепленные вершины uv-развертки остались на прежних местах. Для того чтобы закрепить вершины uv-развертки (“запинить” – жарг. от англ. Pin — прикалывать), достаточно выбрать вершины uv развертки и нажать клавишу ‘P’ (курсор мыши должен находиться в границах окна Редактора UV/Изображения), после чего все приколотые вершины окрасятся красным.

    На рисунке показана закрепленнаяuvразвертка (слева) и меню созданияuvразвертки (справа).UVразвертка создается только для выбранных элементов меша.

    Симптомами следующей известной проблемы отображения/рендера 3D-модели в игровых движках является смещение частей текстуры по поверхности модели, например, текстура лица может съехать на живот 3D-модели, а текстура капота — на днище кабины или на лобовое стекло.
    Данная проблема может быть связана с использованием текстуры от другой модели (если формы и uv-развертки первого и второго авто отличаются),
    использованием устаревшей текстуры (текстуру нарисовали/запекли до переделки модели), изменением uv-развертки 3D-модели, перемещением вершин модели и т.д. и т.п.

    На рисунке показана 3Dмодель,uv-развертка которой была повернута на 90 градусов по часовой стрелке в окне РедактораUV/Изображения вBlender’е.

    На рисунке показаны две 3D модели, импортированные в Unity3D: слева показана 3Dмодель,uvразвертка которой была повернута вBlender’е, справа – 3Dмодель, как она должна выглядеть ,т.е.uvразвертка соответствует текстуре, карте нормалей и карте затенений.

    Одним из действенных способов избежать подобных проблем является использование самой свежей версии текстуры с последней версией uv-развертки модели. Не следует изменять геометрию модели после создания для нее uv-развертки. Если такая необходимость возникла, то в случае незначительных изменений 3D-модели следует до или после ее изменения и обязательно до обновления uv-развертки закрепить существующую uv-развертку, после чего “развернуть” модель еще раз.
    Закрепив uv-развертку, вы сможете обновить ее без создания новой развертки так, чтобы координаты 3D-модели в трехмерном пространстве соответствовали координатам обновленной uv-развертки. Только представьте, что вы создали uv-развертку, скомпоновали острова таким образом, чтобы они занимали всю выделенную под нее площадь изображения, оставив минимум пустых областей, и тут увидели недоделку в модели, заказчик попросил добавить 3D модели третий глаз или вы обнаружили ошибку в шве модели. Что делать? Заново создавать развертку после исправлений или модифицирования 3D-модели, а потом заново компоновать элементы uv-развертки? Не обязательно, ведь можно заново создать развертку лишь для измененной части 3D-модели, которую или часть которой вы предусмотрительно оставили незакрепленной. Далее вы можете загрузить в окно редактирования UV/Изображения имеющуюся текстуру и подогнать под нее расположение и даже форму измененной uv-развертки. Но помните, что значительное изменение геометрии uv-развертки чревато сжиманием и растяжением текстуры в измененных соответствующим образом местах uv развертки, а, следовательно, и модели.
    Если модель представлена отдельными мешами и вам необходимо серьезно изменить геометрию одного из них, то вы можете «запинить» все острова uv-развертки, кроме uv-острова того меша (или его части), геометрию которого хотите изменить и/или создать для него uv-развертку заново, после чего выполнить развертку 3D модели. В этом случае uv-развертка будет полностью пересчитана с изменением геометрии (и, как правило, масштаба) незакрепленных островов uv-развертки. Изменившиеся размеры островов uv-развертки можно подогнать под «старые» размеры островов при помощи масштабирования. Чтобы изменить масштаб uv-острова, выберите его, например, при помощи клавиши ‘L’, поместив поверх одной из принадлежащей ему вершин курсор мыши, и нажмите клавишу ‘S’, после чего переместите мышь и подтвердите окончание масштабирования, нажав Левую Кнопку Мыши (или клавиши ‘Enter’).

    На рисунке показанаuvразвертка 3Dмодели до повторного созданияuvострова и после (в середине) с последующей корректировкойuvострова (справа) при помощи инструмента поворота (клавиша ‘R’), масштабирования (клавиша ‘S’) и перемещения (клавиша ‘G’).

    Осталось лишь переместить заново развернутые uv острова на прежние позиции и придать им форму максимально повторяющую форму старых uv островов (или в любые другие свободные места uv-развертки) и подправить текстуру, если в этом есть необходимость. Чтобы избежать постоянной сверки и размещения заново развернутых uv островов, вы предварительно можете экспортировать uv развертку, а затем загрузить ее в качестве фонового изображения при помощи кнопки “Open”, расположенной под окном редактора развертки.

    Помните, что если вы изменяете геометрию модели (или uv развертку), расположенную на границе двух (и более) островов, один из которых зафиксирован, а второй — нет, то данный способ не совсем подходит, поскольку придется «шаманить» с текстурой (и картами нормалей, затенения и т.д.) в районе шва либо замазывать артефакты на текстуре в самом 3D-редакторе (благо Blender позволяет рисовать текстурой по самой модели поверх существующей текстуры) и/или в программах, например, Substance Painter, DDO Painter и подобных им, позволяющих корректировать текстуры и другие карты. В противном случае придется смириться с искажениями карт в на швах. Альтернативной таким редакторам является перезапекание существующих карт: Ambient occlusion, карты высот/карты смещений, карты нормалей и т.д.
    Однако из любой ситуации, даже из такой времязатратной, есть выход: отменить фиксирование соседнего острова (вершины и шов которого принадлежат измененной геометрии 3D-модели), чтобы для него также был создан обновленный остров. Просто теперь вам нужно будет подогнать размер еще для одного острова uv-развертки и поправить его карты.
    При написании текста данной статьи именно в этот момент экран планшета мигнул и окрасился чёрным. К моей превеликой радости, таким образом планшет решил подсказать мне, что слишком долго пялиться в экран очень вредно, да и сохраняться почаще не помешало бы. В свою очередь, хочу посоветовать вам не полагаться на автосохранение Blender’а, а сохранять результаты своих трудов и делать резервные копии файлов, с которыми вы работаете, и бекапы носителей данных с ОС и важными данными./// Про резервные копии и восстановления из них будет посвящена небольшая статья.
    Отдельно хочется отметить. что, если изначально ваша модель была сохранена в формате Blender’а, например, вы скачали ее с одного из репозиториев моделей/ассетов, такого как blendswap.com. то текстуры (а также карта нормалей, отражений и т.д.) для модели могут идти, как отдельными файлами, так и могут быть интегрированы в сам файл с моделью. В первом случае вам нужно будет в открыть blend-файл с моделью, убедиться, что модели назначен материал, у 3D модели есть развертка и текстура правильно отображается на модели, после чего экспортировать модель, например, в формате FBX, и импортировать модели и текстуры в проект Unity3D.
    Во втором случае (когда текстуры запакованы в файл Blender’а) вам придется распаковать текстуры, например, в папку, где находится файл Blender’а вашей сцены или модели с расширением blend, а уже затем экспортировать модель в формате FBX и импортировать саму модель и текстуры для неё в игровой движок.

    Поставив флажок напротив “Automatically Pack Into.blend” вы дадите Blender’у команду паковать все используемые на сцене текстуры в файл .blend вместе с вашей моделью/сценой. Чтобы распаковать текстуры, запакованные вместе с моделью, выберите один из пунктов меню, показанных на рисунке ниже.

    На рисунке показано меню выбора расположения файлов для распаковки.

    Автор Максим Голдобин (aka MANMANA)
    goldmaxval@gmail.com

    Навигация записей