Code Vonc

Un mat par objet

Script COFFEE pour Cinéma 4D R13.

Comment installer ?How to install ?
CommentairesComments

Un matériau par objet.
Supprime tous les matériaux, puis créé et attribue un matériau différent à chaque objet du document.


objSuiv(op) {
	if (!op) return null;
	if (op->GetDown()) return op->GetDown();
	while (!op->GetNext() && op->GetUp()) op = op->GetUp();
	return op->GetNext();
}

ajMat(doc, obj, n) {
	var nom = obj->GetName();
	
	var matiere = new(Material);
	matiere->SetName("Mat." + tostring(n));
	doc->AddUndo(UNDO_MATERIAL_NEW, matiere);
	doc->InsertMaterial(matiere, NULL);
	matiere->Update();
	
	var prop;
	var tex;
	for(prop = obj->GetFirstTag() ; prop ; prop = prop->GetNext()) {
		if (instanceof(prop, TextureTag)) { tex = prop; prop#TEXTURETAG_MATERIAL = matiere; }
	}
	
	if (!tex) {
		var texture = AllocTag(Ttexture);
		texture#TEXTURETAG_MATERIAL = matiere;
		doc->AddUndo(UNDO_TAG_NEW, texture);
		obj->InsertTag(texture);
	}
}

main(doc, op)
{
	var mat = doc->GetFirstMaterial();
	while(mat) {
		mat->Remove();
		mat = doc->GetFirstMaterial();
	}
	
	
	var obj = doc->GetFirstObject();
	if (!obj) return false;
	
	var n = 0;
	while (obj) {
		if (instanceof(obj, PolygonObject)) {
			ajMat(doc, obj, n);
			n++;
		}
		obj = objSuiv(obj);
	}
}