Обновить
64K+

3D-графика *

It's time to render!

104,12
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Сэнди Петерсен и Джон Кармак: как Quake сломал id Software

Время на прочтение3 мин
Охват и читатели12K

Сэнди Петерсен, геймдизайнер и дизайнер уровней Doom и Quake:

«В связи с 30-летней годовщиной выпуска сейчас многие с теплотой вспоминают Quake, и это вполне оправдано. Quake — потрясающий проект, сочетающий в себе искусство, программирование и дизайн. Я работал над ним, и все мы выложились почти идеально. Мы создали безумный экшен с большой долей свободы, захватывающий воображение игроков. Вся команда проделала замечательную работу и качественно выполнила все задачи. Но расплата за это была печальной: мы трудились долго и упорно, и мне кажется, эта игра сломала нас морально...»

Читать далее

Новости

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

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели16K

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

Сейчас я работаю в управлении инженерными данными в Цифровом СИБУРе. Когда строят крупный завод, все его системы сначала проектируют в 3D-модели: трубопроводы, оборудование, арматура (задвижки, клапаны, вентили, все, чем можно перекрыть поток), кабельные трассы, эстакады. Каждый объект в модели должен быть проименован, то есть назначен идентификатор в виде тега. 

Тег — это уникальное имя, сформированное по специальным правилам, по которому объект потом найдут на реальном заводе, включат в реестр обслуживания, загрузят в систему управления инженерными данными – наша внутренняя разработка. Без тегов 3D-модель просто геометрическая болванка, которую можно использовать только в качестве опорной модели, от которой на стройке нет толку.

Читать далее

Опенсорсим YaGS Plugin: открытый плагин для работы с 3DGS внутри Unreal Engine

Время на прочтение9 мин
Охват и читатели9.8K

Представьте, что вам нужна фотореалистичная 3D‑копия реального объекта или сцены: например, лица актёра для крупного плана или целой городской улицы. Сегодня для этого есть два инструмента: классическое 3D‑моделирование и фотограмметрия. Однако они съедают недели работы и ломаются там, где очень важны детали, — волосы, хром, стекло, отражения превращаются в артефакты. А на то, чтобы снять реалистичную сцену или объект так, чтобы это масштабировалось на тысячи единиц, обычно уходит слишком много времени и денег.

Выход из этого тупика для целого ряда задач мы нашли в Gaussian Splatting и прогнали технологию через несколько очень разных проектов: сканирование людей и локаций для кино (например, для «Кибердеревни»), создание цифровых двойников городских кварталов и симуляцию для автономного транспорта. Инструмент один — задачи разные. И именно на этом контрасте и родилось самое интересное.

Сегодня я расскажу, как риг из 15 камер заменяет установку за сотни тысяч долларов и зачем мы используем движущегося человека как калибровочную доску. Объясню, почему для беспилотного автомобиля фотореализм обязан рождаться из данных, а не из 3D‑редактора. Ну и, конечно же, расскажу про YaGS Plugin — наш опенсорс‑плагин, который делает Gaussian Splatting полноценной частью сцены в Unreal Engine.

Читать далее

Гуманоидные роботы: От лабораторных экзоскелетов до домашних ассистентов за 40 тысяч долларов

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели5K

Интервью с Сергеем Лоншаковым, архитектором проекта «Робономика»: о том, почему роботы будут в спортивных костюмах, сколько стоят их пальцы и когда они начнут разбирать посудомойку.

Гуманоидные роботы перестали быть фантастикой — они стали реальностью, которая постепенно входит в нашу жизнь. Но так ли близок день, когда робот-помощник будет разбирать посудомойку, выносить мусор и встречать гостей? О том, что происходит в индустрии на самом деле, мы поговорили с Сергеем Лоншаковым — визионером компании AIRA и архитектором проекта «Робономика». За плечами Сергея — более десяти лет экспериментов с робототехникой, три поколения выпускников ИТМО и множество проектов от дронов-доставщиков до роботов-вафлипекарей.

Читать далее

Автоматизированный анализ архитектурных и объемно-планировочных решений на базе ЦИМ с применением программы BIMIT

Время на прочтение5 мин
Охват и читатели4.9K

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

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

Читать далее

Рендеринг миллионов динамических связей: O(1) вместо O(N²) (но это не точно)

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели7.3K

Привет, Хабр!

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

Читать далее

Живая карта: редизайн новогоднего слоя в 2ГИС

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели5.8K

Традиционно 1 декабря в 2ГИС включается зимний слой — это особый режим карты, который превращает привычный город в зимнюю сцену: меняются цвета карты, появляются тематические 3D-модели, украшения и анимации. Мы обновляем новогодний слой каждый год, чтобы добавить карте праздничного настроения и создать то самое тёплое ощущение приближающегося праздника...

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

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

Читать далее

GPU‑рендер в облаке: пробрасываем графический стек в изолированные контейнеры

Время на прочтение8 мин
Охват и читатели11K

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

