Game — Ошибка в Unity3d


Содержание

Как исправить Failed to update Unity Web Player ошибку в Контра Сити

Многие игроки, которые играют в Контра Сити сталкивались с ошибкой «Failed to update Unity Web Player». Это может происходить из-за того, что ваша система или браузер блокируют файлы, которые плеер Unity скачивает для своих нужд. Этими файлами являются обновления, которые разработчики создают довольно часто. Программа их не получает, а вы получаете ошибку. Далее в статье мы узнаем, как устранить эту проблему и продолжим наслаждаться игрой.

Ошибка в Контра Сити

Устраняем ошибку с Unity Web Player

Бывают случаи, когда наоборот Юнити самостоятельно обновляется через Интернет, но разработчики еще не создали обновлений под новую версию плеера. В результате этого появляется уже известная нам ошибка.

В первую очередь мы решим текущую проблему, когда плееру не удалось получить пакет с файлами для обновления. Сейчас нам нужно отобразить скрытые папки в вашей системе Windows, потому-как нужная нам папка по умолчанию скрыта.

  1. Откройте системный диск на вашем компьютере, открываем папку с именем «Пользователи».
  2. Выберите свое имя, под которым вы используете ПК. Для того, чтобы узнать свое имя, нажмите кнопку «Пуск» и обратите внимание на верхнюю часть этого окна, здесь обычно написано ваше имя учетной записи.
  3. Выберите папку с вашим именем учетной записи.
  4. Здесь нажмите вверху открытой папки вкладку «Вид», затем «Параметры».

Настройка папок
В следующем окне нажмите вкладку «Вид» и в самом низу выберите пункт «Показывать скрытые файлы и папки». Подтвердите свои действия, нажав «Ок».

