Most of my work to date has mainly been modelling, but for a change this year I have decided to delve a little deeper into Blenders rigging, constraint and animation tools. Still on the industrial theme, I am going to build a palletizer robot and put it in an animation with conveyors feeding sacks or boxes to it and the robot stacking them on a pallet.
Fortunately there are really good references for the robot including CAD models, the bad news is the CAD model is in .stl format and the surface mesh is an unusable triangulated mess of 710721 verts, with pretty much all the components linked together :(. So it looks like the first stage will be to remodel the robot.
I have used the base of the robot to experiment with ways of skinning a new mesh over the .stl model. Retopo proved to be too imprecise for picking out the models features (or at least the way I went about it was) so I decided to model from scratch. I could pick up the centre points of circular features by C paint selecting rings of vertices from the .stl model placing the 3D cursor on the centre point, then switching to the new model and adding a circle. With so many underlying vertices using vertex snap was also problematic so I resorted to moving faces along a perpendicular axis until the new face blended with the underlying face giving a zebra stripe effect of the two face colours which seemed to work well and was quite a quick process. The image below shows the difference between the yellow .stl base at 47713 vert’s against the new blue blender mesh of 1572 vert’s
@ RickyBlender: Any converter from a cad solids model needs to be able to recognise not only the face of the CAD model, but also the features such as fillets and circular centre points so vert’s can be placed regularly. It would be a big ask of a developer to do this. I chose the palletizer design because it used linkage to keep the head horizontal. I am not sure how to rig it yet, but if I work out how to I will certainly post how it was done.
BTW robbur, what you’re doing right now in terms of modeling can go towards retopo. For these kind of things you do extrude out large flat areas or add geometric primitives, or align with other geometry… That is a lot faster to be honest. Particularly when you have a good idea of what regular spacings or angles are involved. The only aspect that really makes retopo methods come into play is by turning on face snapping. Also snapping in orthographic view with both snap to mesh and snap to other (not sure if the official nomenclature for “snap to other” is quite right, as I think it does a few more useful tricks - changes how it’s distributed onto a surface) is pretty much the same as knife projecting in what it does with the vertices being placed. However there is also a caveat to that, for certain alignments it’s easier to rotate the model than the view of it. (I know there’s shift with views to align to a selection, but that has no control of how a view’s roll is oriented and just fails for some things.)
Also for alignments and such… 3D cursor pivot combined with snapping and snapping mode in active selection is quite a powerful thing. Can bring geometry into alignment and even do stuff like scaling primitives to match up with stuff. This aspect seems to work best most of the time in vertex mode. Not quite the usual retopo workflow (again mostly face snapping in that case), but still useful.
Also the shrinkwrap thing most people do when doing retopo modeling is pretty much optional. If you want to use it, you can nail down more control with vertex groups, so you can combine with relevant directional projections or nearest surface. This also tends to work a bit better if the reference model is equal or greater mesh density than what you’re making.
So you don’t necessarily build it all from scratch when doing retopo with hard-surface, the workflow’s usefulness is suited to those troublesome spots were certain contours blend into things and existing primitives don’t really match. (Most of your Blender stuff seems top notch, so I’d think you’d have this down pretty quick.) It’s mostly a question of when or where can snapping be used to have stuff line up or maintain volume.
As for rigging… 3D cursor and volume snapping on center or median will likely be your friends. For some complicated things you’ll also find it annoying that 3D cursor between local and global don’t respect each other, but I suppose that’s just the way it is. (Selections still stay the same though, so at least you have that going.) Still involves jumping in and out of object and edit modes between your cursor snapping references and the armature where you’re editing bones to line up. So still not quite the fastest thing at times.
@ RickyBlender the CAD file is available off the Yaskawa website, it was a straight import into Blender
@ Clockmender The workflow isn’t that tedious, most of the robots components are built around pivot points. I just centre the cursor on the CAD pivot point and transfer it to the blender model, add circles or spin profiles, throw in a few boolean shapes and bevels and you get a pretty close reproduction of the CAD model, most of it snaps back onto the face of the CAD model automatically. The end of bevels can be a problem though as they quite often overlap and don’t form a manifold mesh so have to be tweaked by hand.
Thanks for the offer of help on the rig, I built a JCB model a few years ago and adapted that rig onto a simplified version of the robot, I have two empties controlling the arm, one on the head for the arms X-Y position and one on the base for the Z rotation. I haven’t managed to work out if the arm could be rotated and positioned from a single control point yet
@ pauljs75 Thanks for the pointers. A lot of the tutorials on retopo are on organic models, with freehand snapping of vert’s back to the base model. I am using those techniques where I can, but most of the robots components are geometrically shaped with circular bosses around pivot points, which are easy to spin once you have located the centre.
I agree with you on the 3D cursor changing position between Global and Local views, it does slow things down when you have to keep recentering the cursor.
I have mocked up a simplified version of the robot to experiment with the rigging all the linkage. Fortunately adding the armatures and constraints was easier than expected. It is controlled by two empties, one to locate the head X-Y position and one to rotate the base on the Z axis.
@ pauljs75 Thanks for sharing your test rig, it’s good that you can control the position and rotation from one control bone, I haven’t quite worked out how it works yet but might have a deeper look later. Not sure what to do about the dependency cycle though.
I kept my rig very simple, the main part is the 3 bone armature for the vertical / horizontal arms and the head, the arms have rotation restricted to set degrees on one axis and an IK to follow the head position empty. The small head bone has a rotation constraint to keep it horizontal. The linkage and piston are separate armatures with IK constraints that are parented to and follow the various pivots driven from the main arm.
@ajcdfin I had a look at my rig, no warnings in the console, but the target for the piston bone had moved causing it to rotate out of position in the animation.
@robbur - You peaked my interest on this machine, I just had to give it a try, 1 armature w/9 bones, 7 of the 9 have constraints (1 IK), no ‘Emptys’, didn’t include that pink cylinder. From looking at your gif, it looks good.
Odd… In regards to that one rig, it’s not throwing the error on my computer. But then again I may have made some minor changes since uploading it for comparison. Yet something with follow target still isn’t behaving right, works 98% of the motion but still has jitters that don’t make much sense to me. The main movement however is using an IK rig, and the IK bone is also setup with a follow-path constraint. So the two bones for point A and B are for hooks that define where the path ends are. (Animating the offset on the constraint, rather than the animation time on the path. As that seems to be in a place that makes more sense for this.) It’s a little more flexible as you can even animate where the A and B travel points are, so it’s not just one endpoint but two. (With a bit of cleverness in the timeline you could leapfrog them around with constant keyframes.) For some odd reason the path has to be offset from where it actually affects the travel, so that’s why I hid it off on another layer. I suppose a duplicate path in the “correct” position (in the visual sense) would still make it clear what’s going on though. (However I feel it’s probably intrusive to keep discussing it here, since this really should be robbur’s robot. The rig for these things is likely worth a thread over at Animation & Rigging.)
By the way, the steel frame building and palletizer robot are looking pretty neat. Going to put in other stuff like fork-lift bots and industrial shelving too? Also those little safety cage things (not really a cage, but a tube structure that lets you know where to stay clear) and warning lights, along with the floor markings? (Maybe I’m probably a bit early in mentioning that stuff though.)