I was trying to do a fairly simple Cinema4D task in Blender. This motion task is to reveal a shape over time along a curve.
The recipe I am using is…
1.) Make a mesh shape.
2.) Add array modifier and up the count.
3.) Create a BezierCircle object.
4.) Add a curve modifier to the mesh shape and pick the BezierCicle as the curve.
At this point I can animate the array count and coarsely reveal the shape over time, simulating an extrusion along a curve.
My next thought was to create several of these revealing rings and offset them in Z-Space. So I duplicated the first one and moved it up a bit. At this point the to rings were ‘synchornized’. I wanted to rotate the second copy so I could offset the gap in the revealing rings.
That is when I realized that the rotation I was applying to the object was being relayed to the array copies and thus offsetting them in space based upon the Z-Rotation I applied.
Ok, so that does not work and I reset the rotation back to zero. But not to be defeated I thought, Aha! I’ll just add that to a group then use an Empty to deploy the group into the scene. So I moved the array/curve object to an unused layer and added it to a group. I went back to layer #1 and added and Empty and turned on dupligroup.
Sure enough, that fixed my problem, or did it?
While the setup I have described works well in the viewport,
when it comes to Blender Internal or Cycles render time it fails.
It seems like the rotation of the Empty is being relayed to the underlying array modifier, and it shouldn’t.
Give it a try, download the BLEND file and rotate the green object along the Z-Axis. You will see that it works fine in the viewport and even OpenGL render, but when you press F12, Blender Internal and Cycles get this wrong and render it incorrectly.
It seems like a bug (order of operation), but does anyone else have any insights on how to resolve this render error?
265_array_curve_bug.blend (110 KB)