Как сделать персонажа unreal engine 4. Создание волос для игрового персонажа. Что такое Blend Space

Примечание: этот пост является одной из восьми частей туториала, посвящённого Unreal Engine:

Теперь IsFalling будет равна true , когда скорость по Z персонажа меньше нуля.

Настало время использовать эти переменные для задания правил переходов.

Определение правил переходов

Во-первых, нам нужно задать правило перехода Idle to Jump . Переключитесь обратно к конечному автомату Locomotion . Дважды щёлкните на правиле перехода Idle to Jump , чтобы открыть его.


Создайте нод IsJumping и соедините его с нодом Result .


Теперь состояние Idle Jump , когда IsJumping равно true .

Повторите процесс для правил переходов Jump to Fall и Fall to Jump . Используйте следующие переменные:

  • Из Jump в Fall: IsFalling
  • Из Fall в Jump: IsJumping


Теперь состояния Jump и Fall могут переходить друг в друга.

Осталось назначить ещё одно правило перехода. Откройте правило перехода Fall to Idle .


Для перехода в состояние Idle игрок не должен прыгать или падать. Чтобы выполнить эту проверку, можно использовать нод NOR . Этот нод возвращает true только когда оба входа имеют значения false .

Создайте нод NOR и соедините с ним нод IsJumping и IsFalling . После этого соедините нод NOR с нодом Result .


Теперь состояние Fall может переходить в состояние Idle , когда IsJumping и IsFalling равны false .

Нажмите на Compile и вернитесь в основной редактор. Нажмите на Play для проверки переходов.

Заголовок спойлера


Примечание: также вы можете проверить переходы, изменяя переменные в Anim Preview Editor.

Пока маффин при движении по земле только скользит, потому что мы ещё не применили анимацию ходьбы!

Вместо создания нового состояния для ходьбы можно смешать его с анимацией ожидания с помощью Blend Space .

Что такое Blend Space?

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

Заголовок спойлера


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


Благодаря Blend Space достаточно просто заменить анимацию ожидания.


Теперь, когда вы познакомились с магией Blend Space, настало время создать его.

Создание Blend Space

Перейдите в Content Browser и нажмите на Add New . Выберите Animation\Blend Space 1D .

Примечание: разница между Blend Space и Blend Space 1D заключается в том, что у первого есть два входа. Последнее имеет только один вход.

Во всплывающем окне выберите SK_Muffin_Skeleton .


Переименуйте ассет в BS_IdleWalk и дважды щёлкните на нём, чтобы открыть его в Animation editor.

Когда откроется Blend Space, вы увидите панель в нижней части экрана. Это Blend Space editor, в котором мы будем добавлять анимации.


Давайте добавим анимации в Blend Space.

Добавление анимаций в Blend Space

Во-первых, нужно изменить имя значеняи оси (входа). Перейдите в панель Asset Details и найдите раздел Axis Settings . Измените свойство Horizontal Axis\Name на Speed .

Теперь мы добавим анимации. Перейдите в Asset Browser и перетащите анимацию SK_Muffin_Idle . Переместите её влево на сетке Blend Space, чтобы она привязалась к значению 0.0 . Отпустите левую клавишу мыши , чтобы добавить анимацию.


Примечание: для отображения названий анимаций нажмите на значок метки в верхнем левом углу сетки Blend Space.

После этого добавьте анимацию SK_Muffin_Walk в значение 100.0 .


Теперь Blend Space будет смешивать анимации ожидания и ходьбы в зависимости от входного значения. Если входное значение равно 0 , то будет воспроизводиться только анимация ожидания. Если входное значение равно 100 , то будет воспроизводиться только анимация ходьбы. Все промежуточные значения будут смешиваться.

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

Можно изменять значения раздела Axis Settings в панели Asset Details.

Настало время использовать Blend Space.

Применяем Blend Space

