detecting messages while rendering [SOLVED]



  • On 13/05/2015 at 18:37, xxxxxxxx wrote:

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

    ---------
    I'm creating my custom renderer, I want to detect different messages.

    1- for example when the user renders in viewport, if he clicks anything "some message is sent" , it stops the rendering.

    2- when he renders in picture viewer, to stop the rendering there is a cancel message "I wanna know which message to listen to it".

    3- what about different messages, for example when object moves, camera moves, etc...

    I know this question may seem too broad, but I just need a hint of where to start so I can manage different messages correctly.



  • On 14/05/2015 at 06:07, xxxxxxxx wrote:

    Hello,

    you can check if the current render process should end by checking the render thread.

      
    if(vps->thread && vps->thread->TestBreak())  
    {  
     return RENDERRESULT_OK;  
    }  
    

    Moving an object or the camera is a form of user interaction and has nothing to do with rendering. Such interactions typically trigger a core message, especially EVMSG_CHANGE.

    Best wishes,
    Sebastian



  • On 14/05/2015 at 06:18, xxxxxxxx wrote:

    thanks Sebastian, I want to listen to these messages for interactive rendering.



  • On 04/06/2015 at 12:58, xxxxxxxx wrote:

    sorry for opening this thread again, but I tested this, and found a main problem, my render call is something similar to this:

      
    	if (vps->vp==VIDEOPOSTCALL_INNER && vps->open)
    	{  
                    //prepare data from RayObject(s)....  
                    myRender();// a blocking call!!  
                    cleanup();//  
            }  
    
    

    so how can I do this check?? even if the GUI is showing the message and I click it, the execution of this message won't happen before myRender() function exits.

    any ideas?



  • On 04/06/2015 at 13:14, xxxxxxxx wrote:

    nvm, I think I know now how to do it, I put "(vps->thread && vps->thread->TestBreak())" in my render cancel callback.


Log in to reply