Not logged inOpenClonk Forum
Up Topic Development / Art Workshop / Clonk model
1 2 Previous Next
- - By Newton [de] Date 2009-12-31 16:14 Edited 2009-12-31 16:44
Yesterday I checked out the mesh branch with Clonk-Karls new implementation and I am downright amazed to see the clonk rendered in realtime, freely zoomable. With several animations blended smoothly into each other, more than just the desired "walk and aim with the bow" functionality is possible but also what Clonk-Karl showed by the demo in the mesh branch: Blending between actions. With this, the clonk can really come to a stop (standing animation) instead of just stopping in one animation phase or blend over to a running animation when accelerating.

I want to dedicate this topic to a discussion about the new clonk, given the new possibilities and openclonk as a possible new start for our main character. I also have my own conception of how the clonk should look like and move.

Clonk Rage Clonk shape


Unless there is a completely new idea of how the clonk would look in the future, we start from what we have - the Clonk Rage clonk. That's why I will first write what I think went wrong when the Clonk was first modelled. My two big complaints against the clonk from Clonk Rage is shape of 1. the face and the 2. body.

The face
The proportions look ok when viewed from the side. But from the front, the face is flat like the surface of a balloon and actually almost shaped like it (like a heart-shaped one). Features like nose, chin, cheeks, ears, eyes and mouth are for some reason kept mostly as textures and are only indicated very slightly. Normally, the features of comic characters that don't aim to perfectly resemble the shape of real humans are exaggerated instead of hidden. The settlers2-character does e.g. not resemble the shape of a human but especially the face features are exaggerated - big nose, flappy ears, goggly eyes and the face itself is not flat at all. Same applies for other characters in computer games and comics like Asterix or Super Mario. I especially like the depiction of the clonk on the Clonk 4 title screen - but mainly just for the shape of the face and body.
That a comic face can also look good even if it doesn't caricature face features shows e.g. the intro video of the old Settlers2 game at position 1m18s

The body
The body of the clonk neither has a belly, chest nor ass. It is kept pretty generic - which does not have to be a bad thing. However, the body, legs and arms still look ill-shaped to me at least when viewed from the front: Ridiculously broad shoulders with super-short arms (neck-shoulder-distance is the same length as the whole arm) and thick legs without knees. Compare the clonk for example with luigi whose body is also kept pretty generic. The clonk still wears a "Ganzkörperanzug" (whole-body suit) which somehow seems to be tight-fitting in a weird shape which hardly qualifies as clothing.
The clonk needs clothes. There are many possibilities of different types of trousers, jeans, shirts, cloaks, coats, belts and jackets, boots (e.g. "Stulpenstiefel"), capes etc etc. But of course, the clothes can't be just a texture on his anorak, the shape must change too.

Animations


With a 3d model and a zoomed landscape, many animations are both possible and needed. For the walking/running cycle, it is important to sync the speed with the actual animation - otherwise it looks like the clonk is somehow sliding or moonwalking over the surface. In the current mesh tip for example, it looks really odd with which speed the clonk rushes over the landscape buy just lingering slowly.

So, I think it is time for at least three different animations that are blended over smoothly depending on the speed the clonk has: Stand (clonk is not frozen if he stands), Walk and Run(2).

Also, I want to list a few other actions that I'd like to see (reworked). For most animations, it's easy to find references on youtube when searching for keywords like "walk cycle", "run cycle", "jump animation" and so on:

  • Different jump animations: one for jumping up, one for jumping out of a run

  • Throwing (could look like this too - instead of the classical throw-in like in football) with variable direction. There could be special animations for certain angles like e.g. throwing up.

  • Hangling and climbing needs rework. It's more dynamic than sliding the arms back and forth ;-) - with more... swing. Found only one video for hangling.

  • A generic firearm-aiming animation as well as a bow-aiming, bow-shooting and bow-reloading animation



Finally, I want to ask Randrian to commit the .blend model to the openclonk-resources repository so that other modellers can work on new animations (and shape) for the clonk too.
Attachment: headfront.png (25k)
Attachment: headside.png (25k)
Attachment: body.png (39k)
Attachment: balloon.png (60k)
Parent - - By Randrian [de] Date 2009-12-31 17:16 Edited 2009-12-31 17:42
Well good description. I'll try to see what of these points I can do. The old whole-body suit is already gone, in favor of a bit of clothing (Trousers, Belt, Shirt and Suspenders). Walk is really a bit unfiitting for the moving speed of the clonk. I have synchronized movement and steps and the clonk has now to move his legs very fast^^ A Stand animation is also necessary. The old prerendered clonk even has one, but the engine hadn't really supported it, so it is not used.

