Общие сведения о плагинах в Cinema 4D

Каждый плагин должен иметь суффикс .pyp или .pypv (для зашифрованных файлов). Когда Cinema 4D запускается, она находит в этой папке все файлы, заканчивающиеся на .pyp или .pypv , и запускает плагин. Для того чтобы плагин мог взаимодействовать с программой и пользователем в нем нужно зарегистрировать хуки. Все хуки плагинов построены на классах данных, полученных из BaseData. Эти классы данных содержат набор методов, вызываемых Cinema 4D. Пример из MessageData:

class SampleData(plugins.MessageData):

    def CoreMessage(self, id, bc):
        pass

Для регистрации плагина в программе существует целый класс функций Register*() каждая из которых регистрирует свой тип плагина:

c4d.plugins.RegisterBitmapLoaderPlugin(id, str, info, dat) # Регистрирует BitmapLoaderData плагин.

c4d.plugins.RegisterBitmapSaverPlugin(id, str, info, dat, suffix) # Регистрирует BitmapSaverData плагин.

c4d.plugins.RegisterCommandPlugin(id, str, info, icon, ...) # Регистрирует CommandData плагин.

c4d.plugins.RegisterDescription(id, str[, res]) # Регистрирует описание для идентификатора плагина.

c4d.plugins.RegisterFalloffPlugin(id, str, info, g, ...) # Регистрирует FalloffData плагин.

c4d.plugins.RegisterHiddenToken(key, help, example, hook) # Эта функция регистрирует скрытый токен, который не отображается в настройках рендеринга.

c4d.plugins.RegisterManagerInformation(id, str, info) # Регистрирует информацию менеджера для использования при регистрации ярлыков с помощью AddShortcut().

c4d.plugins.RegisterMessagePlugin(id, str, info, dat) # Регистрирует MessageData плагин.

c4d.plugins.RegisterNodePlugin(id, str, info, g, icon) # Регистрирует NodeData плагин.

c4d.plugins.RegisterObjectPlugin(id, str, g, ...[, ...]) # Регистрирует ObjectData плагин.

c4d.plugins.RegisterPluginHelpCallback(pluginid, callback) # Регистрирует обратный вызов для справочной поддержки плагина.

c4d.plugins.RegisterPreferencePlugin(id, g, name, ...) # Регистрирует новую настройку в диалоговом окне настроек Cinema 4D.

c4d.plugins.RegisterSceneLoaderPlugin(id, str, g, info, ...) # Регистрирует SceneLoaderData плагин.

c4d.plugins.RegisterSceneSaverPlugin(id, str, g, info, ...) # Регистрирует SceneSaverData плагин.

c4d.plugins.RegisterSculptBrushPlugin(id, str, info, icon, ...) # Регистрирует SculptBrushToolData.

c4d.plugins.RegisterShaderPlugin(id, str, info, g, ...) # Регистрирует ShaderData плагин.

c4d.plugins.RegisterTagPlugin(id, str, info, g, ...) # Регистрирует плагин TagData:

c4d.plugins.RegisterToken(key, help, example, hook) # Регистрирует новый токен, который можно использовать в имени файла рендеринга. Токен отображается в настройках рендеринга и может быть выбран пользователем.

c4d.plugins.RegisterToolPlugin(id, str, info, icon, ...) # Регистрирует ToolData плагин.

Типы плагинов:

Пример регистрации плагина для NodeData:

Здесь:

  • PLUGIN_ID - уникальный номер плагина, который нужно получить зарегистрировавшись здесь - https://plugincafe.maxon.net/ Вводите в поле ввода название своего плагина и жмете кнопку GeneratePluginID

  • str - название вашего плагина

  • g - производный класс

  • description - имя файла ресурса описания, который будет использоваться для вашего плагина без расширения .res , например Oobjectname . Имя должно быть уникальным

  • icon - иконка плагина, может быть None

  • info - настройки плагина в виде флагов

Для загрузки иконки можно использовать функцию:

Структура каталогов

Основной файл — myPlugin.pyp , в котором регистрируются перехватчики. Каталог res содержит ресурсы плагина, которые содержат диалоги, описания и строки. Для каждого описания существует файл .res с описанием и файл .h с перечислениями констант, используемых в описании. Каждый диалог содержится в отдельном файле .res. Файл c4d_symbols.h должен содержать перечисления констант, используемых в файлах .res. Затем должен быть каталог с именем strings_xx-XX для каждого языка, который поддерживает плагин, согласно стандарту ISO 639-1 :

Каждый из языковых каталогов должен содержать файл .str для каждого диалога и файл c4d_strings.str для других строк ресурсов. Наконец, в папке плагина можно хранить любые другие файлы, например значки или логотипы. Доступ к ним можно легко получить с помощью __file__ :

Плагинам нужна специальная структура ресурсов, например, папка res , файл c4d_symbols.h и т. д., даже если эти файлы пусты или не содержат ничего полезного.

Last updated

Was this helpful?