Skip to main content

Cinema 4D: COFFEE vs Python

O C4D teve dois sistemas de scripting ao longo da sua história: o COFFEE (legado) e o Python (atual). Se você está começando hoje, pula o COFFEE e vai direto pro Python. Mas entender a diferença ajuda a navegar tutoriais antigos sem se perder.

Caution

Se abrir um arquivo antigo com expressões COFFEE, elas ainda rodam — mas não escreva código novo em COFFEE. Está em modo de manutenção desde que o Python entrou.

COFFEE: o sistema legado

O COFFEE foi a linguagem de scripting original do C4D, baseada em C++/Java simplificados. Você vai encontrá-lo em tutoriais antigos (pré-2012) e em alguns plugins legados que nunca foram portados. A Maxon não desenvolve mais.

Python no C4D

O C4D usa Python 3 (desde a versão R23) integrado ao ambiente do software. Os pontos de entrada:

  • Script Manager (Extensions > Script Manager), para rodar scripts avulsos
  • Python Tag, tag aplicada a objetos para rodar código por frame
  • Python Generator, gera geometria proceduralmente
  • Python Effector, effector do MoGraph controlado por Python
  • XPresso com nó Python, integra Python dentro do sistema de nós visual

XPresso: scripting visual (sem código)

O XPresso é o sistema de programação visual do C4D. Você conecta nós em rede para criar lógica sem escrever código.

Acesse: selecione um objeto, Tags > XPresso.

Casos de uso comuns:

  • vincular parâmetros de objetos diferentes
  • criar rigs simples (olhos que seguem um alvo)
  • automatizar movimentos condicionais

Python Tag: código por frame

A Python Tag é o equivalente das expressões do after, mas com toda a potência do Python:

import c4d
import math
def main():
# acessa o objeto ao qual a tag está aplicada
obj = op.GetObject()
# pega o frame atual
frame = doc.GetTime().GetFrame(doc.GetFps())
# move o objeto em Y baseado no frame
pos = obj.GetAbsPos()
pos.y = math.sin(frame * 0.1) * 100
obj.SetAbsPos(pos)

A função main() é chamada a cada frame. op é a tag, doc é o documento atual.

Python Generator: geometria procedural

O Python Generator cria geometria real a partir de código:

import c4d
def main():
obj = c4d.BaseObject(c4d.Opolygon)
# cria 4 pontos
obj.ResizeObject(4, 2)
obj.SetPoint(0, c4d.Vector(-100, 0, -100))
obj.SetPoint(1, c4d.Vector(100, 0, -100))
obj.SetPoint(2, c4d.Vector(100, 0, 100))
obj.SetPoint(3, c4d.Vector(-100, 0, 100))
# cria 2 polígonos
obj.SetPolygon(0, c4d.CPolygon(0, 1, 2))
obj.SetPolygon(1, c4d.CPolygon(0, 2, 3))
obj.Message(c4d.MSG_UPDATE)
return obj

Script Manager: comandos avulsos

Para tarefas que você roda uma vez, usa o Script Manager (Extensions > Script Manager). Não precisa de tag:

import c4d
def main():
obj = doc.GetActiveObject()
if obj is None:
return
# move o objeto para o centro
obj[c4d.ID_BASEOBJECT_POSITION] = c4d.Vector(0, 0, 0)
c4d.EventAdd()

Info

c4d.EventAdd() é obrigatório no final de qualquer script que modifica a cena — sem ele o C4D não atualiza a viewport.

A API do C4D: módulos principais

  • c4d, o módulo raiz, acesso a tudo
  • c4d.documents, acesso ao documento e cena
  • c4d.gui, criação de interfaces
  • c4d.utils, matemática e utilitários
  • c4d.modules.mograph, acesso a dados do MoGraph

Documentação completa: developers.maxon.net