THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 23/03/2007 at 23:00, xxxxxxxx wrote:
Cinema 4D Version: R8.2-R10
Platform: Windows ; Mac ; Mac OSX ;
Language(s) : C++ ;
This is really two separate questions, so bear with me.
1. If either "Visible in Editor" or "Visible in Render" is set to Default, how does one determine whether the state is really On or Off? Do you have to go through the parents? And how would I determine whether, say, ModifyObject() is being called for the Editor or during a Render?
2. Many users have noted that when using my plugin suite and doing animation renders, the render times increase the further into the animation the render progresses. What would be possible causes of this and what solutions?
Thank you very much,
On 23/03/2007 at 23:55, xxxxxxxx wrote:
1. Okay, I think that I routed out the Visibility thing with CheckIsRunning(). And all of that was for naught as ModifyObject() looks to consider the state for deformation application already. Why do users always seem to find things wrong that aren't?
2. Still need help here though.
On 24/03/2007 at 06:04, xxxxxxxx wrote:
1. Default means it uses the inherited property of the corresponding parent in the hierarchy chain. It´s relative to the parents to allow the topmost to determing the state of the hierarchy. so you´d need to check the parents if you wanna know for sure if the according function check doesn´t return it itself.
2. Sounds like memory leak to me. Either as in not freeing memory or as in increasing memory of an already existing memory (like arrays which sizes` you increase dynamically but maybe a break is missing or so...). Otherwise I don´t know spontaneously.
On 24/03/2007 at 12:47, xxxxxxxx wrote:
1. Why is it that the user says that setting "Visible in Render" does not change the render times whereas I did a full barrage of tests in 9.5, 9.6, and 10 and there were noticeable differences between On and Off (on the root polygon object of course)? At first, I did the CheckIsRunning() to see if this was render or editor and aborted the ModifyObject() method if off (checking parents as you noted). This had the same effect as not doing it (?).
2. Leaking from where though? All the memory that I allocate is freed - either in Init()/Free() or constructor/destructor or locally (under every circumstance) or is using AutoAlloc<>. All arrays are pre-allocated so the only memory that would be created during render is for copies of the plugin object+tags during the render process. I'll double-check nonetheless.
On 24/03/2007 at 14:13, xxxxxxxx wrote:
2. No memory leaks according to a debug run. Though, I do get this for some reason:
Preloaded symbols may not match 'C:\Program Files\MAXON\CINEMA 4D R9.5\plugins\KuroyumeDZ\interPoser Pro\interPoser Pro.cdl'.
Not certain if this is causing it not to list memory leaks or everything is as expected. Think that it may be the Output Filename in Link (?).
On 24/03/2007 at 21:23, xxxxxxxx wrote:
Neither VS 6.0 nor Xcode debug showed any memory leaks. Damn, I'm good (well, getting better). Neither should either as plenty of time was spent on making certain that memory was coming and going rigorously.
Now I need to know what processes might be going into the render which might be causing this. It is already known that the document is cloned for the render process. Is there some sort of flushing that my plugin object/tags should be doing somewhere to alleviate the animation render time increase?
On 25/03/2007 at 02:46, xxxxxxxx wrote:
hmm, doesn´t sound like memory leaks then. Not sure why the user says there is no difference. I always notice a performance difference.
Not sure what may cause your problems.
On 26/03/2007 at 09:51, xxxxxxxx wrote:
Found the animation render lag culprit!!!
For future generations of frustrated C4D plugin devs, here's what I discovered:
Decided to employ that nice CheckIsRunning() method in several places - using this strategically:
if (CheckIsRunning(CHECKISRUNNING_EDITORRENDERING) || CheckIsRunning(CHECKISRUNNING_EXTERNALRENDERING)) return TRUE;
Tried in GetDDescription(), SetDParameter(), and Message() for the possible culprit message MSG_DESCRIPTION_CHECKUPDATE. Turns out that GetDDescription() is the culprit - as soon as that is 'aborted' with the CheckIsRunning(), the lag disappeared.
Keep this in mind if you experience the same with your plugins!
On 27/03/2007 at 13:50, xxxxxxxx wrote:
thanks for the info Kuro and glad to hear you got the bugger.