"Release 29"! COLLADA (.dae) geometry format support!
"Release 28"! XBox 360 controller support!
"Release 26"! DK2 support! (and an ongoing pile of other changes)
"Release 25"! Support for custom avatars, multitexturing, a pile of other stuff
"Release 24"! New server architecture! Command line parameters to set server, port, server communication rate, multisampling (# of samples), piles of bugfixes. See Lisa's open source project "janus-server" on github, which now drives the multiplayer aspect of Janus:
"Release 23"! Mumble positional audio and voice chat, download progress indicators, antialiasing/multisampling, Flickr image gallery support, SSL support (for multiplayer servers, and websites (i.e. HTTPS protocol)), SBS3D/Over-under support for images/videos, animated GIF support, Janus VR submitted to Oculus VR Share!
"Release 22"! The most notable change in this version is multi-player capability, allowing a "collaborative browsing experience". From now on I'm going to switch over to leaving details of specific smaller updates to the main project page linked above.
"Release 21" has consisted of a pile of updates:
(May 23, 2014 update. Release 21.15 - load URLs from command line, save out default_sounds attribute) (May 22, 2014 update. Release 21.14 - error logs, cache now 500MB, disable click-to-fly when walking, new VRsites portal) (May 16, 2014 update. Release 21.13 - axis snapping, Qt 5.2.1 on Windows) (May 15, 2014 update. Release 21.12 - OBJ bugfix) (May 5, 2014 update. Release 21.11 - OBJ/GLSL work) (May 5, 2014 update. Release 21.10 - more GLSL shader work, new uniforms, other bugfix) (April 29, 2014 update. Release 21.9 - support for back/frontface/disabled culling) (April 28, 2014 update. Release 21.8 - the "cache money" update!) (April 22, 2014 update. Release 21.7 - OBJ support update) (April 21, 2014 update. Release 21.6 - GLSL shader updates) (April 21, 2014 update. Release 21.5 - "bookmarks and bugfixes") (April 20, 2014 update. Release 21.4 - the "ghosts" update!) (April 18, 2014 update. Release 21.3 - support for SBS (side-by-side) 3D video!) (April 12, 2014 update. Release 21.2 - general FireBoxRoom reworking) (April 11, 2014 update. Release 21.1 - custom near/farplanes) (April 10, 2014 update. Release 21 - the "demoscene" update - and support for custom GLSL fragment shaders!)
(March 30, 2014 update. "Release 20" - support for video inside FireBoxRooms!)
(March 17, 2014 update. "Release 19"! Portals can be manipulated and rotated in any direction - this can make things a bit crazy in VR )
(March 16, 2014 update. "Release 18"! Completely re-worked interface. Some small bugfixes.)
(March 14, 2014 update. "Release 17.1"! Mute bugfix, new room template, new room attribute, new "move" operation to manipulate objects, improved copy/pasting, new sound attribute, a new workspace to show all of this stuff And updated my "maze" room.)
(March 12, 2014 update. Release "17"! Many updates and improvements. True 3D rooms. Add images, objects, text. Copy and paste. Modifying the FireBox HTML code rules. An adventure!)
(March 4, 2014 update. Release "16"! Stretching what's possible with a FireBoxRoom. Technical improvements. Menu improvement. New default bookmarks.)
(March 1, 2014 update. Release "15"! Edit and save FireBoxRooms! Bugfixes.)
(February 27, 2014 update. Release "14" adds support for custom skyboxes, fixes stuttering resulting from loading many images (e.g. imgur URL), support for relative URLs, and other minor updates/bugfixes. My aim is to add interactive editing in a next major update.)
(February 25, 2014 update. Release "13" adds site "translators" for reddit and imgur and a new tiling fragment shader.)
(February 19, 2014 update. Release "12.1" is a minor update - main addition is the introduction of "workspaces" - HTML pages which are viewable through FireBox on the local filesystem. One step closer to interactive editing. Some other bugfixes. )
(February 18, 2014 update. More technical improvements, as well as some additions on the interaction side. Notably: chromatic aberration correction, a major bug with mouse movement events is fixed and mouse movement is now smooth, "grappling hook" style navigation with LMB, context menu with RMB.)
(February 15, 2014 update. Extremely happy with this update for technical reasons. With this update I specifically addressed issues relating to the Rift integration - both the latency issue is gone, and the projection is now perfect. It follows the steps outlined in the SDK documentation precisely, so it should in theory work on future Rift devices now, with no code changes. I screwed this up for a long time:
sorry! But it's good now! - I have some suggestions on how to make the SDK documentation easier to understand, for another day.)
(February 14, 2014 update. Release "10.1" is a minor update which fixes some existing bugs: no more slowdown loading 3D objects, no more crashing on sites with specific text, no more segfault when quitting, "loading" rings are always now visible for objects. Added more skyboxes, allow freeform flying around the rooms, and a scaling in effect when images/objects are loaded.)
(February 13, 2014 update. Support for 3D webpage content added - check it out!)
(February 10, 2014 update. Added a "3d mouse cursor" which sticks to the surfaces of geometry. This mode can be toggled with the right mouse button. My intent is to use this as the basis for interaction with FireBox when required (e.g. for editing/creating a 3D webpage, or as a quick way to follow a link, or look closer at an image, etc.). I think it works well - but the cursor is quite small when its position is back-projected all the way out onto the skybox. The approach for driving this cursor is to render the geometry to depth and colour buffers, where the colour buffer encodes normal information. This allows me to define the cursor's position and orientation in space. Other small bugfixes.)
(February 8, 2014 update. Release 8: Source code and binaries released for both Linux and Windows. Graphics performance improvements: more efficient code for the portals/stenciling, visibility testing for culling portals, reduced poly count of some geometry. 60 FPS should generally be possible even using the Rift display mode. Modelled and added 3 new template environments - there are now 6 in total. Added portal glow (increases when room is loaded). Added title information to portals on webpage load. Fixed/improved URL entry widget and shortened the default entry. Further improved the image scraping (parser now checks contents of "DIV" tags in the HTML, used on e.g. Google and YouTube). Now rendering portal "placeholders" correctly when viewing portals through a portal. Other small bug fixes.)
(February 7, 2014 update: Release 7: "Portals" seamlessly connect webpages! Can now load textured OBJ files as room templates (extensible!), I created 3 small environments. Improved the image scraper. Code is unoptimized, framerate may be poor for large rooms, in a future update I intend to improve framerate and add some more environments.)
(February 5, 2014 update: Release 6.1: Fixed bug with loading/displaying embedded images, improvements to text boxes, bugfix relating to generated room dimensions, other minor bugfixes. If you tried FireBox yesterday, please give it another whirl )
(February 4, 2014 update: Release 6: Sound, Windows supported, rooms vary by hue, added ability to reset environment)
(November 27, 2013 update: Release 5: added a bookmarks.txt file so you can easily use your own URLs, and bringing the implementation closer to using all the parameters from the Oculus SDK (e.g., reported centres of projection, FOV). I also fixed the stretch/skew issue with head roll, and scaled the projection so borders are no longer visible, so it should now be a much better experience )
(November 26, 2013 update: Release 4 now working using v0.2.5 of the Oculus SDK. Still Linux only for the moment, sorry )
Hi Rift community!
My personal project for learning programming for the Rift is a "3D internet browser". A spatial walk through the internet. Real snow crash stuff Webpages are rooms, links connect rooms as doorways. Pictures embedded in the webpages hang as pictures on the wall. The environment is dynamically generated based on navigation. You can take the analogy as far you want. Ideally, the experience would be collaborative.
Interestingly - my implementation works specifically on Linux machines with OpenGL (both tracker and graphics display).
Effecient or not, its certainly a more interesting way to consume content then looking at a flat screen. Combine it with head gestures and it'd be very useful for people with limited mobility or paralysis.
Kris Redbeard Rule#21: Be polite, be professional, but have a plan to kill everyone you meet.
Simple HTML link trees could generate palaces of almost unlimited size with each item to be memorized already in It's proper place. Be it just a word, picture, or even a 3d model. Even labeling of each section and sub-section. Of course control over some aspects like room color and shape (to differentiate sections) would be needed.
Being able to virtually walk through a Mem palace with the rift will be a big step forward. If no one picks up on this idea once you release the source I am willing to take it on as a side project.
Edit: I realize this stuff can seem like gibberish at first, but it's pretty simple. PM me if you want an overview without wading through the above links...
Last edited by Peejle on Fri May 31, 2013 9:43 pm, edited 1 time in total.
awesome thatd be pretty fun. see if you can work on better textures on the walls or something some sort of super big procedural gallery thingy for webpages or something even maybe "benches" and plants and lights around too haha. thatd be cool.
Although the system can tolerate URLs that do not contain special characters, like parenthese in that link.
You can click the Quote button to view my post with the URL tags in the browser edit box.
"The creative person wants to be a know-it-all. ... Because he never knows when these ideas might come together to form a new idea. It may happen six minutes later or six years down the road. But he has faith it will happen." —Carl Ally
I'm coding in Windows at the moment, was trying to make my application in Linux at first - then I got the impression that I might get results faster if I switched to Windows and learned from the samples which use DirectX (we need some in OpenGL!), that impression didn't last long however and now I've come full circle and arrived again at OpenGL.
I'd definitely be keen to have a look at your source if you are able to release it, hopefully it could help me get my application on the move faster, in the meantime I will take those shots as inspiration that it can work well in OpenGL too : )
I think it might be more usable to just have a 3D space where data can be stored in different formats, and until people find a best method to have a 3D window popup that give existing access to a browser on a surface. The problem with rendering a website in 3D is that it is going to seem overly structured, and take a long time to access data if you have to move room to room to see page by page.
It's a cool idea, but from a usability standpoint people are not going to give up the faster method of accessing data they are already used too.
everygamer wrote:It's a cool idea, but from a usability standpoint people are not going to give up the faster method of accessing data they are already used too.
This reminds me of this scene from Jurassic Park: http://www.youtube.com/watch?v=J1VE6C0H2bU WTF? Dinosaurs are trying to eat you and yet you have to fly through a virtual representation of the park control server to lock the doors?
However, I think it could be one of the most promising apps for the Rift so far. With tweaks, all kinds of virtual tours can be generated using simple html data sets: Memory systems (As I posted above) Virtual tours of Artwork, Video Databases and Audio Libraries. Books, magazines and any digital docs as well. With the proper tweaks even calls to flash games and apps would work. Imagine an automatically generated flash game arcade with thousands of rooms! And now with Unreal 3 working in a browser there are many more possibilities...
Thanks all for the comments and interesting responses!
I have been busy lately demoing my Rift everywhere - at DGP lab at UofT, at Autodesk Toronto, and with alumni from UofTMississauga. It's been a blast! Many people saying "whoa, I never expected it would be that good".
So I have had some free time recently to work more on this "FireBox" project. I have created a new page to maintain the project, and have finally put out both source and binary release (Linux is the target platform right now):
There are a bunch of new features since my last post (or things that I thought had to get in there if anyone was actually going to try this thing out other than myself ). Mainly these are:
- A URL entry widget (so you can create entrances to go anywhere, not just my hardcoded page) - "Flying mode" - lets you observe the room structure/topology from high above, transition is animated (I removed the ceiling for this feature) - Blocks of text from webpages now decorate the rooms - Speeding things up (the framerate used to suffer for very large rooms)
Changes for release 2: application runs even without Rift being detected (it would crash previously), fading in/out and animation for URL entry widget, keyboard instructions at bottom of screen, slight performance speed-ups, and added readme.txt to binary release to help get started.
Peejle wrote:Are all the rooms long and skinny like hallways or is that adjustable?
Any plans for varying floor heights or multiple levels?
Is it possible to have different colors for adjoining rooms other than the white/green? Could the room color key off the website background for instance?
When will the non Linux ports be completed?
Hi Peejle! To answer each of your questions:
1. The rooms are always roughly rectangular, and tend to be long and skinny. The idea is you need to make a room whose perimeter is large enough to hold all of the page content. The reasoning behind longer and skinny is that as new entrance points are formed, there is less likely a chance of newly formed rooms overlapping since skinny rooms branch away. The implementation here to define room bounds is very naive - it starts with a small rectangle at the entrance and "grows it outward" until perimeter constraints are satisfied - but you could imagine any other possible shape to use: e.g. "circular" rooms, rooms which are labyrinthine, rooms with pillars or other walls inside of them, rooms with "sub-rooms", etc.
2. Varying floor heights: That would be cool - I have been thinking about entrances which reveal stairways/ramps to go up or down a level in the event of a "room collision". I will have to figure out how to handle the "flying" feature once I add this though - i.e. how to handle initiating "fly mode" when in a "basement"? Also, how to effectively visualize the room topology afterward. Really though what I have done here in my spatial interpretation of rooms is very arbitrary - there is no reason the "rooms" could not be e.g. floating discs at different heights, with lines/bridges connecting them together. Ideally, the abstract data (the webpage content) could be used to create any of a wide variety of spatial interpretations that could be selected by the end user. But I'm just one guy and I've stuck with just boxy rooms for now
3. Colours: yes of course others are possible! And yes my first thought was to use the page's background colour or for a background image to use this as the room's "wallpaper". I have thought of other ideas to make the rooms appear more unique too - e.g. if a page's "modified date" has been a long way off (like many months), the room could be dusty and have cobwebs in various corners and crevices. I like ideas like this because they express some meaningful bit of data, but in a unique way that makes sense (there is some understood analogy).
4. Re: non-Linux ports. Really, the point of the project was specifically to demonstrate Oculus Rift support on Linux. My 3D internet browser just happened to be the demo application I used. All that said, all libraries I've used (Qt and OpenGL) are cross-platform. The exception is the "libovr_nsb" library which reads the Rift's tracker data, this is Linux specific. The long term plan would be to await Linux support of the official SDK, and then switch the code over to using that. Then, builds for all other major platforms (Windows and Mac) are theoretically possible with little to no code changes. At that point, still using OpenGL for the graphical side of Rift support I think will still be a contribution that is of interest to some.
Thanks for the questions! And I found your memory palace/mnemonics stuff very interesting to read, thanks for that also
I really, really like this idea, although TL;DR for most of the posts. Has anyone here read Tom Clancy's Net Force and/or Net Force: Explorers? The first is based in 2013 (written a while back) where VR is functioning world-wide and the FBI needed some type of policing agency. The second is the same agency in 2025, but they utilize kids as who are far better at technology in policing the nets. Good books, good plot, great ideas.
In those books everyone could build their own scenario to see the internet in (old west, medieval, trekkies, etc.). In general, everyone had their own rooms to start from and design, but after that if you visit a webpage then it could be something from that scenario (a bar/tavern for a chat room, etc.). When traveling between pages on the net, they could choose to either get there immediately, or to ride it out again based on your scenario. So if you were in the old west, you would ride a horse or carriage; in modern times you would ride a car of your choice; trekkies can ride the enterprise in warp drive, etc.
I'm no programer/developer, but I know that making something like that would take long, however it being in a book (so they have some creative license) I am preferential to something like that. It would look less "corporate" with all the boxes and corridors, and rather more fun for the average joe.
On another note, to build the scenario's, the initial program is that you can open a command prompt of sorts and then modify certain parts. For the simpler people it would have choices, and for the experts it would be full-on programming, but you can see the results right before your eyes as you build it. Eventually when it develops enough, you can even just have a prebuilt thing, like a couch or TV, and just place it wherever you want in the room and it would automatically input the data/code needed.
Opinions of feasability (especially from OP since you already have built a beta of sorts), or is this just day dreaming for the next couple years?