Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 01/04/2008 at 04:13, xxxxxxxx wrote:
User Information: Cinema 4D Version: 8 Platform: Windows ; Language(s) : C++ ;
--------- Hi I want to add Object Buffer into Multipass Channel in C++. but it could't be going@well. i don't know how to do it. RenderData* pRenderData = doc->GetActiveRenderData(); BaseContainer* pCont = pRenderData->GetDataInstance(); BaseContainer* pMultPass = pCont->GetContainerInstance( RDATA_MULTIPASS_CHANNELS );//This is NULL //and i want add [object buffer:1,2,......] Colud you give me an example,Please?
On 02/04/2008 at 04:27, xxxxxxxx wrote:
You have to set the channel containers within the multipass container of the RenderData container.
here an example that adds an object buffer channel:
> \> Bool MenuTest::Execute(BaseDocument \*doc) \> { \> RenderData \*rdata = doc->GetActiveRenderData(); \> if(!rdata) return FALSE; \> \> BaseContainer \*rbc = rdata->GetDataInstance(); \> if(!rbc) return FALSE; \> \> BaseContainer cbc; \> cbc.SetBool(RDATA_MULTIPASS_ACTIVE, TRUE); \> cbc.SetLong(RDATA_MULTIPASS_SPECIALGROUP, 2); \> \> BaseContainer mpbc; \> mpbc.SetContainer(VPBUFFER_OBJECTBUFFER, cbc); \> \> doc->StartUndo(); \> \> doc->AddUndo(UNDO_CHANGE, rdata); \> \> rbc->SetContainer(RDATA_MULTIPASS_CHANNELS, mpbc); \> \> doc->EndUndo(); \> \> rdata->Message(MSG_UPDATE); \> \> EventAdd(); \> \> return TRUE; \> } \>
\> Bool MenuTest::Execute(BaseDocument \*doc) \> { \> RenderData \*rdata = doc->GetActiveRenderData(); \> if(!rdata) return FALSE; \> \> BaseContainer \*rbc = rdata->GetDataInstance(); \> if(!rbc) return FALSE; \> \> BaseContainer cbc; \> cbc.SetBool(RDATA_MULTIPASS_ACTIVE, TRUE); \> cbc.SetLong(RDATA_MULTIPASS_SPECIALGROUP, 2); \> \> BaseContainer mpbc; \> mpbc.SetContainer(VPBUFFER_OBJECTBUFFER, cbc); \> \> doc->StartUndo(); \> \> doc->AddUndo(UNDO_CHANGE, rdata); \> \> rbc->SetContainer(RDATA_MULTIPASS_CHANNELS, mpbc); \> \> doc->EndUndo(); \> \> rdata->Message(MSG_UPDATE); \> \> EventAdd(); \> \> return TRUE; \> } \>
cheers, Matthias
On 02/04/2008 at 18:29, xxxxxxxx wrote:
Thank you for your example!! I could add object buffer into multipass. But I want to add multiple object buffers into multipass. For example 1, 2, .. and more. Is it possible in C++ sdk?
On 03/04/2008 at 01:45, xxxxxxxx wrote:
ok, I modifed the code a bit, it now adds two object buffer channels:
> \> Bool MenuTest::Execute(BaseDocument \*doc) \> { \> RenderData \*rdata = doc->GetActiveRenderData(); \> if(!rdata) return FALSE; \> \> BaseContainer \*rbc = rdata->GetDataInstance(); \> if(!rbc) return FALSE; \> \> BaseContainer mpbc; \> BaseContainer subbc; \> \> subbc.SetBool(RDATA_MULTIPASS_ACTIVE, TRUE); \> subbc.SetLong(RDATA_MULTIPASS_SPECIALGROUP, 1); \> mpbc.InsData(VPBUFFER_OBJECTBUFFER, GeData(subbc)); \> subbc.SetLong(RDATA_MULTIPASS_SPECIALGROUP, 2); \> mpbc.InsData(VPBUFFER_OBJECTBUFFER, GeData(subbc)); \> \> doc->StartUndo(); \> \> doc->AddUndo(UNDO_CHANGE, rdata); \> \> rbc->SetContainer(RDATA_MULTIPASS_CHANNELS, mpbc); \> \> doc->EndUndo(); \> \> rdata->Message(MSG_UPDATE); \> \> EventAdd(); \> \> return TRUE; \> } \>
\> Bool MenuTest::Execute(BaseDocument \*doc) \> { \> RenderData \*rdata = doc->GetActiveRenderData(); \> if(!rdata) return FALSE; \> \> BaseContainer \*rbc = rdata->GetDataInstance(); \> if(!rbc) return FALSE; \> \> BaseContainer mpbc; \> BaseContainer subbc; \> \> subbc.SetBool(RDATA_MULTIPASS_ACTIVE, TRUE); \> subbc.SetLong(RDATA_MULTIPASS_SPECIALGROUP, 1); \> mpbc.InsData(VPBUFFER_OBJECTBUFFER, GeData(subbc)); \> subbc.SetLong(RDATA_MULTIPASS_SPECIALGROUP, 2); \> mpbc.InsData(VPBUFFER_OBJECTBUFFER, GeData(subbc)); \> \> doc->StartUndo(); \> \> doc->AddUndo(UNDO_CHANGE, rdata); \> \> rbc->SetContainer(RDATA_MULTIPASS_CHANNELS, mpbc); \> \> doc->EndUndo(); \> \> rdata->Message(MSG_UPDATE); \> \> EventAdd(); \> \> return TRUE; \> } \>
On 03/04/2008 at 02:02, xxxxxxxx wrote:
Thank you for your help! it could be going@well!