VideoPostData Class Reference

#include <c4d_videopostdata.h>

Inheritance diagram for VideoPostData:

详细描述

A data class for creating video post plugins.
In a video post hook it is possible to do just everything, not just the image processing that the name implies.
It is possible to prepare information for shaders, modify image buffers, initialize hardware, output an image to an image recorder etc.

使用 RegisterVideoPostPlugin() to register a video post plugin.

公共成员函数

virtual Bool   Draw ( BaseVideoPost *node, BaseDraw *bd, BaseDrawHelp *bh)
virtual void  AllocateBuffers ( BaseVideoPost *node, 渲染 *render, BaseDocument *doc)
virtual VIDEOPOSTINFO   GetRenderInfo ( BaseVideoPost *node)
virtual void  CalcVolumetric ( BaseVideoPost *node, VolumeData *vd)
virtual void  CalcShadow ( BaseVideoPost *node, VolumeData *vd)
virtual Bool   GlDrawDummy ( BaseVideoPost *node, BaseDraw *bd, GlFrameBuffer *fbuf, Int32 colortex, Int32 depthtex, UInt32 flags)
virtual UInt32   GetGlInfoDummy ( BaseVideoPost *node, BaseDocument *doc, BaseDraw *bd)
virtual Bool   RenderEngineCheck ( BaseVideoPost *node, Int32 id)
virtual void  SetDiffuseWeight ( BaseVideoPost *node, Int32 cpu_index, Float weight)
virtual Bool   GetMotionInfo ( BaseVideoPost *node, MotionInfo &info)
-  Public Member Functions inherited from NodeData
  NodeData ()
GeListNode Get (void) const
virtual Bool   消息 ( GeListNode *node, Int32 type, void *data)
virtual void  GetBubbleHelp ( GeListNode *node, maxon::String &str)
virtual BaseDocument GetDocument ( GeListNode *node)
virtual Int32   GetBranchInfo ( GeListNode *node, BranchInfo *info, Int32 max, GETBRANCHINFO flags)
virtual Bool   IsInstanceOf (const GeListNode *node, Int32 type) const
virtual Bool   IsDocumentRelated (const GeListNode *node, Bool &docrelated) const
virtual Bool   Init ( GeListNode *node)
virtual void  Free ( GeListNode *node)
virtual Bool   读取 ( GeListNode *node, HyperFile *hf, Int32 level)
virtual Bool   Write ( GeListNode *node, HyperFile *hf)
virtual Bool   CopyTo ( NodeData *dest, GeListNode *snode, GeListNode *dnode, COPYFLAGS flags, AliasTrans *trn)
virtual Bool   GetDDescription ( GeListNode *node, 描述 *description, DESCFLAGS_DESC &flags)
virtual Bool   GetDParameter ( GeListNode *node, const DescID &id, GeData &t_data, DESCFLAGS_GET &flags)
virtual Bool   SetDParameter ( GeListNode *node, const DescID &id, const GeData &t_data, DESCFLAGS_SET &flags)
virtual Bool   GetDEnabling ( GeListNode *node, const DescID &id, const GeData &t_data, DESCFLAGS_ENABLE flags, const BaseContainer *itemdesc)
virtual Bool   TranslateDescID ( GeListNode *node, const DescID &id, DescID &res_id, C4DAtom *&res_at)
-  Public Member Functions inherited from BaseData
  BaseData ()
virtual  ~BaseData (void)
void  Destructor (void)

Execute

virtual RENDERRESULT   Execute ( BaseVideoPost *node, VideoPostStruct *vps)
virtual void  ExecuteLine ( BaseVideoPost *node, PixelPost *pp)
virtual void  ExecutePixel ( BaseVideoPost *node, PixelPost *pp, Int32 x, Int32 subx, Int32 suby)

Physical

virtual 向量   ComputeDiffuseGI ( BaseVideoPost *node, VolumeData *vd, Float receive_strength)
virtual 向量   ComputeDiffuseCaustic ( BaseVideoPost *node, VolumeData *vd, Float sampleradius, Int32 accuracy)
virtual 向量   ComputeVolumeCaustic ( BaseVideoPost *node, const Vector64 &p, Int32 cpu_index)
virtual void  CreateRay ( Ray *dst, Float x, Float y)
virtual void  CreateExtendedRay ( Ray *dst, Float x, Float y, Float lensx, Float lensy, Float time)

Stereo

virtual Int32   StereoGetCameraCountEditor ( BaseVideoPost *node, BaseDocument *doc, BaseDraw *bd)
virtual Int32   StereoGetCameraCountRenderer ( BaseVideoPost *node, BaseDocument *doc, RenderData *rd)
virtual Bool   StereoGetCameraInfo ( BaseVideoPost *node, BaseDocument *doc, BaseDraw *bd, RenderData *rd, Int32 index, StereoCameraInfo &info)
virtual Int32   StereoGetSceneHookID ( BaseVideoPost *node)
virtual Bool   StereoMergeImages ( BaseVideoPost *node, BaseBitmap *dest, const BaseBitmap *const *source, Int32 cnt, const BaseContainer &settings, COLORSPACETRANSFORMATION transform)

Team Render/NET

virtual Bool   NetFrameInit ( BaseVideoPost *node, BaseDocument *doc, RenderJob *job, Int32 assignedClients, const NetRenderData *renderData, MultipassBitmap *frameBmp, BaseThread *bt, Int32 &realdepth)
virtual void  NetFrameFree ( BaseVideoPost *node)
virtual Bool   NetFrameMessage ( BaseVideoPost *node, const C4DUuid &remoteUuid, const NetRenderBuffer &data, NetRenderBuffer *result)
virtual Bool   NetCreateBuffer ( BaseVideoPost *node, VideoPostStruct *vps, Int32 x, Int32 y, Int32 sizex, Int32 sizey, Int32 &id, Int32 &subid)

Additional Inherited Members

-  Protected Attributes inherited from NodeData
GeListNode private_link

成员函数文档编制

◆  Draw()

virtual Bool Draw ( BaseVideoPost node ,
BaseDraw bd ,
BaseDrawHelp bh  
)
virtual

Not used!

◆  AllocateBuffers()

virtual void AllocateBuffers ( BaseVideoPost node ,
渲染 render ,
BaseDocument doc  
)
virtual

Called to request additional buffers to process.
One buffer is always there: VPBUFFER_RGBA , it is the RGB image.
Either the user (on the Multipass tab) or a video post plugin now can request more buffers (like VPBUFFER_DIFFUSE , which is the Diffuse Multipass layer) with any color resolution ( 8 bit, 16 bit or 32 bit for each channel).
例如:

render->AllocateBuffer( VPBUFFER_ALPHA , 0, 32, false );
参数
[in] node The BaseVideoPost connected with the VideoPostData instance. Equal to static_cast < BaseVideoPost *> Get() . Provided for speed and convenience. Cinema 4D owns the pointed video post.
[in,out] render The 渲染 class to use to allocate additional buffers. The caller owns the pointed render.
[in] doc The active document. The caller owns the pointed document.

◆  GetRenderInfo()

virtual VIDEOPOSTINFO GetRenderInfo ( BaseVideoPost node )
virtual

Called to get information about the video post.

参数
[in] node The BaseVideoPost connected with the VideoPostData instance. Equal to static_cast < BaseVideoPost *> Get() . Provided for speed and convenience. Cinema 4D owns the pointed video post.
返回
The video post information: VIDEOPOSTINFO

◆  Execute()

virtual RENDERRESULT Execute ( BaseVideoPost node ,
VideoPostStruct vps  
)
virtual

Called for all video post entry and exit points: VIDEOPOSTCALL

The calling sequence is:
VIDEOPOSTCALL::FRAMESEQUENCE - open == true - Series of images starts. - <Sequence>
  VIDEOPOSTCALL::FRAME - open == true - Image render starts. - <Frame>
   VIDEOPOSTCALL::SUBFRAME - open == true - Sub-frame starts. - <Sub-frame>
   VIDEOPOSTCALL::RENDER - open == true - Render precalculation. VolumeData not yet completely accessible.
   VIDEOPOSTCALL::INNER - open == true - Render precalculation.
   ExecuteLine() / ExecutePixel() During rendering.
   VIDEOPOSTCALL::INNER - open == false - Immediately after rendering.
   VIDEOPOSTCALL::RENDER - open == false - Immediately after shader cleanup. VolumeData no longer accessible!
   VIDEOPOSTCALL::SUBFRAME - open == false - Sub-frame rendering done. - </Sub-frame>
  VIDEOPOSTCALL::FRAME - open == false - Frame rendering done. - </Frame>
VIDEOPOSTCALL::FRAMESEQUENCE - open == false - Complete rendering process finished. - </Sequence>

The order of calls is guaranteed, and every opening call is matched by a corresponding closing call.
VIDEOPOSTCALL::RENDER is opened immediately before shader initialization, and VIDEOPOSTCALL::INNER immediately before rendering.

Multiple sub-frames are rendered if scene motion blur or field rendering is used. In this case the number of subframes/fields is available in VideoPostStruct::subframe_cnt and VideoPostStruct::field_cnt .

Most of the times only the VIDEOPOSTCALL::RENDER and VIDEOPOSTCALL::INNER calls are of interest. In this case Execute would look like this:

RENDERRESULT MyVideoPost::Execute( BaseVideoPost *node, VideoPostStruct *vps) { if (vps-> vp != VIDEOPOSTCALL::RENDER ) return RENDERRESULT::OK ;

// Do something...

return result; }
参数
[in] node The BaseVideoPost connected with the VideoPostData instance. Equal to static_cast < BaseVideoPost *> Get() . Provided for speed and convenience. Cinema 4D owns the pointed video post.
[in] vps The video post information. The caller owns the pointed video post struct.
返回
The render result: RENDERRESULT

◆  ExecuteLine()

virtual void ExecuteLine ( BaseVideoPost node ,
PixelPost pp  
)
virtual

Called after each rendered line.

参数
[in] node The BaseVideoPost connected with the VideoPostData instance. Equal to static_cast < BaseVideoPost *> Get() . Provided for speed and convenience. Cinema 4D owns the pointed video post.
[in] pp The pixel buffer. The caller owns the pointed buffer.

◆  ExecutePixel()

virtual void ExecutePixel ( BaseVideoPost node ,
PixelPost pp ,
Int32   x ,
Int32   subx ,
Int32   suby  
)
virtual

Called for every sub-fragment (sub-pixel) that is rendered.

参数
[in] node The BaseVideoPost connected with the VideoPostData instance. Equal to static_cast < BaseVideoPost *> Get() . Provided for speed and convenience. Cinema 4D owns the pointed video post.
[in] pp The pixel buffer. The caller owns the pointed buffer.
[in] x The main pixel X position.
[in] subx The sub-pixel X position. ( 0 <= subx <= 15 )
[in] suby The sub-pixel Y position. ( 0 <= suby <= 15 )

◆  CalcVolumetric()

virtual void CalcVolumetric ( BaseVideoPost node ,
VolumeData vd  
)
virtual

Called to calculate volumetric information.
Set vd -> col and vd -> trans .
VIDEOPOSTINFO::CALCVOLUMETRIC is not set then CalcVolumetric is not needed. If this flag is set then CalcVolumetric is required.
Called for spans; vd -> ray -> p to vd -> p where vd -> ray -> p is the entry point and vd -> p is the exit point.

警告
No OS calls are allowed during this function. Doing so could cause a crash, since it can be called in a multi-processor context.
参数
[in] node The BaseVideoPost connected with the VideoPostData instance. Equal to static_cast < BaseVideoPost *> Get() . Provided for speed and convenience. Cinema 4D owns the pointed video post.
[in,out] vd The volume data to use and modify. The caller owns the pointed volume data.

◆  CalcShadow()

virtual void CalcShadow ( BaseVideoPost node ,
VolumeData vd  
)
virtual

Called to calculate shadow information.
VIDEOPOSTINFO::CALCSHADOW is not set then CalcShadow is not needed. If this flag is set then CalcShadow is required.

警告
No OS calls are allowed during this function. Doing so could cause a crash, since it can be called in a multi-processor context.
参数
[in] node The BaseVideoPost connected with the VideoPostData instance. Equal to static_cast < BaseVideoPost *> Get() . Provided for speed and convenience. Cinema 4D owns the pointed video post.
[in,out] vd The volume data to use and modify. The caller owns the pointed volume data.

◆  GlDrawDummy()

virtual Bool GlDrawDummy ( BaseVideoPost node ,
BaseDraw bd ,
GlFrameBuffer *  fbuf ,
Int32   colortex ,
Int32   depthtex ,
UInt32   flags  
)
virtual

To ensure SDK compatibility Private .

◆  GetGlInfoDummy()

virtual UInt32 GetGlInfoDummy ( BaseVideoPost node ,
BaseDocument doc ,
BaseDraw bd  
)
virtual

To ensure SDK compatibility Private .

◆  ComputeDiffuseGI()

virtual 向量 ComputeDiffuseGI ( BaseVideoPost node ,
VolumeData vd ,
Float   receive_strength  
)
virtual

Called to calculate global illumination information.
VIDEOPOSTINFO::GLOBALILLUMINATION is not set then ComputeDiffuseGI is not needed. If this flag is set then ComputeDiffuseGI is required.

警告
No OS calls are allowed during this function. Doing so could cause a crash, since it can be called in a multi-processor context.
参数
[in] node The BaseVideoPost connected with the VideoPostData instance. Equal to static_cast < BaseVideoPost *> Get() . Provided for speed and convenience. Cinema 4D owns the pointed video post.
[in,out] vd The volume data to use and modify. The caller owns the pointed volume data.
[in] receive_strength The receive GI strength of the rendered materials.
返回
The global illumination component.

◆  ComputeDiffuseCaustic()

virtual 向量 ComputeDiffuseCaustic ( BaseVideoPost node ,
VolumeData vd ,
Float   sampleradius ,
Int32   accuracy  
)
virtual

Called to calculate surface caustics information.
VIDEOPOSTINFO::CAUSTICS is not set then ComputeDiffuseCaustic is not needed. If this flag is set then ComputeDiffuseCaustic is required.

警告
No OS calls are allowed during this function. Doing so could cause a crash, since it can be called in a multi-processor context.
参数
[in] node The BaseVideoPost connected with the VideoPostData instance. Equal to static_cast < BaseVideoPost *> Get() . Provided for speed and convenience. Cinema 4D owns the pointed video post.
[in,out] vd The volume data to use and modify. The caller owns the pointed volume data.
[in] sampleradius The caustics sample radius of the rendered materials.
[in] accuracy The caustics sample count of the rendered material.
返回
The surface caustics component.

◆  ComputeVolumeCaustic()

virtual 向量 ComputeVolumeCaustic ( BaseVideoPost node ,
const Vector64 p ,
Int32   cpu_index  
)
virtual

Called to calculate volume caustics information.
VIDEOPOSTINFO::CAUSTICS is not set then ComputeDiffuseCaustic is not needed. If this flag is set then ComputeDiffuseCaustic is required.

警告
No OS calls are allowed during this function. Doing so could cause a crash, since it can be called in a multi-processor context.
参数
[in] node The BaseVideoPost connected with the VideoPostData instance. Equal to static_cast < BaseVideoPost *> Get() . Provided for speed and convenience. Cinema 4D owns the pointed video post.
[in] p The rendered point for volume caustics.
[in] cpu_index The index of the current running thread ( 0 to cpu_cnt- 1 ), so that the volume caustics calculation get this information passed.
返回
The volume caustics component.

◆  CreateRay()

virtual void CreateRay ( Ray dst ,
Float   x ,
Float   y  
)
virtual

Called to let the video post create its own rays for the pixel at ( x , y ).

注意
VIDEOPOSTINFO::CUSTOMLENS needs to be returned by GetRenderInfo to use this feature.
参数
[in,out] dst The custom ray. Change the ray's parameters.
[in] x The X coordinate of the pixel.
[in] y The Y coordinate of the pixel.

◆  CreateExtendedRay()

virtual void CreateExtendedRay ( Ray dst ,
Float   x ,
Float   y ,
Float   lensx ,
Float   lensy ,
Float   time  
)
virtual

Called to let the video post create its own extended ray for the pixel at ( x , y ).
Improved version of CreateRay giving additional information for motion blur and DOF that some custom lens plugins might want to use to correctly compute these effects.

注意
VIDEOPOSTINFO::CUSTOMLENS needs to be returned by GetRenderInfo() to use this feature.
参数
[in,out] dst The custom ray. Change the ray's parameters.
[in] x The X coordinate of the pixel.
[in] y The Y coordinate of the pixel.
[in] lensx The lens X. (Value is in the range 0.0 to 1.0 .)
[in] lensy The lens Y. (Value is in the range 0.0 to 1.0 .)
[in] time The time. (Value is in the range 0.0 to 1.0 .)

◆  StereoGetCameraCountEditor()

virtual Int32 StereoGetCameraCountEditor ( BaseVideoPost node ,
BaseDocument doc ,
BaseDraw bd  
)
virtual

Called to return the number of stereoscopic editor cameras.

参数
[in] node The BaseVideoPost connected with the VideoPostData instance. Equal to static_cast < BaseVideoPost *> Get() . Provided for speed and convenience. Cinema 4D owns the pointed video post.
[in] doc The active document. The caller owns the pointed document.
[in] bd The active editor view. The caller owns the pointed view.
返回
The number of stereoscopic cameras.

◆  StereoGetCameraCountRenderer()

virtual Int32 StereoGetCameraCountRenderer ( BaseVideoPost node ,
BaseDocument doc ,
RenderData rd  
)
virtual

Called to return the number of stereoscopic cameras used for rendering.

参数
[in] node The BaseVideoPost connected with the VideoPostData instance. Equal to static_cast < BaseVideoPost *> Get() . Provided for speed and convenience. Cinema 4D owns the pointed video post.
[in] doc The active document. The caller owns the pointed document.
[in] rd The current render settings. The caller owns the pointed render data.
返回
The number of stereoscopic cameras.

◆  StereoGetCameraInfo()

virtual Bool StereoGetCameraInfo ( BaseVideoPost node ,
BaseDocument doc ,
BaseDraw bd ,
RenderData rd ,
Int32   index ,
StereoCameraInfo info  
)
virtual

Called to fill the information structure for each stereoscopic camera.

参数
[in] node The BaseVideoPost connected with the VideoPostData instance. Equal to static_cast < BaseVideoPost *> Get() . Provided for speed and convenience. Cinema 4D owns the pointed video post.
[in] doc The active document. The caller owns the pointed document.
[in] bd The active editor view. The caller owns the pointed view.
[in] rd The current render settings. The caller owns the pointed render data.
[in] index The index of the stereoscopic camera: 0 <= index < StereoGetCameraCountRenderer()
[out] info Fill with the stereoscopic camera information.
返回
true if successful, otherwise false .

◆  StereoGetSceneHookID()

virtual Int32 StereoGetSceneHookID ( BaseVideoPost node )
virtual

Called to return a scene hook ID to store mouse coordinates used for drawing.

参数
[in] node The BaseVideoPost connected with the VideoPostData instance. Equal to static_cast < BaseVideoPost *> Get() . Provided for speed and convenience. Cinema 4D owns the pointed video post.
返回
The plugin ID of the scene hook.

◆  StereoMergeImages()

virtual Bool StereoMergeImages ( BaseVideoPost node ,
BaseBitmap dest ,
const BaseBitmap *const *  source ,
Int32   cnt ,
const BaseContainer settings ,
COLORSPACETRANSFORMATION   transform  
)
virtual

Called to merge the stereo images for rendering.
settings contains the stereoscopic render settings.

参数
[in] node The BaseVideoPost connected with the VideoPostData instance. Equal to static_cast < BaseVideoPost *> Get() . Provided for speed and convenience. Cinema 4D owns the pointed video post.
[out] dest The destination bitmap to fill with the merged stereoscopic image.
[in] source The array of stereoscopic images.
[in] cnt The number of stereoscopic images in source .
[in] settings The stereoscopic render settings container.
[in] transform The color space transformation: COLORSPACETRANSFORMATION
返回
true if successful, otherwise false .

◆  RenderEngineCheck()

