Deltakosh

What's next?

Recommended Posts

Hello dear community, we are about to ship 3.1 (early december). I'm really proud of what we did so far but I want more for 3.2 :)

SO I'm wondering what could be useful for you regarding ease of access and simplicity.

Please use this thread to give me any idea / feedback. I cannot guarantee that everything will be developed but I can promise that everything will be considered seriously

Share this post


Link to post
Share on other sites

There is an interesting comment recently from max123 regarding cameras (http://www.html5gamedevs.com/topic/33942-threejs-or-babylonjs-for-room-design/?do=findComment&comment=194879).  I find myself doing awkward checks on cameras especially in VR.  I don't know if unifying the cameras even more is something worth considering.  I like the work you did adding behaviours recently - perhaps that is one way to go.  It is already done a lot like behaviours the way inputs are dynamic.

Also, AR.js as a supported plugin :) 

Share this post


Link to post
Share on other sites

- For cameras, can be created a class that groups all cameras using a unique camera name (CustomCamera for example), but in the signature add the type of camera that you want to use. After the properties, can be done as for "MeshBuilder" with options {} in the signature too.

- A tutorial part very detailed step by step on the shaders would be appreciated by many, because it seems really complicated, but we know what they can do, it would be cool to learn them gradually starting from 0, in explaining how it works, what is the purpose of each property. in short, a lot of details.

 

 

Share this post


Link to post
Share on other sites

As workers coupled with sharedArrayBuffers seem to be a good plan to speed things up while keeping JS (no wasm not asmjs needed), maybe a way to integrate/name them easily would be nice ... knowing they usually require a separate file, a way to start them, to stop them, etc. Well a bunch of new things that need to be thought before.

Share this post


Link to post
Share on other sites
57 minutes ago, jerome said:

As workers coupled with sharedArrayBuffers seem to be a good plan to speed things up while keeping JS (no wasm not asmjs needed), maybe a way to integrate/name them easily would be nice ... knowing they usually require a separate file, a way to start them, to stop them, etc. Well a bunch of new things that need to be thought before.

Do you know where workers could be useful other than physics?

Me and @BitOfGold did some basic testing of sharedArrays and CannonJS, but I wonder what else could be "off-loaded" to separate threads.

https://jsfiddle.net/gak8320L/15/

Share this post


Link to post
Share on other sites

here for example :

or anywhere where we need either to iterate over dozens of thousands objects (standard particles) or where we need long or intensive computations (maybe texture generation from capture devices, collisions, path-finding algos, etc)

 

Share this post


Link to post
Share on other sites

@Deltakosh - My first weird experience came here (http://www.html5gamedevs.com/topic/33478-highlighter-not-working-in-vr/). But to answer your question - I have my game using a combination of code from VRExperienceHelper and the excellent 'zero to hero' PG from davrous (http://www.babylonjs-playground.com/#E0WY4U#18).

In the PG to cast a ray:

if (!camera.leftController) {
   ray = camera.getForwardRay();
} else {
   ray = camera.leftController.getForwardRay();
}

In the PG to create a VR camera:

if (navigator.getVRDisplays) {
  camera = new BABYLON.WebVRFreeCamera("WebVRCamera", new BABYLON.Vector3(0, 2, 0), scene);
  scene.gamepadManager.onGamepadConnectedObservable.add((pad) => onNewGamepadConnected(pad));
  camera.onControllersAttachedObservable.add(() => onControllersAttached());
} else {
  camera = new BABYLON.VRDeviceOrientationFreeCamera("WebVRCamera", new BABYLON.Vector3(0, 2, 0), scene);
    }

Like how you gracefully degrade to webgl1 if webgl2 context isn't available - so maybe camera.getForwardRay() could check for camera.leftController and use that, if available.  Or WebVRFreeCamera would downgrade to VRDeviceOrientation.  I am imagining how this could be easier for somebody that doesn't have both kinds of devices to test with to make these VR scenarios easier.  Something like a VRUniversalCamera that maybe auto-connects controllers? :)  

The VRExperienceHelper has encapsulated a lot of the logic to help me understand how to accommodate a proper VR controller, which I don't have - which is great (to have this helper)!  I am trying to build for Cardboard and GearVR, so using a gaze approach.  I am probably doing it wrong, but I am listening for full screen to exit to detect when camera should change back (assuming we only want VR in full screen).  Is checking currentVRCamera instanceof the way to detect if controller is in use - nothing else is public?  I want to wire up code once VR is entered, but onEnteringVR is too early, so ideally I would like an onEnteredVR with maybe extra info like 'this._webVRready').  I sometimes have issues when I change the device orientation that the VR button is off screen and the canvas is not switching from portrait to landscape.  I *do* realise this is an open source project and I can contribute.  I am more waiting to see what comes out of 3.1 as those recently assigned will probably fix many of these and then to contribute from my own experiences, if anything is missing.

So, my request for 3.2 was to make it easier to target VR.

Share this post


Link to post
Share on other sites

Hello some comments:

-The WebVRCamera already automatically connects the controllers. But I agree with you we should overload the getForwardRay. Good idea. Fancy doing a PR?

- Gaze support will be added to the VRExperienceHelper: https://github.com/BabylonJS/Babylon.js/issues/2498

- For issues not addressed, I think it is a good idea to create github issues so we can track it and discuss them. the are all good ideas (feel free also to update the issue #2498)

Share this post


Link to post
Share on other sites

I'd love to see any of the following:

  • LOD enhancements:
    • LOD blending. Not sure what the "cheapest" method to reduce pop-in is. 1-bit pattern masks?
    • Load and dispose at LOD. A "set it and forget it" method to load a model/scene file into the current scene when needed, then dispose of it when no longer needed. This would be quite helpful for building large/streaming type worlds, but useful even for small scenes to reduce load times. (Everyone hates a loading screen!)
  • More user-friendly shaders:
    • Built-in primitives. Rather than Road, Fire, Brick, etc. a set of option-heavy primitives like SimplexNoise, CellTurb, Gradient, Tiles, SphereMap, PlanarMap, etc.
    • Primitive combiners. In prerendered 3d, nesting nodes like gradients, noise patterns and falloff types allows for the creation of extremely rich non-repeating textures from very short descriptors. Could something similar be done to generate pixel shaders?
  • A simpler method to remap keys and other input methods (as opposed to just adding and removing keys).

(On background, I'm working on a virtual museum of Earth history, in which every step you take represents a million years. So, a mesh-heavy scene that's almost 2 miles long. I'm an old hat at animation, but new to realtime 3D. What I'm mainly finding is that the bottleneck isn't the amount of content to be rendered, but getting that content to the user's browser in the first place.)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Recently Browsing   0 members

    No registered users viewing this page.