irrlicht mousepos

BlitzMax Forums/BlitzMax Beginners Area/irrlicht mousepos

hi!

i've just discovered irrlicht and blitzmax - great stuff!
i am completely new to this and could really use a little help. i am trying to create a product viz kind of thing, and i need to be able to click meshes and display info.

currently i am stuck on picking nodes, i am not sure what is the best way to do it, but was thinking of using mousepos with collisiondetection.

i've had a look at the collision example, but as far as i can understand, that checks for node collision with a sprite, i need to change that sprite collision to a mouse pointer collision

i think i need getposition, but i am not sure how to call this function(from irrlicht docs) in bMax:

'virtual core::position2d<s32> irr::gui::ICursorControl::getPosition ( )


what would the blitzMax syntax be?

i'm using gman's latest mods and bMax1.24, does anyone have any ideas?

greetings :) wish i wouldve finished those picking functions for iB3D :/ anyways, you are on the right track. in comination with the cursor control, you need the what your looking for is ICursorControl.getPosition() and ISceneCollisionManager.getSceneNodeFromScreenCoordinatesBB(). pass the result of getPosition() as the position paramter. something like:
Local device:IrrlichtDevice = IrrlichtDevice.create(EDT_OPENGL,_DIMENSION2DI(640,480),16,False,False,False,Null)
Local cursor:ICursorControl=device.getCursorControl()
Local smgr:ISceneManager = device.getSceneManager() 
smgr.getSceneCollisionManager().getSceneNodeFromScreenCoordinatesBB(cursor.getPosition())

there are several functions in ISceneCollisionManager that will allow you to do picking in different ways. for example, you can convert a 3D point to screen coords and then use the above to pick a node.

aaah, thanks alot gman, that works!
i haven't had this much coding fun since the days of assembler!

i really need to get used to the syntax though, ie. is it possible to print the collision output?

selectedNode = smgr.getSceneCollisionManager().getSceneNodeFromScreenCoordinatesBB(cursor.getPosition())
print selectedNode?



...the bounding box collision is a bit crude though, i guess i'll need to look into some sort of raycheck or something for more accurate results, i read something about irrlicht collision being real slow, and that IPhysics and IrrNewt should be used instead - would that be speedier just for simple node picking? sounds a bit like overkill to me :)

anyways, gman, i would love to register at your gprogs.com forum, but i do not receive any confirmation mails...could you help me out?

i've registered as kimgar with kima@...

ok, i figured out how to debug :)

Print selectedNode.getID()


...and now i see something weird - if i move the mouse around on the same object, the collision returns the correct id, but occasionally it also returns -1, this causes an annoying flicker.
i see the collision example suffers from the same thing.
has this got to do with irrlicht collisions in general, or would iPhysics or iNewt behave differently?

sorry for the delayed response :( could you please post an example for the flicker? i have not witnessed this yet.

as for your earlier question, the BB check is meant to be a quick check. if you need to get more in depth you need to use the technique from the collisions sample where you check a ray against the triangles of the mesh.

i havent a large amount of collision experience in Irrlicht, but overall i dont know that there is a major problem with collision speed. how many objects are you drawing? not sure about iPhysics or iNewt as i have no experience with those :(

sorry about the registration problem also. lately ive had to tighten up my forum due to excessive spammer registrations. i have for the next day or so turned off the email validation so you can create an account.

no worries! i am very glad you are back :)

great! an account has been set up, thanks alot gman!

you can pick up a flicker example here:
http://www.indok.no/filetransfer/temp/testCollision.zip

it is kind of weird though(at least to me), that it is only direct3d that suffers from this problem...

ah, ofcourse! i didn't even realise there was a raycheck in the example, i guess you are refering to the 'setLineFromVects' part...beautiful, i love the simpleness, gotta look into that, thanks!

regarding speed issues, i don't have any problems with that at the moment, as i am only drawing 3 teapots for testing purposes. but later on, if i can pull this off, there will be many highly detailed objects, which is why i was curious about speed issues :)