Plugin-Entwicklung in C
Aus CINEMA 4D Wiki
Inhaltsverzeichnis |
Grundsätzliches
Der Einstieg in die Entwicklung von Plugins für CINEMA 4D ist, insbesondere für C++-unerfahrene, nicht gerade leicht. Dateistruktur, Syntax der Sprache, Pointer, Klassen, Vererbung, das CINEMA 4D SDK, Fehlermeldungen vom Compiler... all das will erst einmal gelernt, verarbeitet, interpretiert und vor allem verstanden werden.
Dieser Artikel (und auch die anderen in der Kategorie "Development") sollen dabei helfen, einen Zugang zu der Thematik zu finden. Sie sollen nicht (und werden auch nie) einen Ersatz für sehr viel Lern- und Fleißarbeit, Dokumentationen oder technischen Support bieten. Softwareentwicklung ist und bleibt kein triviales Thema.
Entwicklungsumgebungen
Microsoft VisualStudio
VisualStudio ist die einzige Entwicklungsumgebung für den Windows-PC, die von MAXON offiziell unterstützt wird. Bis einschließlich CINEMA 4D R10 wurde VisualStudio2003 unterstützt, am R10.5 wird mindestens VisualStudio2005 benötigt.
Es gibt allerdings die Möglichkeit, VisualC++ Express zu verwenden. Diese Variante gibt es kostenlos auf der Website von Microsoft zum Download. Dort fehlen zwar evtl. ein paar Standard-Bibliotheken, jedoch werden die meisten davon nicht benötigt, bzw. lassen sich nachträglich installieren.
Apple Xcode
Auf dem MAC werden CINEMA 4D Plugins mit der Apple-Entwicklungsumgebung Xcode erstellt. Xcode ist bei Apple kostenlos erhältlich. Dazu muss man der Apple Developer Connection (ADC) beitreten, was im Online-Programm ebenfalls kostenlos ist. Die erzeugten Plugins sind *.dylibs, die erst mit den neueren Universal-Versionen von Cinema (ab 9.6 Universal) laufen, nicht aber mit älteren Cinema-Versionen.
Für ältere Cinema-Versionen muss man *.xdls erzeugen, und dazu die Entwicklungsumgebung CodeWarrior benutzen. Diese wird aber seit Jahren nicht mehr weiter entwickelt, daher wird sich eine Entwicklung dort nur in Ausnahmefällen lohnen.
Andere Umgebungen
Da sowohl für PC wie für Mac kostenlose Compiler verfügbar sind, kann man nur davon abraten, es mit anderen zu versuchen. Plugins sind auf die Strukturen des Hauptprogramms angewiesen, und weder MAXON noch irgend jemand sonst wird bei den fast sicher auftauchenden Schwierigkeiten helfen wollen. Mit einigen Tricks ist es zwar möglich, die API auch z.B. mit Borland C++ oder GCC zu kompilieren, aber das heißt nicht, dass sie dann auch wie erwartet funktioniert.
Umstieg von Coffee
Coffee-Nodes in XPResso sind oft eine ganz brauchbare Methode, um neue Ideen schnell auszutesten. Bei der anschließenden Umsetzung in C++ kann man vieles direkt übernehmen, hat aber auch einige Unterschiede, v.a. bei Funktionsbezeichnungen. Syntax-Vergleich Coffee und C
Entwickeln für mehrere Plattformen
Sauber entwickelte Plugins lassen sich ohne größeren Aufwand für PC und MAC kompilieren. Voraussetzung dafür ist:
- Nach Möglichkeit für alle Operationen ausschließlich Funktionen aus dem CINEMA 4D SDK verwenden. So ist gewährleistet, dass alle Plattformen gleichermaßen unterstützt werden.
- Auch bei trivialen Daten-Typen immer die Typen aus dem SDK verwenden (Also LONG, Real, etc., siehe Index > Math functions and classes > Types)
- Compilertricks vermeiden und Compiler Warnungen eliminieren. "Real mouseX,mouseY=0.0;" ist z.B. solch ein Konstrukt.
- Generell sollte man Datei-Pfade und Namen nie direkt handeln, sondern dazu die SDK-Klassen Filename, BaseFile und BrowseFiles benutzen. PC und MAC verwenden eine unterschiedliche Schreibweise für Pfade und unterschiedliche Stringcodierungen, deswegen ist jede Stringschubserei tödlich und im Übrigen auch unnötig.
- In *.str-Ressourcen müssen alle Sonderzeichen als \uXXXX geschreiben werden, wobei XXXX die vierstellige UTF-8-Nummer in Hexadezimalschreibweise ist. Für "ä" ist das z.B. "\u00e4". Tabelle hier: http://www.utf8-zeichentabelle.de/
- Keine speziellen C++ Libraries verwenden, solange unklar ist, ob diese auf beiden Systemen existieren und ähnlich funktionieren.
- Um ein Plugin für den PC zu kompilieren, muss ein PC (mit installiertem VisualStudio) vorhanden sein. Um für 64Bit-PC zu kompilieren und zu testen, sollte auch ein 64Bit-PC vorhanden sein. Grundsätzlich kann man aber auch 64-Bit Plugins auf einem 32-Bit System kompilieren. Das gleiche gilt für Mac: Man kann ein Plugin für Mac nur auf einem Mac (mit installiertem Xcode) kompilieren, und auch hier lassen sich 64-Bit Plugins unter 32-Bit kompilieren, aber eben nicht testen.
Strukturen
Dateistruktur
Damit ein Plugin korrekt funktioniert, müssen die zugehörigen Dateien in einer bestimmten Struktur abgelegt werden. Dies gilt für die Quellcode-Dateien (Sources) ebenso wie für das fertige Plugin.
Installation
[CINEMA 4D Rx]
+ [plugins]
+ [Plugin-Folder]
+ [res]
| + [description]
| | + Beispielplugin1.res
| | + Beispielplugin2.res
| |
| + [strings_us]
| | + Beispielplugin1.str
| | + Beispielplugin2.str
| |
| + [strings_de]
| + Beispielplugin1.str
| + Beispielplugin2.str
|
+ Beispielplugins.cdl (Windows, 32 Bit)
+ Beispielplugins.cdl64 (Windows, 64 Bit)
+ Beispielplugins.dylib (MAC, Universal Binary, kann PPC, Intel 32Bit und Intel 64Bit enthalten)
+ Beispielplugins.xdl (MAC, Pre R9.6 PPC)
Sources
Die Dateistruktur der Sources kann freier gestaltet werden, jedoch empfiehlt sich auch hier ein gewisser Standard.
[CINEMA 4D Rx]
+ [resource]
| + ...
|
+ [plugins]
+ [Plugin-Folder]
+ [source]
| + [objecs]
| | + Beispielplugin1.cpp
| |
| + [tag]
| | + Beispielplugin2.cpp
| |
| + [...]
| |
| + main.cpp
|
+ [res]
+ [description]
| + Beispielplugin1.res
| + Beispielplugin2.res
|
+ [strings_us]
| + Beispielplugin1.str
| + Beispielplugin2.str
|
+ [strings_de]
+ Beispielplugin1.str
+ Beispielplugin2.str
Vorbereitungen
API kompilieren
Beispielplugins kompilieren
Als ersten Test ob auch alles funktioniert wie gewünscht, empfiehlt es sich, das Projekt "cinema4dsdk.vcproj" in VisualStudio zu öffnen und zu kompilieren.
Der Vorgang kann ein wenig dauern. Ist die Kompilierung abgeschlossen, startet man CINEMA 4D und wirft einen Blick in das Plugins-Menü und in das Kontextmenü des Objekt-Managers.
Hier sollten nun zahlreiche neue Objekte und Tags erscheinen.
Build-Presets in VisualStudio einrichten
Hilfe
Plugincafé
CINEMA 4D SDK
Die Orientierung im SDK fällt zunächst nicht gerade einfach, weil man oft einfach nicht weiß, wo sich bestimmte Dinge befinden.
Wichtige Klassen:
- BaseObject: Her findet sich das meiste, was man in Plugin benötigt, um Eigenschaften von Cinema-Objekten (im Wesentlichen alles, was einen Knoten im Baum hat) zu lesen oder zu schreiben.
- Vector und Matrix: Basisklassen, die die Basis-Methoden beim Handling von Vektoren und Matrizen beschreiben
- c4d_tools: Hier verbergen sich etliche Utility-Methoden, die beim Handling von Vektoren und Matrizen, aber auch für andere Dinge extrem hilfreich sind!
C++ Dokumentation
Für den PC gibt es begleitend zu VisualStudio die MSDN (Microsoft Developer Network), eine umfangreiche, mehrere CDs große Dokumentation über sämtliche Aspekte der Sprache und Klassen.
Für die Entwicklung von Plugins für CINEMA 4D ist allerdings ein sehr großer Teil dieser Informationen nicht notwendig, könnte sogar zu Verwirrung führen. Im Grunde benötigt man (sofern man nicht in der Lage ist, es sich selbst anhand von Beispielcode beizubringen) ein Einsteiger-Werk zum Thema C++, um die grundlegenden Konzepte der Sprache zu erlernen.
Für alle weitergehenden Operationen, die in einem Plugin durchgeführt werden könnten, benötigt man im Normalfall lediglich die Dokumentation des CINEMA 4D SDK, sowie mathematisches Grundwissen (für speziellere Berechnungen evtl. Formelsammlungen o.ä.).
Weiterführende Artikel
Weblinks
Beispiele, Unterstützung, Community:
Entwicklungsumgebungen:
