the science behind the sneak previews part 1

Dieser Beitrag auf Deutsch.

Today, I’ll finally explain a bit about the sneak previews I recently posted.

All goes back to a crazy idea I had a long time ago, which I have elaborated on publicly for the first time in my SVP 2011 talk.  I’ve written about it in three instalments here, here and here. Since and even before then I have repeatedly started writing a proper paper, but for various reasons never was happy with it. And I wasted a lot of time trying to get some kinetic/dynamic models to show what I expected – no joy, because it is very difficult to model two different motions exactly comparable. More on that later.

Anyways, let’s have a look at those sneak previews again, this time with some explanatory text.

fiddling_2

First off, we have here – again – an old acquaintance. For all those who are not as Triassic European dinosaur-affine as me, here are a more inclusive photo:

The Dinosaur Hall of the Tübingen Museum (Panorama from 5 Photos, thus some distortion)

The Dinosaur Hall of the Tübingen Museum (Panorama from 5 Photos, thus some distortion)

there he is, the one on the right, drinking or feeding from the ground. By now I am absolutely sure you all have recognized the specimen: GPIT/RE/7288, a Plateosaurus engelhardti from Trossingen, SW-Germany.

So the above screenshot shows the right hind limb and the hip, plus a few proximal caudal vertebrae, as rather small digital 3D models. Derived from CT scans, so the general shapes are accurate, although fine details have been lost when the files were reduced in size. That’s by far good enough for a SIMM model, because the muscle origin and insertion sites need not be determined within SIMM, but can obviously be determined by studying the real bones. The SIMM bones need only be good enough to find the same place on them that one has decided housed the muscle attachment on the real bone.  Theoretically, you can forego bones entirely in SIMM, they are only an optical aid. But that aid saves you hours upon hours of figuring out the coordinated of a muscle attachment that you’d otherwise need to put into the model.

How to build a SIMM model

I guess it is time I give you an idea of what SIMM is, and how one needs to proceed to efficiently build a model. There’s a bunch of stuff you can do in SIMM but are better served if you do it outside SIMM, and simply import the results.

First of all, it is important to understand the structure of a SIMM model, and of the program. It is a bit…. convoluted, and makes for sometimes very convoluted editing.

Basically, a SIMM model is defined in text files. There is one text file you must have, the joint file (JNT). It can have any name you want, but must have *.jnt as the extension, which is why I will use the short JNT for this file. It defines the joints of the model (well, duh!), but it also defines a ton of other things. You can write a JNT file from scratch, but it is much easier to adapt an existing one.

In a JNT file you define a lot of basic things about your model, for example the direction of gravity relative to the axes of the model, and the position of your model view window. You can define cameras (i.e., view positions) that you can later jump to; these also go in the JNT file, along with definitions of the colours SIMM is to use for displaying various materials.  And a ton of other things that don’t matter for building the model, so I’ll ignore them for now.

The meat of a JNT file, though, as the segments, the joints and the gencoords of the model. “Gencoord? What’s that? I know joints and I know segments, but what is a gencoord?” you may be tempted to ask. In fact, everybody is. Well, a gencoord is nothing but a variable, a term you define the value of which can vary. In your model, a gencoord corresponds to one degree of freedom in a joint, one of the three rotation or sliding axes of a Cartesian system. For each gencoord you can set a range of values it may not exceed, and you define what the value of the gencoord depends on. That’s important because not all things change linearly, and some depends on others. A really cool example of the latter is the wrist of birds, which is coupled with the elbow. If the elbow is flexed, the wrist must follow suit. In SIMM you can mimic that behaviour by making the elbow flexion gencoord dependent on a function, and the wrist dependent to -1 times the same function. Voila, your wrist flexed with the elbow! Probably you need a few refinements to that, e.g. by using a different factor than simply -1, but you get the drift.