And yes, I'll commit the model as soon as Matthes responds to my mail. He said, we could use this mesh (which was an old version of the CX Clonk) but I'll have to show it to him first before I'll commit it. So I am waiting for Matthes response and don't want to commit it before.

Here a rendered image of the clonk for everyone who doesn't know the actual mesh:
Reply
Parent - - By Randrian [de] Date 2009-12-31 19:41
So after some hard work I can present you my modified head. Still work in process.
Reply
Parent - By Ringwaul [ca] Date 2010-01-01 01:31 Edited 2010-01-01 01:37
Nice! I really like the design.

Also, as a general question, could Clonks have customizable clothes? It would be nice to distinguish various Clonks without needing to scroll through their names. Since we're only having one Clonk type (it seems), this could also help to distinguish between Clonk specialties.
Reply
Parent - - By MimmoO Date 2010-01-01 03:05
i dont know. i kinda liked the old version. i think the cheeks of this one are a bit too slim. hit face looks like a sharp triangle atm. the ears are ok, allthough the one on the second picture looks a bit pointy, elvish. in the first picture, the nose looks verry high, maybe this is ohnly because of the lighting. but good that you are responsive on netwons post.
Parent - By Asmageddon [pl] Date 2010-01-01 15:06
Well, Clonks are not exactly human, and I like that face, lets leave it as it is :P
Reply
Parent - By Matthias [de] Date 2010-01-01 03:39
Looks a little too monkey-ish. Probably, as Mimmo pointed out, because of the cheeks.
Reply
Parent - By Asmageddon [pl] Date 2010-01-01 15:05
Not bad, not bad. I really like it. Also looks like easy to modify and make other clonk out of him.
Reply
Parent - By Newton [de] Date 2010-01-01 16:18 Edited 2010-01-01 16:20
It is hard to predict how changes like this look like before they are done. I think you made the face a bit slimer (thus making the eyes rounder), the nose a bit higher, added some polys for ears and made the lower region even more slim to emphazise the chin.

The new version appears to be a a younger and slimer version of the old clonk mainly because the eyes are bigger and the shape of the face is more triangular, ape-ish than heart-shaped now. I don't think this is what you wanted to accomplish, because of that my first sentence.

I think it is possible to optimze the face a bit on the existent shape. You made the nose for example a bit bigger. But the style and shape of the nose remains the same - regardless of how big the nose will get based on this model, it'll stay bumb-shaped ("Hubbelförmig"). The same applies for the eyes. Without changing the style of the eyes, only the width/height can be adjusted - the eyes remain flat white discs behind two round holes in the skin as indicated by the shadows on the sides (sounds a bit negative but this is how they appear to me).

Without any concrete conception of how else the face could look in a different style, an optimization on the current model suggests itself and actually is the only thing one can do. But if any one got inspiration of how else the face/clonk model could look and since the face is seperated from the rest of the clonk model, I propose that he posts it here. I started this topic not just as a request to improve the model but also as a place for a discussion about the clonk model in general - including new concepts (for parts).

Otherwise, see Matthias.
Parent - By Shadow [de] Date 2009-12-31 19:52
I can feel the settlerclonk deep inside him :).
Parent - - By Clonk-Karl [de] Date 2010-01-02 03:40
Can you supply individual base and overlay textures? I will then try to get player colors working.
Reply
Parent - - By Randrian [de] Date 2010-01-02 13:53
I added an other texture for the overlay. Perhaps it would in some cases be easier to overlay the basetexture with the overlay and don't use an extra texture. This would especially be usefull for small overlays, which don't fill one entire face. For example a cross for a knight on his chest. This would be more complicated to make the cross in the mesh to assign the overlay texture to the faces of the cross.
Reply
Parent - - By Clonk-Karl [de] Date 2010-01-02 14:18
Hm, so the overlay you committed to the repository is just the base texture in greyscale? What I had in mind is doing the same as what we currently do for bitmap-based graphics: Use a base texture which only contains the parts of the texture which are not going to be colorized (rest goes transparent), and an overlay texture containing only the part to be colorized.

> Perhaps it would in some cases be easier to overlay the basetexture with the overlay and don't use an extra texture.


I am not sure I understand this. Do you mean putting both base and overlay into a single texture? If so, then I don't think this works with multitexturing with which I planned to implement this feature (multipass rendering might work though, but I am not sure how to obtain the texture coordinates for the second pass then).

> For example a cross for a knight on his chest. This would be more complicated to make the cross in the mesh to assign the overlay texture to the faces of the cross.


Well, you would have a texture which is mostly transparent except for a small part (the cross). Might be a bit wasteful, but should be easy to create I guess?
Reply
Parent - - By Randrian [de] Date 2010-01-02 15:14 Edited 2010-01-02 15:28
Ok, I missunderstood you I think. I have assigned the faces of the trousers of the clonk a new texture named Overlay.png (which is a grayscale version of the texture I had before). That means every part of the clonk is just drawn with one texture. The clonk with the color version, the trousers with the grayscale version, which can be coloured in the players color.

The perhaps better (or easier) method would be to draw the clonk with two textures. One in colors for the normal pars and one transparent expect an area with represents the overlay. That's the method I mentioned in the post, cause I thought you wanted to implement the first method.

Then you just need a graphic with everything transparent, except the trousers?

I hope I have expressed me a bit clearer now.

Edit: Commited new texture and overlay now. I hope this is now what you expected.
Reply
Parent - - By Günther [de] Date 2010-01-02 17:50
Separating polygons into color-by-owner and normal textures would require fewer texture units, but drawing the entire model with the same sets of textures would require fewer drawing passes. I'm not sure what's more efficient - it might even depend on the GPU - but using transparent parts of a texture instead of specifying that the texture is not to be used should result in the same result, and leaves the option of using semi- or partially transparent textures.
Reply
Parent - - By Atomclonk [de] Date 2010-01-02 18:09

> ...and leaves the option of using semi- or partially transparent textures.


Wouldn't this do display problems, or things like when you insert a transparent background in CR?
Reply
Parent - - By Günther [de] Date 2010-01-02 18:34
No.
Reply
Parent - By Atomclonk [de] Date 2010-01-02 22:57
But who needs this, if we can save resources? :/
Reply
Parent - - By Randrian [de] Date 2010-01-02 17:44
So, here the first reworked version of the Clonk. Please tell me your opinion on it.
Reply
Parent - By Asmageddon [pl] Date 2010-01-02 17:48
Yeah, it is much nicer, but maybe we should have few various heads, so clonks will not just be clones of each other :P
Reply
Parent - By Matthias [de] Date 2010-01-02 17:51
I think his face is too narrow for the same texture. The eyes are too close together now, making him look somewhat.. stupid.
Reply
Parent - By Atomclonk [de] Date 2010-01-02 18:05
I like the body from the reworked model, but the shape of his old face was much more... cuddly.
Reply
Parent - By Sven2 [de] Date 2010-01-02 19:16
I prefer face + body of the old model. The new one is so skinny.
Parent - By MimmoO Date 2010-01-02 19:25
good work. i would prefer to use the old head, new legs, old hands+arms, but new shoulders.
Parent - By Ringwaul [ca] Date 2010-01-02 22:14
The new body looks much better. However, I'll agree that the new face looks weird; your first reworked head was good stuff.
Reply
Parent - - By Randrian [de] Date 2010-01-03 14:20
Voilà new walk behavior in the mesh branch. When not moving, the clonk plays a stand animations. When moving slowly he walks, when moving fast, he runs. And the animations are blended smoothly. Well, it would be more fun, when we merge the default into mesh, so we could have this acceleration, so the Clonk actually uses walk (now he just starts to run).

Also for the different jump animations it would perhaps be good, to have the new jump behavior from default in mesh.

The throwanimations may look nice, but for throwing while moving (run or jump) we'll still need the old-style "throw-in" animation, or force to halt when throwing.

Another important thing we need is "attaching" things to the clonk. For example for digging the clonk needs to hold the shovel. For the firearm-animation he has to be able to hold a weapon. Well ck, that should be your task I think. Perhaps we need to discuss a bit how this should be done. My idea is to have a bone in the clonk's animation named tool1 or something like that and via script you can attach another mesh (or the meshes bone 'main' or something like that) to that bone.
Reply
Parent - - By Clonk-Karl [de] Date 2010-01-03 18:40

> Another important thing we need is "attaching" things to the clonk. For example for digging the clonk needs to hold the shovel. For the firearm-animation he has to be able to hold a weapon. Well ck, that should be your task I think. Perhaps we need to discuss a bit how this should be done.


This is only about attaching meshes, not about attaching objects, right? I am somewhat afraid of the latter because of network synchronization issues. So would something like the following be enough as a first step?

int AttachMesh(id source, string bonename);
bool RemoveMesh(int attach_id /* return value from AttachMesh */);
Reply
Parent - - By Randrian [de] Date 2010-01-03 19:42
Yes, that sounds good. But why only one bone name? The clonk has one bone and the new mesh has one bone. These both bones have to be attached together. Or do you want to use a standard bonename like 'main' for the new mesh?
Reply
Parent - By Clonk-Karl [de] Date 2010-01-03 20:21
Oh, ok. So let's use string bone1, string bone2 instead. And maybe rename RemoveBone to DetachBone, so the wording is symmetric.
Reply
Parent - By Clonk-Karl [de] Date 2010-01-10 23:24 Edited 2010-01-10 23:29
I have implemented this. The final functions look like this:

int AttachMesh(id mesh, string parentbone, string childbone, [opt] int scale);
bool DetachMesh(int attachnumber);


AttachMesh returns nil if some error occurred, or a positive integer otherwise which can be supplied to DetachMesh to remove the mesh again. Meshes also can be attached recursively, and attached meshes can play animations, but there is no C4Script interface for that functionality yet. scale can be used to scale the attached mesh by a constant factor (in case the child mesh was modelled at a different scale than the parent mesh was). 1000 means no scale, 500 makes it half as big, 2000 doubles its size.

It might also make sense to allow arbitrary transformations, for example to attach a bone to another one with a fixed offset and/or rotation.
Reply
Parent - By Randrian [de] Date 2010-01-04 01:02
Here the hangle animation. Sarah helped a lot to make the clonk move dynamic. Perhaps we need a turn animation too... or at least make the clonk stop before turning.
Reply
Parent - - By Newton [de] Date 2010-01-05 00:22
Found a few more references for animations:
Parent - - By Randrian [de] Date 2010-01-05 00:43
well i just tried to make some kind of diving rotation, by blending two animations (swim straigth and swim down) but this looks strange without slerp (ck it's up to you!). Perhaps a rotation with SetObjDrawTransform would also be an option.
Reply
Parent - - By Newton [de] Date 2010-01-05 01:26
or SetR?
Parent - By Sven2 [de] Date 2010-01-05 12:39
If we make the Clonk rotatable, we'd have huge side effects on other procedures (WALK, FLIGHT, etc.). The CR dragon is doing this and it needs to adjust rotation permanently.
Parent - - By Clonk-Karl [de] Date 2010-01-05 03:09

> well i just tried to make some kind of diving rotation, by blending two animations (swim straigth and swim down) but this looks strange without slerp (ck it's up to you!).


Can you send me these two animations? I have experimented a bit with the blending problem, and it seems that normal interpolation is enough if one renormalizes the rotational part of the transformation, but maybe there are still other cases where it does not work, so it would be good to double-check with this.

However, once this code has made it into the engine (hopefully some time tomorrow) it will be fairly trivial to change the interpolation mode.
Reply
Parent - - By Clonk-Karl [de] Date 2010-01-05 22:44 Edited 2010-01-06 00:10

> However, once this code has made it into the engine (hopefully some time tomorrow)


Done (in mesh branch). Tell me if these animations do still not blend correctly - I'll add spherical interpolation then.

In case some of you need inspiration for more species that might fit into Clonk, feel free to look at the ones I encountered today while coding this. I especially like the second one ;)
Reply
Parent - By Ringwaul [ca] Date 2010-01-06 00:36
Heh heh. The thumbnail of the second picture looks like dragon-skeleton, or maybe some seabird.
Reply
Parent - By Newton [de] Date 2010-01-06 01:07
Next time make videos of it ;P
(f.e. with RecordMyDesktop)
Parent - - By Randrian [de] Date 2010-01-08 00:12
Ok I commited an swimming behaviour with diving. The clonk now rotates in his diving direction (by blending one animation DiveUp with a DiveDown). Have a look and tell me if you like it.
Reply
Parent - - By Sven2 [de] Date 2010-01-08 13:13
Rotation while swimming is pretty cool. The animation itself looks a bit static imo; his torso does not move at all. Maybe you could add the same animation trick you did for hangling, i.e. have the Clonk move more slowly when he does not accelerate with his arms, but catch up faster when he does acceleration (I believe you did this by adding an offset to the model?).

Also, there should be a SwimIdle animation when you do not move forward.
Parent - - By Randrian [de] Date 2010-01-08 14:48
Well, his torso should rotate up and down a bit... (in Blender he does). The different speed is now scripted not very well, I just changed the hangle physicals of the clonk. Perhaps you know a better solution for that or we could implement something in the engine. But the method you mentioned, adding an offset isn't very good in my opinion (changing actions, would result the clonk to make a jump and the clonk wouldn't be at the position he is shown).

