Grundsatzfrage: Wie lerne ich C.O.F.F.E.E. ...

NanoBot

Mitglied
Ich verstehe wie die Dinge in C4D etwa laufen und kann C und C++, aber mit C.O.F.F.E.E. komme ich nicht in Schwung.

Ich habe einige Tutorials gelesen und weiss wie die jeweiligen Probleme gelöst werden können, aber mir fehlt eine Übersicht über das Ganze.

Ich war heute in der Bücherei und alles was ich dazu fand war in einem Buch mit 400 Seiten, ganze 2 Seiten zu C.O.F.F.E.E. (ging praktisch nur um die Statuszeile) und der Link zum plugincafe.com, welche zur SDK führt, aber die hilft nur wenn man Details zu einem Befehl sucht, den man aber kennen muss, wobei teils Befehle aus Tutorials da gar nicht vorkamen (bez. nicht auffindbar sind)?

Z.B. ich möchte mit einem Plugin ein neues Objekt aus Zufallszahlen erstellen.
Mit viel Aufwand habe ich ein "var Dings =new(PolygonObject);" und "var Zufall=new(Random);" hinbekommen und irre nun planlos umher, ich geh das irgendwie völlig falsch an...

Ich hoffe ihr haltet mich nicht für blöd, aber ich stecke fest zwischen einfachsten Anleitungen wie man Variablen definiert dann kommt lange nichts - und dann reden alle nur noch weit fortgeschrittenes Chinesisch...

Wo schlagen Profis nach und wie gehen sie neue Probleme an ?
 
Ja es gibt von Maxon die C.O.F.F.E.E. Referenz im Html oder Help Format zum Download.

Ausserdem gibts noch ein Fachbuch von Batista C.O.F.F.E.E. Book

Dieses Buch ist allerdings auch im 3d Attack Magazin Januar 2006- Dez 2006 zu finden aufgeteilt in 12 Lessons. Is halt alles English.

Ich denke mal wenn Du schon C++ kannst müsste dir eigentlich die Referenz von Maxon reichen. Maxon selbst schreibt in seiner Referenz, daß man sich vorher vielleicht lieber erst mal mit z.B. C++ auseinandersetzen sollte, bevor man C.O.F.F.E.E. anfängt.
Also ich würde erst mal mit dem Sprachkern, der Syntax anfangen, daß die richtig sitzt. Alles andere ergibt sich dann schon.

Also von den ganzen C.O.F.F.E.E. Tutorials halte ich recht wenig. Als Anfänger bringt mir das überhaupt nix. Das einzige was ich dabei lerne ist, den Code abzuschreiben.

LG Tom
 
Zuletzt bearbeitet:
SDK 95, da wär ich nie drauf gekommen, ich hab wohl schon zu viele "Falsche Version"-Fehlermeldungen gesehen. ;-)

Ich scheine eine merkwürdige Anziehungskraft auf mysteriöse Phänomene zu haben, so wurde der Firefox doch tatsächlich von CODE und PRE verwirrt und hat aus
Code:
for (i=0; i<cnt; i++)
{
p = op->GetPoint(i);
p.y = p.y * 2.0;
op->SetPoint(i,p);
}

kryptische
Code:
for (i=0; iGetPoint(i);
p.y = p.y * 2.0;
op->SetPoint(i,p);
}
gemacht, hui, der war fies...

Jetzt muss ich aber weiterlesen.
Hab Dank, grosser Meister!
 
Ich hab nochmals 2 Fragen: :-(

Was ist hier der Unterschied, ich erstelle ja nur leere Objekte ?
Code:
var Dings1 =new(PolygonObject);  //funktioniert
var Dings2 =new(PointObject);   //Member not found
var Dings3 =new(light);  //Variable or function expected

Und wie ergänze ich leere Objekte mit Daten, speziell Punkten und Polygonen ?
Code:
var Dings1 =new(PolygonObject);
op = Dings1;
op->SetName("Dings1");
op->SetPosition(vector(0,0,0));

var matrix = new(array,4);
matrix[0]=vector(0,0,0);
matrix[1]=vector(0,0,100);
matrix[2]=vector(0,100,0);
matrix[3]=vector(100,0,0);
op->SetPoints(matrix);

println("sizeof(matrix) = ",sizeof(matrix), " - matrix3= ",matrix[3]);  // 4 und 100,0,0

println("Count = ", op->GetPointCount()," - Point 0 = ",op->GetPoint(0)); // 0 und nil
//doc->InsertObject(op,NULL,NULL);
Was habe ich übersehen, warum nimmt er die Punkte nicht an ?
 
Hi!
wie ergänze ich leere Objekte mit Daten, speziell Punkten und Polygonen ?
Schau Dir das mal an :)
Code:
main(doc,op)
{
    var pObj = doc->FindObject("Dings");
    if (pObj) return false;

    pObj = new(PolygonObject);
    pObj->SetName("Dings");
    doc->InsertObject(pObj, null, null);


    var variableChanged = new(VariableChanged);
    var backupTags = new(BackupTags);

    backupTags->Init(pObj);
    variableChanged->Init(0, 4);
    pObj->Message(MSG_POINTS_CHANGED, variableChanged);

    backupTags->Init(pObj);
    variableChanged->Init(0, 1);
    pObj->Message(MSG_POLYGONS_CHANGED, variableChanged);

    
    var pts = new(array, 4);
    pts[0] = vector(0, 0, 0);
    pts[1] = vector(0, 0, 100);
    pts[2] = vector(0, 100, 0);
    pts[3] = vector(0, 100, 100);
    pObj->SetPoints(pts);

    var pol = new(array, 4);
    pol[0] = 0;
    pol[1] = 2;
    pol[2] = 3;
    pol[3] = 1;
    pObj->SetPolygons(pol);

    pObj->Message(MSG_UPDATE);
}

Liebe Grüße,
Mark.
 
Hi nochmal.

Bzgl. Objekt-Erzeugung, schau Dir folgendes Beispiel an :)
Code:
main(doc,op)
{
  var light = doc->FindObject("Licht");
  if (light) return false;

  light = AllocObject(Olight);
  doc->InsertObject(light, null, null);

  var bc = light->GetContainer();
  bc->SetData(LIGHT_COLOR, vector(1.0, 0.0, 0.0));
  light->SetContainer(bc);
}

Eventuell zusätzlich interessant:
Workflow automatisieren
Objekt in den Koordinatennullpunkt schieben
Boole mit Coffee

Liebe Grüße,
Mark.
 
Zurück