MAXON Unveils CINEMA 4D Release 11.5
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 01/09/2009 at 06:47, xxxxxxxx wrote:
ok ok, my fault my fault. Wrong permissions set in the folders.
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 01/09/2009 at 07:10, xxxxxxxx wrote:
Until the CINEMA R11.5 SDK is avaible here an overview about some major changes:
Introduction
The R11.5 SDK is no longer backwards compatible in the following areas:
- Shader
- Materials
- Videoposts / RendererIf your plugins make use of those areas it needs to be recompiled with R11.5 in order to be registered in the application. Otherwise no change is necessary.
When trying to recompile you'll see some compilation errors in your source code, that need to be adapted. Also, if you made use of deprecated functions (with the name 'Ex') those parts need to be updated.
As several data structures have changed substantially the compilation of a Hybrid SDK is no longer possible!Double Precision
All parts of the render API have been moved to double precision to avoid several reoccuring problems. Note that all geometric points and vectors data should be held in double precision (datatypes LReal, LVector, LMatrix).
Double precision is not necessary for uncritical parts like color calculation.
To convert the datatype Vector to LVector use LV(), from LVector to Vector use SV(), to convert the datatype Matrix to LMatrix use LM(), from LMatrix to Matrix use SM().
All ray and intersection calculations must be done in double precision.Render Instances
Render Instances are 'regular' RayObjects, that point to the same data as the original RayObject. So 'padr', 'vadr' etc. are all the same as for the original RayObject. Only textures and materials can be different.
Only polygonal objects will be Render Instances - all other objects will occur as regular objects.
Render Instances have the RayObject's member instance set !=NULL. The structure RayObjectInstanceData gives you access to everything you need: instance_of_index is the RayObject index of the original object, 'transform' is the matrix to transform world space points from the original object to the instanced object (still world space). 'transform_inverse' is the path back and 'transform_tensor' allows you to transform normals (see below). 'link' stores the instance object (of type Oinstance) that this instanced RayObject belongs to.Transformation from original object's point to instanced object: new_point = old_point * instanced_rayobject- >instance->transform;
Transformation from instanced object's point to original object: new_point = old_point * instanced_rayobject->instance->transform_inverse;
Transformation of normal from original object to instanced object: new_normal = !(old_normal^instanced_rayobject->instance->transform_tensor);
Render Instances are not critical for recompilation - and as long as you don't access the 'padr' field of such an object your code should work right away without any problem.
RayHitID
The new class RayHitID replaces the old LONG value that stored information of an object/polygon. It conveniently allows you to set objects with a polygon index, or read this information. SetSecond/GetSecond determine for a quadrangle which part of the quadrangle was stored (A-B-C or A-C-D).
Instead of 'if (lhit==0)' you need to write 'if (lhit.Content())'
Instead of 'lhit=0' you need to write 'lhit.Clear()'The routines ID_to_Obj and Obj_to_ID have been removed - use the RayHitID class instead.
Deprecated Functions
For most of the 'Ex' routines there is just a newer one that does the same.
For TraceColor(Ex), TraceGeometry(Ex) and GetSurfaceData(Ex) the following statement is no longer true: "if you set last_hit to 0 then BaseVolumeData::lhit will be used". Instead the last hit will stay 0 (no intersection).Bucket Rendering
C4D now renders the image as buckets. Usually this should have little to no effect on your source code.
VideoPost effects
VP effects that use the structure 'PixelPost' need to be aware that instead of formerly lines they're no presented with lines of a bucket. Make sure you take the members 'xmin' and 'xmax' into account.
VP effects that evaluated the message MSG_VIDEOPOST_CREATERAY need to move the code into the new overload 'CreateRay' that is part of VideoPostData.RenderDocument
The routine 'RenderDocument' no longer has the parameters left/top/right/bottom. Instead those values are set into the render data BaseContainer with RDATA_RENDERREGION_LEFT/TOP/RIGHT/BOTTOM, also RDATA_RENDERREGION needs to be set to TRUE if only parts shall be rendered.
MemoryManagement
In the past the SDK overloaded the operators new and delete. This is no longer the case. new and delete will allocated and free memory from the operating system, to allow easier linking of DLLs and DYLIBs.
C4D data structures where control is passed on to C4D (so that you don't free it yourself anymore) must be allocated with gNew and gDelete (or bNew and bDelete for arrays). In general, we recommend to make use of gNew/gDelete whereever possible.Threading
C4D can now run up to 64 render threads simultaneously. Usually this should have little to no effect on your source code.
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 02/09/2009 at 19:25, xxxxxxxx wrote:
Thanks for the info Matthias.
I just successfully built my plugin with R11.5. Works quite well.
One thing tho... GetDEnabling() does not work. The elements always stay enabled. Neither in a videopost nor in a materialdata plugin.
Any idea how to fix that?
Thanks in advance!
Yves -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 02/09/2009 at 19:36, xxxxxxxx wrote:
nevermind, fixed.
function definiton differs. before:
GetDEnabling(GeListNode *node, const DescID &id;, GeData &t;_data, LONG flags, const BaseContainer *itemdesc);and now:
GetDEnabling(GeListNode *node, const DescID &id;, const GeData &t;_data, LONG flags, const BaseContainer *itemdesc);compiler just eats it but it wont work
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 02/09/2009 at 22:49, xxxxxxxx wrote:
Does this 'RayHitID' affect GeRayColResult?
Thanks for the heads-up on GetDEnabling(), fused!
Arggggg, materials again. Ack.
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 02/09/2009 at 23:19, xxxxxxxx wrote:
More questions:
1. AnimateDocument()? What's the replacement or should I change my dozens of references to AnimateDocumentExEx()?
2. UVWTag.Set(),Get(),Cpy() : What is the void* dataptr?
3. I see that a bunch of TreeViewFunctions have been made OBSOLETE and return error:
error C2555: 'FaveResultsFunctions::DrawCell': overriding virtual function return type differs and is not covariant from 'TreeViewFunctions::DrawCell'
In the middle of a commercial plugin project, having to update at least two other plugins is going to be distracting with so many changes. We haven't even touched materials yet. ;(
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 02/09/2009 at 23:39, xxxxxxxx wrote:
Hey Robert,
no idea what the "void* dataptr" is or does, but the old functions are still there. They were just renamed to *Slow(). SetSlow(), GetSlow(), CpySlow().
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 02/09/2009 at 23:42, xxxxxxxx wrote:
That was seen but while I'm updating (necessarily) these new methods should be employed. Hey, 'Slow()' infers that the new methods are faster and I can't pass that up!
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 02/09/2009 at 23:44, xxxxxxxx wrote:
yeah, true. i made me a bookmark in VS and will wait for the docs ^_^
(or Matthias answer)
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 02/09/2009 at 23:53, xxxxxxxx wrote:
I'm coming to the conclusion that this might involve you using the previously nonrecommended VariableTag::GetDataAddressR/W() and sending it with these methods for the UVWTag. Why that makes a difference in speed is beyond me (if my assumption is correct).
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 03/09/2009 at 03:30, xxxxxxxx wrote:
Coming back to your questions tomorrow.
cheers,
Matthias -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 03/09/2009 at 23:24, xxxxxxxx wrote:
About GetDEnabling() and GetEnabling(), the t_data parameter is constant since CINEMA 4D R11.5.
virtual Bool GetDEnabling(GeListNode *node, const DescID &id;,const GeData &t;_data,LONG flags,const BaseContainer *itemdesc)
cheers,
Matthias -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 03/09/2009 at 23:26, xxxxxxxx wrote:
Quote: Originally posted by kuroyume0161 on 02 September 2009
>
> * * *
>
> Does this 'RayHitID' affect GeRayColResult?
>
>
> * * *No.
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 03/09/2009 at 23:33, xxxxxxxx wrote:
Quote: _AnimateDocument()?
>
> * * *
_
This is now:
Bool ExecutePasses(BaseThread* bt, Bool animation, Bool expressions, Bool caches)
> Quote: _UVWTag.Set(),Get(),Cpy() : What is the void* dataptr?
>
> * * *
_
It works now like this:
>
\> const void \*dataptr = uvwtag- >GetDataAddressR(); \> \> for (LONG i=0; i<cnt; i++) \> { \> UVWStruct res \> UVWTag::Get(dataptr, i, res); \> \> //do something with res \> } \>
> Quote: _I see that a bunch of TreeViewFunctions have been made OBSOLETE and return error
>
> * * *
_
DrawCell() is the only new OBSOLETE function for tree views.
cheers,
Matthias -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 04/09/2009 at 08:05, xxxxxxxx wrote:
Quote: Originally posted by Matthias Bober on 03 September 2009
>
> * * *
>
>> Quote: Originally posted by kuroyume0161 on 02 September 2009
>>
>> * * *
>>
>> Does this 'RayHitID' affect GeRayColResult?
>
>
>>
>> * * *
>
>
>
> No.
>
>
>
> * * *Good.
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 04/09/2009 at 08:22, xxxxxxxx wrote:
Quote: Originally posted by Matthias Bober on 03 September 2009
>
> * * *
>
>> Quote: AnimateDocument()?
>>
>> * * *
>>
>> * * *
>
>
> _
>
> * * *
>
>
> This is now:
>
> Bool ExecutePasses(BaseThread* bt, Bool animation, Bool expressions, Bool caches)
>
> * * *Strange, but okay.
> Quote: _
>
>> Quote: UVWTag.Set(),Get(),Cpy() : What is the void* dataptr?
>>
>> * * *
>>
>> * * *
>
>
>
> It works now like this:
>
>
>>const void \*dataptr = uvwtag->GetDataAddressR(); \> \> for (LONG i=0; i <cnt; i++) \> { \> UVWStruct res \> UVWTag::Get(dataptr, i, res); \> \> //do something with res \> }
>
> * * *Exactly as I surmised.
> Quote: _
>
>> Quote: I see that a bunch of TreeViewFunctions have been made OBSOLETE and return error
>>
>> * * *
>>
>> * * *
>
>
>
> DrawCell() is the only new OBSOLETE function for tree views.
>
> * * *Yes, you are correct. I hadn't noticed having not used the others.
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 09/09/2009 at 17:57, xxxxxxxx wrote:
What happened to VIDEOPOST_REFRESH?
Here's a code snippet that no longer compiles:
>
\> class spBakerVP : public VideoPostData \> { \> public: \> virtual LONG GetRenderInfo(PluginVideoPost \*node) { return VIDEOPOST_REFRESH|VIDEOPOST_STOREFRAGMENTS; } \>
Is there something that replaces VIDEOPOST_REFRESH? Or do I just omit it now?
Thanks!
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 10/09/2009 at 01:25, xxxxxxxx wrote:
Quote: _Is there something that replaces VIDEOPOST_REFRESH? Or do I just omit it now?
>
> * * *
_
You just omit it.
cheers,
Matthias -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 22/09/2009 at 02:26, xxxxxxxx wrote:
The SDK docu is up:
CINEMA 4D R11.514 SDKdocumentation
[URL-REMOVED]
[URL-REMOVED] @maxon: This section contained a non-resolving link which has been removed.