Рубрика «Работа с 3D-графикой»

Когда за три недели до окончания съемок «Гладиатора» умер Оливер Рид – актер, игравший роль тренера гладиаторов Антония Проксимо, – создателям фильма пришлось срочно переписывать сценарий так, чтобы Проксимо погиб по ходу действия, а недостающие сцены создавать с помощью дублера и компьютерных эффектов. Тогда, 21 год назад, 160 секунд киноленты с участием «цифрового Рида» обошлись в 3,2$ млн. А сейчас благодаря развитию технологий, по нашим оценкам, можно было сократить бюджет раз в тридцать, и за эти деньги не просто сделать цифрового двойника актера (digital double) для нескольких сцен, а создать его полную гиперреалистичную 3D-модель и дальше снимать с ней кино без ограничений во времени и пространстве. Наша команда как раз и работает над созданием таких аватаров. В этом посте я расскажу, зачем они нужны помимо кино и что любопытного мы узнали во время собственных экспериментов.

Мой новый коллега – цифровой аватар. Как и зачем компании создают фотореалистичные 3D-модели людей - 1

Читать полностью »

Как рендерится кадр DOOM Ethernal - 1

Вступление

Doom Eternal не нуждается в отдельном представлении: это прямой преемник Doom 2016, разработанный благодаря седьмой итерации id Tech, внутреннего движка студии id Software. В свое время меня поразило и высокое качество визуальной составляющей Doom 2016, и простота и элегантность технических решений. В этом отношении Doom Eternal превосходит своего предшественника во многих областях, и некоторые из них достойны детального разбора. В этой аналитической статье я постараюсь обсудить их все.

Мой анализ вдохновлен трудом Adrian Courrèges про Doom 2016 (перевод). Я считаю, что подобные работы позволяют взглянуть на подходы к решению некоторых проблем рендеринга AAA-проектов и тем самым становятся превосходными обучающими материалами. В этом анализе я планирую обсудить общие особенности и не погружаться слишком глубоко в тонкости каждого способа и прохода рендеринга. Кроме того, некоторые проходы в Doom Eternal почти не отличаются от своих аналогов в Doom 2016 и уже были разобраны в труде Adrian Courrèges, поэтому я могу их пропустить.

Хочу особым образом отметить строго обучающий характер текущей статьи. Я никоим образом не поддерживаю реверс-инжиниринг продуктов с целью кражи интеллектуальной собственности или иного злого умысла. Если вы еще не успели сыграть в Doom Eternal, можете не беспокоиться: я разбирал лишь самое начало игры, поэтому спойлеры вам не грозят.

Итак, приступим.
Читать полностью »

OpenCASCADE и Невидимое солнце Дао - 1

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

Великая книга Дао - Стих 27 ( Перевод Ю. Полежаевой)

Читать полностью »

DirectX raytracing — всплываем - 1

В 2018 году компания Microsoft анонсировала raytracing API (DXR) как часть DirectX 12. Подход рейтрейсинга заставляет полностью переосмыслить способ ренедринга трехмерных сцен, смещающий классический подход растеризации на второй план. АПИ модернизируются, разрабатываются более производительные GPU, разработчики пакетов визуализации пробуют новые возможности. Однако даже на наиболее производительных видеокартах мощности хватает на генерирование всего нескольких лучей на пиксель для обеспечения стабильной частоты смены кадров. К тому же, производительность во многом зависит от сложности материалов и сцены. Но уже сегодня продвинутые алгоритмы шумоподавления и аккумуляции результата освещенности позволяют достичь высокой степени реализма. Все это мотивирует к экспериментам в данной области.

Читать полностью »

В прошлой части был показан процесс разработки модели цилиндра. В этой речь пойдет о его материализации. На момент начала этой работы у меня имелся опыт литья нескольких сотен мелких деталей из алюминия и мучительной отливки прошлой версии цилиндра, которая так и не была закончена. Ее удалось отлить лишь с пятого или шестого раза, уже и не помню… А ведь на каждый комплект одноразовых форм приходилось тратить около месяца работы. Проблема была в захвате воздуха литниковой системой — при заливке металл захватывал воздух, который образовывал пустоты в теле. Какие только литниковые системы я не пробовал, какие только советские литейные талмуды не читал все было без толку. И так бы продолжалось и далее пока я не решил испробовать радикальное решение проблемы — наклонный под 30-45° к вертикали литник большого сечения. С ним отливка сразу получилась как нужно.

