Navi
- ajs15822
- OGRE Expert User
- Posts: 570
- Joined: Mon Jan 02, 2006 2:05 am
- Location: Texas
- x 2
- Contact:
Navi
I am pleased to announce the dawn of 'Navi', an exciting new library for Ogre3D developers.
For support and further discussion of NaviLibrary, please visit our forum.
Visit our Wiki: click here
Demo v1.3: get it here
Video v1.3: watch it here (XVID, 3.5mb)
Screenshots:
The Navi Library:
Interested? Cool, browse our wiki for more information or discuss it in our forum.
Enjoy.
Edited by Haffax: Fixed forum link
For support and further discussion of NaviLibrary, please visit our forum.
Visit our Wiki: click here
Demo v1.3: get it here
Video v1.3: watch it here (XVID, 3.5mb)
Screenshots:
The Navi Library:
Interested? Cool, browse our wiki for more information or discuss it in our forum.
Enjoy.
Edited by Haffax: Fixed forum link
Last edited by ajs15822 on Wed Sep 12, 2007 8:48 pm, edited 8 times in total.
- KungFooMasta
- OGRE Contributor
- Posts: 2087
- Joined: Thu Mar 03, 2005 7:11 am
- Location: WA, USA
- x 16
- Contact:
. . . . WOW!
Looks very nice! Although, it does get irritating when people mention "BetaGUI Derivatives". If you visited the Showcase thread in the past month or so You'd see QuickGUI floating around, its not so comparable to BetaGUI anymore (not good or bad, but it is distinct IMO).
Cool to see another GUI alternative! *steals alpha mask idea*.
[Edit] Hale nochi Guu is one of the best anime ever! [/Edit]
KungFooMasta
Looks very nice! Although, it does get irritating when people mention "BetaGUI Derivatives". If you visited the Showcase thread in the past month or so You'd see QuickGUI floating around, its not so comparable to BetaGUI anymore (not good or bad, but it is distinct IMO).
Cool to see another GUI alternative! *steals alpha mask idea*.
[Edit] Hale nochi Guu is one of the best anime ever! [/Edit]
KungFooMasta
- betajaen
- OGRE Moderator
- Posts: 3447
- Joined: Mon Jul 18, 2005 4:15 pm
- Location: Wales, UK
- x 58
- Contact:
- ajs15822
- OGRE Expert User
- Posts: 570
- Joined: Mon Jan 02, 2006 2:05 am
- Location: Texas
- x 2
- Contact:
- ajs15822
- OGRE Expert User
- Posts: 570
- Joined: Mon Jan 02, 2006 2:05 am
- Location: Texas
- x 2
- Contact:
Lol, I don't mind *stealing* of ideas between open-source projects, the more the merrier! And yes, I admit your QuickGUI project is no longer just a derivative; nice work!KungFooMasta wrote:. . . . WOW!
Looks very nice! Although, it does get irritating when people mention "BetaGUI Derivatives". If you visited the Showcase thread in the past month or so You'd see QuickGUI floating around, its not so comparable to BetaGUI anymore (not good or bad, but it is distinct IMO).
Cool to see another GUI alternative! *steals alpha mask idea*.
[Edit] Hale nochi Guu is one of the best anime ever! [/Edit]
KungFooMasta
And yes, Guu is my hero.
-
- OGRE Retired Team Member
- Posts: 2903
- Joined: Thu Jan 18, 2007 2:48 pm
- x 58
- Contact:
Hey, this is pretty neat. Just the other day I thought that somehow the usual GUI API designs don't quite fit games in general and that we'd need a different approach to make GUI design for games both easier and more flexible. But I guess I don't have to follow up on my thoughts too much now
Only thing bothering me is the mozlib dependency and it automatically catching input and hooking up to sound etc (if I understood your comments correctly?). From what I saw mozilla projects are usually monsters to compile, and the automatic hookings just cry for interaction problems with other components. But I'll likely still experiment with it some time
Only thing bothering me is the mozlib dependency and it automatically catching input and hooking up to sound etc (if I understood your comments correctly?). From what I saw mozilla projects are usually monsters to compile, and the automatic hookings just cry for interaction problems with other components. But I'll likely still experiment with it some time
- ajs15822
- OGRE Expert User
- Posts: 570
- Joined: Mon Jan 02, 2006 2:05 am
- Location: Texas
- x 2
- Contact:
Yup, compiling Mozilla from source is a monster (I had to do it twice in one night... *shudder*).CABAListic wrote:Hey, this is pretty neat. Just the other day I thought that somehow the usual GUI API designs don't quite fit games in general and that we'd need a different approach to make GUI design for games both easier and more flexible. But I guess I don't have to follow up on my thoughts too much now
Only thing bothering me is the mozlib dependency and it automatically catching input and hooking up to sound etc (if I understood your comments correctly?). From what I saw mozilla projects are usually monsters to compile, and the automatic hookings just cry for interaction problems with other components. But I'll likely still experiment with it some time
As long as a Navi window is not focused, the internal Mozilla library should not receive any key input. If that's still too much of a problem, I can modify the LLMozLib libs included with Navi to only use injected keys.
-
- Gnome
- Posts: 318
- Joined: Wed Jan 18, 2006 7:22 pm
- Location: Montreal, Canada
-
- Kobold
- Posts: 32
- Joined: Thu Apr 26, 2007 7:13 pm
man, this is just great
While researching to know how to do my univ project (which in the end would have to be entwined with the existing http library search), i considered using Gecko, especially to avoid having to work directly with sockets. You got my idea and pretty much did what i thought of doing in the long run
Unfortunately, my crappy computer at the university can´t even run the demo for some god unknown reason
so i´ll just look at this at home. But anyway, congrats, it´s looking great by the vids
While researching to know how to do my univ project (which in the end would have to be entwined with the existing http library search), i considered using Gecko, especially to avoid having to work directly with sockets. You got my idea and pretty much did what i thought of doing in the long run
Unfortunately, my crappy computer at the university can´t even run the demo for some god unknown reason
so i´ll just look at this at home. But anyway, congrats, it´s looking great by the vids
- ajs15822
- OGRE Expert User
- Posts: 570
- Joined: Mon Jan 02, 2006 2:05 am
- Location: Texas
- x 2
- Contact:
wow, awesome! Glad to be of some help.Yanko wrote:man, this is just great
While researching to know how to do my univ project (which in the end would have to be entwined with the existing http library search), i considered using Gecko, especially to avoid having to work directly with sockets. You got my idea and pretty much did what i thought of doing in the long run
Unfortunately, my crappy computer at the university can´t even run the demo for some god unknown reason
so i´ll just look at this at home. But anyway, congrats, it´s looking great by the vids
- Klaim
- Old One
- Posts: 2565
- Joined: Sun Sep 11, 2005 1:04 am
- Location: Paris, France
- x 56
- Contact:
Glad to see that You talked about it on the IRC channel if i remember well.
First, just a little question about "Navi" name : are you a S.E.Lain fan? Isit inspired from that anime?
Ok now i've got to test it verry soon
edit> Do you plan to support other platforms than Windows?
First, just a little question about "Navi" name : are you a S.E.Lain fan? Isit inspired from that anime?
Ok now i've got to test it verry soon
That would be better i think. That would let lib user control the input behavior whitout having to activate/deactivte the GUI...As long as a Navi window is not focused, the internal Mozilla library should not receive any key input. If that's still too much of a problem, I can modify the LLMozLib libs included with Navi to only use injected keys.
edit> Do you plan to support other platforms than Windows?
- ajs15822
- OGRE Expert User
- Posts: 570
- Joined: Mon Jan 02, 2006 2:05 am
- Location: Texas
- x 2
- Contact:
Hah, glad you remembered. And yes, the name 'Navi' is inspired by 'Navi' from Serial Experiments Lain.Klaim wrote:Glad to see that You talked about it on the IRC channel if i remember well.
First, just a little question about "Navi" name : are you a S.E.Lain fan? Isit inspired from that anime?
Ok now i've got to test it verry soon
That would be better i think. That would let lib user control the input behavior whitout having to activate/deactivte the GUI...As long as a Navi window is not focused, the internal Mozilla library should not receive any key input. If that's still too much of a problem, I can modify the LLMozLib libs included with Navi to only use injected keys.
As for manually injecting keycodes and overriding Mozilla's natural behavior, I haven't had very good luck with it and actually really prefer Mozilla to handle it instead.
I think a better compromise would be something like this:
Let's say we have some uber-cool-skills that are initiated by CTRL+1 and CTRL+2 key combinations. Normally, without any intervention, if a textbox inside of a focused Navi was focused, the user might see a '1' or '2' on this action.
So, we tell NaviManager to ignore any keys that are held down after CTRL
Code: Select all
void MyKeyHandler(KeyCode code)
{
if(code == 'CTRL')
{
NaviManager::Get().toggleKeyListening(false);
ctrlDown = true;
}
else
{
NaviManager::Get().toggleKeyListening(true);
ctrlDown = false;
}
if(code == '1' && ctrlDown)
SuperCoolMove();
if(code == '2' && ctrlDown)
ReallyCoolMove();
}
*shrugs* I'm just trying to come up with the best solution.
- ajs15822
- OGRE Expert User
- Posts: 570
- Joined: Mon Jan 02, 2006 2:05 am
- Location: Texas
- x 2
- Contact:
As for cross-platform viability, LLMozLib is not fully cross-platform, yet.
They are indeed working on support for other platforms at this time (hey cool, corporate interests work in our favor).
As for the Navi Library itself, it's almost completely non-Windows-specific besides having to pass HWND into LLMozLib (which will change in the future).
Heck, it's not even render-system dependent because Navi uses Ogre's Hardware Pixel Buffers to do all the texture-update-kung-fu.
They are indeed working on support for other platforms at this time (hey cool, corporate interests work in our favor).
As for the Navi Library itself, it's almost completely non-Windows-specific besides having to pass HWND into LLMozLib (which will change in the future).
Heck, it's not even render-system dependent because Navi uses Ogre's Hardware Pixel Buffers to do all the texture-update-kung-fu.
- Klaim
- Old One
- Posts: 2565
- Joined: Sun Sep 11, 2005 1:04 am
- Location: Paris, France
- x 56
- Contact:
I cannot forget someone saying he have e ready to use solution to display fast html gui in ogreHah, glad you remembered. And yes, the name 'Navi' is inspired by 'Navi' from Serial Experiments Lain.
And i'm a big fan of S.E.Lain
I'm verry interested in displaying html on a texture for some features in my game (that are planned for some months in the future) and Navi would be verry useful to me with those features :
- Cross-platform (Windows, Linux and Mac) - ok you answered (edit);
- Let you display the texture on a mesh (quad or something) : i guess i can hack the current code to make it possible when i'll need that.
Another point : it don't seem obvious if gecko accesses automatically to internet or you have to "activate" something to make it possible.
What if i want to force it to not access internet, only local files or some provided strings?
- ajs15822
- OGRE Expert User
- Posts: 570
- Joined: Mon Jan 02, 2006 2:05 am
- Location: Texas
- x 2
- Contact:
It really wouldn't be that hard to put a Navi on something other than an Overlay (See the uBrowser Plane Demo for an example) but it would complicate mouse-picking.Klaim wrote:I cannot forget someone saying he have e ready to use solution to display fast html gui in ogreHah, glad you remembered. And yes, the name 'Navi' is inspired by 'Navi' from Serial Experiments Lain.
And i'm a big fan of S.E.Lain
I'm verry interested in displaying html on a texture for some features in my game (that are planned for some months in the future) and Navi would be verry useful to me with those features :
- Cross-platform (Windows, Linux and Mac) - ok you answered (edit);
- Let you display the texture on a mesh (quad or something) : i guess i can hack the current code to make it possible when i'll need that.
Another point : it don't seem obvious if gecko accesses automatically to internet or you have to "activate" something to make it possible.
What if i want to force it to not access internet, only local files or some provided strings?
The Navi Library is very well-documented and most of the code is fairly understandable. If you do indeed modify it, however, please notify me of your changes so as to share them with the community.
As for using only local files, it's fairly easy by use of the 'local://' protocol when creating/navigating Navis. For example, let's say you have MyPage1.html and MyPage2.html in the 'NaviLocal' folder. Create the Navi using "local://MyPage1.html" as the homepage parameter.
To get to MyPage2.html, let's say this is the content of MyPage1.html:
Code: Select all
<html>
<body>
<a href="MyPage2.html">Go to My Page 2</a>
</body>
</html>
- Klaim
- Old One
- Posts: 2565
- Joined: Sun Sep 11, 2005 1:04 am
- Location: Paris, France
- x 56
- Contact:
Right, i know this problem. In my case it's not needed that the user can use the inputs while the display is not in front of the screen so i think it's not really a problem. It would be one if i needed to display the pages on something like Doom3 in-game interfaces.It really wouldn't be that hard to put a Navi on something other than an Overlay (See the uBrowser Plane Demo for an example) but it would complicate mouse-picking.
I remember someone did provide the code to get the mouse coordinate from mesh data, not sure it was on Ogre forums ....
I'll to that if nobody do it before me (as i have a lot of other features to implement before starting to work on that one).The Navi Library is very well-documented and most of the code is fairly understandable. If you do indeed modify it, however, please notify me of your changes so as to share them with the community.
About the local files, i think you misunderstood or i didn't explain well enough : what should be possible is to "lock" page access to local files, or a specific folder.
I mean, if you provide the html files for local and you don't want someone to add some external link in thoses files, can you tell mozilla to not try to get data from internet, with or without an external link?
For example in a game, maybe you would like to let the player access only to some local files relatives to the game and if the player modify the html files to redirect to external pages, it should not work.
I'm not a security specialist (i don't know much about security), but i feel like acessing any html page from a game could be dangerous?
Anyway, Thanks for Navi, it will be helpful
-
- OGRE Expert User
- Posts: 557
- Joined: Wed May 05, 2004 3:19 pm
- Location: Portland, OR, USA
- Contact:
- radioman
- Greenskin
- Posts: 132
- Joined: Sun Dec 31, 2006 3:59 pm
- Location: lithuania
..i try to use it, and a little problem in debug mode: http://www.divshare.com/image/full/726984-590
call stack: http://www.divshare.com/image/full/727006-7ba
there is link to mozila's source: http://mxr.mozilla.org/mozilla1.8/sourc ... o.cpp#3577
..if someone can figure what a hell is happening i'll be very happy ;}
call stack: http://www.divshare.com/image/full/727006-7ba
there is link to mozila's source: http://mxr.mozilla.org/mozilla1.8/sourc ... o.cpp#3577
..if someone can figure what a hell is happening i'll be very happy ;}
peace & serenity
- tau
- Silver Sponsor
- Posts: 413
- Joined: Wed Feb 11, 2004 11:44 am
- Location: Austin (that's kept wierd :))
- Zeal
- Ogre Magi
- Posts: 1260
- Joined: Mon Aug 07, 2006 6:16 am
- Location: Colorado Springs, CO USA
Wow.
So I can create a GUI with a regular old HTML editor? How does the performance compare to a 'traditional' GUI? From what I understand, youre 'running' the GUI (in mozilla?) and just rendering the results to a texture? Isnt that a lot slower than using something like OpenGUI (which uses ogres materials/overlays directly)?
Heh im sure all the answers are in your tutorial/faq, im just too excited to read it (that video was really cool).
Either way, Amazing job.
So I can create a GUI with a regular old HTML editor? How does the performance compare to a 'traditional' GUI? From what I understand, youre 'running' the GUI (in mozilla?) and just rendering the results to a texture? Isnt that a lot slower than using something like OpenGUI (which uses ogres materials/overlays directly)?
Heh im sure all the answers are in your tutorial/faq, im just too excited to read it (that video was really cool).
Either way, Amazing job.
- ajs15822
- OGRE Expert User
- Posts: 570
- Joined: Mon Jan 02, 2006 2:05 am
- Location: Texas
- x 2
- Contact:
This is a bug in the Mozilla version used by LLMozLib, specifically: Bug 339504 - Local home page causes assertion: "preserved wrapper table not empty at shutdown".radioman wrote:..i try to use it, and a little problem in debug mode: http://www.divshare.com/image/full/726984-590
call stack: http://www.divshare.com/image/full/727006-7ba
there is link to mozila's source: http://mxr.mozilla.org/mozilla1.8/sourc ... o.cpp#3577
..if someone can figure what a hell is happening i'll be very happy ;}
Because NaviDemo uses local pages to display everything, when LLMozLib is shutdown, this bug is invoked. This bug is only apparent in the debug mode.
- ajs15822
- OGRE Expert User
- Posts: 570
- Joined: Mon Jan 02, 2006 2:05 am
- Location: Texas
- x 2
- Contact:
Ah, no-follow schemes, LLMozLib is totally capable of this, I was careless and didn't implement it into NaviManager just yet.Klaim wrote:Right, i know this problem. In my case it's not needed that the user can use the inputs while the display is not in front of the screen so i think it's not really a problem. It would be one if i needed to display the pages on something like Doom3 in-game interfaces.It really wouldn't be that hard to put a Navi on something other than an Overlay (See the uBrowser Plane Demo for an example) but it would complicate mouse-picking.
I remember someone did provide the code to get the mouse coordinate from mesh data, not sure it was on Ogre forums ....
I'll to that if nobody do it before me (as i have a lot of other features to implement before starting to work on that one).The Navi Library is very well-documented and most of the code is fairly understandable. If you do indeed modify it, however, please notify me of your changes so as to share them with the community.
About the local files, i think you misunderstood or i didn't explain well enough : what should be possible is to "lock" page access to local files, or a specific folder.
I mean, if you provide the html files for local and you don't want someone to add some external link in thoses files, can you tell mozilla to not try to get data from internet, with or without an external link?
For example in a game, maybe you would like to let the player access only to some local files relatives to the game and if the player modify the html files to redirect to external pages, it should not work.
I'm not a security specialist (i don't know much about security), but i feel like acessing any html page from a game could be dangerous?
Anyway, Thanks for Navi, it will be helpful
The next version of Navi (1.01) will be out in a little while and has this as well as a few updates (minor efficiency enhancements, const-correctness in the API, etc.)
*EDIT*: Actually LLMozLib's no-follow schemes are only for protocol prefix specifiers (e.g. http://, local://, etc.) which won't actually get links like "google.com".
I'll modify LLMozLib to allow no-follow schemes with wildcards or maybe even Regular Expressions if I feel up to it.
Last edited by ajs15822 on Fri May 25, 2007 3:09 am, edited 1 time in total.
- ajs15822
- OGRE Expert User
- Posts: 570
- Joined: Mon Jan 02, 2006 2:05 am
- Location: Texas
- x 2
- Contact:
Yes, you can write a GUI with almost any tool you would normally use to write a web page. To actually send and handle data to and from the application, you use a little Javascript to send/receive 'NaviData' (read the overview for more info).Zeal wrote:Wow.
So I can create a GUI with a regular old HTML editor? How does the performance compare to a 'traditional' GUI? From what I understand, youre 'running' the GUI (in mozilla?) and just rendering the results to a texture? Isnt that a lot slower than using something like OpenGUI (which uses ogres materials/overlays directly)?
Heh im sure all the answers are in your tutorial/faq, im just too excited to read it (that video was really cool).
Either way, Amazing job.
Haha, slower? Navi does indeed use Ogre's overlays/textures directly and only 'updates' the texture when something has changed. So if your GUI doesn't change that much, it's like having a few static overlays on your screen!
If your GUI does change much (animated javascript/flash), you can limit the number of times per second Navi updates.
I just did some quick tests on my laptop @ 1024x768 using the NaviDemo:
Each Navi is a local html page rendered to a texture, masked with an alpha mask.
Average FPS of three Navis with world geometry on-screen: 60 FPS
Average FPS of no Navis with world geometry on-screen: 66 FPS
Average FPS of three Navis with no world geometry on-screen: 108 FPS
Average FPS of no Navis with no world geometry on-screen: 130 FPS
Not bad at all.