Now, I’ve used the baaaad baaaad f-word: function! There, did it again! :( Well, there’s no helping it: you need to define functions for your model to work. In SIMM, functions are defined by points, between which the program interpolates curves, for example cubic splines or  simple linear connections. You can, however, create some pretty complex interactions with this setup.

So, what do you really need to build? First of all, the segments. You need to decide into how many different pieces you want to split your model. Each piece is static within itself, it can’t bend, flex or have parts within it move versus each other. Motion can only occur between segments. Thus, a segment is the model equivalent of a functional part of a vertebrate’s skeleton: a limb segment, typically, or an akinetic skull, a mandible. With the vertebral column you can use the same approach, and model each vertebra as a separate element, and each rib (or pair of ribs), but that quickly makes your model rather cumbersome to work with. Plateosaurus est omnis divisa in partes septem: pelvis, thigh, shank, metatarsus, and three segments for the proximal, second, and combined third and fourth (ungual) phalanges of the middle (3rd) toe.

Why this split? Because those are the segments I am currently interested in. The tail, swinging left to right or up and down, was not part of what I was studying, thus it was made part of the pelvis segment. I can make up a new segment and shove it in there if needs be, and I can similarly split the two unguals I grouped. I can add further segments for the missing toes I, II, and IV (V is so tiny nobody needs it).

SIMM_JNT01

This is what the relevant part of the JNT file looks like. You can assign a mass and define the center of mass position for each segment, and you can add “bones”. A bone is nothing but a polygon mesh file, a specific version of an STL file, using the ending *.asc. it doesn’t have to be one bone of the real animal, or a bone at all, it can be anything you want. Because typically you want to see the bones, though, to place the muscles on, the name “bone” and the command “bone” that adds a file as a “bone” object are appropriate.

So, that’s all there is to segments, aside from toggles for displaying a marker for the center of mass and for inertia.

And on the next big step: we finally get to the joints. A joint connects two segments, and you need to define not only which two, but also where it does that, and what rules govern the motion in the joint.

SIMM_JNT02

That’s what joint definitions look like in the JNT file. A name, two segments, definitions how the axes of the joint are arranged (in this case, all are parallel to the axes of the world coordinate systems, thus the many zeros and a few ones). And six functions for the three translations in reference to the world coordinate system (tx, ty, tz) and the three rotations (r1, r2, r3).

As you can see ALL degrees of freedom of each joint are here defined via functions. There’s f1 and f2, which are two different functions, and behind each call-out of a function is a gencoord. The one defining how the thigh segment moves versus the pelvis along the x-axis of the hip joint is called hip_Tx. The actual motion will be the y value you get from function f1 if you enter the x value you want.

But why do I have functions for each and every little shit in there? The hip joint can easily be approximated by a ball and socket joint, so no changing translation is necessary. It only needs to be positioned in a certain place, thus instead of having hip_Tx, hip_Ty and hip_Tz I could simply have numbers there! Elementary – because I am an extremely lazy person, and instead of typing all this up I simply used a deus ex machina that made me a file. More on who that genius is – later!

One thing that I should mention now is the architecture of a SIMM model. You always have a “ground”, from which your first segment must start. Any segment you now connect to the first segment is offset (the translation and rotation values), measuring from the previous joint. No, not from the world origin, but from the previous joint. This means that in the example above, the ankle is f1(Tx_ankle) further down the x-axis than the knee, not the world origin. If you forget this it can get pretty hairy pretty fast.

The other things you need to know – and no, it is not as obvious as it may sound – is that your model can branch. It can be tree-like or bush-like, with one, two or many segments hanging of one “parent”, and you can also hang several “fist” segments on the “ground”. However, what you can’t do is merge lines of segments: you can’t have loops!

OK, enough for now, next post will go into all that function stuff a bit more, and add flesh (muscles) to the bone! To make up for the dearth of photos in this post, to celebrate the beginning of summer (already! we haven’t had spring yet) here’s a Spotted Thick-knee (Burhinus capensis) tanning.

tanning

Posted in "Prosauropoda", 3D modeling, Digitizing, Dinosaur models, Dinosauria, locomotion, Plateosaurus, Sauropodomorpha, SIMM | 1 Comment

that time of year again

Dieser Beitrag auf Deutsch.

frog03

frog04
Common frogs (Rana temporaria) in my garden. See instance from 2012.

Posted in Anura, lower vertebrates | 1 Comment

Another science sneak preview update

Dieser Beitrag aud Deutsch.

It has been deathly quiet here, because I was desperately trying to finish my paper. It was due on April 30, and that deadline wooshed by spectacularly. However, I managed to get the thing into a presentable form and submit it Monday evening – PHEW! Now I just hope that the reviews and revisions (and there will be quite a lot to revise, I’m afraid) can get done in time for the intended publication date just before SVP in Los Angeles.

For now, here are two figures from the submission, to whet your science appetite!

sneak_02

sneak_03

Posted in "Prosauropoda", 3D modeling, Biomechanics, Dinosaur models, Dinosauria, Diplodocus, locomotion, mammal models, Mammalia, Plateosaurus, Sauropoda, Sauropodomorpha, sneak previews | 9 Comments

Science sneak preview update

Dieser Beitrag auf Deutsch.

the fiddling pays off:

fiddling_2

hind limb muscles of Plateosaurus engelhardti, with some corrections made following hints from my colleagues Vivian Allen and John R. ‘The Hutch’ Hutchinson, and with wrapping objects in.

This one is ready for moment arm plots! :)

