Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 21/11/2002 at 08:20, xxxxxxxx wrote:
User Information: Cinema 4D Version: 8.012 Platform: Windows ; Language(s) : C++ ;
--------- How can I use a BaseObject as a PolygonObject? I am casting it to a Polygonobject and change for example a point (in position). That works fine when the object is a Polygonobject in Cinema 4D (and I can see the point moving in C4D). But when it is still a BaseObject (PrimitiveObject ie Sphere) in Cinema 4D it doesn´t work. So how can I use it as if it was a Polygonobject? It sure is just a simple thing, but I can´t make it anyway. Thanks
On 21/11/2002 at 10:03, xxxxxxxx wrote:
You can't. But you can convert it to a PolygonObject with:
BaseObject* GetDeformedObject(BaseObject* obj, BaseDocument* doc) { if (!obj) return NULL; ModelingCommandData cd; cd.doc = doc; cd.op = obj; if (!SendModelingCommand(MCOMMAND_CURRENTSTATETOOBJECT,cd)) return NULL; return cd.result1; }
On 21/11/2002 at 11:01, xxxxxxxx wrote:
Thanks that worked but it somehow gives me a really strange result. It seems the returned BaseObject is somehow corrupted. When using a normal polygonobject and using the new code with a primitive it looks completely different and weird. I will have a look in my code. Maybe it´s something in there but I couldn´t find anything yet. I´ll get back to you when I know more. Best Samir
On 21/11/2002 at 11:45, xxxxxxxx wrote:
Oh yeah, something is definetly wrong with the returned object. When I use my code my deformer deforms with no strenght a sphere to this result: But when I use my code with the function you gave me (that looks alright to me anyway) I get this result with no strenght: I couldn´t find a mistake in my code. Everything is still the same. Now I only ask for the object type:
Bool VertexNormal::ModifyObject(PluginObject *mod, BaseDocument *doc, BaseObject *op, const Matrix &op_mg, const Matrix &mod_mg, Real lod, LONG flags, BaseThread *thread) { PolygonObject* obj; if(!op->IsInstanceof(Opoint) || !op->IsInstanceof(Opolygon)) obj = (PolygonObject* )GetDeformedObject(op,doc); else obj=(PolygonObject* )op; if(!obj) return TRUE;
Any ideas?
On 22/11/2002 at 08:05, xxxxxxxx wrote:
In your test you are saying:
If not a point object, OR not a poly object...
For this test to be false, BOTH parts must be false. For both to be false the object must be both a point object and a poly object.
Poly objects are derived from point objects, so a poly object is also a point object, so this test is equivalent to saying
If not a poly object...
which is simpler and clearer.
The other thing I noted is that you are returning TRUE if 'obj' is NOT valid...
Hope this helps
On 22/11/2002 at 08:55, xxxxxxxx wrote:
If not a poly object... ----------------------- True that. But not that bad. thanks anyway ------------------------ The other thing I noted is that you are returning TRUE if 'obj' is NOT valid ------------------------ yes, because the method returns TRUE, so I am returning TRUE too. This will stop the execution of the code anyway. It´s not always FALSE ------------------------ Hope this helps ------------------------ no not really in my case. The procedure does work, but the returned BaseObject is somehow weird. There must be a fault anywhere in my code, cause after checking the returned object it seems to be completely ok. Best Samir