Свой 2-тактный мотор: песочница, куличики и 10кг расплавленного металла - 1

Читать полностью »

Когда-то давно я понял, что мне мотора Иж Планета не хватает и я решил радикально модифицировать его — сделать собственный цилиндр. По ходу сменился даже мотор. За его время я успел закончить школу, поступить в один вуз, вылететь и каким-то чудом перевестись в другой и отучиться там еще 5 лет и все равно я закончил и его уже два года назад. Знал бы я, что так оно растянется, наверное, не ввязался бы. Поскольку мы воспринимаем время относительно прожитого в сознательном возрасте, то для меня оно растянулось на половину прожитого времени.

Прошло уже 6 лет с момента выхода первой и последней заметки по этому проекту(Свой 2-тактный мотор. CR620 рекомендуется к ознакомлению). Тогда я остановился из-за проблем с аутсорсом в металлообработке. Кто не может, кто не хочет, кто делает бесконечно долго, кто и детали назад возвращать не хочет. А город в котором я живу имеет славную промышленную историю и был центром Петровской индустрии 18-века, но от славного прошлого ныне остался один корень в названии города и несколько действующих предприятий, на которых занято порядка единиц процентов населения. А сейчас не 90-е и даже не 00-е, когда можно было договорится с человеком с завода чтобы он что-то такое эдакое для тебя сделал. Теперь у них есть работа и КПП на входе, как я потом узнал — номинальное. Вся эта история с передачей деталей где они лежат, а не делаются, поиск новых мест и тому подобное блуждание длилась несколько лет. Оказалось, что отлить сложную алюминиевую отливку у сарая на родительской даче я смог, а обработать, что не выглядело проблемой изначально — нет.

Проект длиной в 8 лет — знал бы, ни за что не ввязался: свой 2-тактный мотор - 1

Читать полностью »

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

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

Во-первых, нужно поблагодарить создателя использованного мной туториала. Взяв его за основу, я избавлялся от всех абстракций, пока не получил «minimal viable program». Надеюсь, она поможет вам начать освоение современного OpenGL. Вот что мы будем делать:

Минимальный WebGL в 75 строках кода - 1

Равносторонний треугольник, зелёный сверху, чёрный в нижнем левом углу и красный в нижнем правом, с интерполированными между точками цветами. Чуть более яркая версия чёрного треугольника [перевод на Хабре].
Читать полностью »

image

Рендеринг в реальном времени для виртуальной реальности создаёт уникальный спектр задач, и основными из них являются необходимость поддержки фотореалистичных эффектов, достижение высоких разрешений и увеличение частоты обновления. Для решения этих задач исследователи Facebook Reality Labs разработали DeepFocus — систему рендеринга, представленную нами в декабре 2018 года; она использует ИИ для создания сверхреалистичной графики в устройствах с переменным фокусным расстоянием. В этом году на виртуальной Конференции SIGGRAPH мы представили дальнейшее развитие этой работы, открывающее новый этап на нашем пути к созданию будущих дисплеев высокой чёткости для VR.
Читать полностью »

Роман Шувалов: «Мне пришла в голову идея — сделать трехмерный рендер карты OpenStreetMap» - 1
Роман Шувалов — разработчик инди-игр из Тольятти, который в начале этого года выпустил игру «Generation Streets», основанную на данных OpenStreetMap. Не так давно он открыл часть кода своего проекта. Зачем он это сделал, как появилась игра и почему выбор пал на OSM — обо всем этом Роман рассказал в интервью.Читать полностью »

Моё детство примерно на 20% состояло из Dungeons & Dragons (D&D) и на 80% — из LEGO. Эти два занятия очень сильно пересекались. Мне, по разным причинам, не разрешали всё время играть в D&D. Но я, привлекая на помощь воображение, и достигнув в этом деле успехов, достойных плута 15 уровня, понял, что создание персонажей AD&D игрой не считается. Воссоздание вселенной DragonLance средствами LEGO очень хорошо помогало мне быть ближе к игре, которая мне очень нравилась.

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

Опенсорс и эксперименты с виртуальным конструктором LEGO - 1

Теперь, хоть я и стал старше, моя любовь к LEGO не угасла. И хотя я и не могу сказать, что очень уж горжусь своими моделями (их называют MOC-моделями), я почувствовал, что просто должен разобраться с тем, как мне документировать то, что создаю. Я никогда не умел очень уж хорошо рисовать. Поэтому я решил обратиться к компьютеру.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js