Ярким кейсом стал проект к премьере сериала «Кибердеревня». Мы сканировали гостей мероприятия, создавали их 3DGS‑аватары (3D Gaussian Splatting) и интегрировали в подготовленные Unity‑сцены. Этот пайплайн наглядно подсветил узкое место: при масштабировании производства скорость упирается не в креатив или алгоритмы реконструкции, а в возможности инфраструктуры рендеринга. Стало очевидно, что нам нужно решение, способное ускорить обработку в десятки раз.

Традиционно такие задачи решаются на локальных рабочих станциях или через специализированные внешние рендер‑фермы. Однако в Яндексе уже есть YTsaurus — распределённая система с GPU‑кластерами, поддержкой контейнеризации и отработанными механизмами планирования задач. Меня зовут Анатолий Томилов, я разработчик инфраструктуры VR и 3D‑реконструкции, в Фантехе. В статье я расскажу, почему идея использовать YTsaurus в качестве внутренней рендер‑фермы выглядела логичной, но её реализация оказалась нетривиальной.

Читать далее

Зараженные ассеты на маркетплейсах

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели11K

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

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

Читать далее

Запретный 3ds Max на Mac mini M4: 1 час 21 минута на интерьер

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели14K

Autodesk не рекомендует 3ds Max на Apple Silicon. Я всё равно завёл 3ds Max 2022 + Chaos Corona 15 на Mac mini M4 через Parallels и отрендерил интерьер на CPU за 1 час 21 минуту. Внутри: полный порядок установки, фикс лагов вьюпорта, обход ошибки AVX2 и честные замеры.

Читать далее

Из 360°-панорамы авто в настоящий 3D: Gaussian Splatting на чужих фотографиях машин

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели5.9K

Наткнулся на рекламу сайта продажи авто в телеграме. Зашёл на сайт из любопытства, потыкал объявления и наткнулся на фичу — «3D-панорама». Зажимаешь, ведёшь пальцем, машина поворачивается перед тобой. Понял, что это просто карусель из изображений, а почему бы не сделать настоящую 3D-панораму?

Читать далее

Живой космос на Metal: как я переписывал фон мобильной игры и поднимал FPS с 20 до 120

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели6.3K

В мобильной разработке мы привыкли, что красивый анимированный фон — это либо видео, либо пара слоёв с CAGradientLayer и медленным параллаксом. Для большинства задач этого хватает. Но иногда хочется большего: настоящий живой космос — туманности, которые медленно перетекают друг в друга, планеты с кольцами, звёзды разных классов и в центре — чёрная дыра с аккреционным диском, как в «Интерстелларе».

У меня есть небольшая аркада-раннер про полёт сквозь космос. Фон там — не картинка, а процедурная сцена, которую целиком рисует фрагментный шейдер: каждый пиксель экрана вычисляется математикой из шума. Сначала всё это жило на SpriteKit, а потом я переписал на Metal — и вот тут началось самое интересное, потому что красивая сцена на десктопе и та же сцена на телефоне — это две очень разные истории.

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

Читать далее

Почему мы до сих пор неправильно пишем физические движки и 3D-графику

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели28K

Стоит открыть исходники любого современного игрового движка – неважно, это C++-рендер, сделанный на коленке, или какая-нибудь гигантская экосистема вроде Unity или Unreal Engine – вы первым делом натыкаетесь на одни и те же знакомые сущности. Все вокруг живет в Vector3: координаты, направления движения, точки столкновений. Каждая частица указывает, куда она смотрит, с помощью Quaternion. А если требуется что-то покруче – переносить и одновременно крутить объект, то Matrix4x4. Это уже как стандарт де-факто: кто пробовал крутить объекты руками, тот точно переписывал код с этими структурами. Ещё конечно же отдельно существуют лучи, плоскости, сферы, bounding boxes, а между ними тянутся километры функций вроде dot()cross()normalize()lookAt()inverse()project() и бесконечных преобразований типов.

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

И самое интересное заключается в том, что так было не обязательно.

Читать далее

Ближайшие события

Создаём графику, как будто на дворе 1993 год

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели43K

Catlantean 3D — это хобби-проект, который я неспешно пишу в своё свободное время уже больше года. В следующем году я планирую выпустить его в Steam.

Я хочу создать завершённый, готовый к выпуску шутер от первого лица при помощи методик, характерных для начала 90-х, при этом позволив себе роскошь пользования современным компилятором и слоем абстракций платформы.

Читать далее

Три фикса, четыре ошибки, один файл

Уровень сложностиСложный
Время на прочтение9 мин
Охват и читатели12K

# Как мы четыре раза неправильно диагностировали зависание на джобе 281 339

