Jump to content

What do you want in Babylon.js - http://babylonjs.uservoice.com


Deltakosh
 Share

Recommended Posts

A couple of ideas...

 

  • continued improvements in performance, especially with physics (granted this is mostly on shoulders of cannon.js)
     
  • Windows Phone 8.1 support, when available (rumors have it that WP8.1 will include WinJS type apps, as well as IE11/WebGL)
     
  • a "virtual joystick" for touch-based games, perhaps made skinnable (could maybe reach out to other oss projects for this

 

Thanks!!

Link to comment
Share on other sites

I'll work on the virtual joystick asap. I've already implemented it in a previous superset framework we had in mind: http://blogs.msdn.com/b/davrous/archive/2013/07/23/introducing-babylon-gamefx-a-framework-to-build-html5-webgl-games-in-a-few-lines-of-code.aspx (finally, discontinued...). 

 

I just need to refactor it and think about the best way to architecture it for babylon.js. If you have ideas on the best way to use it as a "babylon.js" user, I'm opened to suggestions. 

 

Bye!

 

David

Link to comment
Share on other sites

My Some ideas :

  • Camera anaglyphe PostProcess (Added)
  • Shader Cell-Shading (Added)
  • Effect underwater
  • Sky Dome/hemispheric
  • Volumetric Cloud (Added)
  • GUI game
  • LOD systeme (Added)
  • Multi-pick() in radius
  • PickedSprites
  • Tags on the mesh  (Added)

For worldmonger :

  • Paint texture following a radius
  • Paint the grass and tree following a radius
  • Gizmo radius paint in the place of the particles
  • Hole systeme: Allows you to create holes in the ground for the tunnels.

Thanks!

Link to comment
Share on other sites

- Transform nodes ;). I guess this one is for me...

- Parents' matrix computed

- Groups (all meshes of a group would be "merged" when the group is closed and "unmerged" when the group is open: a closed group would be seen as a single mesh in the scenegraph)

- Mesh visibility per camera

 

Thanks again for your time

Link to comment
Share on other sites

I think this is an easy one :)

 

It would be handy to have another version of ImportMesh in BABYLON.SceneLoader, which accepts just a JSON string for data instead of trying to load from a file.

 

The reason for this would be for creating jsfiddle and other debugging that prohibits loading external .babylon files, or in cases where the .babylon filetype cannot be added for MIME types.

Link to comment
Share on other sites

  • 2 weeks later...

One of the features of Blender is an option to create shape keys that can be animated using the Shape Key Editor (found in the DopeSheet). Here is video of a simple lipsyncing example I created - made with Blender and used in the Unity game engine using a special script (the latest version of Unity no longer needs the script as shape keys are imported directly).  The video is here:

 

Lipsyncing with Blender Shape Keys

 

Now lipsyncing of this type can be done with bones - and not too long ago I watched a video about "Call of Duty" that claimed that the face rigs of the 2 main characters had 90+ bones in the face alone. Shape keys allow an easy way to create lipsyncing without the task of rigging the face, and getting the weighting right, and does not have limitations on the number of vertices per bone.

 

So is it possible, or could it be possible, to allow the use of Shape Keys in babylon.js, and to save out animations created in Blender?

 

I have no idea on how difficult it would be to add such functionality to babylon.js - or if it would have a serious impact on the size of babylon files or FPS.

 

cheers, gryff :)

Link to comment
Share on other sites

Primitives in babylonJS files. Thus, instead of providing positions and normals arrays, we could only provide the type and the parameters (an extra parameter could be used for subdivisions). Mesh.CreateBox or Mesh.CreateCylinder... would use these parameters to create the mesh.

 

Edit: Added. https://github.com/BabylonJS/Babylon.js/pull/192

Edited by gwenael
Link to comment
Share on other sites

It depends on my mood ;)

 

Here's the JSON for a mesh in case you don't know it...