Настройка папки

  • Найдите и откройте папку «AppData», которая должна отобразиться после ваших настроек.
  • Далее найдите и откройте папку «LocalLow».
  • Ищем папку «Unity», после чего удаляем в ней папку «WebPlayer».
  • Теперь нам нужно скачать новую версию Unity Web Player и положить ее на место старой. Для того, чтобы скачать последнюю версию веб-плеера, перейдите по ссылке на официальный сайт – https://unity3d.com/ru/webplayer. Прокрутите страницу в самый низ, выберите вашу систему из 2 предложенных вариантов и нажмите синюю кнопку «Загрузить». Версия плеера больше не меняется, т.к. разработка его прекращена. Это для нас хорошая новость, т.к. она последняя и стабильная. После скачивания файла откройте папку «LocalLow» и перетащите файл с обновлением в нее. Запустите игру, ошибка должна исчезнуть.

    Другие способы устранить ошибку в Контра Сити

    Ошибка c Unity Web Player может возникать из-за устаревшей версии вашего браузера. Для того, чтобы обновить браузер Mozilla Firefox, нажмите «Справка» в верхней строке панели меню. После этого нажмите «о Firefox» в самом низу окна. Откроется окно, где вы сможете определить версию браузера. Информацию обновляется автоматически.

    Окно обновления браузера Firefox

    Для того, чтобы проверить обновления в браузере Google Chrome, нажмите справа вверху кнопку меню. В открывшемся окне выберите справка, в выпавшем меню нажмите «О браузере Google Chrome». По умолчанию браузер начнет скачивать обновление самостоятельно, после того, как проверит наличие обновлений на сервере.

    Чтобы проверить версию браузера Opera, запустите его, нажмите вверху кнопку «Opera». В выпавшем меню наведите курсор мыши на пункт «Справка» и в выпавшем меню нажмите на строку «О программе». Если для браузера нужны обновления, то появится специальное окно, в котором вам будет предложено «Загрузить и установить» браузер или «Напомнить позже».

    Обновление браузера Opera

    Выбрав «Загрузить», программа начнет скачивать пакет обновления, после установки произойдет перезагрузка. Ошибка «Failed to update Unity Web Player» в игре Контра Сити после обновлений исчезает. Поэтому чаще обращайте внимание на версию своих браузеров.

    Не запускается Unity 3d

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

    toltekvova
    У меня такое сегодня внезапно случилось. Помогла перезагрузка системы.

    NBG
    Пока не помогает:) Говорили что дрова какие-то не подходят. Была даже версия что версия Директа не та. Винда у меня 7.

    Запускаете из-под админа?

    toltekvova
    Попробуй деинсталить Юнити и проинсталить свежую версию.

    Skyblade
    И от админа и так запускаю. Ничего не меняется.

    Executor
    Пробовал и 4 ставить и самую новую. Даже от сюда http://unity3d.com/ru/get-unity/download скачивал. Сейчас (при последней попытке) поставил пиратку с торента. Съел таблетку и ничего. Открывается просто серое окно.

    Возможно, стартовое окошко сошло с ума. Оно вроде на html сделано. Слышал, что у некоторых везунчиков на нём все контролы разъезжались в разные стороны. Это окно как раз серого цвета:

    Можно попробовать запустить редактор без стартового окна из командной строки. Например, создаём новый проект:

    Если запустится и будет работать, то открыть снова уже созданный проект можно так:

    PS
    Можно ещё глянуть лог-файл редактора по адресу C:\Пользователи\имя_пользователя\AppData\Local\Unity\Editor\Editor.log
    Может, в нём что интересное будет, что наведёт на мысль об источнике проблемы.

    alexzzzz
    Вот такое окно.


    toltekvova
    У меня такое на windows 8. Решилось установкой юнити на машину с windows 7))

    Belfegnar
    Сейчас то у меня 7 стоит. Ахах, может наоборот 8 поставить?:)

    toltekvova
    > Вот такое окно.

    Судя по точной версии Unity в названии окна и одной единственной кнопке закрытия окна, это оно и есть, которое на моём на скриншоте. Html-рендер скрючило.

    Есть что интересное в логах? — C:\Пользователи\имя_пользователя\AppData\Local\Unity\Editor\Editor.log

    alexzzzz
    По ходу в этом и есть проблема. у меня:
    C:\Пользователи\имя_пользователя\AppData\Local\Temp\VSIXInstaller_0c85c81b-ca17-4f31-9550-53a04a40e266 (это для примера, таких инсталеров 29 шт). В папке local больше ничего нет, вообще других папок и документов нет. Единственное что работает — Visual Studio.

    Windows стоит на диске C:? Если нет, поищи ту же папку на диске, где Windows.

    Ошибка unity 3d: Error building Player

    UnityEditor.BuildPlayerWindow+BuildMethodException: Error building Player because scripts have compile errors in the editor at UnityEditor.BuildPlayerWindow+DefaultBuildMethods.BuildPlayer (UnityEditor.BuildPlayerOptions options) [0x00242] in C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindowBuildMethods.cs:194 at UnityEditor.BuildPlayerWindow.CallBuildMethods (System.Boolean askForBuildLocation, UnityEditor.BuildOptions defaultBuildOptions) [0x0007f] in C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindowBuildMethods.cs:97 UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

    1 ответ 1

    Возможно, у Вас в скрипте Player используется пространство имен UnityEditor .

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

    Всё ещё ищете ответ? Посмотрите другие вопросы с метками unity3d error404 или задайте свой вопрос.

    Похожие

    Подписаться на ленту

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

    дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.11.13.35429

    Ошибка с MonoBehaviour классом

    Писал я скриптик, большой, жирный, с кучей вспомогательных методов. Дальше перешел к тестированию, пытаюсь перетащить его на объект. И вот, я получил ошибку!

    Вы просто не представляете как было сложно найти причину этой ошибки. Пришлось удалять по строчке, пока не нашел проблему.
    Сперва думал, что проблема в наследовании интерфейса. Но. нет.
    Использование пространства имен? Тоже, мимо.
    В ходе дальнейших экспериментов выяснил, что проблема возникла в написанных функциях. А если быть точнее в такой вот строчке

    Казалось бы, что тут может быть не так? А косяк в параметре по умолчанию.

    решило проблему. Неожиданно, не правда ли.
    Теперь мы можем сделать следующий вывод:
    Не используйте параметры по умолчанию в методах MonoBehaviour!

    Game — Ошибка в Unity3d

    Пример проблемы: http://prntscr.com/org581

    Тут собраны другие возможные варианты решения данной проблемы:

    Фикс Часть 1:

    1.Скачайте и установите Visual Studio Tools for Unity по этой ссылке. Это нужно делать, когда Unity и Visual Studio закрыты.

    2.В Unity, Edit –> Preferences–> External Tools. Параметр External Script Editor, изменть на Visual Studio. Если в списке несколько версий – выбрать ту, которою вы только что обновляли.

    Фикс Часть 2:

    Если новые созданые скрипты подписываются как Miscellaneous – выполняем инструкцию ниже:

    1.В Visual Studio –> Tools –> Options… –> Tools for Unity –> Miscellaneous. Под иконкой Show connectivity, выставить true и перезапустить Visual Studio.

    2.После перезапуска VS, иконка связи должна быть доступна в Visual Studio. Кликаем на неё и выбираем инстанс Unity, к которому мы подключаем VS. Красная иконка ‘x’ теперь должна стать коричневой галочкой. Теперь создаем новый C# скрипт в Unity , он должен открытся без надписи Miscellaneous.

    Фикс Часть 3:

    Нужно сделать полный реимпорт проэкта.

    1.Закрываем Visual Studio.


    2.В Unity, реимпорт проэкта Assets –> Reimport All.

    3.Открываем проэкт в Visual Studio, Assets –> Open C# Project. Это должно перегрузить проэкт и решить возможные проблемы с сылками на солюшн.

    Фикс Часть 4:

    Лечим каждый C# файл индивидуально.

    1.Кликаем на иконку Show All Files.

    Фикс Часть 5:

    Если не починилось, то…

    1.Закрыть Visual Studio

    2.В папке проэкта удалить все сгенерированные файлы для Visual Studio.

    т.е. удаляем файлы с этими расширениями:

    Проэкт называется “Target Shoot”, файлы, которые удаляем:

    • Target Shoot.csproj
    • Target Shoot.Editor.csproj
    • Target Shoot.Editor.csproj.user
    • Target Shoot.Player.csproj
    • Target Shoot.Player.csproj.user
    • Target Shoot.sln

    ВАЖНО! Больше ничего удалять не надо.

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

    2.Выбираем скрипт, в котором не работает автокомплит (те самый подсказки), кликаем правой клавишей и выбираем Include In Project.

    Фикс Часть 6:

    Если не работает и появляется ошибка:

    The “GetReferenceNearestTargetFrameworkTask” task was not found

    1.Устанавливаем Nuget PackageManager с этой ссылки.

    2.Перезапускаем Visual Visual.

    Где скачать CHARACTES?

    Загрузить персонажа можно из пакета стандартных ассетов из Asset Store. В новых версиях Unity он действительно не появляется в вкладке “ Assets>Import Package “, нужно загружать отдельно. Вот ссылка на него: https://assetstore.unity.com/packages/essentials/asset-packs/standard-assets-32351

    Загружать нужно через вкладку AssetStore в самом редакторе Unity. Скачиваем папки CHARACTERS и обязательно CrossPlatformInput и Editor: http://prntscr.com/m0559k

    Если в загруженных ассетах используется устаревшая версия, их из проекта придется удалить, иначе они будут выдавать ошибки. Вместо них нужно использовать стандартные модели – они подходят под новые версии Unity.

    Где взять строку Android в External Tools?

    Если у Вас нет Android, как показано на скрине: https://prnt.sc/lznkuw

    То: при установке Unity нужно выбрать Android Build Support. Для этого нужно запустить установщик Unity и в предложенных вариантах выбрать Android Build Support: http://prntscr.com/m059ne

    В Android SDK Manager в Extras отсутствует файл Anroid Support Library, как добавить?

    Откройте: Tools > Android > SDK Manager. Выберите таб SDK Tools. Найдите Android Support Repository. Установить.

    Подробнее можно почитать вот тут

    Где взять FPScontroller?

    Из Asset Store можно загрузить Standart Assets. Среди всех папок вам нужно будет открыть: Standart Assets – > Characters – > FirstPersonCharacter-> Prefabs из из этой папки поместить на сцену префаб FPSController

    Как работать с Terrain в версии Unity 2020.3?

    В старой версии Unity настройки в Terrain выглядели иначе: http://prntscr.com/m60b8p


    Новая версия выглядит так: http://prntscr.com/m60bm7

    Чтобы работать с Terrain в новой версии, следуйте инструкциям:

    1. Для рисования на Terrain выбираем Paint Texture
    2. Для начала нужно разукрасить землю – задать фон. Для этого в новой версии движка нужно сначала добавить так называемый Terrain Layer. Нажимаем кнопку Edit terrain layers. В предложенном меню вам нужно будет выбрать текстуру, которая будет задавать основной цвет (забегая наперед – это будет текстура типа diffuse)
    3. После того как справились с задачей создания фона, можно перейти к рисованию. Для этого создаем еще один слой из пункта меню create layerhttp://prntscr.com/m5kruh
    4. Настроим созданный слой. Текстуры бывают нескольких типов, один из них задает рисунку псевдо-объем. Такие текстуры называются Normal map. Чтобы на Вашем Terrain было видно детали в виде камней и прочих элементов, слой должен содержать Normal map. В том же меню находим пункт редактирования слоя. Тут нажимаем на треугольник, чтобы открыть выпадающее меню.
    5. Заполняем недостающие поля. На примере текстуры MudRockyAlbedoSpecular из стандартных ассетов, ее можно найти: /Standard Assets/Environment/TerrainAssets/SurfaceTextures. К этой текстуре также есть карты нормалей. Заполняем нужные поля. Для этой текстуры также необходимо заменить параметр размера. В итоге ваш Terrain принимает такой вид: http://prntscr.com/m5ksem

    Вы всегда можете экспериментировать с параметрами:

    Ежиная нора

    вторник, 18 июля 2020 г.

    Перестали запускаться игры на Unity

    После обновления Windows 10 до сборки 16232, перестали запускаться игры на движке Unity (Night in the woods, Rimworld, Blackwake и.т.д.).

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

    Что помогло, так это отключение второго монитора:

    Конечно, это костыль, но нам пока не остаётся ничего другого, кроме как ждать либо пока microsoft не выпустит патч для обновленной работы мониторов, либо пока разработчики игр не пропатчат свои творения под новые реалии майкрософта.

    Можем ли мы автоматизировать этот костыль?
    Ну конечно да!

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

    Для нестимоских игр нам нужен просто путь к .EXE файлу для запуска.

    Итак, создадим BAT файл примерно следующего содержания

    Game — Ошибка в Unity3d

    3202 просмотра

    4 ответа

    297 Репутация автора

    у меня проблема при запуске единства.

    Я просто установил Unity, зарегистрировался через google и получил эту ошибку.

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

    Я попытался переустановить, удалить реестр, и он по-прежнему происходит, даже не войдя в систему.

    Там есть ссылка, где вы можете увидеть, как он держится.

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

    Спасибо за любую помощь, которую вы можете предоставить.

    Ответы (4)

    1 плюс

    297 Репутация автора

    Наконец-то я нашел способ исправить эту проблему.

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

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

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

    Чтобы исправить это, вам нужно удалить Unity, удалить реестр (например, Ccleaner) и удалить некоторые скрытые каталоги вручную:


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

    Итак, после этого кучка остановится, и он снова позволит вам войти в систему. Первая проблема решена

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

    1. Отключите ваш ethernet, отключите Wi-Fi, независимо от того, просто убедитесь, что у вас нет подключения.
    2. Откройте Unity и проверьте, что «Нет соединения: выход или ручная активация».
    3. Нажмите «Ручная активация» и загрузите Запрос лицензии.
    4. Закрыть Unity и подключить свой интернет.
    5. Перейдите на официальную страницу активации Unity Manual и загрузите файл запроса.
    6. Загрузите одобренную лицензию, она запросит у вас учетную запись Unity.
    7. Отключите снова Интернет и откройте Unity в автономном режиме.
    8. Нажмите «Ручная активация» и загрузите лицензию Aproved.
    9. Убедитесь, что у вас есть доступ к Unity в автономном режиме и закройте его.

    Вторая проблема решена : лицензия активирована.

    Теперь вам нужно только подключить свой интернет, а затем открыть Unity, и вы увидите активированную лицензию без входа в систему, чтобы теперь вы могли войти в систему с учетной записью, которую вы использовали на шаге 6.

    И теперь проблема решена. У вас активированная лицензия, и вы вошли в систему.

    Мне понадобилось «2 дня», чтобы сделать это решение для этого поблема, надеюсь, что смогу помочь кому-то с этим тутом и сохранить время ура.

    Автор: Vash Размещён: 02.10.2020 09:00

    плюса

    1 Репутация автора

    1- выход из единства

    2- перейти к C: \ ProgramData \ Unity

    3- удалить Unity_lic.ulf

    4- открытое единство

    5- возобновить лицензию

    Автор: R.y Размещён: 31.01.2020 07:52

    плюса

    1 Репутация автора

    Я решил эту проблему, используя эти шаги.

    • Очистите установку Unity.
    • Отключите интернет.
    • Open Unity
    • -> Ручная активация Сохранить запрос лицензии Отмена Размещён: 29.04.2020 11:24

    плюса

    20 Репутация автора

    Не позволю мне прокомментировать, поэтому я опубликую это здесь: НЕ запускайте или не устанавливайте Ccleaner, как рекомендовано в ответе Ваша, если вы цените свою систему.

    Game — Ошибка в Unity3d

    Unity3D — это мультиплатформенный инструмент для разработки двух- и трёхмерных приложений и игр, работающий под операционными системами Windows и OS X. Созданные с помощью Unity приложения работают под операционными системами Windows, OS X, Linux, Android, Apple iOS, Windows Phone, BlackBerry, а также на игровых приставках Wii, PlayStation 3 и Xbox 360. Есть возможность создавать интернет-приложения с помощью специального подключаемого модуля к браузеру Unity, а также с помощью экспериментальной реализации в рамках модуля Adobe Flash Player. Позже от поддержки Flash отказались. Приложения, созданные с помощью Unity, поддерживают DirectX и OpenGL.

    В.: У меня отсутствует часть сообщений в консоли, хотя они точно должны там быть.
    О.: Выключите опцию Collapse в консоли.

    В.: Как мне реализовать паузу?
    О.: Наиболее простой вариант — установить Time.timeScale в ноль.

    В.: Как заставить два меш-коллайдера взаимодействовать?
    О.: Включить опцию Convex у обоих.

    В.: Как отключить/заблокировать курсор?
    О.: Screen.showCursor; Screen.lockCursor.

    В.:Как придать телу импульс?
    О.: Rigidbody.AddForce с параметром ForceMode.Impulse.

    В.: Как изменить громкость всех источников звука в сцене?
    О.: AudioListener.volume

    В.: Как избавиться от смазывания текстур при отдалении от них камеры?
    О.: Отключить генерацию mipmaps в настройках импорта текстуры.

    В.: Как отключить вывод предупреждений в консоль?
    О.: #pragma warning disable (в справке msdn даны подробности)


    В.: Как спозиционировать Scene View на выбранном объекте?
    О.: Edit > Frame Selected или просто клавиша F.

    В.: Как сделать объект невидимым для Raycast?
    О.: Поставить его в стандартный слой Ignore Raycast.

    В.: Как сделать так, чтобы игра была в горизонтальном а не в вертикальном режиме?
    О.: В Player Settings нужно выбрать пункт Landscape left в Screen оrientation.

    В.: Как отключить обработку коллизий для коллайдера?
    О.: Включить опцию коллайдера isTrigger. Однако, такой коллайдер всё ещё будет принимать Raycast.

    В.: Куда сохраняются логи редактора?
    О.: C:\Documents and Settings\zaicheg\Local Settings\Application Data\Unity\Editor\Editor.log
    Этот же документ можно посмотреть, нажав Open Editor Log в консоли.

    В.: Куда сохраняются логи приложения?
    О.: Для standalone: _Data\output_log.txt. Для web: C:\Documents and Settings\user\Local Settings\Temp\UnityWebPlayer\log

    В.: Где можно посмотреть, какие ресурсы сколько занимают в моём билде?
    О.: Там же, в Editor.log (после сборки билда).

    В.: У меня глючит физика.
    О.: Проверьте, осущетвляются ли все физические действия в FixedUpdate(). Увеличьте размеры объектов. Избавьтесь от тонких (или безтолщинных) мешей (Plane). Уменьшите FixedTimesetp. НЕ ДВИГАЙТЕ СТАТИЧЕСКИЕ КОЛЛАЙДЕРЫ (начиная с Unity5 уже можно, но всеравно не стоит)

    B.: Не получается отредактировать элемент массива mesh.vertices (mesh.normals и прочее).
    О.: Редактируйте во временном массиве vertTemp, а потом mesh.vertices = vertTemp.

    В.: Я отключил скрипт, но он всё равно частично работает!
    О.: Отключение скрипта действует лишь на вызов метода Update(). Start, Awake и прочие будут работать.

    В.: Как увеличить частоту физических расчётов?
    О.: Edit > Project Settings > Time > Fixed Timestep

    В.: Как приостановить выполнение в Editor Mode (поставить на паузу)?
    О.: Debug.Break

    В.: Как отобразить кириллицу в GUI?
    О.: Локализация в коде это плохо. Нужно хранить текст в текстовых файлах и через код вытаскивать нужные строчки. Например, так (не самый лучший пример, но суть понятна)

    В.: Как мне подгружать дополнительные ресурсы в рантайм?
    О.: AssetBundles.

    В.: Как менять хоткеи редактора?
    О.: HKEY_CURRENT_USER\Software\Unity Technologies\Unity Editor

    В.: Как разрешить игре работу «в фоне»?
    О.: Edit → Project Settings → Player → Run in Background

    В.: Почему не работает динамичный батчинг?
    О.: В Unity есть лимит на количество вертексных атрибутов в 900 штук (лимит поставлен юнитеками опытным путем, может быть изменен в будущем, самому поменять его нельзя), именно вертексов, а не поликов. Т.е. смотрим на шейдер, которым хотим что-то отрисовать, на его входящие параметры. Видим, например, position, uv, normal — 3 атрибута. Делим 900 на 3, получаем лимит в 300 вертексов. Вот если модели с материалом на данном шейдере будут не более 300 вертексов — они будут сбатчены. Т.е. если отказаться от normal в шейдере, то получим position, uv — 900 / 2 = лимит в 450 вертексов. Если откажемся от uv (можно посчитать в том же вершинном шейдере для статичной геометрии, но это уже специфичные вещи), то получим 900 / 1 = лимит в 900 вертексов. От position отказаться нельзя, это координаты самого вертекса. Аналогично, если передавать position, uv, uv2, normal, tangent, color, то получим 900 / 6 = лимит в 150 вертексов.

    В.: Почему возникают баги с обработкой столкновений коллизии?
    О.: Это не баги, это непонимание того, как работает физика в юнити, уже было неоднократно объяснено. Коллайдеры без RB двигать нельзя, двигать нельзя, двигать нельзя — они считаются статичным миром, который двигаться не может и внутри расчитывается с оптимизацией по кластерам. Как только статичный коллайдер двигается — весь статичный мир перестраивается. Объекты с RB считаются отдельно как динамические объекты. Собственно, отсюда и «баг» — т.к. статичный мир не может двигаться, то и события наступать не могут при его принудительном движении.
    P.S. Судя по профайлеру тот же CharacterController является статик-коллайдером со всеми вытекающими последствиями.
    P.P.S. После выхода Unity 5 стало можно, но всеравно не тоит.

    В.: Почему не работает Asset store? Как заставить работать?
    О.: Попробуйте выключить режим использования DirectX 11

    В.: Какие отличия между Pro-версией и обычной?
    О.: Заходим на страницу покупки Unity и на нужной лицензии выбираем Read more. После этого появится окошко, в котором можно посмотреть отличия между лицензиями.

    В.: Где можно взять исходный код Unity?
    О.: Нажмите здесь, выберете Россию, потом свяжитесь с представителями Unity Technologies. Разумеется это не бесплатно
    Оригинальный текст с сайта Unity:
    «If you want to license Unity to develop content for consoles and/or for embedding, cloud distribution or to access Unity source code, contact us here.»

    Правила поведения в теме:

    • Прежде чем задать вопрос, обязательно читайте F.A.Q. и пользуйтесь поиском по теме, возможно на ваш вопрос уже есть ответ!
      Кнопка поиск находится в правом верхнем углу.
    • Сообщения, не относящиеся к теме и вопросы, ответы на которые есть в F.A.Q. будут удаляться.
    • Обсуждение пиратских версий Unity или просьбы выложить пиратский контент, а так же сообщения, содержащие пиратский контент будут удаляться, а авторы по возможности будут караться.


    В теме нет куратора. По вопросам наполнения шапки обращайтесь к модераторам раздела через кнопку «Жалоба» под сообщениями, на которые необходимо добавить ссылки.
    Если в теме есть пользователь, желающий стать Куратором и соответствующий Требованиям для кандидатов, он может подать заявку в теме Хочу стать Куратором (предварительно изучив шапку темы и все материалы для кураторов).

    Сообщение отредактировал Displax — 25.07.17, 18:45

    История игровых движков №4 — Unity 3D

    «Powered by Unity» — такую табличку при запуске игры видели, я думаю, большинство людей, хотя бы изредка заходящих в игры. И это не удивительно — на данный момент движок позволяет писать игры под 25 платформ: от Windows, Linux и macOS, мобильных платформ и консолей до различных VR и Smart TV:

    История появления — Unity 3D 1

    Первая версия была создана в июне 2005 года тремя людьми: Дэвидом Хелгасоном, Джошимом Анте и Николасом Френсисом. Их целью было создание доступного любительского движка с удобным графическим интерфейсом, и первая версия движка имела схожий с Final Cut пользовательский интерфейс, работающий по принципу drag-and-drop (то есть перетягивание элементов между подменю программы). Изначально Unity работал только под macOS, однако разработчики отлично понимали, что доля яблочной ОС на рынке невелика, а уж создателей игр на ней вообще мало. Поэтому первое глобальное добавление, появившееся в августе 2005 в версии 1.1 — это возможность сборки игр под Windows и поддержка плагинов C/C++. Однако на тот момент полноценным игровым движком Unity назвать было трудно — он не поддерживал множество графических эффектов и подходил разве что для создания качественных анимаций. Разработчики исправили это недоразумение в версии 1.2 от декабря 2005 года — добавили эффекты постобработки, рэгдолл, тени, встроенный скрипт управления персонажем, расширили возможности редактора скриптов. После этого движком стали интересоваться инди-разработчики — поэтому выросло количество ошибок со старыми видеокартами и системных проблем с драйверами, которые создатели движка фиксили еще год. Последняя версия — 1.6.2 — вышла в мае 2007: да, до CryEngine 2 того же года она не дотягивала, однако создавать простые игры на Unity уже тогда было удобно, да и основные ошибки уже были исправлены. Графический интерфейс и игры на Unity 1 выглядели так:

    Unity 3D 2 и Unity iPhone

    В октябре 2007 команда разработчиков выпустила вторую версию движка. Основные изменения — добавление полноценной среды разработки под Windows (в версии 2.5, март 2008) , а так же улучшенный веб-плеер. Так как macOS использует API OpenGL, а Windows — в основном DirectX, разработчики добавили поддержку последнего в версию для Windows — по их словам, это привело к 30% увеличению скорости работы. Так же была добавлена поддержка веб-стриминга, мягких теней реального времени, Terrain Engine (часть движка, которая отвечает за отрисовку земли), а так же полностью переработали GUI (графический интерфейс пользователя). В Unity 2.6 (октябрь 2009) Indie-версия движка стала бесплатной и появилась версия для Wii.

    Движок изначально был нацелен на macOS, и поэтому неудивительно, что с выходом iPhone движок оптимизировали и для него. Он развивался самостоятельно на протяжении 2 лет: с октября 2008 до апреля 2010, после чего был объединен с Unity 3D 3. За два года вышло 8 версий — добавили поддержку .NET 2.1, возможность работы с сетью и поддержку iPad. Движок использовал API OpenGL ES до версии 2.0. Одной из лучших игр на Unity iPhone можно считать шутер Shadowgun — он демонстрировал действительно высокодетализированную картинку и множество красивых эффектов:

    Unity 3D 3

    Третья версия вышла в сентябре 2010. Изменений много — теперь все элементы редактора можно менять местами как удобно, улучшили карты освещения, добавили: возможность отложенного рендеринга, Umbra occlusion culling (отрисовка только тех объектов, которые видны на экране), низкоуровневую отладку и FMOD аудио фильтры (возможность проигрывать разные аудиоформаты на разных платформах без конвертации). В это же время компания EA заинтересовалась движком и подписала с Unity Technologies контракт о многолетнем сотрудничестве, а количество зарегистрированных разработчиков превысило 200 000.

    В декабре 2011 вышла первая версия Unity 3.5. Основные нововведения — возможность работы с Adobe Flash и публикация игр в формате .swf. Так же добавили новую систему частиц (которая теперь умеет взаимодействовать с тенями и светом), поддержку HDR (расширенного динамического диапазона), LOD (Levels Of Detail — возможность отрисовки далеких объектов с худшей детализацией для экономии ресурсов), а так же мультипоточный рендеринг (использование возможностей многоядерных процессоров). Окно редактора Unity 3.5 с запущенной тестовой игрой-демонстрацией способностей движка AngryBots:


    Новая версия вышла в ноябре 2012. Из основных изменений — движок научился работать под Linux. Так же была добавлена поддержка API DirectX 11, улучшена система анимации (добавлен скиннинг на GPU) и освещения.

    Следующий глобальный релиз, Unity 4.3, вышел через год, в ноябре 2013: введена поддержка 2D-спрайтов и интегрирован физический движок Box2D — если раньше разработчикам приходилось делать «фальшивый» 2D, размещая плоские текстуры на плоскости в пространстве, то теперь есть возможность работать не с пространством, а только с плоскостью. Так же создатели Unity сделали жизнь разработчикам мобильных игр проще — теперь есть возможность собирать игры для iOS в версии движка для Windows. Одной из самых красивых игр на Unity 4 является пошаговая стратегия Endless Space:

    Unity 3D 5

    Самая новая версия движка, развивается с марта 2014 и по сей день. Количество зарегистрированных разработчиков превышает 3 миллиона — в основном потому, что Indie-версия движка бесплатна. Для тех, кому нужны дополнительные возможности, есть версия Plus и Pro (35 и 120 долларов в месяц), а так же есть возможность собрать редактор самому и договориться с разработчиками о цене.

    В Unity 5 добавили и добавляют достаточно много, это пожалуй, крупнейшей релиз за все время существования Unity:

    • Новые инструменты графического интерфейса отдельно для 3D и 2D игр.
    • Полноценный звуковой редактор (можно в реальном времени объединять различные звуки, добавлять эффекты, связывать их с событиями в игре).
    • Поддержка WebGL — игры работают напрямую в браузере без установки веб-плеера.
    • Глобальное освещение в реальном времени для консолей нового поколения, ПК и мобильных платформ.
    • Отражение света в реальном времени на основе Reflection Probes.
    • Физически корректные материалы (к примеру кусок дерева теперь плавает в воде сам, без дополнительных скриптов).
    • Новые возможности 2D физики: точечные силы притягивания и отталкивания; тангенциальные силы (силы, направленные по касательной к поверхности объекта); силы, направленные вдоль любых осей; одностороннее столкновение.
    • Отслеживание загрузки процессора, видеокарты и памяти на временной шкале в режиме реального времени.
    • Добавление полноценного 64х-битного редактора.
    • Интеграция Terrain Speedtree.
    • Добавление новых API для 2D физики и редактора анимации в Box2D, обновление 3D физики до nVidia PhysX3.
    • Просмотр сцен в HDR-режиме.
    • Настройки для рендера сцены с помощью заполняющего (Ambient) света.
    • Улучшена работа LOD (теперь нет падения производительности для непропорционально скейлированной геометрии).
    • Новые формы для препятствий Nav Mesh и сжатые текстуры для Cubemaps.
    • Поддержка джойстика для Windows Store.
    • Внутриигровая реклама без сторонних плагинов (к сожалению — трудновырезаемая, так как зашита в саму игру в виде текстур и показывается даже без наличия интернета).
    • Повторяющаяся анимация может передвигать персонажа.


    В Unity 5.1 в июне 2015 в основном исправили ошибки и сделали поддержку VR (виртуальной реальности) — на первых порах только Oculus Rift. В сентябре того же года вышло минорное обновление 5.2 — добавлены новые возможности для разработчиков приложений под Android, для работы со звуком добавлена поддержка Spatialization API для модулей расширений аудио. В версии 5.3 (декабрь 2015) изменений уже больше:

    • Новые инструменты: обновленный MonoDevelop, одновременное редактирование нескольких сцен, инструменты для 2D, автоматическое тестирование.
    • Оптимизация графики, включая новое ядро OpenGL, экспериментальная поддержка Metal в OS X и обновленная система частиц.
    • Улучшенная поддержка WebGL и iOS 9.
    • Поддержка интегрированных внутриигровых покупок.
    • Добавлена экспериментальная поддержка DirectX 12.

    В 5.4 (август 2020) улучшили графический рендер, повысивший качество визуальной составной (например, теперь нет шумов в затененных областях). Значительно доработана и улучшена поддержка VR-платформ. Добавлены настраиваемые частицы, новые зеркальные эффекты, улучшен импорт графики. Самым крупным нововведением в последней на данный момент Unity 5.5 (ноябрь 2020) стала поддержка Microsoft HoloLens (очков дополненной реальности от Microsoft).

    Игр на Unity 5 вышло много: это красивейший «симулятор леса» The Forest:

    Приключенческая игра Firewatch:

    И даже всем известный Pokemon Go тоже работает на Unity — количество проектов переваливает за сотню.

    Будущее движка

    На данный момент это один из самых быстроразвивающихся движков, разработчики которого постоянно улучшают его и внедряют новые функции. О следующем глобальном релизе говорить еще рано, а вот о следующем минорном апдейте — 5.6 — уже известно много (он сейчас в бета-версии): поддержка 4К 360 градусов видео, API Metal в редакторе под macOS, а так же множество улучшений по работе с 2D. С учетом того, что в лицензия на движок стоит очень дешево (до 120 долларов в месяц с человека — к примеру, лицензия id Tech на одну игру продавалась за 250 000 долларов) — количество инди-игр на нем огромно и будет постоянно расти, а значит нас ожидает множество качественных игр.

    Ошибки в отображении 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 шейдером. В отличие от предыдущего рисунка, здесь мы видим, что материал модели назначен (“New Material”), а вот в поле 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 модели, т.е. в ассет были добавлены (экспортированы или перетащены из одного проекта в другой) лишь сами модели, а шейдеры и материалы — нет, поскольку пользователь не поставил галочку в диалоговом окне импорта напротив сохранения в ассете всех (или необходимых) связанных с моделью компонентов, в частности, отвечающих за визуализацию модели.

    На рисунке показано меню импорта в Unity 5 ассета 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.


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

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

    Еще одна распространенная проблема, с которой сталкиваются начинающие Юниводы, связана с тем, что созданные в 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 развертки, импортированная в Unity 3D. Как можно заметить, вторая справа 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) вы можете воспользоваться инструментом автоматического создания швов из островов развертки, который и рассмотрен ниже.

    На рисунке показано создание швов на low poly 3D модели персонажа из островов 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 и импортировать саму модель и текстуры для неё в игровой движок.

    На рисунке показано меню запаковки/распаковки текстур в файл Blender’а (blend).

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

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

    Цукерберг рекомендует:  IntelliJ IDEA для новичков советы и секреты
    Понравилась статья? Поделиться с друзьями:
    Все языки программирования для начинающих