Закройте BS_IdleWalk и откройте ABP_Muffin . Переключитесь на конечный автомат Locomotion и откройте состояние Idle .

Во-первых, удалите нод Play SK_Muffin_Idle .

Затем добавьте Blend Space BS_IdleWalk с помощью перетаскивания. Соедините нод BS_IdleWalk с нодом Final Animation Pose .


Теперь BS_IdleWalk будет воспроизводиться автоматически, потому что является состоянием по умолчанию. Однако оно будет отображать только анимацию ожидания. Так происходит потому, что вход Speed остаётся равным 0 .

Чтобы исправить это, нужно передать ему скорость игрока.

Получение скорости игрока

Создайте новую переменную типа float с именем Speed

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


Решением может стать использование нода Blend Poses by bool . Этот нод может переключаться между двумя анимациями в зависимости от значения входного булева значения.

Прежде чем создать этот нод, нам нужна переменная, содержащая статус смерти игрока.

Проверяем, умер ли игрок

Вернитесь назад к ABP_Muffin и создайте переменную типа boolean под названием IsDead . Затем переключитесь на Event Graph.

Добавьте новый контакт к ноду Sequence , а затем добавьте к нему выделенные ноды:


Так мы зададим переменную IsDead , зависящую от состояния смерти игрока.

Затем мы воспользуемся нодом Blend Poses by bool .

Использование нода Blend Poses by Bool

Переключитесь на Anim Graph и добавьте анимацию SK_Muffin_Death . Выбрав её, перейдите в панель Details и снимите флажок со свойства Loop Animation .


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

Затем создайте нод Blend Poses by bool .


Выберите нод Blend Poses by bool и перейдите в панель Details. В разделе Option поставьте флажок на свойстве Reset Child on Activation .


Поскольку анимация смерти проигрывается всего один раз, эта опция гарантирует, что анимация сбрасывается перед воспроизведением.
Skeletal Mesh Animation System документации Unreal Engine. Здесь можно узнать о других типах анимационных ассетов и о способах их использования.

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

Теги: Добавить метки

Ассеты для Unreal Engine

Unreal Engine - это один из популярных игровых движков, на котором создается игровой контент. Этот движок схож с Unity. Но, всё же некоторые факторы его значительно выделяют на фоне своего конкурента. Так например, с движком Unreal Engine вы будете иметь гораздо большие возможности для графики вашего контента. Если мечтаете создать топовую игру с nex-gen графикой, тогда вам прямая дорога в Unreal Engine. Кроме графических преимуществ, можно также выделить и ценовую политику. Unity предоставит вам бесплатную версию программы, но в ней будут урезаны некоторые возможности. Pro версия обойдется вам в 1,500$ единоразового платежа, и ещё столько же за модули iOS и Android - итого 4,500$. Зато полная версия Unreal Engine достанется вам бесплатно, пока прибыль от вашей игры не превысит 3,000$ за квартал. После преодоления этой отметки, придётся делиться 5% дохода с компанией Unreal Engine.

Одна вещь тесно объединяет эти два игровых движка. Именно ассеты для Unity и Unreal Engine плечом к плечу находятся на торговых площадках сети. Благодаря готовым ассетам, вы можете собирать свою игру как пазл. Понять эту фразу в прямом смысле слова можно попользовавшись Blueprint. Вы можете не писать ни одной строки кода - ассет всё сделает за вас. Поэтому, если вы не сильны в С++, но во всех снах представляете создание игровых шедевров - устанавливайте ассет Blueprint и начинайте творить. https://www.unrealengine.com/blog/animation-blueprints

Раз уж речь пошла об ассетах, грех не уделить внимание официальным площадкам движков. Магазин ассетов для Unity куда богаче Unreal Engine Market"а. Но, не забывайте о графическом преимуществе. Именно благодаря этому, ассетов для Unreal Engine меньше, но они гораздо красивее прорисованы. Мы не в коем случае не ущемляем графику Unity, нет. В сети террабайты ассетов для Unity разного качества ждут своего применения. Однако, nex-gen Unreal Engine в разы превосходит своего конкурента.

Когда мы говорим об официальных маркетах, сразу становится понятно, что есть платный и бесплатный контент. Если смотреть на официальную площадку ассетов для Unreal Engine, можно сказать, что их выкладывают разные графические художники. Разные паки ассетов от одного художника имеют идентичный визуальный облик. Так например, паки иконок инвентаря и оружия продаются по отдельности, но в дизайне идентичны.

В своём каталоге Unreal Engine содержит:

· анимации

· плагины

· материалы

· звуковые эффекты

· визуальные эффекты

· архитектурные визуализации

· текстуры

· 2D ассеты

· разнообразные бесплатные демо-ассеты и многое другое

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

Платные ассеты для Unreal Engine

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

В этом ассет-паке собрано свыше 230 моделей элементов боя. Различные прыжки, удары, хуки, нокауты, увороты, контратаки и прочие детали поведения персонажей для файтингов, которые отлично выполнены для данного движка.

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

Здесь вы найдете для свыше 400 noise ассетов в высоком разрешении. Можно использовать для текстур, эффектов и пост эффектов, архитектурных визуализаций, графического дизайна и т.д. Модели выполнены в 2К.

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

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

Бесплатные ассеты для Unreal Engine

Кроме дорогих платных ассетов, есть также и множество бесплатных. Их вы можете найти в фан-сообществах Unreal Engine в социальных сетях или на форумах, а также на отдельных сайтах. Epic Games также предоставляет бесплатный доступ к своим ресурсам в официальном маркете. Достаточно зайти в аккаунт Epic Games, и вы увидите небольшое количество бесплатных, но достойных внимания ассетов.

Огромный, а главное, бесплатный ассет-пак с текстурами и прорисованными элементами открытого мира. Данный ассет имеет свои минимальные системные требования - 4Гб оперативной памяти для нормальной загрузки. Что говорить, если в этом бесплатном наборе вы получите 138 текстур виртуального мира и многие другие графические элементы. Если хватает оперативки - пользуемся, друзья.

Ещё один большой и бесплатный набор, который содержит внутри себя 300 разнообразных текстур эффектов и свыше 400 материалов для них. Это далеко не весь ассортимент, который порадует вас внутри пака.

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

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

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

Ассеты для Unreal Engine из сторонних источников

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

В соц.сетях, помимо платных ассетов, вы также можете общаться с другими разработчиками и узнавать для себя что-то новое. Можно и вовсе собрать свою команду и приступить к разработке игрового шедевра. Мы нашли сообщество, в котором художники, разработчики и все кому не лень, делятся друг с другом ассетами для Unreal Engine.

Epic Games выпустила подробную документацию по созданию реалистичных персонажей в игровом движке Unreal Engine 4 . В качестве примера приведён персонаж Дуплет (ранее Твинбласт) из игры Paragon, MOBA от Epic на PC и PS4.

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

Цель данной документации - дать возможность любому человеку научиться создавать такие же материалы и модели, как это делает команда Epic. Чтобы начать работу, откройте лаунчер и загрузите проект со вкладки Learn. Когда вы его откроете, нажмите Play в Editor и покрутите бюст героя в реалтайме.

Перевод - Photorealistic Character Unreal Engine 4

Для получения дополнительной информации о технологиях, используемых для создания персонажей, обратитесь к этому лайфстриму от Epic Games: Tech & Techniques Behind Creating the Characters for Paragon - ссылка .

Skin Shading

Кожа представленного ниже персонажа сделана благодаря UE4 Subsurface Profile .

Это специальный метод используется для рендера реалистичной кожи или воска, он аналогичен методу "Subsurface ", но имеет принципиальное отличие в том, как он визуализирует: Subsurface Profile основан на пространстве экрана. Рендеринг экранного пространства более эффективен для отображения тонких эффектов слоёв кожи, где рассеивание при отражении является вторичным эффектом, которое наблюдается только в нескольких случаях, например, на ушах.

