что такое импорт в игре

Импорт 3D-моделей в Unity и подводные камни

Представляем третью статью нашего цикла о работе с 3D-моделями в Unity. Предшествующие статьи: «Особенности работы с Mesh в Unity» и «Unity: процедурное редактирование Mesh».

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

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

что такое импорт в игре. Смотреть фото что такое импорт в игре. Смотреть картинку что такое импорт в игре. Картинка про что такое импорт в игре. Фото что такое импорт в игре

Особенности работы ModelImporter

Напомним, что для API видеокарт минимальный и единственный трехмерный примитив — это треугольник, в то время как геометрия в FBX, например, может быть представлена в виде четырехугольников. Современные 3D-пакеты для создания моделей, как правило, допускают различные уровни абстракции, но и там рендер результата происходит посредством треугольников.

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

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

что такое импорт в игре. Смотреть фото что такое импорт в игре. Смотреть картинку что такое импорт в игре. Картинка про что такое импорт в игре. Фото что такое импорт в игре
Сюзанна, триангулированная в Blender (Quad Method: Beauty) и в Unity (автоматически при импорте)

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

что такое импорт в игре. Смотреть фото что такое импорт в игре. Смотреть картинку что такое импорт в игре. Картинка про что такое импорт в игре. Фото что такое импорт в игре
Самокат здорового человека и самокат курильщика

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

что такое импорт в игре. Смотреть фото что такое импорт в игре. Смотреть картинку что такое импорт в игре. Картинка про что такое импорт в игре. Фото что такое импорт в игре
Исходный полигон

что такое импорт в игре. Смотреть фото что такое импорт в игре. Смотреть картинку что такое импорт в игре. Картинка про что такое импорт в игре. Фото что такое импорт в игре
Полигон, триангулированный в Blender

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

что такое импорт в игре. Смотреть фото что такое импорт в игре. Смотреть картинку что такое импорт в игре. Картинка про что такое импорт в игре. Фото что такое импорт в игре
Полигон в Unity с треугольником, близким к вырожденному (правый треугольник практически неотличим от отрезка)

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

Я 3D-пакет, я так вижу

что такое импорт в игре. Смотреть фото что такое импорт в игре. Смотреть картинку что такое импорт в игре. Картинка про что такое импорт в игре. Фото что такое импорт в игре

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

Для некоторых художников же не всегда очевидно, что вершина определяется не только своей позицией. Моделлеры прекрасно знают понятия Hard/Soft Edges и UV Seams, но не все осознают, каким образом они реализованы программно. Дополнительно сбивают с толку 3D-пакеты, которые в стандартном режиме показывают количество вершин как количество уникальных позиций.

Так, обычный примитив Cube геометрически представим 8 вершинами. Однако чтобы корректно передать отражение света от каждой грани и правильно наложить текстуру, в каждом углу куба необходимо по 3 вершины с одинаковой позицией, но разными нормалями и текстурными координатами, поскольку в каждом из углов сходится по 3 ребра. Этому моменту посвятили небольшой блок документации. Там же можно посмотреть примеры.

что такое импорт в игре. Смотреть фото что такое импорт в игре. Смотреть картинку что такое импорт в игре. Картинка про что такое импорт в игре. Фото что такое импорт в игре
Метрики куба в Blender

что такое импорт в игре. Смотреть фото что такое импорт в игре. Смотреть картинку что такое импорт в игре. Картинка про что такое импорт в игре. Фото что такое импорт в игре
Метрики куба в Unity

Хватит это терпеть!

Столкнувшись с этими и подобными проблемами, мы решили создать инструмент анализа и валидации моделей при импорте в проект Unity. Иначе говоря, кастомный валидатор, который на запрос «Ешь!» ответит: «Не буду! Переделывай», — или выплюнет наборы предупреждений и значений различных параметров, оповещая о том, что ему что-то невкусно.

Для анализа и проверки мы разработали следующий функционал:

Подсчеты количества уникальных позиций вершин, Hard Edges, UV Seams и раскрашенных вершин — необходимы для проверки соответствия задуманной художником модели той, что была импортирована в Unity. Этот функционал также позволяет следить за соблюдением требований к оптимизации модели (например, чтобы количество вершин не превышало определенное значение). Из-за все той же особенности 3D-пакетов, которые показывают по факту количество уникальных позиций, бывают случаи, когда метрика числа вершин в редакторе моделей удовлетворяет этому ограничению, однако после внесения файла в проект может оказаться, что это не так.

