Break Render

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 11/10/2006 at 21:10, xxxxxxxx wrote:

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

---------
Hi ...

Now I render my document using the statement below ...

RenderDocument(doc, bc,MyProgressHook,pd, bmOutput,RENDERFLAG_EXTERNAL,NULL);

It's working like "Render To PictureViewer"
It's working ... but if the user want to break the render using Ctrl+Break ... it's not responding ...
I read the threads about breaking render ...
I try to use TestBreak ... but it's not working ...
Please anybody can tell me in detail ...? 😉

Thanks in advance ...
Zaw Min Tun

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 11/10/2006 at 23:27, xxxxxxxx wrote:

i think you have to give it a Thread in stead of NULL.
The thread is waiting for the testbreak and should then stop the rendering

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 16/10/2006 at 20:41, xxxxxxxx wrote:

But I don't know how I can make it ...
Can you show me some code sample?
But I'll try it again ...

Anyway ... I really thank you ...
Zaw Min Tun

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 16/10/2006 at 21:00, xxxxxxxx wrote:

Take a look at the section of code where RenderDocument() is called in simplematerial.cpp and particlevolume.cpp in the plugins:cinema4dsdk folder. There you see how they get the thread.

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 16/10/2006 at 21:25, xxxxxxxx wrote:

Then I take a look at them ...
I pray they can really help me ... 😉
I've already spent nearly 5 days on this ...

Zaw Min Tun
ありがとう ... 本当に ...

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 16/10/2006 at 21:56, xxxxxxxx wrote:

My plugin is a dialog plugin ...
When the user presses a button ... The user will see the Picture Viewer rendering ...
When redering is done the user will get a bitmap file ...
But while rendering ... the user cannot have a break on that render ... bcos I render like this ...

RenderDocument(doc, bc,MyProgressHook,pd, bmOutput,RENDERFLAG_EXTERNAL,NULL);

Some old threads told me to use TestBreak() ...
For that I create a class called myThread ...

class myThread:public Thread
{
public:
     myThread();
     virtual void Main(void);
};

myThread::myThread()
{
}

void myThread::Main(void)
{
//...
}

Then when I call RenderDocument() ...

myThread *thdRender=new myThread;
RenderDocument(doc, bc,MyProgressHook,pd, bmOutput,RENDERFLAG_EXTERNAL,thdRender->Get());

If I did like above ... the code that I wrote in MyProgressHook was not running ...
And if I insert the line thdRender->TestBreak() ... it's not still working ...

But I'd go on ... 😉

Zaw Min Tun ...

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 16/10/2006 at 22:37, xxxxxxxx wrote:

If you want to use your own thread to test for breaks, make sure that it is running!

You're going to need to call thdRender->Start() before calling RenderDocument() and End() afterwards. You will also need to implement myThread::TestDBreak() unless you want a deadlock situation.

Try something like this and see if it works:

class myThread:public Thread  
{  
public:  
     myThread();  
     virtual void Main(void);  
     virtual Bool TestDBreak();  
};  
  
myThread::myThread()  
{  
}  
  
void myThread::Main(void)  
{  
//...  
}  
  
// This tests for the Esc key to break the thread  
Bool myThread::TestDBreak()  
{  
     BaseContainer     keyinput;  
     return (GetInputEvent(BFM_INPUT_KEYBOARD, keyinput) && (keyinput.GetLong(BFM_INPUT_CHANNEL) == KEY_ESC));  
}  
  
...  
  
myThread *thdRender=new myThread;  
if (!thdRender->Start(TRUE)) // Error starting thread  
  
RenderDocument(doc, bc,MyProgressHook,pd, bmOutput,RENDERFLAG_EXTERNAL,thdRender->Get());  
  
thdRender->End();

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 17/10/2006 at 20:12, xxxxxxxx wrote:

Really thank you again ...

Now I try to check if ESC is pressed ( in ProgressHook ) ... and it's OK ... The plugin knows when ESC is pressed ... But I don't know how to stop the rendering ...
I forgot to tell that I'm still using NULL as the last parameter instead of thdRender->Get() ... bcos' if I didn't use NULL ... the code I'm writing in ProgressHook is not working ...
In ProgressHook I call the ShowBitmap with the current bitmap ... So it's changing all the time while rendering ...

So I'm a bit lost ...
But Robert ... you answers helped a lot ...
And I hope you will go on ... 😉

Zaw Min Tun

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 18/10/2006 at 02:13, xxxxxxxx wrote:

Hmmm, the way the documentation reads, RenderDocument() should be using the passed Thread as a sort of 'overlord' to test for a user break. This should stop the render automatically - theoretically and assuming these points.

One question though: Are you using a clone of the BaseDocument!!? As the docs state: Must be a clone of the real document! This might have an impact.

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 19/10/2006 at 00:10, xxxxxxxx wrote:

Yeah ...

When I use the clone doc ... the way it's working really changed ... I can use ESC to stop rendering ...
But after stopping the render ... C4D also stop responding ... When the ESC is pressed ... I ended the thread ...
What more do I need to do?

But I think I can move a new step ... 😉

Thank you a lot ...

Zaw Min Tun

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 19/10/2006 at 01:12, xxxxxxxx wrote:

Hello ... Robert ...

I came here to let you know that now it's working ... and to say thank you ...
Thank you ... a lot ...

May god bless each and every one ...
Zaw Min Tun