Skip to main content
Up and Coming
May 8, 2013

Real Time Mandelbulb

Anybody thought doing a real time mandelbulb fligh through with the Oculus in mind? That would be pretty trippy :) And low requirements, apart from the actual coding itself, but no assets to speak of. Perfect for programmers!





    58 replies

    Up and Coming
    January 7, 2015
    > jimbo00000

    Thank you for that. That is one of the coolest things I've ever seen.
    Up and Coming
    January 8, 2015
    As for the controls, the Xbox controller is utterly bristling with buttons, so any of those might do. I'd suggest throwing a cheat-sheet using the Start button so people always know what button does what.

    But I would suggest scrapping the automatic resolution changer, in favor of using the controller. Make a clear statement on the starting screen, maybe off to the side, that users can change the performance using the controller. Since the starting menu screen is the most important, and always runs well, definitely force it to run at a high starting resolution. Without the main menu, the whole experience becomes very difficult.


    I just put up a new build with proper Xbox controller support: [2.0.3](https://github.com/jimbo00000/RiftRay/releases/tag/2.0.3) Cheat sheet is a good idea, I will get on that. If you haven't modified RiftRay.cfg, FBO scaling should default to full res. Come to think of it, a direct cfg file option might be nice there.

    All of the Boxplorer demos except for the bug walking around seemed to run at 30 to 70+ FPS at full DK1 resolution. I know the DK1 is alot lower resolution then the DK2, but it was still higher then settings I'm comfortable with on this demo. The Reflectiods, running with full reflections, ran at faster, at a higher rez then your Reflectiods, without reflections. It actually ran so fast, I could barely believe my computer produces those images. Quite mind blowing! There were controls in Boxplorer for altering Reflectiod in real time, and the no matter how convoluted I managed to get the landscape, it always kept at least 40fps. A little choppy sometimes, but never unusably slow.

    Back to the subject of controls, a few of those fractal shaders can be easily altered by changing a few numbers, correct? How about allowing some facet of the controller to slide those numbers up and down, like Boxplorer allowed with Reflectiod? Real-time altering of fractals is AMAZING! If the users can alter just 2 or 3 parameters with a few button presses, I'm sure they'll spend hours seeing what kind of results they can get. I know I did!


    This is... a really great idea. :D Stay tuned!
    Up and Coming
    February 1, 2015
    Real-time altering of fractals is AMAZING!


    Got it working - you're right, it is pretty awesome :D




    Only a few variables are exposed in the included shaders, but if you have a text editor you can hack in as many as you'd like. Just add a uniform variable and a matching comment establishing the range and increment.

    Download here: https://github.com/jimbo00000/RiftRay/releases/tag/2.1
    Inspiring
    February 4, 2015
    Cool, a new version!

    I like what I'm seeing, it's looking very polished. I do have an issue though with the Xbox controller layout though. Well your setup is inventive, I would recommend sticking to the industry standard. By using a standard layout you can insure people are able to instantly jump in and control your application with ease. It's hard to beat years of learned experience. ;)

    Here's an example from Guns Of Icarus:



    As you can see, movement is handled by Left Joystick, well rotation, both left/right and up/down, are managed by the Right Joystick.

    More nuanced controls and interface are handled by the directional pad, since it's harder to access well using a 1st person shooter-grip. I would suggest moving the Screen resolution and Screen cropping to the Directional Pad. Use Right and Left for the resolution and up and down for the screen cropping. That should make instant sense to users.

    The XYAB should be used for other actions. Since the A and B buttons are usually used for Jump and Crouch, I'd suggest using the A for rising up, and B for lowering directly down. The X button is often used for selections and entering vehicles, so you might want to use that for controlling the TweakBar. In that manner, I think the Y button would work best for bringing up, and dismissing, the Tweakbar.

    Since the Start and Back buttons are considered to be very critical but not often used controls, I'd suggest using Start button for selecting a level *and* exiting a level. You could use the back button to bring up the Exit Application screen, with X being used, again, to select Yes or No.

    The Trigger buttons are good as they are. Their analog nature is good for controlling speed.

    Could one of the Shoulder Buttons be re-purposed to reset the screen orientation? That's a very critical function. I know it's in the Tweakbar, but it's so important, it should have it's own button.

    Also there's the matter of checking to see if the Xbox controller has been turned on *after* the program loads. Xbox controllers tend to timeout to save battery power, so it's not uncommon for people to activate them after a game or app has loaded. Can you check to see if the Xbox controller is present, even if it's not currently active?

    As far as adjusting the Resolution and Screen Cropping, it's best not to use Analog controls for those because it's the kind of function that's easiest to understand and control with stepped controls. You want to be able to carefully cycle though those settings, one button press at a time, and not too fast, as it's easy to overshoot the best setting for your machine. Using the joystick, I found it difficult to pinpoint that sweet spot. If you do switch those settings over to the directional pad, I'd suggest changing the settings one step for every directional pad press, instead of just allowing people to quickly cycle through those settings by holding down the button. Again it's just so easy to shoot right by the best settings.

    I love the Tweakbar, btw! It's always great to see floating controls in virtual space. It makes VR feel like an extension of the desktop, instead of shallow and video-gamey. One downside of the Tweakbar though is that the Cheatsheet can't be moved or dismissed. This means that alot of good desktop space is unavailable because of it. The Cheatsheet is great, but I'd suggest a button on the sheet to minimize it down to a little button that says "View Controls".

    Are sliders possible on the Tweakbar? I know you can use the that circle drag thing, that works ok. But sliders are more immediate and easier to visualize.

    The Animated Icon button works great! You should use that as a default, it's very helpful to understand what world I'm about to load up. The Perspective icon button though doesn't seem to work with most icons. I imagine it would be hard to tweak every button so the perspective works correctly. It might be a lost cause.

    It also looks like the shader Voxel Edges doesn't work with the Tweakbar. I think it's the scale involved. I love that shader and it's sense of scale, but it doesn't cooperate with the Tweakbar at all. It hurts my eyes to look at it.

    That's all of my thoughts on the latest build so far. I hope some of them are helpful. Thanks for all of your hard work!
    Up and Coming
    February 8, 2015
    Thanks again, Max. I was working off the much older standard of 1.2 Solitaire. :)

    Good ideas. I think I addressed just about all of them in the latest (2.1.1):https://github.com/jimbo00000/RiftRay/releases/tag/2.1.1

    Let me know how you like it!

    Up and Coming
    February 10, 2015
    Amazing to see how fractals have evolved since the Mandelbulb, the first 3D fractal was discovered in 2009. Fractals are a signature experience for the future of VR.

    Here's some fantastic sources of information regarding fractals if your thinking of developing in this direction:
    http://vimeo.com/juliushorsthuis/videos
    http://www.skytopia.com/project/fractal/mandelbulb.html
    http://mandelbulb.com/3d-fractal-art-mandelmorphs/
    http://www.newscientist.com/article/dn18171-the-mandelbulb-first-true-3d-image-of-famous-fractal.html#.VNnejy6WyUk

    TED Talk with Benoit Mandelbrot - The father of fractal geometry.
    https://www.youtube.com/watch?v=ay8OMOsf6AQ
    Inspiring
    February 11, 2015
    This is REALLY nice! At this point, if you wanted to call it a day on this project and move on to something else, you could consider it a complete success. It's very user friendly and packed full of useful features.

    But... if you wanted to polish this diamond up even further, there are a couple of things you could do.

    #1. The virtual desktop for the interactive menus is a bit cramped. Having the regular menus and the tweak menus, along with the unmovable cheat sheet for the controls, means pushing around alot of menu screen to keep what you need visible. Is there anyway to expand that space?

    #2. Those circular dials you use to control values are cool, but is it possible to swap in slidebars? People are more familiar with them. Also, in my experience with them, I find using the circle adds a bit of neck cramps and nausea when used. Fast head movements to the side, especially when the background is moving in a certain direction, tends to induce motion sickness.

    #3. Back to the virtual desktop, is there someway to minimize the cheat sheet when it's not needed? Maybe clicking on it causes it to shrink down to 1/10th it's normal size, and clicking again causes it to expand.

    #4. I can see the cheat sheet is on a different wall then the menus, so what about bringing those two walls together and treating the cheat sheet like just another window? If nothing else, we could at least push the cheat sheet off the side edge of the screen when not needed.

    Anyways, these are just some minor tweaks that might help make the experience a bit more polished. It's still good as it is now. It even looks like Voxel Edges is cooperating with the menus now. There's so much to dive into viewing and tweaking. I just want to see more and more of these shaders. They are AMAZING! The fractal ones in particular, with their alien landscapes, are just mind blowing.

    -------------

    On an unrelated note, if you ever feel inclined to make a dead-simple fractal explorer for the general public, there could be a big market for it. Something people could fly through in a little helicopter, or grapple hook and climb around. I don't know if you can generate collisions from just visual information, but imagine if you could control your body's scale, viewing the world from a giant down to a speck of dust. Walk through those hallways, climb those hills, dive into those chrome pools of mercury.

    And picture some more simplified, but more indepth "God Controls", for changing the world before you jump back in to explore it. Boxplorer allowed over half a dozen ways to modify Reflectiods alone, which created some AMAZING landscapes. Here's a video I made after one productive tweaking session:



    This video was all real-time generated, using little camera paths you could set in the program. Picture walking around in that, as either an ant or a titan.
    Inspiring
    February 11, 2015
    This is also a video I generated from simply tweaking Reflectiods in Boxplorer. Imagine swinging your way around this landscape with two grappling hooks:




    More then a few people have broken the boundary of turning fractals from 2D objects, into 3D objects. But to my knowledge, nobody has yet figured out how to generate real-time collisions based on them. I think it's possible...

    If you think of the fractals as objects that reflect light, why not use that same information to reflect bodies? You don't generate a collision model for the entire structure at once, but instead generate collision for whatever is around the bodies you're tracking as they move, real-time. You only need to track what's immediately around each object, just a tiny bit of space, very low-rez information. The computer generates that collision as needed, discarding it as needed. So the player can see for miles, but unless they walk over that ground, or throw a rock at that hill, only the ground under their feet really exists. It's like Infinite Collision generation.