Boole mit Coffee

wayne42

Mitglied
moin Leute,

mal ne Frage : Ich wollte nen Plugin bauen, womit man sich verschiedene Schichten eines Modells automatisch rausrendern lassen kann.
ne Art Cinematomograph :-)

jetzt wollte ich boolesche Schnitte auf das Objekt anwenden und leider bekomme ich mein Objekt nich zusammen mit dem booleschen Objekt. Also das eigentlich Objekt, welches es zu rendern gilt, sollte in der Hierarchie ja unter dem boole sein... aber auch mit getClone und copyto will das bei mir nich hinhauen.

Hat einer von euch ne Idee?
 
Hi!

Mit
Code:
object->Remove();
object->InsertUnder(boolobject);
kannst Du das Objekt "object" in das Bool-Objekt "boolobject" verschieben...

Grüße,
Mark.
 
ähhmm... irgendwas läuft da falsch

ich hab jetzt ein Objekt und dann mache ich :

Code:
var irgendwas = AllocObject(Oboole);
doc->InsertObject(irgendwas,NULL,NULL);

obj->Remove();
obj->InsertUnder(booleanFloor);
  
var booleanPlane = AllocObject(Oplane);
booleanPlane->SetPosition(vector(0.0,1.0,0.0));
booleanPlane->SetScale(vector(10.0,0.0,10.0)); 
doc->InsertObject(booleanPlane,booleanFloor,NULL);

wenn das Plane mein obj nicht berührt ist alles ok. Berührt sich beide Objekte aber (und dann sollte ja eigentlich der boole zu sehen sein) dann friert mir Cinema ein. Es stürzt also ab. Hab ich irgendwas wichtiges vergessen? Wenn ich diese Szenario so über cinema nachbaue, dann t es.
 
Hi!

Hm, ich weiß nicht wirklich, was Du da tust (z.B. was ist BooleanFloor?)

Somit anbei - aus Spaß ;) - ein kleines Script, welches bei Bedarf, das Objekt mit dem Coffee-Tag in ein Boole, zusammen mit einer Plane, wirft. Anschließend wird die Plane auf Y=Frame gesetzt...

Code:
main(doc,op)
{

    var plane;
    if (!instanceof(op->GetUp(), BooleObject)) {
        var bool    = AllocObject(Oboole);
        doc->InsertObject(bool, NULL, NULL);
        var bc        = bool->GetContainer();
        bc->SetData(BOOLEOBJECT_TYPE, BOOLEOBJECT_TYPE_INTERSECT);
        bool->SetContainer(bc);
    
        op->Remove();
        doc->InsertObject(op, bool, NULL);
    
        plane = AllocObject(Oplane);
        doc->InsertObject(plane, bool, op);
        var bc        = bool->GetContainer();
        bc->SetData(PRIM_PLANE_WIDTH, 1000.0);
        bc->SetData(PRIM_PLANE_HEIGHT, 1000.0);
        plane->SetContainer(bc);
    } else {
        plane = op->GetNext();
    }
    
    var t = doc->GetTime();
    var sec = t->GetSecond();
    var frame = t->GetFrame(doc->GetFps());
    plane->SetPosition(vector(0.0, frame, 0.0));

}

Liebe Grüße,
Mark.
 
nice... sehr nett, danke.

Nur noch ne klitzkleine Frage : Woher hast du Befehle wie :

"SetData(PRIM_PLANE_WIDTH, 1000.0)"
"SetData(BOOLEOBJECT_TYPE, BOOLEOBJECT_TYPE_INTERSECT)"

das kann ich in der Doku gar nich finden und google will da auch nich so recht was drüber ausspucken :-/
 
Hi!

In der C.O.F.F.E.E SDK R9.5 findet sich unter Descriptions die Lösung: "Finding the element ID":
Konsole öffnen und den gesuchten Parameter dort in die unterste Eingabezeile drag'n'droppen ... es ist die jeweilige ID zu sehen...

Grüße,
Mark.
 
ok danke, und wie schauts da mit möglichen Parametern aus?

wenn ich jetzt zum Beispiel ne Camera erzeugt habe und daraus ne Top-Cam machen möchte. Durch raten bin ich jetzt auf :

Code:
var camBc = camera->GetContainer();
camBc->SetData(CAMERAOBJECT_PROJECTION,6);
camera->SetContainer(camBc);

gekommen. Aus deinem Beispiel mit dem Boole hätte ich eher sowas wie :

Code:
camBc->SetData(CAMERAOBJECT_PROJECTION,CAMERAOBJECT_PROJECTION_TOP);

erwartet. Per Drag n Drop kriegt man das ja nich raus... aber wie kommt man da ran?
 
Hi!

Im Endeffect ist es - meines Wissens nach - Wurscht, ob Du mit "Konstanten" oder direkten Werten arbeitest.
Die "Konstanten" findest Du bei den resourcen bzw. descriptions:
CINEMA4D / resourcen / res / description z.B. ocamera.h:
CAMERA_PROJECTION = 1001, // LONG
Pperspective = 0,
Pparallel = 1,
Pleft = 2,
Pright = 3,
Pfront = 4,
Pback = 5,
Ptop = 6,
Pbottom = 7,
Pmilitary = 8,
Pfrog = 9,
Pbird = 10,
Pgentleman = 11,
Pisometric = 12,
Pdimetric = 13,

Grüße,
Mark.
 
Zurück