• released •
We have already seen a few cool microStudio demos of pseudo-3D techniques, like a Raycasting demo, a 3D cube, or projects using sprite scaling tricks. However, why should microStudio be limited to only a 2D drawing API? I will introduce a fully working 3D API, which will be derived from BabylonJS. You will be able to import 3D models (FBX, GLTF, OBJ), textures, animations in your project and to leverage accelerated 3D graphics through WebGL. All that with the ease of use of microStudio.
Sounds great! What's the estimated time of arrival?
This is quite a long term plan and I don't think it will land in microStudio before 2022. I have a clear idea of how I will implement this (actually I even have a working experiment, based on Three.js, but I would like to switch to BabylonJS). The thing is I have many other tasks to complete before I can start working on it!
Here is said demo: https://microstudio.io/gilles/fishdemo/plop/ (gamepad required to control the fish). It has all the basics, creating a scene, setting the objects, the camera, triggering animations. The fish is imported as a GLTF model.
Wow, nice! Is the specular light part of the model or actually part of the render?
The specular light is a result of the render. The model is shaded using the PBR shader in THREE.js (currently). The plan is that in the end you can use all the common material shaders and also the post-processing shaders built in BabylonJS. I also want to enable custom shaders (using GLSL).
OoooOOooOO! That sounds great!!! I can't wait :).
But what would happen if I made a working model importer into my raytracer first? I should be able to figure out triangle intersection, so watch out! Evil laugh
Adding this may need to have much more storage for users.
I guess it depends on what you want to model.
Low polygon models can be far smaller than the average image file. Actually, if it is textured the texture images probably use up the most space.
And if it supports voxel style models the data files are even smaller.
Ok, if one plans on high detail models and complete 3D levels ... Yes, then you need space :)
As @TinkerSmith says, it depends on your project. Just with code, you will be able to create primitive shapes like spheres, boxes, planes. You will also have the opportunity to generate meshes procedurally, like terrains etc. Such a 3D project won't require any storage space.
On the other hand, if you import detailed, animated models with high res textures and the like, then yes 20 Mb storage is definitely short! Maybe I will be able increase this limit in the future depending on how the storage is used globally. Also if someone plans to work on a big 3D project with lots of data, the best will certainly be to work locally with the standalone app in the end.
Wow, that seriously sounds amazing! As for the primitives, however, how would you be able to manipulate the objects though, would it be similar to the
screen.fillrect(x,y,width,height,<color>) function but for a 3d object? Eg.
And last off, would you be able to manipulate the render? Like controlling specularity or ambient light?
is there any news on importing an obj in microstudio 3d? That would be fantastic to have a real didactical environment for our students :)
You can import GLB files, but you would have to use the Babylon extension to process them.
Example by @gilles
So the initial plan was to "introduce a fully working 3D API, which will be derived from BabylonJS" ; what I did was to enable BabylonJS and add an asset manager allowing to import and manage 3D objects (GLB, OBJ) and textures (JPG, PNG). There is still a project to develop a "micro3D" API, on top of BabylonJS, but I will consider that the initial goal of enabling "real" 3D in microStudio is complete with the support for Babylon.
Is there a tutorial for 3d programming?
3D programming is quite a complex matter and the approach highly depends on what you try to create.
There are some basic examples in the explore section, but there is no specific tutorial (yet).
3D in microStudio is in its early stages and at this point in time I think it's more for the experts here that already have 3D experience.
Personally I use tutorials for the specific 3D engine and try to convert/apply it in microStudio. And I struggle, LOL