Page MenuHome

Mesh objects with curve modifiers render in thier 'rest' position, not thier 'pose' position
Closed, ResolvedPublic

Description

Windows xp, Nvidia 8400gs graphics, blender r44136

In the attached file I have several mesh objects with curve & array modifiers on them. The curves are controlled by an armature via bone hooks.The mesh objects are rendering in their default 'rest' position (the armature's rest position) not the current pose position as seen in the 3d view.

To reproduce, simply render. Additionally I noticed as I tried to remove un-needed data from this file, once I removed all materials, the behavior returned to normal - in that the mesh objects rendered where the curves were positioned, (which makes no sense at all).

Thanks,
Randy

Details

Type
Bug

Event Timeline

Update - I have been able to reproduce this bug over and over again. As stated above, render with the file with the current frame set anywhere from frame 0 to 44 (no action takes place on those frames). Then as mentioned above, force the removal of all materials (shift clicking on the x in the materials panel by the name of the material and remove fake users) and again render any frame from 0 to 44 and the render is what is seen in the 3d view port. To cause the bug again, follow these steps:

-Save the file under a new name (bug1.blend for instance)
-reopen the saved file
-append from the original file (bug.blend) all the materials
-goto frame 221
-assign 'rough chrome' material to all the curves (BackMidTubeCurve & BackOutTubeCurve) & meshes (BackMidTube & BackOutTube) associated with them
-assign 'iFoam_Body' material to all the meshes that make up the back wall (BackOut & BackMid naming conventions) and set this material to have a fake user
-set Cup_porcelain material to have a fake user
- switch the 3d view port to camera view and do an opengl render of the animation
-after the render finishes, set the current frame anywhere from frame 0 to 44 and render a single image, the bug happens again

I've done this 3 times and the results are the same. All renders are done with blender internal render. Cycles render doesn't display the bug, everything renders normal as it should.

I've checked this quickly, and the setup has far too many objects, bones, modifiers or materials to easily grasp. Can't help here... maybe someone else?

Better would be if you can check on how to create this from scratch, just 1 bone, 1 curve, 1 array and 1 curve modifier (or so).

In fact, the problem is "simple" – array and curve modifiers use curve's data, i.e. curve as they are before their modifiers are applied.

Problem is, modified curve are no more curves, but meshes… Hence, we have to rewrite completely those codes... :/

Attached a simple blend demonstrating the problem.

IMHO, this can go to TODO ;)

Hrrm… I’m a bit stupid here…

It do should work with modifiers like hooks, which modify curve handles themselves :/

Ok, apologies for slow response/cluttered example file. I've re-produced the bug with a simple file, see -CurveBug.blend.

To reproduce the bug: F12 to render - everything renders fine. Do an opengl render of the animation. F12 again and everything renders fine. Now, assign the material -iFoam_Metal_rough to the curve object and press F12 again. The curve now renders in it's correct position, but the mesh renders in it's rest position.

Please note: In preparing/experimenting with this new file I tried using simple blue & green materials on the curve & mesh objects and couldn't reproduce the bug. It wasn't until I appended in the iFoam_Metal_rough material and assigned it to the curve object that I was able to reproduce this bug. So again, it appears linked to that material, which doesn't make any sense. Hopefully this new file/details will help.

Thanks
Randy

Fixed in svn rev45345. Thanks for the report, closing!

Sergey Sharybin (sergey) closed this task as Resolved.Apr 2 2012, 5:07 PM