{"name": string,"id": string,"parentId": string,"materialId": string,"position": vector3,"rotation": vector3 (can be omitted),"rotationQuaternion": vector4 (can be omitted),"scaling": vector3,"infiniteDistance": boolean,"isVisible": boolean,"isEnabled": boolean,"checkCollisions": boolean,"billboardMode": int (0 = None, 1 = X, 2 = Y, 4 = Z, 7 = All),"receiveShadows": boolean,"physicsImpostor": int (0 = None, 1 = Box, 2 = Sphere),"physicsMass": float,"physicsFriction": float,"physicsRestitution": float,"positions": array of floats (3 per vertex),"normals": array of floats (3 per vertex),"uvs": array of floats (2 per vertex),"uvs2": array of floats (2 per vertex) which is the 2nd texture coordinates (can be omitted),"colors": array of floats (3 per vertex) which is the per vertex color (can be omitted),"matricesIndices": array of ints (4 per vertex) which is the matrices indices for bones (can be omitted),"matricesWeights": array of floats (4 per vertex) which is the matrices weights for bones (can be omitted),"indices": array of ints (3 per face),"subMeshes": array of SubMeshes (see below),"animations": array of Animations (see below, can be omitted),"autoAnimate": boolean,"autoAnimateFrom": int,"autoAnimateTo": int,"autoAnimateLoop": boolean}

and here's the part I suggest we could "specify" differently for some specific meshes: instance of primitives.

"positions": array of floats (3 per vertex),"normals": array of floats (3 per vertex),"indices": array of ints (3 per face),"subMeshes": array of SubMeshes (see below),

Let's say my mesh (instance of primitive) is a box that I exported from Blender, then I have vertices for it which have positions and normals. When importing it, BabylonJS doesn't know it's a box, it sees it like any other mesh. Instead of exporting my box, I could also create it thanks to BabylonJS by calling the helper function BABYLON.Mesh.CreateBox. What I would like to have it's new properties in the JSON to tell the parser that my mesh must be imported/created by calling BABYLON.Mesh.CreateBox. We only have to specify the size, no need of positions, normals, indices and subMeshes in the JSON file for the specific mesh:

"size": 5

Of course, I could create my meshes (instance of primitives such as boxes, cylinders...) in a javascript file but everything could be stored in the JSON file and no need for an extra file that must be shared between projects.

 

If I want a cylinder, it won't be size (like for a box) but:

height, diameterTop, diameterBottom, tessellation

I guess we could have array of boxes, cylinders, spheres... like we have array of meshes, cameras and lights (one array per type) but I don't know how parenting would be handled since a mesh could be parent of a box or a box could be parent of a mesh so when the box would be imported (if boxes are imported before meshes) its parent wouldn't exist yet in the scene but I guess this possible issue is already solved since that's the same case for cameras and meshes.

 

The global structure of a .babylon file would be:

{"autoClear": boolean,"clearColor": color3,"ambientColor": color3,"gravity": vector3 (usually [0,-9,0]),"cameras": array of Cameras (see below),"activeCamera_": string,"lights": array of Lights (see below),"materials": array of Materials (see below),"meshes": array of Meshes (see below),"boxes": array of Boxes (see below),"cylinders": ...,"spheres": ...,...."<lastTypeOfPrimitiveThatBabylonJSHandles>": ..."multiMaterials": array of MultiMaterials (see below),"shadowGenerators": array of ShadowGenerators (see below),"skeletons": array of Skeletons (see below),"particleSystems": array of ParticleSystems (see below),"lensFlareSystems": array of LensFlareSystems (see below)}

A box would be defined by the following JSON: (Notice "size" instead of "positions", "normals"...)

{"name": string,"id": string,"parentId": string,"materialId": string,"position": vector3,"rotation": vector3 (can be omitted),"rotationQuaternion": vector4 (can be omitted),"scaling": vector3,"infiniteDistance": boolean,"isVisible": boolean,"isEnabled": boolean,"checkCollisions": boolean,"billboardMode": int (0 = None, 1 = X, 2 = Y, 4 = Z, 7 = All),"receiveShadows": boolean,"physicsImpostor": int (0 = None, 1 = Box, 2 = Sphere),"physicsMass": float,"physicsFriction": float,"physicsRestitution": float,"size": float,"colors": array of floats (3 per vertex) which is the per vertex color (can be omitted),"matricesIndices": array of ints (4 per vertex) which is the matrices indices for bones (can be omitted),"matricesWeights": array of floats (4 per vertex) which is the matrices weights for bones (can be omitted),"animations": array of Animations (see below, can be omitted),"autoAnimate": boolean,"autoAnimateFrom": int,"autoAnimateTo": int,"autoAnimateLoop": boolean}

Does it make sense?

 

Edit: I updated the wiki according to the changes I've made for the geometry system. https://github.com/BabylonJS/Babylon.js/wiki/Babylon.js-file-format

Edited by gwenael
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...