Вычисление AABB и его центра — позволяет определить смещение модели относительно начала ее собственной системы координат. Это необходимо для предсказуемого позиционирования ассетов, которые инициализируются в сцене уже во время работы приложения. Так, AABB здания по-хорошему должен иметь minY = 0, а какой-нибудь люстры, которая крепится к потолку — maxY = 0.

что такое импорт в игре. Смотреть фото что такое импорт в игре. Смотреть картинку что такое импорт в игре. Картинка про что такое импорт в игре. Фото что такое импорт в игре

что такое импорт в игре. Смотреть фото что такое импорт в игре. Смотреть картинку что такое импорт в игре. Картинка про что такое импорт в игре. Фото что такое импорт в игре

что такое импорт в игре. Смотреть фото что такое импорт в игре. Смотреть картинку что такое импорт в игре. Картинка про что такое импорт в игре. Фото что такое импорт в игре

Выход координат вершин UV-развертки за диапазон 0.0–1.0 — в большинстве случаев (например, если текстура должна тайлиться на модели) предусмотрен. Часто такой подход используется для представления в сцене множества низкодетализированных мелких объектов (растительности) и/или находящихся вдалеке, а также замощения больших однородных объектов (зданий). В случае тайлинга значениям координат конкретного UV-канала просто обрезают целую часть на уровне шейдера, если Wrap Mode текстуры установлен в Repeat.

Представьте теперь, что вы уложили текстуру в атлас (и накрыли одеялком :3). В шейдер будут приходить уже преобразованные координаты, соответствующие атласу (x * масштаб + смещение). Никакой целой части на этот раз вероятнее всего уже не будет и обрезать будет нечего, а модель залезет на чужую текстуру (одеялко оказалось маленьким). Эта проблема решается двумя способами.

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

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

что такое импорт в игре. Смотреть фото что такое импорт в игре. Смотреть картинку что такое импорт в игре. Картинка про что такое импорт в игре. Фото что такое импорт в игре

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

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

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

что такое импорт в игре. Смотреть фото что такое импорт в игре. Смотреть картинку что такое импорт в игре. Картинка про что такое импорт в игре. Фото что такое импорт в игре
Пример базовой UV-развертки с наложениями (показаны красным)

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

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

что такое импорт в игре. Смотреть фото что такое импорт в игре. Смотреть картинку что такое импорт в игре. Картинка про что такое импорт в игре. Фото что такое импорт в игре
Некорректно запеченное освещение модели (слева) и исправленное (справа)

Unity при формировании карты освещения в первую очередь пытается использовать UV2-канал. Если он пустой, то используется основной UV, если и этот пуст, то извините, нате вам исключение. Запечь модели в карту освещения без предварительно подготовленного UV2 в Unity можно двумя способами.

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

что такое импорт в игре. Смотреть фото что такое импорт в игре. Смотреть картинку что такое импорт в игре. Картинка про что такое импорт в игре. Фото что такое импорт в игре

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

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

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

Источник

Полное руководство по использованию инструкции import в Python

что такое импорт в игре. Смотреть фото что такое импорт в игре. Смотреть картинку что такое импорт в игре. Картинка про что такое импорт в игре. Фото что такое импорт в игре

Общее / Ключевые моменты

Основные определения

Пример структуры директории

Основы использования оператора import и переменной sys.path

В соответствии с документацией Python, оператор import ищет корректный модуль или пакет для импорта в соответствии со следующими правилами.

Функция pkgutil.iter_modules (Python 2 и 3) может использоваться для получения списка всех импортируемых модулей по заданному пути:

Подробнее о sys.path

Документация Python для sys.path описывает это следующим образом.

Давайте рассмотрим порядок, в соответствии с которым интерпретатор Python ищет модули для импорта:

Все о __init__.py

Файл __init__.py выполняет 2 функции.

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

Это НЕ применимо к Python 3.3 и выше, благодаря принятию неявных пространств имен пакетов. В принципе, Python 3.3+ рассматривает все папки как пакеты, поэтому пустые файлы __init__.py больше не нужны и могут быть опущены.

