Rigged desk-lamp

link to blend file

This is a rigged desk-lamp which I made to teach myself about constraints and rigging mechanics. I’m posting it here in case it is useful to someone to help learn about this kind of rigging. It was made with the SVN version of blender and doesn’t seem to work quite right with 2.45 - sorry about that. It’s just that the coordinate spaces are different, and should be fixable if all the constraints are changed to use local coordinates I think.

To use it: The only controls you really need are the bones in armature layer 1 (see picture below): a “Root” bone for moving the whole thing, a “TopHandle” which can be moved to control the position of the lamp head via IK, and a “Head” bone which should be rotated to control the direction of the head. Rotation of the lamp relative to the base, stretching of the springs, pivoting of the various struts and flexing of the wires should all happen automatically by moving the TopHandle bone.

[ATTACH]29320[/ATTACH]

The other bone layers are:
layer 2: the main bones which move the struts and springs.
layer 3: IK targets for the wires.
layer 4: bones to deform the wires.

Beware that when you pose the armature the meshes sometimes don’t catch up and it all gets messy. If that happens just select one of the objects that hasn’t moved, change to edit mode and back.

Everything needed for the lamp (unless I missed something) is in a group called “lamp” which can be appended/linked to other files. There’s quite a lot of objects because I used a separate object for each strut etc…

Finally - I know the modelling is in need of some improvement (could do with rounded corners on the struts instead of just boxes for example, and it’s missing a switch), but this was really an exercise in rigging, not modelling :slight_smile:
Sample pictures:

[ATTACH]29318[/ATTACH]
[ATTACH]29319[/ATTACH]

Enjoy!

EDIT: apprently my pictures have gone awry… I’ll try to upload them again later.

Here are the missing pictures.




I haven’t checked the file yet, but most often, the cause of any unexplainable messy “lag”
issues is that you’ve got some cyclic dependency somewhere. An example of a cyclic situation is when one bone is parented to something it controls…

Aligorith

Ah thanks, I didn’t know that. I’ll look into it. Not a big problem though, it doesn’t show up in renders.

Actually, you will get problems when you try to do any fancy animation rendering (especially if you end up using some renderfarm script which skips frames, etc.). Rendering stills goes ok for cyclic situations most of the time, as it does a double recalc IIRC.

Aligorith

I changed the parent of one of the bones, and it seems to be OK now. I’m not really planning to do anything complicated with it. It was more a case of me trying to write a thesis, staring at my lamp and thinking “I wonder if I could model that spring mechanism in blender…”