virtual Bool RenderEngineCheck ( BaseVideoPost node ,
Int32   id  
)
virtual

Called to enable video post effects only for certain render engines or to allow only certain render settings tabs, e.g. if the video post is a render engine itself.
For example to disable the video post effect for the Cineman renderer:

Bool MyEffect::RenderEngineCheck( BaseVideoPost *node, Int32 id ) { // The following render engines are not supported by this effect if ( id == RDATA_RENDERENGINE_CINEMAN ) return false ; return true ; }

Here is how to disable some render settings tabs for a render engine plugin:

Bool MyRenderer::RenderEngineCheck( BaseVideoPost *node, Int32 id ) { switch ( id ) { case RENDERSETTING_STATICTAB_MULTIPASS : case RENDERSETTING_STATICTAB_ANTIALIASING : case RENDERSETTING_STATICTAB_OPTIONS : case RENDERSETTING_STATICTAB_STEREO : return false ; } return true ; }
参数
[in] node The BaseVideoPost connected with the VideoPostData instance. Equal to static_cast < BaseVideoPost *> Get() . Provided for speed and convenience. Cinema 4D owns the pointed video post.
[in] id The ID of the render engine or the render settings tab: RENDERSETTING_STATICTAB
返回
true to enable the render engine or render settings tab passed to id , false to disable it.

◆  SetDiffuseWeight()

virtual void SetDiffuseWeight ( BaseVideoPost node ,
Int32   cpu_index ,
Float   weight  
)
virtual

Called to send the current ray weight. The call is made right before each ComputeDiffuseGI() .
Each ray has now a weight associated with it, basically how important the ray is. All primary rays start with a weight of 1.0 and as they get "split" their weight is reduced.
For example computing GI within blurry reflections would use much lower weight, assuming each blurry reflection uses 8 samples then the weight would be 1/8 so the GI would only use now 1/8 of the original rays.

注意
If the video post computes its own GI it should store and use that weight to improve/reduce the quality/time of the GI calculation.
参数
[in] node The BaseVideoPost connected with the VideoPostData instance. Equal to static_cast < BaseVideoPost *> Get() . Provided for speed and convenience. Cinema 4D owns the pointed video post.
[in] cpu_index The index of the current running thread ( 0 to cpu_cnt- 1 ). The thread index is important as each thread might use different weight .
[in] weight The current ray weight.

◆  NetFrameInit()

virtual Bool NetFrameInit ( BaseVideoPost node ,
BaseDocument doc ,
RenderJob job ,
Int32   assignedClients ,
const NetRenderData renderData ,
MultipassBitmap frameBmp ,
BaseThread bt ,
Int32 realdepth  
)
virtual

Called to setup all the data for a NET frame.

注意
These methods are run on the server. The client does not receive any special calls and does not have any hookups but the NET context parameter is simply not nullptr .
参数
[in] node The BaseVideoPost connected with the VideoPostData instance. Equal to static_cast < BaseVideoPost *> Get() . Provided for speed and convenience. Cinema 4D owns the pointed video post.
[in] doc The active document. The caller owns the pointed document.
[in] job The render job. The caller owns the pointed render job.
[in] assignedClients The initial client count at the moment the frame is about to be rendered.
[in] renderData The NET render data. The caller owns the pointed render data.
[in] frameBmp The multipass bitmap where the resulting images are expected to be stored (important if the image is to be shown in the 图片查看器 ).
[in] bt The render thread. The caller owns the pointed thread.
[out] realdepth Assign the real image depth.
返回
true if successful, otherwise false .

◆  NetFrameFree()

virtual void NetFrameFree ( BaseVideoPost node )
virtual

Called to clean up after rendering the NET frame has been done.

注意
These methods are run on the server. The client does not receive any special calls and does not have any hookups but the NET context parameter is simply not nullptr .
参数
[in] node The BaseVideoPost connected with the VideoPostData instance. Equal to static_cast < BaseVideoPost *> Get() . Provided for speed and convenience. Cinema 4D owns the pointed video post.

◆  NetFrameMessage()

virtual Bool NetFrameMessage ( BaseVideoPost node ,
const C4DUuid remoteUuid ,
const NetRenderBuffer data ,
NetRenderBuffer result  
)
virtual

Called to send NET frame messages.

注意
These methods are run on the server. The client does not receive any special calls and does not have any hookups but the NET context parameter is simply not nullptr .
参数
[in] node The BaseVideoPost connected with the VideoPostData instance. Equal to static_cast < BaseVideoPost *> Get() . Provided for speed and convenience. Cinema 4D owns the pointed video post.
[in] remoteUuid The client uuid.
[in] data The data the client sends to the server.
[in] result An optional return value if the client is expecting a result.
返回
true if successful, otherwise false .

◆  NetCreateBuffer()

virtual Bool NetCreateBuffer ( BaseVideoPost node ,
VideoPostStruct vps ,
Int32   x ,
Int32   y ,
Int32   sizex ,
Int32   sizey ,
Int32 id ,
Int32 subid  
)
virtual

Called to to create specialized buffers e.g. for Normal and Position passes.

注意
These methods are run on the server. The client does not receive any special calls and does not have any hookups but the NET context parameter is simply not nullptr . If the video post has the flag VIDEOPOSTINFO::NETCREATEBUFFER set NetCreateBuffer will be called by the server.
The plugin should then update the multipass buffer, and return the buffer id and subid .
参数
[in] node The BaseVideoPost connected with the VideoPostData instance. Equal to static_cast < BaseVideoPost *> Get() . Provided for speed and convenience. Cinema 4D owns the pointed video post.
[in] vps The video post information. The caller owns the pointed video post struct.
[in] x The X position in the buffer that needs to be filled.
[in] y The Y position in the buffer that needs to be filled.
[in] sizex The width in the buffer that needs to be filled.
[in] sizey The height in the buffer that needs to be filled.
[in] id Assign the buffer ID.
[in] subid Assign the buffer sub-ID.
返回
true if successful, otherwise false .

◆  GetMotionInfo()

virtual Bool GetMotionInfo ( BaseVideoPost node ,
MotionInfo info  
)
virtual

Called to return the motion blur information.

由于
R17.032
参数
[in] node The BaseVideoPost connected with the VideoPostData instance. Equal to static_cast < BaseVideoPost *> Get() . Provided for speed and convenience. Cinema 4D owns the pointed video post.
[in] info The motion blur information.
返回
true if successful, otherwise false .
RENDERSETTING_STATICTAB_STEREO
#define RENDERSETTING_STATICTAB_STEREO
Render settings Stereoscopic tab.
定义: ge_prepass.h:5448
RENDERSETTING_STATICTAB_OPTIONS
#define RENDERSETTING_STATICTAB_OPTIONS
Render settings Options tab.
定义: ge_prepass.h:5447
RENDERRESULT
RENDERRESULT
定义: ge_prepass.h:409
VIDEOPOSTCALL::RENDER
@ RENDER
Called before the rendering process starts and before shaders are initialized.
RENDERRESULT::OK
@ OK
Function was successful.
BaseVideoPostStruct::vp
VIDEOPOSTCALL vp
the VideoPost call: VIDEOPOSTCALL
定义: c4d_videopostdata.h:85
BaseVideoPost
定义: c4d_videopost.h:23
VPBUFFER_ALPHA
#define VPBUFFER_ALPHA
Alpha multipass channel (for SDK request only).
定义: c4d_videopostdata.h:152
RDATA_RENDERENGINE_CINEMAN
@ RDATA_RENDERENGINE_CINEMAN
定义: drendersettings.h:43
Int32
maxon::Int32 Int32
定义: ge_sys_math.h:58
RENDERSETTING_STATICTAB_ANTIALIASING
#define RENDERSETTING_STATICTAB_ANTIALIASING
Render settings Anti-Aliasing tab.
定义: ge_prepass.h:5446
VideoPostStruct
定义: c4d_tools.h:2547
RENDERSETTING_STATICTAB_MULTIPASS
#define RENDERSETTING_STATICTAB_MULTIPASS
Render settings Multi-Pass tab.
定义: ge_prepass.h:5445
Bool
maxon::Bool Bool
定义: ge_sys_math.h:53