Примеры фигур Panda3D на Python
Приветствую! Здесь вы наверняка найдете, что ищете. Примеры в лаборатории рассчитаны на то, что мы разбираем что-то конкретное.
Текущая статья посвящена галерее 3D-фигур на Panda3D — карточки, куб, пирамида, сфера, сетки и составные сцены; код для локального запуска.
Поэтому за теорией по текущей теме вам — в энциклопедию. Если ещё не погружались, то маршрут прост:
- Основы
- Система и сеть
- Данные и разметка
- Код и разработка
- Языки
- Искусственный интеллект
- Проект
- Инфраструктура и безопасность
- Спин-офф
Обязательно пройдитесь.
А теперь приступим к нашему предмету.
Перед запуском примеров изучите главу Трёхмерная графика и 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. Куб с разным цветом граней
Шесть оттенков — по одному на грань:
Связанные материалы
- Трёхмерная графика и Panda3D — теория, архитектура, ограничения
- Разработка игр на Python — Pygame и 2D
- Примеры фигур на Processing/p5.js — 2D в браузере
- Tkinter — окна и виджеты — формы и кнопки без 3D-сцены
- if name == "main" — точка входа в скриптах