Обновить
8K+

CGI (графика) *

Изображения, сгенерированные компьютером

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

OpenSceneGraph: Система плагинов

Время на прочтение17 мин
Охват и читатели2.8K
image

Введение


Где-то в предыдущих уроках уже говорилось о том, что OSG поддерживает загрузку разного рода ресурсов типа растровых изображений, 3D-моделей различных форматов, или, например, шрифтов через собственную систему плагинов. Плагин OSG является отдельным компонентом, расширяющим функционал движка и обладающий интерфейсом, стандартизированным в пределах OSG. Плагин реализуется как динамическая разделяемая библиотека (dll в Windows, so в Linux и т.д). Имена библиотек плагинов соответствуют определенному соглашению

osgdb_<расширение файла>.dll

то есть в имени плагина всегда присутствует префикс osgdb_. Расширение файла указывает движку какой плагин следует использовать для загрузки файла с данным расширением. Например, когда мы пишем в коде функцию

osg::ref_ptr<osg::Node> model = osgDB::readNodeFile("cessna.osg");

движок видит расширение osg и загружает плагин с именем osgdb_osg.dll (или osgdb_osg.so в случает Linux). Код плагина выполняет всю черную работу, возвращая нам указатель на ноду, описывающую модель цессны. Аналогичным образом, попытка загрузки изображения формата PNG

osg::ref_ptr<osg:Image> image = osgDB::readImageFile("picture.png");

приведет к тому, что будет загружен плагин osgdb_png.dll, в котором реализован алгоритм чтения данных из картинки в формате PNG и помещение этих данных в объект типа osg::Image.
Читать дальше →

OpenSceneGraph: Обработка событий

Время на прочтение14 мин
Охват и читатели5.9K
image

Введение


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

В связи со всем вышеперечисленным, при разработке на C++, возникает потребность в реализации обработки событий тем или иным способом, решаемая за счет использования сторонних библиотек и фреймворков. Всем известный фреймворк Qt предоставляет механизм сигналов и слотов, позволяющий организовать взаимодействие классов, наследуемых от QObject. Реализация событий присутствует и в библиотеке boost. И конечно же в движке OpenSceneGraph не обошлось без собственного «велосипеда», о применении которого и пойдет речь в статье.
Читать дальше →

OpenSceneGraph: Управление окнами и режимами отображения

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

Введение


Мы уже говорили о том, что класс osg::Camera управляет связанным с ним графическим контекстом OpenGL. Графический контекст инкапсулирует информацию о том, как и куда происходит отрисовка объектов и какие атрибуты состояния к ним применяются. Под контекстом понимают графическое окно, вернее его клиентскую область, или пиксельный буфер OpenGL, который хранит данные пикселей без передачи их в кадровый буфер.

OSG использует класс osg::GraphicsContext для представления абстрактного графического контекста, и класс osg::GraphicsWindow, для представления абстрактного графического окна. Последний имеет метод getEventQueue() для управления событиями от элементов GUI. Вообще говоря графический контекст есть платформоспецифичное понятие, поэтому большую часть работы по созданию окна и связыванию его контекста с контекстом OpenGL, OSG берет на себя. При вызове метода createGraphicsContext() класса osg::GraphicsContext() требуемый код (а его не мало, поверьте!) будет сгенерирован препроцессором автоматически, в зависимости от платформы. От нас лишь требуется передать этому методу аргумент типа osg::GraphicsContex::Traits, содержащий описание того, какое окно мы хотим получить.
Читать дальше →

OpenSceneGraph: Процедурная анимация геометрии и атрибутов состояния

Время на прочтение22 мин
Охват и читатели4.4K
image

Введение


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

Если говорить об анимации объектов, то OSG предоставляет разработчику две возможности её реализации:

  1. Процедурная анимация, реализуемая программным способом через трансформацию объектов и их атрибутов
  2. Экспорт анимации из 3D-редактора и управление ею из кода приложения

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

Рисуем мультяшный взрыв за 180 строчек голого C++

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

Как всегда, в нашем распоряжении только голый компилятор, никаких сторонних библитек использовать нельзя. Я не хочу заморачиваться с оконными менеджерами, обработкой мыши/клавиатуры и тому подобным. Результатом работы нашей программы будет простая картинка, сохранённая на диск. Я совершенно не гонюсь за скоростью/оптимизацией, моя цель — показать основные принципы.

Итого, как в таких условиях нарисовать вот такую картинку за 180 строчек кода?


Читать дальше →

Математика в Gamedev по-простому. Кривые и рябь для эффекта дождя в Unity

