hey, can someone explain ot me how todo world oriented billboarding, i
read a tutorial on it, done everyhtign it said, but still didnt work…
So i was wondering if someone could quicly explain the math of it all,
or if oyu have to some sample code…. (explaining the math behind it
all is prefereable)
Please log in or register to post a reply.
uhm.. just from brain, for some ideas..
your billboard has a point, where it rotates around, and a “prefered up
now, you want the point-to-cam vector, simply to_cam = normalized(cam -
next, you want a “right” vector, wich simply is perpendicular to your
to_cam and the up vector, so you use a crossproduct.. to_right =
normalized(cross(to_cam,up)) (or the other way around.. don’t know from
finally you want to adjust your up vector (but you let the original up
vector still exist..), by crossing your current to_right vector with
the to_cam vector..
with those three, you can transform all your billboard points of that
specific billboard by these 3 vectors (they build a rotational 3x3
matrix.. look up orthogonal bases.. or so).
i hope that helps a bit..
I bet that within the next few hours at least one person comes in here
and says something like “Hey cool davepermen, why don’t you write an
article about it?”… :P
because i only write snippets..
now, the question will be “why no snippet?”
answer: because right now i could not get arsed to write one..
check out the billboarding tutorial at nate.scuzzy.net. it’s opengl, but
the theory and math carries over.
ok, well thats umm *checks code* (which i seem have to deleted sience
it didnt work) *checks the tutorial he leaarned from* ok, i was doing
exactly what you said, except your cross products are around hte wrong
way (accordign to the billboarding tutorial on flipcode)
So either my matrix transformations are wrong (which they arent, i
checked that) or my computer hates me. :lol: …oh or i’m nto
constructing the matrix correctly.
Anyway, i’ll start again and if i have no luck i’ll post here again with
big capitol letters saying ‘argh’ (but alot longer ;))
P.S. i’m doing world oriented billboarding, so you use the up vector of
the world, or in my case (due to the architecture of my engine) the
particle system up vector; not the camera up vector
as long as you don’t overwrite your original up vector..
possibly you’ll have to transform by the transpose rotation matrix in
the end (inverse rotation..)
i’ve set up some code for my raytracing cam yesterday and had to do
would be helpful btw to see whats wrong.. demo, or pics, or what
I have been doing this so far…is there anything wrong with it??
It seems to work fine.
modelview = 1;
modelview = 1;
modelview = 1;
// -> all transformations here
// -> must do scaling here
// -> render here
if it works, why complain?
off-topic: this is my 666th post!
it depends on what you do.. it essencially sets the billboarding point,
the one you rotate around, to the current 0,0,0 point of your world
matrix. thats about it.. if you can life with that, fine