Запуск кода инициализации пакета

Рассмотрим следующий пример.

Листинг файла test/packA/a1.py :

Листинг файла test/packA/__init__.py :

Листинг файла test/start.py :

Команда python start.py выведет следующее:

Использование объектов из импортированного модуля или пакета

Существует четыре различных вида синтаксиса для записи операторов импорта.

Решение №1:

затем мы можем вызывать функцию непосредственно по имени:

Решение №2:

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

Решение №3:

Далее необходимо использовать полный путь:

Использование dir() для проверки содержимого импортированного модуля

Импорт пакетов

Импорт пакета концептуально эквивалентен импорту файла __init__.py из папки пакета в качестве модуля. И действительно это так. Вот как Python рассматривает импортируемый пакет:

Импорт с использованием абсолютных и относительных путей

Импорт по относительному пути использует относительный путь (начинающийся с пути к текущему модулю) до требуемого для импорта модуля. Существует два вида импорта с использованием относительного пути:

В документации Python говорится о том, как Python 3+ обрабатывает импорт по относительному пути:

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

Обратите внимание, что импорт по относительному пути основан на имени текущего модуля. Поскольку имя основного модуля всегда «main», то модули, предназначенные для использования в качестве основного модуля приложения Python, должны всегда использовать импорт по абсолютному пути.
Источники: Python 2 и 3.

Примеры

Пример 1: содержание sys.path заранее известно

Пример 2: содержание sys.path может изменяться

Часто мы хотим гибко использовать сценарии Python независимо от того выполняются ли они в командной строке или импортированы как модуль в другой скрипт. Как будет показано ниже, здесь мы столкнемся с проблемами, а в особенности в коде написанном на Python 3.

Таким образом, по использованию инструкции import в файле a2.py имеем:

Решение (обходной путь решения проблемы): Мне ничего не известно о простом и наглядном способе решения этой проблемы. Вот некоторые обходные пути:

ПРИМЕЧАНИЕ. Обычно этот метод работает. Однако в некоторых установках Python переменная __file__ может быть некорректной. В этом случае вам нужно будет использовать встроенный в стандартную библиотеку Python пакет inspect. Ознакомьтесь с вопросом на StackOverflow для правильного использования приведенных выше инструкций.

Пример 3: содержание sys.path может изменяться (вариант 2)

В этом случае Решение №1 не будет работать. Но другие будут.

Пример 4: Импорт из родительской директории

Если мы не собираемся модифицировать переменные PYTHONPATH и sys.path в коде, то в этом случае основным ограничением импорта является следующее: При непосредственном запуске скрипта через консоль невозможно импортировать что-либо из его родительского каталога.

Python 2 VS. Python 3

Источник

Что такое импорт файлов?

Импорт и экспорт данных — это автоматический или полуавтоматический ввод и вывод наборов данных между различными программными приложениями. … Команда «Сохранить как» во многих приложениях требует почти такой же разработки, когда файлы сохраняются в другом формате.

Как импортировать файлы?

Импорт сведений о проекте

Что такое импорт в компьютере?

Импорт — текущий файл «отдаем» программе для работы с ним. Также синонимом экспорта может быть слово «Отправить в…».

Как понять экспорт и импорт?

В случае импорта производится закупка и ввоз товаров, технологий, услуг и капитала из-за границы для их реализации на внутреннем рынке страны-им-портера. … В случае экспорта — вывоз за границу товаров, технологий и т. д.

Что такое экспорт и импорт контактов?

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

Как правильно открыть CSV файл в Excel?

Как открыть файл CSV в Excel

Как импортировать файл в Python?

Куда сохраняются импортированные изображения?

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

Что значит слово импорт?

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

Как перенести все данные с телефона на компьютер?

Вариант 2. Передача файлов через USB-кабель

Что экспортируют из Кыргызстана?

Торговля: Основными статьями экспорта Кыргызстана являются золото (1,36 млрд долларов США), руда драгоценных металлов (124 млн долларов США), металлолом (106 млн долларов США), трикотажные женские рубашки (94,2 млн долларов США) и рафинированная нефть ( 87 млн долларов США).

Что является экспортом?