Время на прочтение6 мин
Охват и читатели17K
Всем привет! Меня зовут Гриша, и я основатель CGDevs. Продолжим говорить про математику что ли. Пожалуй, основное применение математики в геймдеве и компьютерной графики в целом – это VFX. Вот и поговорим про один такой эффект – дождь, а точнее про его основную часть, требующую математики – рябь на поверхности. Последовательно напишем шейдер для ряби на поверхности, и разберём его математику. Если интересно – добро пожаловать под кат. Гитхаб проект прилагается.


LDraw + Unity. Как я Lego генерировал

Время на прочтение6 мин
Охват и читатели11K
Всех с наступающим! Меня зовут Гриша, и я основатель CGDevs. Уже не за горами праздники, кто-то уже нарядил ёлку, поел мандаринов и во всю заряжается новогодним настроением. Но сегодня речь пойдёт не об этом. Сегодня мы поговорим про замечательный формат под названием LDraw и про плагин для Unity, который я реализовал и выложил в OpenSource. Ссылка на проект и исходники к статье, как всегда, прилагаются. Если вы так же, как и я любите лего – добро пожаловать под кат.


Читать дальше →

Трехмерный движок на формулах Excel для чайников

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


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

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

Также я сделал небольшое веб-приложение, где можно потренироваться в создании формул для произвольных фигур и сгенерировать свой файл Excel.

Осторожно: 19 картинок и 3 анимации под катом.
Читать дальше →

Рендерим облака на мобильных девайсах

Время на прочтение3 мин
Охват и читатели22K
3 года назад художник спросил меня:
— Слушай, а можно в нашу мобильную игру добавить красивые облачка?
— Нет, это абсолютно невозможно, у нас постоянно вращается камера, так что билборды будут смотреться очень фальшиво даже если на них добавить карты нормалей, а другие способы…
*художник погружается в летаргический сон*

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



Про фотореалистичный рендеринг облаков написано много статей, но если хочется рисовать облака на смартфоне, приходится придумывать кучу всяких хаков, упрощений и допущений.
Под катом подробное описание рендеринга облаков на мобильных и много html5 гифок.
Поехали!

Виртуальные ядерные установки: полный цикл разработки для Oculus Rift в одном лице (UPD 18.12.2017)

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

И всё же, для тех, кто решит пропустить длинное введение, ищите подзаголовок «Что же с виртуальной реальностью?».

Кому интересны только итог и «Best practice», тогда сразу в «Заключение».

Обновление от 18.12.2017: добавлено видео, ускоренное в 4 раза.


Для тех, кто может позволить себе 20 минут отдыха, сcылка на видео со звуком в FB.

Что за проблема такая?


Конкретно в данном случае, мы говорим о специалистах по охране ядерных установок. Глобально десятки или даже сотни тысяч специалистов в ожидании первичного или очередного, обучения, а учебных и тренировочных центров не хватает (более подробно ниже под спойлером).

Театр и ИТ: Шекспиру и не снилось

Время на прочтение9 мин
Охват и читатели12K
Привычно читать о проникновении информационных технологий на производство, в финансы, логистику, ритейл и другие сферы. А что если соединить театр и ИТ?

Мне повезло участвовать в таком проекте и следовать не привычному ТЗ, а режиссерскому замыслу, который окончательно формировался на моих глазах. В Московском драматическом театре имени М. Н. Ермоловой мы устанавливали аудиовизуальное оборудование, и пару месяцев я был полноправным участником репетиций – следил за процессом из-за кулис и с балкона, где располагалось рабочее место инженера видеомонтажа, настраивал технику и вносил коррективы.



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

Советы новичкам в дизайне

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

Вы выбрали карьеру дизайнера. Я не могу отговорить вас от этой идеи, не смотря на то что вы уже отдали кучу времени/денег (или того и иного вместе) для того, чтобы стать Новым Великий Дизайнером. Я думаю, через пару лет вы начнёте задавать себе тот же вопрос, что и я: “Почему я не занялся сыроварением?”.
Читать дальше →

Исследование фотограмметрии

Время на прочтение8 мин
Охват и читатели39K
Друзья, хочу поделиться опытом, который приобрел в процессе практического изучения дисциплины, как фотограмметрия. Буду рад, если кто-нибудь из вас выскажет свое мнение, поправит меня или укажет на ошибки, которые допустил. Возможно эта статья по изучению мною фотограмметрии поможет и будет полезна Вам. Моя работа описана на примере фотосъемки природы в городском парке, в Центральной полосе России, в период август–сентябрь 2017 г.
Читать дальше →

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