Обратите внимание на использование Material Functions для настройки основы материала кожи. Это делается как многоразовый авторский подход к созданию материалов для персонажей из Paragon . Таким образом, художники могут стандартизировать подходы к созданию определенных типов поверхностей, зная, что изменение одной функции будет обновлять все элементы, в которых она используется.

Skin Shader Textures

Текстуры, используемые на коже персонажа, имеют разрешение 4K и первоначально были получены благодаря сканированию лица актера. Текстуры были затем очищены и изменены художниками из Epic. Эта настройка кожи использует пять текстурных карт: Diffuse , Roughness , Specularity , Scatter и Normal .

Текстуры Название Описание

Diffuse

Диффузная текстура поставляет базовый цвет для материала. Если приблизить 4K, то можно заметить крошечные капилляры. Любое потемнение морщин будет подчеркивать Normal Map.


Roughness

Карта Roughness сохраняется в альфа канале Diffuse карты. Это общий метод, используемый для уменьшения количества текстур. Обратите внимание, что шероховатость увеличивается в местах с порами и морщинами. Это заставляет эти области казаться менее блестящими, подчеркивая глубину Diffuse и Normal карт.


Specular

Карта отражений отвечает за то, как материал будет реагировать на свет. Текстура отображает только свет со сцены, а не объекты + свет, как это делает Reflection Map. Важно отметить, что значение по умолчанию для отражения - 0.5. Эта карта должна отражать свет в тех местах, где кожа немного растянута, а уменьшать этот параметр она должна в тех местах, где мы не хотим видеть отражение, например, в центре пор и около морщин.


Scatter

Карта рассеивания отвечает за то, как много света будет рассеиваться на поверхности кожи. Темные участки, такие как щеки, практически не будут рассеивать свет, в то время как светлые зоны носа и ушей, изображенные на фото, будут рассеивать свет. Цвет рассеивания управляется в Subsurface Profile Asset.Normal Map


Normal

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

Hair Shading

Обрабатывается в Unreal Engine 4 Hair Shader Model . Этот шейдер - модель PBS, основанная на исследованиях Steve Marschner , Eugene dEon и Hanika Johannes , и в настоящее время используется Weta Digital .

Чтобы начать работу с шейдером, установите параметр Shading Model вашего материала на Hair .

Волосы и блики

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

1. Более светлые волосы являются первичными бликами. 2. Более яркие и рыжие волосы представляют вторичные блики.

Алгоритм аппроксимации, используемый в UE4 Hair , создаёт эти эффекты аналогично тому, как они сделаны в реальном мире. Когда свет попадает на волосяной фолликул, он не просто отталкивается от поверхности. Волосы просвечиваются, они позволяют пропускать через них некоторый свет, после чего свет отталкивается и выходит за пределы. Шейдер для волос достигает такого результата благодаря трем возможным путям движения света, как показано на анимированном GIF ниже:

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

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

Волосы и их прозрачность

Hair Shader использует Masked Blend Mode вместо прозрачности. Masked Blend Mode даёт бинарный результат - поверхности либо полностью непрозрачны, либо полностью прозрачны. Noisy Dither Pattern постоянно перемещается по поверхности, становясь непрозрачной в более плотных местах. Dither используется как способ смешивания Masked Transparency , но работает только когда TemporalAA активен.

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

Edge Masking

Хотя это и не является частью шейдера, но стоит отметить, что материал, используемый на волосах персонажа из данной статьи, а также других персонажей игры Paragon, использует так называемый "Edge Masking " для исчезновения волос, повернутых к камере. Поскольку волосы визуализируются как серия плоскостей - см. Раздел «Волосы и геометрия» ниже - вполне вероятно, что с определенных углов камеры можно было бы увидеть край каждой плоскости, нарушив эффект волос.

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

