Примеры фигур Panda3D на Python

Приветствую! Здесь вы наверняка найдете, что ищете. Примеры в лаборатории рассчитаны на то, что мы разбираем что-то конкретное.

Текущая статья посвящена галерее 3D-фигур на Panda3D — карточки, куб, пирамида, сфера, сетки и составные сцены; код для локального запуска.

Поэтому за теорией по текущей теме вам — в энциклопедию. Если ещё не погружались, то маршрут прост:

  1. Основы
  2. Система и сеть
  3. Данные и разметка
  4. Код и разработка
  5. Языки
  6. Искусственный интеллект
  7. Проект
  8. Инфраструктура и безопасность
  9. Спин-офф

Обязательно пройдитесь.

А теперь приступим к нашему предмету.

Теория и соседние материалы

Перед запуском примеров изучите главу Трёхмерная графика и Panda3D — там архитектура ShowBase, освещение, taskMgr и разбор первых сцен.


Основы 3D на Python

Примеры ниже — самостоятельные скрипты: сохраните код в файл .py и запустите python имя_файла.py. Нужен установленный пакет panda3d (pip install panda3d). Интерактивного симулятора в браузере нет — окно открывается локально на вашем компьютере.

Для 2D в браузере (без Python) — Примеры фигур на Processing/p5.js. Для 2D на Python с черепашкой — Turtle. Для интерактивных 2D-игр — Pygame — мини-игры на Python.


Обязательный каркас

Любое приложение Panda3D строится на ShowBase и завершается вызовом run():

Общая функция освещения, которую переиспользуют многие примеры ниже:

from panda3d.core import AmbientLight, DirectionalLight

def add_default_lights(render):
    ambient = AmbientLight("ambient")
    ambient.setColor((0.35, 0.35, 0.4, 1))
    render.setLight(render.attachNewNode(ambient))

    sun = DirectionalLight("sun")
    sun.setColor((0.9, 0.9, 0.85, 1))
    sun_np = render.attachNewNode(sun)
    sun_np.setHpr(45, -45, 0)
    render.setLight(sun_np)
    return sun_np

Стартовые фигуры

Цветная карточка

Плоский прямоугольник через CardMaker, медленное вращение:


Карточка с текстурой

PNG рядом со скриптом в images/sample.png или путь аргументом:


Освещённый куб

Меш из вершин, нормалей и треугольников:


Примеры фигур

1. Каркас и линии

1.1. Каркас куба (LineSegs)

Объёмная фигура без заливки — только рёбра:


1.2. Правильный многоугольник в плоскости XY

Контур из n вершин по окружности:


2. Объёмные примитивы

2.1. Пирамида с квадратным основанием

Пять вершин, восемь треугольных граней:


2.2. Сфера из стандартных моделей Panda3D

В комплекте с движком идут встроенные .egg-модели:

Если модель не найдена, проверьте print(self.loader.getModelPath()) и установку panda3d из PyPI.


2.3. Призма — многоугольное основание

Обобщение куба: основание с n сторонами и высота по оси Z:


3. Композиции и узоры

3.1. Сетка цветных карточек

Плоское «мозаичное» поле из CardMaker:


3.2. Кольцо из карточек

Карточки размещены по окружности и повёрнуты к центру:


3.3. Сцена из нескольких объектов

Куб, сфера и наклонённая карточка в одном кадре:


4. Переиспользуемые функции

4.1. Плоский n-угольник с заливкой

Параметрическая «розетка» из CardMaker не подходит — нужен Geom:


4.2. Шаблон эксперимента

Базовый класс с освещением и вращением — копируйте и дополняйте:


5. Дополнительные примеры

5.1. Цилиндр

Боковая поверхность и две крышки из треугольников:


5.2. Процедурная UV-сфера

Без загрузки models/misc/sphere — меш из широт и долгот:


5.3. Правильный тетраэдр

Четыре равносторонние грани:


5.4. Спираль из карточек

Винтовая лента — карточки поднимаются по оси Z:


5.5. Сетка координат на полу

Плоская разметка через LineSegs:


5.6. Точечный свет

PointLight освещает сцену от конкретной точки — видны блики на гранях:


5.7. Орбитальная камера

Камера облетает объект — без enableMouse():


5.8. Подпись в сцене (TextNode)

Трёхмерный текст, повёрнутый к камере:


5.9. Башня из кубов

Классический «стек» — масштаб и цвет меняются по высоте:


5.10. Каркасная сфера

Параллели и меридианы из линий:


5.11. Тор (бублик)

Кольцо из сегментов — упрощённая геометрия:


5.12. Звезда — extruded 2D-контур

Плоская звезда с толщиной, собранная из треугольников:


5.13. Двойная спираль (DNA-стиль)

Две линии, закрученные вокруг оси Y:


5.14. Куб с разным цветом граней

Шесть оттенков — по одному на грань:


Связанные материалы