Анонс фестиваля CG Space#6

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


Друзья, 9-10 сентября в московском офисе Mail.Ru Group состоится самый ожидаемый фестиваль компьютерной графики CGSpace#6. Вас ждут два дня полезных и увлекательных лекций, воркшопов, общения и много приятных сюрпризов!
Читать дальше →

Процесс создания синематика вживую. Стрим сегодня, 27 июля в 15.00

Время на прочтение1 мин
Охват и читатели4.7K
Для того, чтобы каждый смог понаблюдать за процессом создания синематика в игровой компании, мы начинаем серию живых включений прямо из Video Production Department в Plarium Kharkiv.


Создание камней для игр с помощью фотограмметрии

Время на прочтение11 мин
Охват и читатели22K
Себастьян ван Элвердинге рассказывает о своём подходе к созданию потрясающих трёхмерных камней и скал с помощью множества фотографий. Более подробно о нём можно узнать в туториале на gumroad.com/sebvhe.


Введение


Привет, меня зовут Себастьян, я живу в Брюсселе, на родине лучшего картофеля фри, пива и шоколада! Сейчас я работаю художником по окружениям в Starbreeze Studios (Стокгольм). раньше я работал в Playground Games над игрой Forza Horizon 3, которая стала для меня отличной возможностью применения фотограмметрии в игре AAA-класса.



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

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

Аддитивные цветовые пространства в колориметрии

Время на прочтение13 мин
Охват и читатели18K
Сегодня речь зайдёт о цвете.

image

Это спектр видимого света, построенный в цветовом пространстве sRGB с помощью прототипа моего колориметрического движка. Внизу подписана длина волны в нанометрах. Именно пространство sRGB является сегодня стандартом для интернета, так как оно поддерживается подавляющим большинством дисплеев. Но по правде, цветовой охват его невелик (всего 36 % от видимых глазом цветов); в нём очень плохо передаются оттенки зелёного. По этой причине на изображённый спектр наложен серый фон, снижающий насыщенность цветов до той, которую можно отобразить на стандартном мониторе. О том же, какие закономерности лежат в основе формирования цвета, и как цвет представлен в цифровой технике, да поведает эта статья.
Читать дальше →

Как создать билборд-текстуру растительности в Unreal Engine 4

Время на прочтение6 мин
Охват и читатели12K
В этой статье мы поговорим о том, как создать билборд-текстуру растительности в Unreal Engine 4. Такая растительность – это простой многократно размноженный четырехугольник, все копии которого всегда повернуты к камере. Я постараюсь привести доводы в пользу такого подхода, расскажу о потенциальных недостатках и отдельно затрону вопрос производительности.


Читать дальше →

Главная проблема CG в России и первый шаг на пути её решения

Время на прочтение6 мин
Охват и читатели16K
image

Всё, что я вижу вокруг, всегда с той или иной скоростью меняется. Что-то очень быстро, что-то медленно, что-то вообще не сдвигается с места. И здесь речь идет именно о менталитете людей, об их отношении к вещам, с ними никак не связанными; об их понимании того, что в мире есть множество интересных и сложных профессий/наук, о глубине которых они никогда не задумывались. Я говорю о людях, живущих в России. В нашей стране еще с советских времен в головах людей прочно оседают устоявшиеся нормы, пресечь которые или изменить они практически не в состоянии. То, какие мысли витают в головах большинства наших людей касательно политики, финансовой грамотности и изучения чего-то совершенно нового для себя, пугает. И если с политикой всё и так понятно, с финансовой грамотностью — так же, хотя, пожалуй, здесь проблемы не только у россиян, то с уважением к чужой работе, или хотя бы с осознанием того, что твоя работа не самая тяжелая во всей вселенной, у нас очень большие проблемы.

И именно здесь я хочу сделать акцент на условиях жизни CG нашей стране. Мне известно, что этот пост могут читать как специалисты-художники, так и люди с компьютерной графикой никак не связанные. А посему здесь не будет сложных слов аля «концепт-арт», или, не дай боже, каких-нибудь «рендеров».
Читать дальше →

Must-Have: 20 игровых ассетов для дизайнера и художника

Время на прочтение3 мин
Охват и читатели18K
Предлагаю подборку невероятно красивых фонов и тайлсетов в разных сеттингах: от джунглей до sci-fi. Вы найдете всё, чтобы создавать эффектные окружения и задавать играм настроение посредством дизайна.


Читать дальше →