Posted in "Prosauropoda", 3D modeling, anatomy, Biomechanics, Digitizing, Dinosauria, locomotion, MfN Berlin, Plateosaurus, Sauropodomorpha, sneak previews | 1 Comment

How not to build an abstract submission webpage

It is that time of year: all palaeontologists in the English-speaking world try to predict the future, and know now what brand-new and interesting research results they will have found by late fall. That’s for submitting an abstract for the Annual Meeting of the Society of Vertebrate Paleontology – a gargantuan meeting made much worse than it needs be by deliberate choices made by the Society. Like the choice of usually running parallel sessions of massively overlapping topics, like “tetrapod locomotion” and a “dinosaur” session that has nearly only biomechanics talks. Or by how the abstract submission page is set up.

First stupid decision is that you can’t log in with your SVP member login data. Doesn’t say so, though – you need to guess that when your login attempts fail. Luckily, the guy running the SVP member page help is a very nice person and replied to my exasperated email quickly.

Then, you need to add your authors for the talk, and one of them must be a member of SVP. OK, I joined the society over 5 hours ago (time stamp of email confirming my membership), so I should be able to submit as the sole author, right?

WRONG!

I am, according to the system, not a member. Searching for my email, last name, member number doesn’t help: I am officially NOT an SVP member.

Now, I’ve been frustrated by often complicated and badly run SVP websites before, for example a WYSIWYG site a few years ago that pretended to show you what your name tag would look like – only to find that once I got there the name of the museum was suddenly mis-spelled with an u instead of an ü. If that had been shown correctly, I could have replaced the u with an ue instead of an ü, which would have been a correct spelling. Minor stuff, to be sure, but that’s the kind of “we pretend to try but then just don’t do it” stuff that annoys me. Or offering an option called “talk only”, as opposed to “talk, or poster if talk not possible”, then turning my “talk only” submission into a poster. WTF?

But this really takes the cake: that it takes more than 5 hours to update the database, so that someone who just forked over $125 can submit an abstract.

I emailed the admins, let’s see if and when this gets fixed.

Posted in rants, SVP 2013 | 6 Comments

Theropod-Thursday 46: garden variety beasts

Dieser Beitrag auf Deutsch.

Lately, I’ve been trying to do a photographic inventory of all sorts of garden-variety bird. Our garden, that is. And suddenly sheer dumb luck handed me prime photo opportunities.

A Siskinvasion!

garden_var_06

Ever since a squirrel tilted the entire reservoir of our birdfeeder to the ground we have been besieged with songbirds. Huge flocks of up to 40 Eurasian Siskins(Carduelis spinus), a handful of House Sparrows, a few Common Chaffins – they all have taken up constant residence in our garden. Today I spotted, but was unable to photograph, a Hawfinch, too. The tits – Blue, Great Zombie, Long-tailed – are also still around, but it seems they find enough food elsewhere by now, where there is less of a racket. Common blackbirds are all over, but not interested in the bird seed. They can get earthworms galore right now, especially where a mole has taken it upon himself to ruin our garden, especially the raised flowerbed. Other regulars include Eurasian Wrens, Eurasian Nuthatches and Eurasian Magpies, as well as
garden_var_07
Common Wood Pigeon (Columba palumbus) – this pair nests in a big fir tree in front of our house.

garden_var_05

Male European Greenfinch (Carduelis chloris)

garden_var_04

Male Common Chaffinch (Fringilla coelebs).

garden_var_03

Male Eurasian Siskin – usually in much smaller numbers than this winter.

Rarer guests include:

garden_var_02

Brambling (Fringilla montifringilla). Left a female, right a male in breeding-plumage, which includes a black instead of yellow beak. A rare winter visitor here, although there are some breeding pairs that stay in Germany. I have never before seen one.

What with the general commotion and the huge number of birds there is quite a bit of interaction to watch:

garden_var_01

Sneak attack by one female Eurasian Siskin on another! It’s kinda funny how the attackers shadows (quite literally!) the unsuspecting victim.

Overall, I was quite surprised over the last few days how many different birds showed up. Now I am looking forward to see what spring and summer will bring.

Posted in Aves, Berlin, Dinopics, Dinosauria, Maniraptora, Theropoda | 2 Comments

Another science sneak preview

Dieser Beitrag auf Deutsch.

fiddling

fiddling with a SIMM model. I am adding the wrap objects that make sure muscles do not run through bones or other muscles. And let me tell you: it is a bother!

Posted in "Prosauropoda", 3D modeling, Biomechanics, Dinosauria, Plateosaurus, Sauropodomorpha, sneak previews | 4 Comments