Экспорт — понятие в международной торговле, означающее продажу товаров или услуг в другие страны. Понятие происходит от лат. exporto, что в буквальном смысле означает «вывозить из порта». … Иногда экспортные товары оптимизируют для продажи и потребления на внутреннем рынке страны или государства производителя.

Что значит слово экспортировать?

Экспорт — вывоз за границу товаров, проданных иностранному покупателю или предназначенных для продажи на иностранном рынке.

Как перенести контакты с сим карты в память телефона?

Как перенести контакты с СИМ карты на телефон с чистым Android

Как перенести контакты с одной сим карты на другую?

Как перенести контакты на Сим-карту и обратно

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

Как перенести все контакты с телефона на сим карту?

Перенос контактов на симку в Андроид 4

Источник

Импорт и экспорт персонажей в Path of Building

Вступление

Импорт персонажа по имени аккаунта

Для импорта игрового персонажа, нам нужно знать имя аккаунта.
Если вы забыли имя своего аккаунта, его можно посмотреть на сайте Path of Exile либо в самой игре.

что такое импорт в игре. Смотреть фото что такое импорт в игре. Смотреть картинку что такое импорт в игре. Картинка про что такое импорт в игре. Фото что такое импорт в игре

Если имя профиля написано НЕ на английском языке

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

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

После нажатия на кнопку вам в буфер будет скопирован ваш никнейм, но уже в нужной кодировке. Вставляем (CTRL+V) этот текст как имя вашего профиля в Path of Building и нажимаем Start.

что такое импорт в игре. Смотреть фото что такое импорт в игре. Смотреть картинку что такое импорт в игре. Картинка про что такое импорт в игре. Фото что такое импорт в игре

что такое импорт в игре. Смотреть фото что такое импорт в игре. Смотреть картинку что такое импорт в игре. Картинка про что такое импорт в игре. Фото что такое импорт в игре

Если имя профиля написано на английском языке

Для примера возьмём аккаунт известного игрока: ZiggyD.
Вводим имя аккаунта его в нужное поле, в выпадающем меню слева выставляем PC версию Path of Exile и нажимаем Start.

что такое импорт в игре. Смотреть фото что такое импорт в игре. Смотреть картинку что такое импорт в игре. Картинка про что такое импорт в игре. Фото что такое импорт в игре

После загрузки списка персонажей можно выбрать интересующую нас лигу, после чего выбрать нужного нам персонажа. Выбрав персонажа нажимаем Passive Tree and Jewels. После нажатия вверху появится зеленая надпись Passive tree and Jewels successfully imported, означающая, что импорт прошел успешно.

Затем нажимаем на Items and Skills, о успешном импорте нас уведомит похожая надпись.

После нажатия двух этих клавиш загрузится вся нужная информация о персонаже (дерево талантов, камни, предметы, навыки) и можно будет приступать к работе с PoB. Нажимать кнопку Done не обязательно.

Если ваш профиль скрыт, но вы хотите использовать Path of Building

Используя браузеры Chrome и Opera сделать это довольно легко:

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

что такое импорт в игре. Смотреть фото что такое импорт в игре. Смотреть картинку что такое импорт в игре. Картинка про что такое импорт в игре. Фото что такое импорт в игре

Path of Building запомнит этот ключ, но он не является вечным, так что через некоторое время нужно будет повторить эту процедуру и заново ввести код.

Импорт персонажа с Poe.ninja builds

Персонажей с poe.ninja загружать в PoB легче всего, для того чтобы это сделать нужно:

В Path of Building будет импортирован билд персонажа, с предустановлеными настройками ПоБа. Какие именно настройки будут выставлены, можете прочитать здесь: https://poe.ninja/builds/pob-rules

Если вы хотите импортировать персонажа с poe.ninja без настроек Path of Building установленных сайтом, то воспользуйтесь импортом через имя профиля (мы рассматривали этот способ выше.

Имя профиля написано в квадратных скобках на странице персонажа poe.ninja, либо на официальном сайте PoE, нажав на кнопку Account.

что такое импорт в игре. Смотреть фото что такое импорт в игре. Смотреть картинку что такое импорт в игре. Картинка про что такое импорт в игре. Фото что такое импорт в игре

Экспорт билда из Path of Building

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *