Parameters don't appear in Render Settings tabs



  • On 03/10/2016 at 06:33, xxxxxxxx wrote:

    User Information:
    Cinema 4D Version:   R18 
    Platform:   Windows  ;   
    Language(s) :     C++  ;

    ---------
    Hello.

    I have a VideoPostData as render engine.

    Here is my RenderEngineCheck:

    Bool RenderEngineCheck(BaseVideoPost* node, Int32 id) {
    	switch (id) {
    		case RENDERSETTING_STATICTAB_OUTPUT:
    		case RENDERSETTING_STATICTAB_SAVE:
    		case RENDERSETTING_STATICTAB_MULTIPASS:
    		case MY_RENDER_ENGINE_ID:
    			return TRUE;
    	}
    	return FALSE;
    }
    

    The problem is that the contents of Output, Save and Multipass tabs don't appear after I click them. It was working fine in pre R18 versions. Is there anything changed in this part of code ?

    Thank you.



  • On 04/10/2016 at 10:22, xxxxxxxx wrote:

    Hi,

    I'm not aware of any changes in this corner.

    It shouldn't be related to the code snippet you posted, because, if understand you correctly, the groups are actually showing up, but only the content on the right side is missing, when you select them. I can't reproduce this behavior here. So I'm afraid we'll need to slowly close in on this issue.
    Is the page of your VideoPost showing up?
    Do the Output, Save and Multipass pages show up with Standard or Physical renderer (just to be sure, that not the actual resource files are corrupted)?
    Which language do you use for testing (just to be sure we are not having issues with not so common characters)?
    Do you rely on a resource file only or do you have GetDDescription() implemented?
    Sorry, I'm just poking around to get some ideas...



  • On 04/10/2016 at 23:49, xxxxxxxx wrote:

    Hello.

    Originally posted by xxxxxxxx

    It shouldn't be related to the code snippet you posted, because, if understand you correctly, the groups are actually showing up, but only the content on the right side is missing, when you select them.

    Exactly.

    Originally posted by xxxxxxxx

    Is the page of your VideoPost showing up?
    Do the Output, Save and Multipass pages show up with Standard or Physical renderer (just to be sure, that not the actual resource files are corrupted)?

    Yes in both.

    Originally posted by xxxxxxxx

    Which language do you use for testing (just to be sure we are not having issues with not so common characters)?

    C++ in Visual Studio or English (if you mean printing language).

    Originally posted by xxxxxxxx

    Do you rely on a resource file only or do you have GetDDescription() implemented?

    I use my own GetDDescription. When I remove it, the issue remains.

    Thank you for your time.



  • On 05/10/2016 at 11:28, xxxxxxxx wrote:

    Man, you are currently having some hard nuts to crack. 😉
    To be honest, I have no idea, what's going on on your end.
    Could you try to strip your code down, so I could get a simplified version for doing some tests here?



  • On 06/10/2016 at 02:09, xxxxxxxx wrote:

    Hello.

    I have removed as much as possible.
    My PluginStart has only:

    if (!resource.Init()) {
    	return FALSE;
    }
    if (!MyVideoPost::RegisterPlugin()) return FALSE; 
    

    I have removed all the calls from VideoPostData leaving only:

    virtual VIDEOPOSTINFO GetRenderInfo(BaseVideoPost* node);
    virtual Bool RenderEngineCheck(BaseVideoPost* node, LONG id);
    

    Execute and GetDDescription are out.

    Edit: I use R18.026

    Thank you for your time.



  • On 06/10/2016 at 03:37, xxxxxxxx wrote:

    Here is the whole plugin code:

      
    #include <c4d.h>
    #include <c4d_string.h>
    #include <c4d_baselist.h>
    #include <c4d_videopostdata.h>
      
    #include "res/c4d_symbols.h"
    #include "res/description/c4d_my_video_post.h"
      
    #define MY_VIDEO_POST_ID			12345678 
      
    class MyVideoPost : public VideoPostData {
        INSTANCEOF(MyVideoPost, VideoPostData)
      
    public:
        static Bool RegisterPlugin();
        static NodeData *Alloc();
    	MyVideoPost();
        virtual VIDEOPOSTINFO GetRenderInfo(BaseVideoPost* node);
        virtual Bool RenderEngineCheck(BaseVideoPost* node, Int32 id); 
    };
      
      
    Bool MyVideoPost::RegisterPlugin(void){
    	return	RegisterVideoPostPlugin(MY_VIDEO_POST_ID, GeLoadString(MY_VIDEO_POST), 
    			PLUGINFLAG_VIDEOPOST_ISRENDERER | PLUGINFLAG_VIDEOPOST_ISRENDERER_NET, Alloc, "c4d_my_video_post", 0, 0);
    }
      
      
    NodeData *MyVideoPost::Alloc() {
    	return NewObjClear(MyVideoPost);
    }
      
    MyVideoPost::MyVideoPost() {}
      
    VIDEOPOSTINFO MyVideoPost::GetRenderInfo(BaseVideoPost* node) {
    	return VIDEOPOSTINFO_0 /*| VIDEOPOSTINFO_NETRUNONSERVER*/;
    }
      
    Bool MyVideoPost::RenderEngineCheck(BaseVideoPost* node, Int32 id) {
    	switch (id) {
    		case RENDERSETTING_STATICTAB_OUTPUT:
    		case RENDERSETTING_STATICTAB_SAVE:
    		case RENDERSETTING_STATICTAB_MULTIPASS:
    		case RENDERSETTING_STATICTAB_OPTIONS:
    		case MY_VIDEO_POST_ID:
    			return TRUE;
    	}
    	return FALSE;
    }
      
    Bool PluginStart(){
    	if (!resource.Init()) {
    		return FALSE;
    	}
    	if (!MyVideoPost::RegisterPlugin()) return FALSE; 
    	return TRUE;
    }
      
    void PluginEnd(){
    	
    }
      
    Bool PluginMessage(Int32 id, void *data) {
    	switch (id)	{
    		case C4DPL_BUILDMENU:
    			break;
    	}		
      
    	return FALSE;
    }
    

    Thank you.



  • On 06/10/2016 at 07:39, xxxxxxxx wrote:

    Hi,

    I'm not sure yet, why this is only a problem in R18, but the reason for your issue is, that you use an inverted logic compared to all of our examples in RenderEngineCheck(). Please change it to return true by default and only false on those you want to deselect. Reason are a bunch of internal id being checked, which in the end cause the problem in your case.



  • On 07/10/2016 at 02:02, xxxxxxxx wrote:

    Hello.

    That solved the problem.

    Thank you very much Andreas.


Log in to reply