Processing:Библиотеки/planetarium: различия между версиями
Myagkij (обсуждение | вклад) Нет описания правки |
Нет описания правки |
||
Строка 4: | Строка 4: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=planetarium<ref>[https://github.com/codeanticode/planetarium github.com - planetarium]</ref>= | =planetarium<ref>[https://github.com/codeanticode/planetarium github.com - planetarium]</ref>= | ||
Строка 10: | Строка 10: | ||
==Класс== | ==Класс== | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 16: | Строка 16: | ||
==Обозначение== | ==Обозначение== | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 61: | Строка 61: | ||
==Синтаксис== | ==Синтаксис== | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 67: | Строка 67: | ||
==Параметры== | ==Параметры== | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 73: | Строка 73: | ||
==Возвращаемое значение== | ==Возвращаемое значение== | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 79: | Строка 79: | ||
==Пример== | ==Пример== | ||
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 104: | Строка 104: | ||
|Высота логотипа издателя для schemaNewsArticle=45 | |Высота логотипа издателя для schemaNewsArticle=45 | ||
}} | }} | ||
{{Навигационная таблица/ | {{Навигационная таблица/Портал/Processing}} |
Текущая версия от 11:59, 20 мая 2023
Содержание | Среда разработки Processing | Справочник языка Processing | Библиотеки | Примеры | Режимы программирования |
planetarium[1]
Класс
Обозначение
Описание
Библиотека planetarium создана для того, чтобы рисовать 3D-скетчи Processing в сферическом куполе, но с минимальными изменениями в коде скетча.
Она основана на проекте FullDomeTemplate от Кристофера Варнова. Его можно найти по этой ссылке.
Работа над библиотекой еще не закончена.
Что сделано
- Более аккуратный рендеринг.
- Изменяемый купол.
- Отладочная сетка (реализовано при помощи шейдеров).
- Включение/выключение рендеринга граней кубической текстуры.
- Наложение купольной 2D-сетки на этапе постобработки (к сожалению, серьезно замедляет производительность).
Планируется сделать
- Улучшение разрешения кубической текстуры (или хотя бы ее визуального качества).
- Рендеринг фонового 2D-слоя (возможно, это будет реализовано путем использования объекта PGraphics в качестве сэмплера для шейдера, но он конфликтует с samplerCube, и решения этому я пока не нашел).
- Настраиваемая точка просмотра.
- Четырех сторон для полного купола должно быть достаточно, для этого кубическую текстуру нужно повернуть на 45 градусов.
- Добавить возможность выбора просматриваемого места?
Изменения (технические)
- Этап рендеринга кубической текстуры теперь выполняется с помощью рейкастинга. То есть теперь вместо полусферы используются квадраты с рейкастингом.
- Сэмплинг кубической текстуры теперь выполняется при помощи билинейной фильтрации.
Как работает
Краткое описание того, как это все работает: 360-градусная сцена генерируется при помощи рендеринга сцены 6 раз для каждого направления – положительная часть оси X, отрицательная часть оси X и т.д.
Результат каждого рендеринга сохраняется в кубической текстуре, которая затем применяется на купольной сфере. Таким образом, библиотека вызывает блок draw() шесть раз за кадр, чтобы обновить соответствующую сторону кубической текстуры. Вообще, на самом деле, пять раз, а не шесть, потому что нижняя часть кубической текстуры в куполе не видна.
Следовательно, важно держать в уме, что если вам нужно выполнить какие-либо вычисления только 1 раз за кадр, тогда код для них нужно поместить в метод pre(). Аналогично вычисления, которые нужно выполнить только 1 раз после рендеринга, нужно поместить в метод post().
В данный момент библиотека «считает», что проектор расположен в центральной части купола, поэтому если проектор не отцентрирован, результат будет некорректным. Возможность использования нескольких проекторов в данный момент не поддерживается.
Синтаксис
Параметры
Возвращаемое значение
Пример
См.также
Внешние ссылки
Примеры на Processing | |
---|---|
Основы |
|
Продвинутые графические эффекты |
|
Примеры из сторонних библиотек |