Ошибки в компьютерной графике
Современные видеоигры становятся красивее, реалистичнее и… тяжелее.
Мощные игровые ПК с ними еще как-то справляются, а вот владельцам рабочих ноутбуков и устаревших компьютеров приходится чем-то жертвовать: либо под нож идет производительность ради высокого разрешения, либо качество картинки — ведь иначе количество кадров в секунду не увеличить. Но здесь можно найти баланс, и секрет заключается в правильных настройках графики.
В этой статье мы расскажем, какими опциями можно пожертвовать и не заметить разницы, а какие лучше трогать по минимуму, чтобы не испортить впечатление от игры некачественным визуалом.
11. Оригинальная версия модели Соника из мультфильма «Соник в кино»:
Мне даже не нужно об этом говорить. Вы все видите сами. Как хорошо, что его переделали в итоге…
18. Это 3D-проклятье из киноленты «Динозавр»:
Walt Disney Co./Courtesy Everett Collection, Walt Disney Co. / courtesy Everett Collection
И вроде, графика классная для 2000 года, но есть одно «НО»: почему у доисторических существ вновь зубы какие-то человеческие?
7. Это причудливое существо, которое, предположительно, должно было быть кошкой из «Кошки против собак»:
Warner Bros / ©Warner Bros/Courtesy Everett Collection
15. Графика третьей в спин-офф фильма «Мумия возвращается» оставляла желать лучшего:
Понятно, почему они сделали его тело при помощи компьютерной графики, но зачем нужно было переделывать лицо?
6. Это чудовище — прямиком из сериала «Визитеры»
CGI, благодаря которому зрители могут наблюдать эту картину, даже когда закрывают глаза…
1. Этот душераздирающий пример ужасной графики из фэнтези «Приключения Шаркбоя и Лавы»
По иронии судьбы, худшая часть этого криворукства — не компьютерная графика, а расположение лица актера Джорджа Лопеса. Выглядит комично и неправдоподобно. А ведь фильм — на секунду! — 2005 года, а не 1995-го.
19. «Король Лев» (2019):
Walt Disney Studios Motion Pictures / courtesy Everett Collection
Поясним, почему в подборке фильмов, мультфильмов и сериалов с плохой графикой оказалась обновленная драма «Король Лев», ведь «графон» здесь на высоте.
Просто иногда старое доброе никак не заменить новым-гламурным. Графика пришла — от настоящих львов персонажей не отличишь, но «душа» картины сразу ушла, скрывшись за цифрой…
3. Эти ужасающие рекламные ролики конфет Gushers (в рекламе CGI-модели тоже следует использовать с умом):
14. Один из персонажей из мультфильма для малышей «Роли Поли Оли»:
Нет, конечно, такое видение вымышленного персонажа у создателей, но позвольте все же спросить: что у него с челюстью?
Что вы узнаете из этого материала
21. И наконец… «Кошки»:
Universal Pictures / courtesy Everett Collection
Киноверсия мюзикла про стаю музыкально одаренных кошек… Нет, такие персонажи запомнятся на подсознании лишь своей несуразностью и жутью. Они, возможно, способны приходить в беспокойных снах зрителям с расшатанной психикой.
Не так давно, точнее, 13 мая этого года,компания Epic Games представила публике техническое демо своего нового игрового движка - Unreal Engine 5. Посмотрев на него, я задумался вообще о развитии и значении графики для видеоигр как для одного из видов визуального повествования, вот про это всё мы и поговорим.
Времена забытые.
Чтобы начать говорить непосредственно о самой графике, сделаем ненадолго шаг в сторону и вспомним другие виды наших-людских развлечений, которые в той или иной степени задействуют визуальные образы.
Для удобства мы разобьём их на определенные группы: готовые образы, то есть те, которые авторы уже полностью составили и представляют их нам для ознакомления; и осмысляемые нами самими образы, то есть те, которые мы додумываем в силу своей фантазии, а авторы лишь дают краткие описания нам на откуп. Начнём со второй группы. Сюда мы отнесём литературу и музыку. Визуально мы не видим персонажей, но наше подсознание нам их отрисовывает — визуализирует. Переходим к первой группе, здесь у нас кино, иллюстрации, видеоигры, комиксы (манга)- как и сказал ранее, в этой категории мы уже наблюдаем за сформированной историей. Из всех рассматриваемых направлений, видеоигры являются самой молодой среди медиа и видов искусств и одной из самых увлекательных.
Так почему игры способны зацепить человека? Всё достаточно просто, в отличие от своих конкурентов, они дают возможность самому побывать внутри мира, а в некоторых случаях и полностью влиять на исход сюжета, чего не может предложить никто из конкурентов. Фильмы, литература, музыка или комиксы — законченные произведения, но в играх всё не так. Мы можем часам бегать кругами, выполнять сайдквесты, или сидеть в тавернах и болтать в чате, тем самым изменяя скорость повествования, и логику.
Возвращаемся к графике, а причем здесь она? Всё скрыто в истории самих игр. Вначале были пиксельные аркады, не имеющие как такого сюжета, их основной функций был лишь геймплей, но время шло, технологии развивались, добавлялись пиксели, и люди захотели делать не просто игрушки, а возводить целые миры и вселенные, игры обретали сюжеты, которые ставили иногда другие произведения в неловкое положение, имея проработанных персонажей и сюжет, сложнее чем у литературных аналогов.
Геймплей и графика стали языком повествования. Каждый раз, когда разработчики рассказывали свои истории игрокам, они старались выжимать графические движки на сто процентов. Иногда от движков оставалось лишь название, а студии переписывали под себя всё практически с нуля. Люди часто говорят — главное не графика, а геймплей, но это верно лишь на половину. Чем лучше картинка, которую мы видим, тем проще погружаться в игровой процесс, сопереживать персонажам, наблюдать за развитием в целом. Если рассмотреть две условно одинаковых игры с похожим игровым наполнением, но первая будет устаревшая внешне, а вторая предложит всё тоже самое, но красивее внешне, то люди начнут играть во вторую, потому что визуально она красивее, реалистичнее, что будет усиливать эффект сопоставления самого игрока и его реального мира, с игровым. Если этого не было бы, то и не случилось бы перехода от 2D к полноценным 3D мирам. К примеру, на скриншоте выше у нас эволюции серии Tomb Raider, то, что раньше было синематиками для нас, сейчас уже и не дотягивает до игровой картинки. Нарисованные 2D объекты сменились полноценными в объёме, плоскости перестали быть лишь фигурами обтянутыми текстурами низкого качества.
Даже если рассматривать легендарные игры и их визуальное развитие, давайте возьмём игровую серию ”Silent Hill”, первую игру серии и её сиквел, вышедший на следующем поколении консолей.
Обе части замечательны и приводили фанатов в дикий экстаз, ведь каждая из них проработана до мелочей, с глубоким лором, одним из самых лучших саундтреков в игровой индустрии за всё время её существования. Сравнивая в лоб оба проекта, станет очевидно, что сиквел нас быстрее вовлекает во всё происходящее, восприятие от персонажей, их эмоций и истории в целом кратно усиливается графикой. Этот тот случай, когда над хорошей основой возвели отличную оболочку, как итог трудов разработчиков — культовая серия игр, будоражащая даже сейчас сердца людей.
О слабостях графики.
Не бывает в нашей жизни абсолютных вещей: только хороший, только плохой и так далее. То же относится и к развивающимся визуальным технологиям, для которых скорый рост является и плюсом, и минусом одновременно. Каждый раз, когда игровые движки получают свои обновления, показывая нам свои новые возможности, мощностиграфики нового поколения, тем самым отодвигая всё выпущенные проекты в сторону.
За небольшой срок своей жизни, в игровой индустрии появились определенные манипуляции, придуманные игровыми дизайнерами, решившими задачу по отсрочке ежегодных графических обновлений, для выходящих игр.
Имя этой панацеи — стилизация, или намеренное утрирование форм, масс и пропорций от реальных. В то время, когда скорость устаревания реалистичной графики будет равна скорости развития производительности железа (комплектующих) и графических технологий вроде рейтрейсинга и ему подобных. Для стилизации это не такая проблема и она значительно дольше способна нивелировать временные изменения. Но для того, чтобы иметь возможность создавать хорошую стилизацию, компании разработчики нанимают лучших дизайнеров, ведь хороший дизайн прежде всего должен работать на уровне силуэта, то есть персонажа люди должны узнавать, считывая лишь один уровень восприятия. Теперь можете представить, насколько непросто создать художнику концепт, который люди будут считывать мгновенно по его форме.
Одними из немногих разработчиков, которые действительно мастера своего дела (сейчас мы говорим не о политике компании и их маркетологах, а именно о людях, которые создают непосредственно игры) — Blizzard. Возьмём модель таурена из игры World of Warcraftи зальём его полностью чёрным цветом, как итог мы всё равно понимаем что это всё тот же персонаж, который и был до заливки, это и есть уровень качественного дизайна, которым славятся работники «метелицы». К какому персонажу из их игр не применить эту технику, результат одинаков, не зря на большинстве курсов для игровых дизайнеров рассматриваются в первую очередь примеры от этой компании.
Исходя из всего выше сказанного, может стать вопрос — так может делать всё стилистическим? Сразу вспоминаем, что реализм лучше погружает в атмосферу, особенно когда речь идёт о сюжетно ориентированных играх, например, как делает Дэвид Кейдж (Heavy Rain). Будь они визуально мультяшными, истории сразу же бы просели как повествование. Стилизованная графика имеет подводный камень, а может даже и айсберг.
Яркий пример — World of Warcraft. На скриншоте: слева — орк из классика, справа — из актуального патча. Видна ли разница? Небольшая — да, накинули за все это время немного полигонов, даже текстуры немного подтянули, а в целом как? Здесь ответ будет — никак. Потому что временной порог слишком большой, уже стала появляться у людей привычка к более совершенной графике, и как бы не любил человек одну игру, он всё равно будет смотреть на более совершенные. Чтобы не казаться голословными, поглядим на конкурентов.
Отличная ролевая игра от корейских разработчиков Perl Abyss. Тяга к созданию красивых миров в азиатском регионе очень высока, как и спрос на эту же красоту. Человек — создание, которое всегда будет хотеть видеть более красивое перед собой, и у этой красоты уровня предела не существует. Корейские разработчики создали огромный мир с хорошей проработкой во всех аспектах. Графически их стиль тяготеет в сторону реализма, формы, пропорции, визуализация материалов и геометрия объектов (строений).
В том же ключе свой проект делали и японские разработчики Square Enix, создавая свой проект Final Fantasy XIV. Всё тот же огромныймир, с огромным количеством разнообразных по настроению локаций, большим обилием классов и игровых механик, укутанных красивой графикой, дающей понять, насколько красива их вселенная. Стоп, скажите вы, но тут тоже всё уходит в сторону реализма, а как же быть если у тебя стилизация? Если изменить основополагающий стиль игры, то всё рухнет, игра уже не будет казаться тем Варкрафтом! Смею Вас успокоить, при желании можно подтянуть и стилизацию, пересадив ее на современный движок, не теряя в стиле и восприятии как таковом. Посмотрим, как это сделала компания SONY.
Сохранив стиль игры, разработчики Ратчета улучшили графику в разы, посадив на новый игровой движок, нарастив полигоны, используя более новые шейдеры и современные, технологические возможности, немного частичного рейтрейсинга и получили современную картинку. Смогла бы Метелица так? Давайте обратимся к их же собственным работам, но на современных движках, которые они используют для создания синематиков.
Очевидным ответом на вопрос будет — да. Могли бы, людям, которые не мало в свое время сделали для индустрии и выпустили в свет не мало культовых серий игр всё это по плечу. Я люблю игры от Blizzard, и отношусь к той группе людей, которые хотят увидеть, значительно улучшенный World of Warcraft. Как игроку с немалым стажем, хочется, чтобы компания гонялась не за трендами современности, стараясь угождать всем, кому ни попадя, превращая игру в цирк на роликах, вместо этого самое время заняться своими прямыми обязанностями, и закатить рок-н-ролл (отсылочка для олдов). Это лишь желание фаната, но не фанатика.
Заключение.
Так что, получается, графика всесильна? И способна вытягивать даже откровенно слабые и даже очень плохие игры? Конечно же нет, она выполняет большую часть работы, для погружения игроков в атмосферу игрового мира, но это работает только лишь в том случае, если в основе лежит хорошая сценарная работа. Даже сверхграфика не сможет спасти от провала слабые проекты, где картинка доминирует над спорным сценарием и монотонным геймплеем. Хорошая игра может быть и слабой графически, но, если две составляющие на высоте, это создаст уникальный для игрока по атмосфере и восприятию мир, в который он вернётся не раз.
17. На взгляд многих зрителей, это просто ужасающая версия Гарфилда из фильма «Гарфилд»:
20th Century Fox
Ну почему у него человеческие зубы?!
12. А эта жуть — из 3D-мультфильма, который так и остался лишь в англоязычной версии «Leo the Lion»:
Заберите меня отсюда! Мне страшно! Не зря рейтинг этого муви для детей составил 1.4 балла на iMDb из 10.
20. Гепард-версия персонажа Кристен Уиг в «Чудо-женщине 1984»:
Warner Bros. / Courtesy Everett Collection
Как-то кошачьи с человеческими лицами совсем не сочетаются. И мы это докажем еще раз более наглядно ниже.
16. Эти глаза-бусинки Винни-Пуха и его друзей из фильма 2018 года «Кристофер Робин»:
Walt Disney Studios Motion Pictures /Courtesy Everett Collection
Вот что бы кто ни говорил, а наш, советский Винни Пух, 1969 года рождения, был лучшим! Человечней он что ли был…
Почему игра может тормозить
Производительность в видеоиграх принято мерить значениями FPS — frames per second. Это кадровая частота, то есть количество кадров в секунду. Чем выше FPS, тем плавнее картинка.
Во время игры значения FPS меняются: если нагрузка на компьютер увеличивается в более сложной игровой сцене, количество кадров в секунду падает. Человеческий глаз улавливает малейшие изменения в кадровой частоте: резкое снижение уровня мы воспринимаем как те самые «тормоза».
Объясню на примере. Предположим, вы исследуете игровой уровень, в котором ничего не происходит, — FPS стабильно высокая. Затем начинается динамичная сцена с кучей спецэффектов, и кадровая частота падает, потому что нагрузка на ПК резко повышается. Действие на экране становится более рваным и дерганным, это раздражает.
Чтобы избежать торможения, в играх принято ограничивать «потолок» FPS, даже если компьютер может время от времени выдавать более высокие значения. Глаз привыкает к определенной частоте кадров, поэтому низкая, но стабильная FPS приятнее, чем «плавающая».
Добиться стабильной FPS можно двумя способами: либо занизить настройки графики так, чтобы компьютер с легкостью выдавал 60 FPS, либо сделать их умеренно средними или даже высокими — но выставить ограничение в 30 FPS. В первом случае изображение будет плавным, но не слишком подробным, а во втором — более детализированным и четким, но одновременно и более дерганным.
негласный стандарт для количества кадров в секунду. Если игра ну очень требовательная, достаточно стабильных 30 FPS
Чем мощнее машина, тем больше FPS она успевает обрабатывать. Но требования игр растут с каждым годом: компьютеры, которые были самыми мощными несколько лет назад, уже не так хорошо работают с современным геймплеем. К примеру, на топовом для 2014 года ПК (i7 4770k, GTX 980, 16 ГБ ОЗУ) недавняя Cyberpunk 2077 может тормозить: чтобы этого избежать, игроку придется повозиться с настройками графики, которые позволят увеличить производительность.
30 FPS достаточно, если вы играете в сюжетную или кинематографичную игру: качество изображения будет выше, а игровой процесс не пострадает. Но некоторые игры рассчитаны минимум на 60 FPS — например, многопользовательские шутеры Counter-Strike или Call of Duty, где важна скорость реакции.
Выше 60 кадров в секунду поднимать графику нет смысла: большинство мониторов просто не смогут воспроизвести FPS выше. Дело в том, что у каждого дисплея есть еще и частота обновления экрана, которая зачастую равна 60 Гц: это означает, что картинка на дисплее обновляется 60 раз в секунду. Соответственно, если кадровая частота окажется выше частоты обновления экрана, на мониторе попросту не будет видно разницы.
Одни настройки графики ресурсоемкие, а другие — не очень. Более того, занижение некоторых параметров может практически не сказаться на качестве картинки, но убрать пресловутые «тормоза».
Например, опции для света, теней и отражений. Они сильно влияют на производительность, но их изменения не всегда заметны на экране — некоторые сцены всего лишь потеряют красивые блики и полутона.
Ниже я перечислил самые распространенные настройки графики в порядке их влияния на качество графики. Параметры с припиской «Без потерь» обычно высвобождают немало FPS, но картинку портят не сильно. А там, где указано «С заметными потерями» или «Выжать еще чуть-чуть», придется пойти на компромиссы.
Важно помнить, что советы могут подойти не для всех игр: в разных проектах графика работает по-разному. Эффект от смены параметров может оказаться как слабее, так и значительно сильнее. Чтобы быть точно уверенным в результате и не тратить много времени на настройку, можно воспользоваться специальным гайдом для конкретной игры — например, для Cyberpunk 2077.
Но готовые решения есть не для всех игр. Эта статья поможет настроить игру самостоятельно, учитывая возможности конкретного компьютера. Вот чем можно пожертвовать в угоду производительности, не потеряв в качестве, — или намеренно ухудшив изображение.
Этой небольшой заметкой я хочу начать цикл статей посвященных алгоритмам компьютерной графики. Причем, не аппаратным тонкостям реализации этой самой графики, а именно алгоритмической составляющей.
Действовать буду по следующему принципу: беру какой-либо графический эффект (из демо, программы, игры – не важно) и пытаюсь реализовать этот же эффект максимально простым и понятным способом, разъясняя что, как и почему сделано именно так.
В качестве основы для вывода графики будет использован язык Python и библиотека PyGame. Этим набором можно очень просто что-то выдать на экран, сделать анимацию и т.п. не отвлекаясь на технические детали реализации.
За базовый шаблон программы возьму вот такой код:
Это маленькая заготовка, которая позволяет сформировать окно для вывода графики, а также формирует бесконечный цикл воспроизводящий кадр анимации, выдаваемый на экран - так называемый игровой цикл.
По вышеуказанному коду останавливаться не буду, думаю здесь все максимально понятно. Давайте сразу перейдем к делу.
Что для начала можно взять из графических эффектов, чтобы было и максимально просто и максимально красиво?
Давным-давно существовал такой класс программ, который назывался «хранителями экрана». Это небольшие программы, которые демонстрировали незамысловатую анимацию и запускались по таймеру, когда пользователь не нажимал никакие клавиши или не трогал мышь. Они существуют до сих пор, но сейчас несут более эстетический функционал, чем практический. В эпоху мониторов на электронно-лучевых трубках такие программы помогали предотвратить выгорание люминофора внутри кинескопа.
Если на экране монитора долго показывать статичное изображение с минимум изменений, то можно получить эффект того, что люминофор, нанесенный на внутреннюю сторону кинескопа, из-за перегрева в отдельных точках испарялся и оставались следы, которые не исчезали даже при отключении питания монитора. Т.е. изображение оставалось как бы выжженное на мониторе. Кстати, этому эффекту подвержены и ЖК мониторы и плазменные панели и др.
Чтобы такого эффекта не возникало, при длительном бездействии пользователя запускалась программа-скринсейвер, которая обновляла экран и отображала что-нибудь меняющееся, не давая шанса выгореть отдельным частям экрана.
Получается, что полезный функционал соединял в себе еще и эстетическую составляющую, поскольку всем хотелось видеть на своем мониторе что-то приятное глазу.
Одной из таких программ была демонстрация звездного неба, где просто мигали отдельные звездочки. Но еще красивее выглядел полет сквозь звезды.
Вот несколько примеров таких хранителей экрана и программных продуктов, где они были интегрированы:
Хранитель экрана «Star Battle» в Norton Commander Хранитель экрана Star Flight в Dos Navigator Хранитель экрана Starfield Simulation в Windows 3.11
Давайте за основу возьмем хранитель экрана из Windows 3.11 и попытаемся его повторить, возможно, с небольшими улучшениями.
Если взглянуть на анимацию, то мы видим какое-то количество звезд, которые движутся на нас. Звезды приближаются постепенно увеличивая свою яркость. Разлет звезд происходит равномерно относительно центра экрана.
Начнем с того, что нам нужно как-то зафиксировать общее количество звезд, которое одновременно мы будем отображать на экране.
Пусть это будет константа NumStar и для начала обрабатывать будем 100 звезд.
Звезды нужно где-то хранить, поскольку мы используем Python, пусть это будет обычный изменяемый список. Каждая звезда имеет какие-то характеристики, их и будем записывать в этот список.
Что нам нужно знать о звезде:
Её координаты в пространстве. Так как мы эмулируем звезды в трехмерном пространстве, то это будут координаты X, Y, Z.
Z будет являться глубиной экрана, чем оно больше, тем звезда дальше.
Характеристика цвета звезды, она же яркость. Чем звезда дальше, тем она будет тусклее, поэтому значение цвета будет обратно пропорционально расстоянию до звезды.
Получится примерно следующее: Звезды[ [x1, y1, z1, color1], [x2, y2, z2, color2], и т.д.]
Когда звезда летит к нам она постепенно двигается по всем трем координатам X, Y, Z, и когда-нибудь она вылетит за границы экрана. Выпасть из нашей области видимости звезда может, если она превысила координаты на плоскости нашего окна по X или Y, а также, если она слишком близко подлетела к нам и перешла в отрицательные координаты по оси Z. В этот момент нужно вместо этой звезды сделать новую звезду, чтобы не обрабатывать зря значения, которых мы никогда не увидим.
Самый для этого способ, это сбросить все свойства звезды на какие-то начальные значения.
Поскольку нам нужно, чтобы звезды летели к нам равномерно относительно центра экрана, то для себя решим, что центр нашего окна, будет являться центром системы координат, что конечно не совпадает с координатами предоставляемыми PyGame, но это легко подменяется.
Для равномерного случайного разброса координат звезд по плоскости нашего окна применим такой подход: нам известна ширина и высота окна (это SX и SY), поэтому новые координаты будем получать как:
X = random.randint(0, SX) - SX // 2
Y = random.randint(0, SY) - SY // 2
Т.е. мы получаем случайное число в диапазоне от 0 до ширины или высоты нашего окна, а затем делим его нацело на 2 и получаем случайное число в диапазоне от «–половина окна» до «+половина окна». Координаты X и Y готовы.
Координата по Z задается проще, каждая новая звезда появляется на максимальном удалении от нас. Для простоты расчетов пусть максимальная глубина экрана будет 256.
И остается цвет новой звезды, но поскольку она далеко, пусть звезда сначала будет не видна, т.е. дадим ей цвет 0.
По мере приближения звезды к нам по оси Z, ее яркость будет возрастать. И увеличиваться от 0 до 255.
Приблизительная схема алгоритма получается такая:
Перед основным циклом анимации производим первоначальную инициализацию всех звезд.
Анимация будет состоять из следующих шагов:
просчитываем новые координаты;
Для отображение звезды уже в экранных координатах, нам нужно выполнить преобразование 3D координат в 2D, и желательно в перспективной проекции.
Давайте попробуем теоретически разобрать как это сделать.
Во первых что такое перспективная проекция - это когда для построения проекции нам нужна некая точка - центр проекции, из нее выходит луч, который пересекает объект для которого строится проекция и некую плоскость, на которой проецируется объект. Такой способ позволяет отображать объект на плоскости учитывая его перспективные искажения, т.е. дальние части будут меньше чем ближние.
На рисунке ниже я представлю мою звезду в координатах X, Y, Z. Сейчас рассматривается только две оси Y и Z, для оси X и Z все будет совершенно аналогично. Центр проекции будет располагаться в начале координат. Из центра проекции выходит виртуальный луч, который пересекает звезду и в дальнейшем пересекает плоскость моего экрана, на котором в 2D виде, будут отображаться звезда (оси Z здесь уже не будет).
Это можно сравнить с фонариком, который светит из центральной точки и звезда отбрасывает тень, на некую стену (мой экран).
Точка на экране будет иметь координаты. Поскольку мы сейчас рассматриваем оси Y и Z, X в расчет не берем.
Мне нужно вычислить координату.
Здесь уместно вспомнить школьный курс геометрии и теорему подобия треугольников, которая гласит что отношения подобных сторон у подобных треугольников равны. Соответственно будет справедливо следующее утверждение:
Исходя из этого вычислим:
Поместим плоскость для отображения в самую дальнюю точку нашего виртуального поля по оси Z, в координату 256. В итоге получим формулы для вычисления экранных координат наших звезд на плоскости в следующем виде:
Но поскольку мы немножко модицифицировали наш центр координат, по сравнению с тем, что предлагает PyGame (а он считает начало координат из верхнего левого угла окна), нам нужно привести полученные координаты к системе координат PyGame.
В итоге при движении звезды к центру координат по оси Z, она будет перемещаться по оси Y вверх, и будет происходить эффект разбегания звезд из центра экрана.
Сделаем движение всех звезд с одинаковой скоростью - speed. Скорость выберем экспериментальным путем, у меня она получилась равной 0,09, для медленного и красивого движения звезд.
В цикле, для каждой звезды уменьшаем ее Z координату и пересчитываем X и Y. Если координата по Z стала меньше или равной 0 или звезда вылетела за любую из боковых границ экрана по X или Y, то генерируем новую звезду, вместо старой.
Одновременно с уменьшением координаты по Z, увеличиваем значение цвета звезды, чтобы при ее приближении к нам, яркость возрастала. Опытным путем приращение яркости, для наиболее приятной картинки, у меня получилось с шагом в 0.15.
И итоговый код получится следующий:
Получаем аналог "древнего" хранителя экрана на языке Python. Данный алгоритм и графический эффект является одним из простейших, но содержит в себе немного интересной математики и геометрических преобразований.
В следующей части мы попробуем реализовать эффект плавающего туннеля из демо 1993 года "SecondReality" от группы Future Crew.
Здравствуйте.
Если со многими ошибками и проблемами на компьютере можно мириться, то с дефектами на экране (те же полосы, как на картинке слева) мириться нельзя! Они не только мешают обзору, но могут испортить зрение, если вы долго будете работать за таким изображением на экране.
Полосы на экране могут появиться по разным причинам, но чаще всего они связаны с проблемами видеокарты (многие говорят что на видеокарте появились артефакты…).
Под артефактами понимают любые искажения изображения на мониторе ПК. Чаще всего, они представляют из себя рябь, искажение цвета, полосы с квадратиками по всей площади монитора. И так, что с ними делать?
Сразу же хочу сделать небольшую оговорку. Многие путают артефакты на видеокарте с битыми пикселями на мониторе (наглядная разница продемонстрирована на рис. 1).
Битый пиксель — это белая точка на экране, которая не меняет свой цвет при изменении картинки на экране. Поэтому ее достаточно легко обнаружить, заливая экран поочередно различным цветом.
Арнтефакты — это искажения на экране монитора, не связанные с проблемами самого монитора. Просто на него видеокарта подает такой искаженный сигнал (происходит подобное по многим причинам).
Рис. 1. Артефакты на видеокарте (слева), битый пиксель (справа).
Различают программные артефакты (связанные с драйверами, например) и аппаратные (связаны с самой железкой).
П рограммные артефакты
Как правило, они появляются при запуске каких-нибудь 3D-игр или приложений. Если у вас наблюдаются артефакты и при загрузке Windows (так же в BIOS), скорее всего вы имеете дело с аппаратными артефактами (о них ниже в статье).
Рис. 2. Пример артефактов в игре.
Причин появления артефактов в игре достаточно много, но самые популярные из них я разберу.
1) Во-первых, рекомендую проверить температуру видеокарты при работе. Все дело в том, что если температура достигла критических значений — то возможно все, начиная от искажений картинки на экране, и заканчивая выходом из строя устройства.
Если температура видеокарты превышает норму, рекомендую почистить компьютер от пыли (и особое внимание при чистке уделить видеокарте). Так же обратите внимание на работу куллеров, возможно какой-нибудь из них не работает (или забился пылью и не крутится).
Чаще всего перегрев случается в летнее жаркое время. Чтобы снизить температуру компонентов системного блока, рекомендуется даже открыть крышку блока и поставить напротив него обычный вентилятор. Такой примитивный способ поможет существенно снизить температуру внутри системного блока.
2) Второй причиной (и причем достаточно частой) являются драйвера на видеокарту . Хотелось бы отметить, что гарантию хорошей работы не дают ни новые ни старые драйвера. Поэтому, я рекомендую сначала обновить драйвер, а затем (если картинка такая же плохая) откатить драйвер или установить даже более старый.
Иногда использование «старых» драйверов более оправдано, и мне, например, они не раз помогали наслаждаться какой-нибудь игрой, которая отказывалась нормально работать с новыми версиями драйверов.
4) Отсутствие поддержки шейдеров — практически наверняка даст артефакты на экране (шейдеры — это свое рода скрипты для видеокарты, позволяющие реализовать различные спец. эффекты в играх: пыль, рябь на воде, частички грязи пр., все что делает игру такой реалистичной).
Обычно, если вы пытаетесь запустить новую игру на старой видеокарте — выдается ошибка о том, что она не поддерживается. Но иногда этого не происходит, и игра запускается на видеокарте, которая не поддерживает нужных шейдеров (так же есть специальные эмуляторы шейдеров, которые помогают запускать новые игры на старых ПК).
В этом случае, нужно просто внимательно изучить системные требования игры, и если ваша видеокарта слишком старая (и слабая) — то сделлать уже, как правило, ничего не удастся (кроме разгона…).
5) При разгоне видеокарты возможно появление артефактов. В этом случае сбросьте частоты и верните все в исходное состояние. Вообще, разгон тема достаточно сложная и при не умелом подходе — можно легко вывести из строя устройство.
6) Глючная игра так же может стать причиной появления искажений картинки на экране. Об этом, как правило, можно узнать, если заглянуть на различные сообщества игроков (форумы, блоги пр.). Если подобная проблема имеется — то столкнетесь с ней не только вы. Наверняка, там же и подскажут решение этой проблемы (если оно есть…).
А ппаратные артефакты
Кроме программных артефактов могут быть и аппаратные, причиной которых является плохо работающее железо. Как правило, их придется наблюдать абсолютно везде, где бы вы не находились: в BIOS, на рабочем столе, при загрузке Windows, в играх, любые 2D и 3D приложения и т.д. Причиной такого, чаще всего, является отслоение графического чипа, реже бывают проблемы с перегревом чипов памяти.
Рис. 3. Артефакты на рабочем столе (Windows XP).
При аппаратных артефактах, можно поступить следующим образом:
1) Заменить чип на видеокарте . Дорого (относительно стоимости видеокарты), муторно искать контору, которая произведет ремонт, долго искать нужный чип, и пр. проблемы. Неизвестно еще как вам проведут это ремонт…
3) Замена видеокарты на новую. Самый быстрой и простой вариант, к которому рано или поздно приходят все при появлении артефактов…
13. Мультфильм детей второй половины 90-х «Повторная загрузка»:
Это был революционный по техническому оснащению мультсериал, и дети 90-х его по-настоящему любили. Но сейчас графика местами кажется настолько беспощадно жуткой, что невольно задаешься вопросом: а как мы это вообще смотрели?
9. Персонаж Тика из семейного мультфильма « Барби в роли Принцессы Острова »:
Что с ее ресницами?! Слишком человечно. Слоны не пользуются косметикой!
Что вы узнаете из этого материала
4. CGI-версия Тимми Тернера из мультфильма «Волшебные покровители»:
8. Снайдер и тролль из детского мультфильма «Барби и Хрустальный замок»:
Как бы отталкивают сами по себе.
2. Плохо проработанная версия Руфуса из «Ким Пять-с-плюсом»:
Кто-то — избавьте его от страданий! Он такой грустный… Хочешь мороженку?
10. Коряво сделанный герой по имени Пимм из еще одного 3D-мультфильма про ту же Барби:
Очередной жуткий персонаж рядом с Барби. И все-то в них "прекрасно". Явно отвечавший за графику прогер был с прямыми руками.
Примеры, когда создателям кино нужно было либо отказаться от компьютерной графики, либо использовать ее с умом
Графика в фильмах, мультфильмах и мультсериалах может быть разного качества. Она может дополнять кинокартину, раскрывать при помощи 3D-графики те грани картины, которых не добиться обычными «аналоговыми» инструментами, делая фильм или мультфильм глубже, интереснее, многограннее.
Современная CGI-графика (CGI — изображения, сгенерированные компьютером) в руках профессионала — это мощнейший инструмент дополнения кадра, которого при грамотной работе мы даже не увидим на экране, поражаясь работе каскадеров и небывалым трюкам, хотя на самом деле весь экшен — это сделанная на компьютерах модель.
В мультфильмах вокруг графики может строиться целое восприятие всей картины, примером служит мультфильм «История игрушек» 1995 года выпуска, в котором именно 3D-рисовка стала ключевым орудием передачи реализма для зрителей…
Но если за дело берутся непрофессионалы или специалисты допускают ошибки, то в таких случаях из лучшего друга кинодела 3D-модели превращаются в злейших врагов. И это не преувеличение. Давайте вместе посмотрим на 20 примеров графики из фильмов и многосериек, где применение CGI-моделей оказалось плохим решением.
5. А этот гротескный ужас из фильма ужасов «Газонокосильщик»:
New Line Cinema / courtesy Everett Collection
А ведь в этом фильме снимался Пирс Броснан…
Читайте также: