C4D R14 Mac and Render Elements Bug

There’s an issue with the latest R14 update and Render Elements.  It is related to some stuff apple did that affected some builds of C4D.  I am aware of the problem and will do my best to fix it within the next few weeks.  Should just be a re-compile, but my understanding is that there is some additional setup work that needs to be done with the new version of C4D.  Boring technical details, blah, blah, blah.  Will update when I have progress to report.

**UPDATE**
Should be fixed, here: https://adamswaab.wordpress.com/2012/10/16/render-elements-v0-7-15-r14-only/

Render Elements – V0.7.14 – Crash on quit fixed?

Mac version of the fix can be downloaded by clicking here. PC version will come shortly and I will post it on this thread.

PC version is now included in the download here.

I hope this fixes the problem. Big thanks to Wilfried Behne of Maxon and Franz at plugincafe for the help tracking this bug down.

Light Lister V1.0.1

I have rewritten my Light Lister plugin for C4D in python. It can be downloaded here:

Light Lister V1.0.1

It is for C4D V12. It will not work with older versions. Because it is python it should be PC and Mac compatible.

One additional treat…
I have left the source code un-encoded in the file on purpose. At the moment there are so few resources available for learning to program C4D plugins in python that I thought interested parties may learn a few things from the code. Please act responsibly with the source code.

MayaCamXForm2C4D Script

So, FBX in Cinema 4D is screwed – and has been screwed for a long time. It gets in position and rotation data correctly, but it never gets in camera data correctly (nor exports it correctly, either, for that matter).

What I have done in the past to get cameras from maya into cinema has been to link the transforms of the camera to a null and then link the focal length of the camera to the Y position of another null. I bake them both out, transfer to Cinema via FBX and then use Xpresso to link up the correct values to a new cam. All well and good, but I thought since I had a little down time on my current job – and we’ve been dealing with this problem for months now – it might make a nice little script to ease the workflow a bit. So this script does the linking and baking part in Maya. You just select the camera, run the script, and it creates two locators – one with all the camera transform information baked in, and the other with the y position equaling the focal length of the camera.

Keep in mind this is my first mel script – and I only had a few hours to work on it. So, it is not perfect. There’s no error checking, no gui – just a barebones script that assumes the user knows exactly what he is doing and why he needs the script.

//MayaCameraXForm to C4d by Adam Swaab ©2010

//Warning! There's no error detection in this script!  Select one camera (one only!) and run the script.  It works based on the project timeline.

int $i = `playbackOptions -q -animationStartTime`;
int $end = `playbackOptions -q -animationEndTime`;

string $select[] = `ls -sl`;

$ActiveCam = $select[0];

//Create locators for data
spaceLocator -p 0 0 0 -name "CameraTransforms";
spaceLocator -p 0 0 0 -name "YisFocalLength";

while($i <= $end)
{
	currentTime $i;
	
	//Restore selection to camera and get Camera Info
	select -cl;
	select -r $ActiveCam;
	float $position[3] = `xform -worldSpace -query -translation $ActiveCam`;
	float $rotation[3] = `xform -worldSpace -query -rotation $ActiveCam`;
	$xpos = $position[0];
	$ypos = $position[1];
	$zpos = $position[2];
	$xrot = $rotation[0];
	$yrot = $rotation[1];
	$zrot = $rotation[2];
	$camshape = `listRelatives -s $ActiveCam`;
	$flength = `getAttr $camshape.focalLength`;
	
	//Set Data for locators
	setAttr("CameraTransforms.translateX", $xpos);
	setKeyframe("CameraTransforms.translateX");
	setAttr("CameraTransforms.translateY", $ypos);
	setKeyframe("CameraTransforms.translateY");
	setAttr("CameraTransforms.translateZ", $zpos);
	setKeyframe("CameraTransforms.translateZ");
	setAttr("CameraTransforms.rotateX", $xrot);
	setKeyframe("CameraTransforms.rotateX");
	setAttr("CameraTransforms.rotateY", $yrot);
	setKeyframe("CameraTransforms.rotateY");
	setAttr("CameraTransforms.rotateZ", $zrot);
	setKeyframe("CameraTransforms.rotateZ");
	setAttr("YisFocalLength.translateY", $flength);
	setKeyframe("YisFocalLength.translateY");
	
	$i++;
}