> For the complete documentation index, see [llms.txt](https://black1277.gitbook.io/python-for-cinema4d/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://black1277.gitbook.io/python-for-cinema4d/text/concept.md).

# Основные концепции и API Cinema 4D

Для успешного применения Python в Cinema 4D необходимо понимать его архитектуру и основные API, которые позволяют манипулировать всеми аспектами 3D-сцены. Овладение Python в Cinema 4D начинается с понимания его объектно-ориентированной модели и основных классов API:

* `c4d.C4DAtom`: базовый класс для большинства объектов сцены: примитивы, полигональные объекты, теги, материалы, камеры, шейдеры.
* `c4d.documents`: Управляет документами Cinema 4D, такими как сцены и файлы проектов.
* `c4d.gui`: Отвечает за создание и управление пользовательским интерфейсом.
* `c4d.modules`: Предоставляет доступ к специализированным модулям Cinema 4D, таким как MoGraph и Xpresso.
* `c4d.storage`: Отвечает за работу с файлами и памятью.
* `c4d.utils`: содержит различные полезные утилиты, такие как операции с матрицами и кватернионами, преобразование диапазонов, конвертация величин и цветов, вычисление угла между векторами и т.д.

## Объекты и их атрибуты

В Cinema 4D всё строится вокруг объектов - от примитивов до камер и света. Каждый объект имеет свои атрибуты, доступные через его контейнер параметров. Эти атрибуты можно читать и изменять, используя соответствующие идентификаторы, например `c4d.ID_BASEOBJECT_POSITION` для позиции или `c4d.ID_BASEOBJECT_ROTATION` для вращения.

## Иерархия объектов

Сцена в Cinema 4D представляет собой иерархическое дерево объектов. Вы можете перемещаться по этому дереву, используя методы `GetNext()`, `GetPred()`, `GetUp()`, и `GetDown()`, чтобы найти родительские, дочерние и соседние узлы.

## Теги

Теги в Cinema 4D предоставляют дополнительные свойства и поведение объектам, к которым они привязаны. Манипулировать тегами можно аналогично объектам, получая доступ к их параметрам через контейнер данных.

## Материалы и текстуры

Для работы с визуальным оформлением объектов используются материалы. Вы можете создавать новые материалы, изменять их параметры или применять к объектам через теги материалов.

## Управление документом

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

## Анимация и ключевые кадры

Python API позволяет создавать и редактировать анимационные последовательности, добавляя ключевые кадры для различных параметров объектов.

## User Data

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

## События и сообщения

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

## Управление рендерингом

Вы можете контролировать процесс рендеринга сцены, настраивать параметры рендера, запускать рендер и обрабатывать результаты с помощью Python.

## Взаимодействие с пользовательским интерфейсом

Cinema 4D предоставляет API для создания пользовательских интерфейсов, включая диалоги, панели инструментов и меню, что позволяет создавать уникальные инструменты и расширять функционал программы.
