Blitz3D is fast, but...
Miscellaneous Forums/General Discussion/Blitz3D is fast, but...
Hi all,
Blitz3D is fast, but it seems that it
lacks a complete LOD to speed up rendering.
Do you think so?
No, I don't think so. LOD is easy to write yourself, and probably better to write yourself.
And wrong forum?
B3d has LOD doesnt it? (Well at least for terrain)
For terrain, yes, it does.
Well isnt that enough?
Dont you just "swap" models for close or distant viewing?
Dont you just "swap" models for close or distant viewing?
Yep, pretty much. Bundle a low, medium and high poly version together. Hide the low and medium when it's up close, hide the low and high when it's mid-distance and hide the high and medium when it's far off.
I haven't found polycount to be a big factor in render speed. Fill rate seems to be a much bigger issue.
I haven't found polycount to be a big factor in render speed. Fill rate seems to be a much bigger issue.
Agreed. Fill rate, and surface count, will bring your game to a halt way before poly count.
And if you do use/code LODs make sure to add the FOV in the formula too - narrow FOV and just distance based LODs makes one very ugly looking game :)
I haven't found polycount to be a big factor in render speed. Fill rate seems to be a much bigger issue.
LOD isn't so much for rendering as it is for other CPU computations like collision. When you start working with more than just a simple rendering system, you will find that the game quickly changes.
Fair enough. Although most of us don't find the CPU to be the bottleneck either.
As a point of interest, how do you use LOD with collision? Do collisions happen differently at different distances? Or do you simply mean you use low poly hulls (compared to to what you display) all the time?
Do collisions happen differently at different distances?
lol
I must admit that when you cannot see the object I "Guess" if a collition happend.
Just run collision with whatever mesh happens to be the current LOD version. This will cause errors under a few unlikely conditions, and the potential for error is negligible.
LOD will also improve rendering performance significantly, if you are drawing a demanding scene. If you can reduce your render polycount by 50%, then a transform-rate limited scene will draw faster.
If you're just moving a few objects around on the screen, LOD is unlikely to make any real difference, since these scenes are fill-rate limited. A far away object does not increase the fil-rate demand hardly at all, but it will increase the transform-rate demand, by a lot. Until you get to the point where you have enough polys to actually slow down the renderer transformations, LOD won't make any difference.
LOD for skinned meshes would help a great deal. Blitz3D uses a software solution for vert deformation as far as I know, so less verts = less math = more speed and/or more characters on screen?
That skinned meshes point is an important question for me. Because I want to have a lot of characters simultaneously in my current project, I have been modeling them with incredibly low poly counts. However, is there a point below which reducing the polygon count doesn't really make much difference? I know for static objects it's a whole different situation, but for skinned meshes does it help to drop to as low as a few hundred polygons?
Hmmm...okay this depends on the target gfx cards you have in mind but when speaking not of the oldest ones and beside of things like havok proxy objects for instance isn't LOD kind of outdated due to that you better load all your meshdata into the gfx card instead?
And if you need more detail you go for sds or normal maps instead?!
I don't know specifically if there's a cutoff point, but I suspect that the number of vertices, the number of bones and the number of vertices each bone influences all factor in, so it should be a pretty consistent equation. In other words, I wouldn't expect there to be a point at which it doesn't make a difference.
However, if you're gonna go as low as a few hundred, I'd seriously consider MD2's, which are much faster than skeletal animation in B3d's in Blitz3d. At a relatively low polycount, MD2's don't look too bad at all.
Thing is, I'm manipulating the bones in code, for stuff like facing other characters and ragdoll physics.
I don't mind going way low on poly counts, I'm mostly just curious if I'm optimizing more than I need to.
Just run collision with whatever mesh happens to be the current LOD version. This will cause errors under a few unlikely conditions, and the potential for error is negligible.
Bloody hell. No thanks.
you might want to consider using two types of models
if your have a lot of characters - one system simply using
none weighted mesh parts bound to bones, and the other
using deformable skin, weighted meshes...using the
mesh parts version at greater distances..as each mesh
part can be transformed in hardware..
..then again it might not make much difference, but its worth
a shot..
lod collision - as far as im concerned is simply a case of
using different collision methods in different contexts..
for objects that cannot be seen, simple sphere collisions
are probably enough...polygon to polygon when needed,
should be done using a simple hull..or in the case of
skeletal animation, you might want to have a box for
each limb..i dont know..
I would strongly advise making use of the coldet lib,
its very powerful + fast..
hmmm...did that make any sense..heh
Then why not use Collisions only with the lowest poly version? Use EntityAlpha 0 plus collision for this, and Hideentity plus no collisions for the higher LOD versions.
I guess it really depends what your after..if you after limiting
your hulls to convex shapes..using the lowest poly version
of a mesh wouldnt be much use, unless you can be 100%
sure its convex.. - or perhaps your not talking about
model meshes? hmmm..are you referring to multiple collision
hulls? .. in which case i agree, though i wouldnt use lod for
collision meshes..they should be as simple as possible anyway.