Несколько месяцев назад я писал, [как мы четыре раза неправильно чинили мерцание](https://habr.com/ru/articles/1042962/) при рендеринге 4,4 миллиона полигонов. Тогда казалось, что это рекорд: месяц блужданий, четыре отброшенных подхода, решение на неделю. Эта история хуже. Баг пережил четыре диагноза подряд, два из которых мы успели «подтвердить числами», получил по дороге три работающих фикса от несуществующих причин - и в итоге оказался файлом, который лежал на рабочем столе.

Напомню контекст: мы небольшой командой пишем на Rust + Vulkan редактор топологий интегральных схем + верификатор (DRC/LVS/Antenna/PEX) с прицелом на российский рынок. Команда - три человека, я в роли CTO направляю архитектуру и принимаю основные решения. В том числе неверные, о которых ниже. Тестовый основной дизайн всё тот же - Caravel SkyWater SKY130: 4,4 миллиона полигонов, 1014 уникальных ячеек, 22 уровня иерархии, 278 МБ GDS (недавно воспользовались прекрасным проектом [TinyTapeout]( https://github.com/TinyTapeout/) - для прогона на различных gds)

К моменту этой истории мы только что закончили перф-кампанию по паразитной экстракции (PEX). Если коротко: чтобы посчитать ёмкости, нужно сначала собрать цепи - обойти иерархию чипа BFS-ом от каждого "сида" (точки на цепи устройства) и выяснить, какие фигуры электрически связаны. На Caravel это 537 748 сидов. Кампания ужала полный холодный прогон с 962 секунд до 70: пространственный грид вместо квадратичного перебора пар, параллельные трейсы на 14 потоках, кеш результата. Все гейты бит-идентичности зелёные, CLI летает.

Читать далее

Создание воксельных ассетов: Разбор личного кейса

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели6.6K

В этой статье представлен подробный перевод личного кейса разработчика Marwan по созданию воксельных 3D-моделей. Вы узнаете, с какими проблемами оптимизации полигонов сталкиваются разработчики при импорте вокселей в игровой движок Unity, как работает алгоритм Greedy Meshing для отсечения невидимых граней и как создавать кастомные инструменты ландшафта (Terrain Tools) и систем сетки (Grid System) для ускорения разработки игровых миров. Статья будет полезна всем, кто интересуется GameDev и оптимизацией трехмерной графики.

Спойлер: В тексте много картинок без спойлера.

Читать далее

free AI girlfriend. Почему мужчины уходят из экономики отношений и как устроен пространственный 3D-аватар в браузере

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели12K

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

При этом, согласно макроэкономической статистике, структура перераспределения капитала выглядит иначе. Возникает логичный вопрос: как именно распределяются финансовые потоки в обществе и почему традиционная «экономика отношений» сегодня превратилась в систему с крайне сомнительной окупаемостью инвестиций (ROI) для мужчин?

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

Читать далее

Doom можно запустить на чём угодно… кроме Neo Geo

Время на прочтение9 мин
Охват и читатели15K

Считается, что порт Doom можно запустить на любом технологическом устройстве. У игры изящный, быстрый, модульный код, который может работать практические везде. Порты выпустили даже для систем, появившихся до Doom, а некоторым портам помогает специальное оборудование как, например, в случае первого Doom на SNES. Чистый и изящный код написан на C, в нём не так сложно разобраться. В нём не используются никакие современные дополнения языка и какие-то устаревшие технологии, поэтому он замечательно компилируется. Кроме того, он удобен для разных endiannes, что очень важно для портируемости.

Поэтому неожиданно, что порт Doom так и не появился на Neo Geo. В конце концов, в Neo Geo работает тот же CPU Motorola 68000, что и в Sega Genesis с Commodore Amiga, а для обеих этих платформ, несмотря на их слабые характеристики, есть версии Doom. Для Neo Geo же её найти невозможно. Многие разработчики, работавшие с Neo Geo, часто говорили, что на ней практически невозможно запустить Doom. Но почему? У этой консоли есть видеодисплей, CPU, ОЗУ и всё необходимое для запуска видеоигр. Давайте же разберёмся.

Читать далее

Пишем Third Person Controller на MonoGame. Часть II

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели7.9K

Это вторая часть серии туториалов, где мы реализуем Third Person Controller на MonoGame. В этой части мы заменим капсулу персонажа на анимированную модель. И прицепим меч на спину.

Читать далее

Как мы четыре раза неправильно чинили мерцание при рендеринге 4,4 миллиона полигонов на wgpu

Уровень сложностиСложный
Время на прочтение8 мин
Охват и читатели6.8K

Уже год мы небольшой командой пишем на Rust + wgpu редактор топологий интегральных схем — что-то вроде KLayout, только с прицелом на российский рынок. Команда — три человека. Я в роли CTO направляю архитектуру и принимаю основные технические решения. История ниже — про одну такую серию решений, которую я завёл в тупик четыре раза подряд, прежде чем мы поняли, в чём была ошибка.

Тестовый дизайн у нас — Caravel SkyWater SKY130, открытый чип на ~4,4 миллиона полигонов, 1014 уникальных ячеек и 22 уровня иерархии. Полный GDS-файл — 278 МБ.

Первая попытка отрендерить это на экране показала: всё работает, всё на месте. Только мерцает. Не «иногда подёргивается» — а так, что смотреть невозможно. Любой zoom или pan превращал картинку в стробоскоп: половина чипа есть, половина пропала, через кадр — наоборот.

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

Читать далее
1
23 ...