Создание волос для игрового персонажа

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

Геометрия волос

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

Нет никаких жестких правил для детализации геометрии волос вашего персонажа, но следует отметить, что Дуплет использует около 800 отдельных плейнов , в общей сложности около 18000 треугольников . Также обратите внимание, что материал для волос установлен двусторонний в свойствах Material Node Properties .

Текстуры волос

При использовании UE4 Hair шейдера конечный результат достигается следующими текстурами: Diffuse , Depth , Alpha , Root и Unique ID . В Epic эти текстуры обычно генерируются с помощью системы волос 3ds Max, которая проецирует имитируемые волосы на кусок геометрии. Однако есть много других вариантов для подобных результатов.

Текстура Название Описание

Diffuse

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


Alpha

Альфа текстура обеспечивает прозрачность тех участков, где нет текстуры волос.


Root

Текстура Root является маской для изменения цвета волос от корня до кончика. Полезна при осветлении или затемнении волос по их длине.


Depth

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


Unique ID

Текстура The Unique ID просто дает уникальное значение от 0 до 1 (от черного до белого) для каждой пряди на заданной части геометрии волос. Это используется для обеспечения различной вариации волос.

Свойства Hair Shader

Когда вы будете использовать Hair Shader , то увидите новые свойства, доступные в ноде материала: Scatter , Tangent и Backlit .

Scatter

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

Тем не менее, рассеивание света по-прежнему имеет решающее значение для того, насколько реалистичными окажутся волосы в игре. Чтобы контролировать это, Hair Shader имеет параметр Scatter , который заменяет Metallic основного нода шейдера и ограничивается значениями от 0.0 до 1.0 . Scatter контролирует, сколько света проходит на всех волосах персонажа, как если бы это была одна поверхность.

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

Tangent

Свойства Tangent заменяют свойства Normal на шейдере волос. Tangent вычисляется как вектор, который проходит параллельно каждой пряди волос, направленный назад к корню. Цель Tangent заключается в том, чтобы помочь настроить правильное анизотропное отражение. Если вы не знакомы с этим, то анизотропное отражение - это то, что происходит, когда свет отскакивает от поверхности с микро-порезами, например, шлифованный металл.

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

Tangent может отображаться одним из двух способов: автоматически или с помощью карты Flow. Автоматический метод просто требует, чтобы текстуры для каждого листа волос были ориентированы таким образом, чтобы корень был направлен вверх, а кончики - вниз. Если волосы короткие, и никакие плейны не изгибаются и слишком сильно скручиваются, то этот метод является адекватным. Он используется и на персонаже, представленном в этом уроке (мужчина).

Flow Maps

Другой метод требует создания Flow карты. Это будет полезно, если волосы вашего персонажа длинные, а также они должны казаться изгибающимися и завитыми больше, чем фактическая геометрия, или если отдельные участки текстуры для волос ориентированы по-разному (не сверху вниз, как описано выше). В проекте Photoreal Character Bust вы можете найти неиспользованную Flow карту с именем T_Hair_Flow . Ниже приведено сравнение этой карты и финального результата.

Здесь вы можете увидеть, как текстурирована Flow Map на примере волос Сойки (Sparrow ). Обратите внимание, что карта используется только на некоторых участках, а не на всей голове.

Использование Pixel Depth Offset и Hair Shader

Pixel Depth Offset (PDO ) не является свойством, уникальным для Hair Shader. С точки зрения непрофессионала, PDO заставляет пиксели отдаляться от камеры, создавая искусственное ощущение глубины. Так как волосы состоят из простых плейнов, как описано в разделе "Волосы и геометрия ", использование PDO может обеспечить ощущение глубины формы волос в целом.

Вторая часть статьи о создании реалистичного персонажа в Unreal Engine 4 , в которой будет подробно описано создание глаз, можете посмотреть здесь: .

Статьи по теме: