Good animations in blitz?

Blitz3D Forums/Blitz3D Programming/Good animations in blitz?

poopla(Posted 2003) [#1]
Is it possible to get a mesh animating nicely in blitz? Ive heard tons of complaints about how blitz handles stuff poorly and would love some info on what to look out for/limitations in using animations in blitz.


Beaker(Posted 2003) [#2]
What complaints?


jhocking(Posted 2003) [#3]
I find that Blitz handles animated models quite well. Incidentally, this strikes me as a rather basic question coming from a "Project Plasma" developer.


Ricky Smith(Posted 2003) [#4]
The only limitation is that weighted vertices using bones are not supported - apart from that I think it does a great job !
It supports all types of animation, 3ds, MD2 and its own .b3d format - All of which can be mixed and matched - Using the a boned .b3d you can manipulate the joints to merge real time with loaded anim sequences and so on....
I certainly wouldn't complain !


poopla(Posted 2003) [#5]
Thanks for that instulting remark jhocking. Point being Ive so far in all my coding practice devoted my time to implementing things that work well, and that are useful. Animations are something I havnt messed with much because they are purely aesthetic in nature. I havnt worried about stuff that was only there too looks good until now.

As to the more constructive comments, I've heard people say things like "Good luck getting the animation to look that good in blitz", etc. Is this simply a lack of quality exporters/features in popular modelling packages?


jhocking(Posted 2003) [#6]
I don't know what Internet you've been frequenting, but an insult would be calling someone a moron or using swear words or something. I guess this'll teach me to answer someone's question.


Moses(Posted 2003) [#7]
I use milkshape myself and i have only had problems with milkshape and animation, anything that i do in milkshape and export to .b3d and use looks just as good(if it is good) in blitz with the right transitions, i haven't had any problems at all. Perhaps the problem lies with the person doing the animation rather then blitz, crap in - crap out applies here i think. :)


podperson(Posted 2003) [#8]
Blitz3D seems to me to have excellent support for animation. The major annoyance at the moment is getting animations from Max, Lightwave, Maya, etc. (i.e. professional 3D modeling and animation tools) into B3D format. The most popular shareware tools (CharacterFX, Milkshape, and Ultimate Unwrap) are very well supported.

It's pretty easy to export animations from high end tools as MD2s (which have significant limitations) because Quake 2 was so popular. So if you want to use high-end tools you can use MD2 for now and wait for a one-click export to B3D, or you can look at some of the workarounds people (like Joe Hocking) have published for getting from Max to B3D using a shareware program as a file converter.

If you were working on a reasonably well-funded project (this seems to include *none* of us), the cost of writing a B3D export tool for our 3D weapon of choice (e.g. Maya) would be trivial.

If and when I produce a "serious" project in Blitz3D I'll write scripts to export meta-information along with my model from Max (or Maya if I decide to switch). For the moment, I'm using MD2s as a stopgap and they look fine (even the lighting issues endemic with MD2s don't seem too bad to me).


(tu) sinu(Posted 2003) [#9]
it really comes down to your skills as an animator other than that missing weighted vertex is the only letdown but clever rigging can overcome that.
That is if your using boned meshes.


Anthony Flack(Posted 2003) [#10]

from Max (or Maya if I decide to switch).



Rather an expensive thing to be chopping and changing, to be sure.


Ricky Smith(Posted 2003) [#11]
The issue is not wether Blitz can handle animation but how to get that animation into Blitz from high-end animation tools.
Milkshape is primarily a modelling app and so its animation features are limited but when used in conjunction with CharacterFX which does IK boned animation acceptably well you can get excellent results. Both export directly to the B3d format.
There is also a BVH importer for Milkshape which allows you to import motion data from programs such as Poser. You then have to build your mesh around the imported animated skeleton without moving or rescaling it to preserve the animation . Using this method I have obtained good results.

There are 2 Max exporters being worked upon at the moment that claim to support all animation including Biped & Physique - If this happens then I'm sure we'll see a lot of good animation in Blitz - however we wont see truly 'bendy' type bone animation till it supports weighted vertex.


QuickSilva(Posted 2003) [#12]
Sinu: clever rigging can overcome that.

Any examples on how you rig your characters as I cannot get any decent results here. If I pose my characters arms out when modelling the shoulders seem to collapse when I bend them back down to animate them and the same happens if I pose them down when I try to rotate them up.

Smiff: CharacterFX which does IK boned animation acceptably well.

I have never been able to get CFX`s IK working properly, any hints on how to use it for others like me as I haven`t seen any tutorials on this subject.

Jason.


Ricky Smith(Posted 2003) [#13]

I have never been able to get CFX`s IK working properly



The IK in CharacterFX is quite basic and you should not expect too much from it.
I always disable the 'use joint limits' as this can cause some unexpected results.
Dont try and rotate or position the root joint (usually the pelvis) - with the IK tool, if you need to do this use the standard rotate tool.
Check that the correct joints are set to be IK chain terminators - normally this will be either just the pelvis or the pelvis and upper thorax(central pivot for shoulders). If you set the upper thorax as an IK terminator then you can animate one arm without effecting the other etc.
The IK tool is really an aid to 'posing the figure' , helps to create more natural movement and can save time having to move/rotate each joint individually - you dont have to use it.


Tom(Posted 2003) [#14]
If Blitz3D had some commands to assign vertices to bones, I imagine it would be pretty easy to create an animation program using Blitz...I'm off to the requests forum I think :)

Tom


Dock(Posted 2003) [#15]
Exactly how much of a hit is it on performance if you have a more complex skeleton in Blitz? A skeleton with 10 bones vs a skeleton with 30 bones, is there much of a difference?

The reason I ask is that skeletons generated from Character Studio are rather complex, and I was wondering whether this would have a negative impact on the performance in Blitz.


Ricky Smith(Posted 2003) [#16]

If Blitz3D had some commands to assign vertices to bones, I imagine it would be pretty easy to create an animation program using Blitz



This would be handy but then theres no command to save .b3d - and we dont know how .b3d's are stored in memory to be able to write one.
You dont actually have to parent each vertex to a joint - the vertex are parented to the joints during the loadanimmesh process using information stored in the .b3d - all you have to do is modify this information within (a copy of the original) file and reload .
You can create tiny cubes for vertex and spheres for each joint while displaying the model in wireframe to get a gui.
I plan to use a similar method to create a 'Walk Generator' for .B3d similar to the one in Poser.

Exactly how much of a hit is it on performance if you have a more complex skeleton in Blitz?


Its down to the model used rather than the joints.
Each joint and its assigned vertex have to be processed on each frame of animation - not just the key frames - The joints themselves are not the problem - they are like pivots - but if you have a high polygon model then a lot of vertex positions have to be calculated each frame.
With low polygon models you should be able to use a high number of joints with little or no hit on performance.


jhocking(Posted 2003) [#17]
"we dont know how .b3d's are stored in memory to be able to write one"

Huh? Lot's of people have written routines to save to b3d file format. But wait, then you refer to saving a b3d model: "a copy of the original." I'm getting confused; what are you talking about? Are you saying that you assign vertices to bones by parenting?


Ricky Smith(Posted 2003) [#18]

Lot's of people have written routines to save to b3d file format



Yes sorry .I was referring to B3d animation data created by using AddAnimSeq.
If in an Animation type application you add an animation sequence to an animated mesh, create a few keyframes etc then where is this information stored ?
Thinking about it the solution is simple - you would loop through the animation writing out the data at each frame - what a dipstick !

Are you saying that you assign vertices to bones by parenting?



No, I'm saying that the LoadAnimMesh process does the 'parenting' for you - you dont need to actually parent anything to anything just modify the BONE chunk in the .b3d file - reload - and the vertex are reassigned.

BONE:
{
int vertex_id ;vertex affected by this bone
float weight ;how much the vertex is affected
}



But wait, then you refer to saving a b3d model: "a copy of the original." I'm getting confused; what are you talking about?



Sorry once again for not explaining properly - I just meant that the write operations should be on a working copy of the original for obvious reasons.