Yes, a DiveIdle animation would be a good idea, but I had no idea, how you actually move, when you want to stay at a position underwater.
Reply
Parent - - By Sven2 [de] Date 2010-01-08 17:59

> But the method you mentioned, adding an offset isn't very good in my opinion (changing actions, would result the clonk to make a jump and the clonk wouldn't be at the position he is shown).


We can script SetPhysical and push it into the engine if it happens to become a performance problem.

> Yes, a DiveIdle animation would be a good idea, but I had no idea, how you actually move, when you want to stay at a position underwater.


Just moving your hands up and down a bit I guess. He might also assume a vertical or diagonal position underwater. It just looks weird right now because the Clonk actually seems to swim forward while he's not moving.
Parent - By Randrian [de] Date 2010-01-08 19:07
Well, I tought SetPhysical might be not that elegant, cause that can cause problems, when one wants to change the speed (e.g. a wipf potion). But perhaps that's all ok, when the effect system takes care of it.
Reply
Parent - - By Newton [de] Date 2010-01-08 17:43
I noticed something odd in the swimming animation. I made some screenshots and compared and it confirmed my impression: The clonk is kinda streched (longer and slimer) when he swims to the side which is really odd as it is all blended over. I suggest that you use SetObjDrawTransform rather than blending two animations which are angled differently. Then you won't have any of these blending problems. See screenshot.

Other things:

  • When on the water surface without swimming either left or right (XDir=0), the clonk should at least pedal with his legs and have his arms in a ~90° angle

  • Swimming on surface: When swimming like this, people normally turn their head all the time to breath. We could introduce some less acceleration on swimming so that the blend between a floating and a "wie ein Brett!"-swim animation is more smooth

  • I think the turning should be different to avoid two situations that looked odd while testing:
    1. Dive down and stop. The clonk's animation is still swimming down
    2. From that state, swim a bit (3x times the clonks height) up. The clonk spends all this way to turn around from facing down to facing up. So during the turning, he swims backward?

    I think this can be solved by orientating the clonks rotation (more) to the current movement. This results in a more jerky (ruckartig) rotation though.

  • Since the clonk is mainly horizontal when swimming, it is really noticable (jerky) when the clonk turns around left<->right. A turning animation would be very fitting here. In the background of the previous point, a up<->down turning animation could be nice too.

Parent - - By Sven2 [de] Date 2010-01-08 17:54
I wouldn't use SetObjDrawTransform, as it will stop us from ever using DrawTransform on Clonks for anything else. I'm sur ethe issue of slim Clonks can be solved e.g. if we introduce a second animation for swimming forward, so we can blend between Up/Forward and Down/Forward depending on the situation.
Parent - By Günther [de] Date 2010-01-09 22:34
Drawtransforms can be stacked, just like they already are when an object is rotated with SetDir. Sure, you'd have to coordinate somehow, but that can be done by a function in the Clonk.
Reply
Parent - - By Clonk-Karl [de] Date 2010-01-08 18:41

> A turning animation would be very fitting here.


The same goes also for the normal Stand/Walk animation IMHO. Especially when zooming in a bit one can see that the Clonk actually beams itself by a small amount when turning around currently.
Reply
Parent - By Randrian [de] Date 2010-01-08 19:10
Yes, a turning animation for all animations is still on my mental TODO list. But I am not quite sure if this woudn't introduce a few problems when done by script, cause the clonk needs to slow down first and not move while turning. But perhaps this can be done by adjusting the physical. I'll have a try.
Reply
Parent - - By Randrian [de] Date 2010-01-08 19:19
Ok, I think I'll have a try on blending between an up/side and side/down animation. This is probably better.
The clonk doesn't turn his head when surface-swimming cause he hasn't his head unterwater. But I can change this. The acceleration can only be changed in the engine, doesn't it?
Well and a dive-idle and dive-turn animation is necessary...

Btw. why did nobody notice that the clonk's hands are going through his body while diving? That is also a problem of the blending. In Blender I modeled the animations right.
Reply
Up Topic Development / Art Workshop / Clonk model
1 2 Previous Next

Powered by mwForum 2.29.7 © 1999-2015 Markus Wichitill