About
See the overview on Token System Overview.
Handling Tokens
Getting Tokens
Converting Tokens
const Int32 width = 1280;
const Int32 height = 720;
if (bitmap == nullptr)
RenderData*
const renderData = renderDocument->GetActiveRenderData();
if (renderData == nullptr)
Dissecting Tokens
There are a bunch of functions to dissect a path containing Tokens. In the following an exemplary path /myprojects/topnotchproject/$take/beautiful.tif
is assumed.
- StringExtractRoot() / FilenameExtractRoot(): Both return the "constant" part of a path. With the above path, these functions return
/myprojects/topnotchproject/
.
- FilenameSlicePath(): This function is similar, but it also returns the part containing Tokens. With above path, it will return
/myprojects/topnotchproject/
and $take/beautiful.tif
.
Custom Tokens
- RegisterToken(): Using RegisterToken() custom Tokens can be registered within Cinema 4D. Therefore RegisterToken() gets provided with all information needed by a TokenEntry (key, help and example) and a pointer to the TOKENHOOK function. The example below shows how the
"$take"
Token is implemented.
- RegisterHiddenToken(): This function registers a hidden token that is not displayed in Render Settings.
- RegisterPythonToken(): Registers a new Python token.
- RegisterPythonHiddenToken(): Registers a new Python token that is not displayed in Render Settings.
- Note
- When registering custom Tokens, it is recommended to use a prefix to avoid collision with already existing Tokens. For example, the plugin name could be used.
static String ExampleTakeTokenHook(
void* data)
{
if (rDataPath == nullptr)
if (take != nullptr)
}
{
ExampleTakeTokenHook);
if (success == false)
}
BaseContainer GetData()
Definition: c4d_baselist.h:2266
Filename GetFilename(Int32 id, const Filename &preset=Filename()) const
Definition: c4d_basecontainer.h:403
@ OK
Image loaded/created.
@ RDATA_YRES
Definition: drendersettings.h:153
RENDERRESULT
Definition: ge_prepass.h:409
Definition: lib_takesystem.h:319
RENDERRESULT RenderDocument(BaseDocument *doc, const BaseContainer &rdata, ProgressHook *prog, void *private_data, BaseBitmap *bmp, RENDERFLAGS renderflags, BaseThread *th, WriteProgressHook *wprog=nullptr, void *data=nullptr)
Manages file and path names.
Definition: c4d_file.h:93
return OK
Definition: apibase.h:2532
Bool RegisterToken(const String &key, const String &help, const String &example, TOKENHOOK *hook)
#define MAXON_SOURCE_LOCATION
Definition: memoryallocationbase.h:66
static IMAGERESULT Init(BaseBitmap *&res, const Filename &name, Int32 frame=-1, Bool *ismovie=nullptr, BitmapLoaderPlugin **loaderplugin=nullptr, const maxon::Delegate< void(Float progress)> &progressCallback=nullptr)
void SetSuffix(const maxon::String &str)
@ RDATA_PATH
Definition: drendersettings.h:68
Definition: c4d_string.h:38
@ OK
Function was successful.
BaseTake * _cTake
The BaseTake used for rendering.
Definition: lib_token.h:110
@ RDATA_XRES
Definition: drendersettings.h:152
#define NOTOK
Definition: ge_sys_math.h:265
#define FILTER_PNG
PNG.
Definition: ge_prepass.h:196
maxon::Int32 Int32
Definition: ge_sys_math.h:58
void SetFloat(Int32 id, Float r)
Definition: c4d_basecontainer.h:533
Definition: ge_autoptr.h:36
Definition: c4d_basedocument.h:136
maxon::Bool Bool
Definition: ge_sys_math.h:53
String GetName() const
Definition: c4d_baselist.h:2318
IMAGERESULT Save(const Filename &name, Int32 format, BaseContainer *data, SAVEBIT savebits) const
Data structure to collect render information in handling Tokens in render output path.
Definition: lib_token.h:85
Definition: c4d_basecontainer.h:46
Filename FilenameConvertTokens(const Filename &path, const RenderPathData *rpData)
@ NODOCUMENTCLONE
Set to avoid an automatic clone of the scene sent to RenderDocument().