Using a BaseObject as Polygon
-
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 -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
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; }
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
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 -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
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?
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
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
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 22/11/2002 at 08:55, xxxxxxxx wrote:
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...
-----------------------
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