Environment Lights + Augmented Faces + Kotlin Begins + Green Flickering Fix + Performances
Big update here!!!
I have to say that I'm very enthusiastic about this release and here is why:
Entry point to Kotlin and Coroutines full migration
Every new features will also be written in Kotlin. This will bring a lot to Sceneform Maintained which can actually be pretty hard to understand since everything is fragmented in not very clear classes.
Moreover, a lot of leaks were happening not only after destroying the SceneView
but also inside the frame callback which generated a memory consumption increase.
Thanks to Android Lifecycle, we will now insure that every pending call is canceled and every used resource is destroyed when the Activity, the Fragment and the View is destroyed.
Beyond all that, the old LightProbe was the last SFB consumer so this release is opening the gate to a big cleanup of unused classes and most important, we will be able to remove the SFB, JNI and lull parts.
Environment Lights
Everything we can see, every beauty comes from lights. They are the main factor of every visual things and so our physical rendering SDK.
From spectacular to realistic results, everything is about lighting.
Sceneform had a big lack on this part and was archived just after the ARCore HDR lighting release.
As an example, the directional light retrieved from ARCore was implemented as a SunNode which could have been great considering it should correspond to an anchor in the real world. But the fact is that it was enormously frame consuming for just handling a direction and intensity (you will be convinced when testing this release).
- You can now load your environment from a single HDR or KTX file locally or from an http/https url.
IBLPrefilter.specularfilter
is integrated and used for HDR files.
Have a look here #156 if you want to learn more about it.
ARCore Light Estimate provides directional light, ambient spherical harmonics, and reflection cubemap estimation
Light bounces off of surfaces differently depending on whether the surface has specular (highly reflective) or diffuse (not reflective) properties. For example, a metallic ball will be highly specular and reflect its environment, while another ball painted a dull matte gray will be diffuse. Most real-world objects have a combination of these properties.
Think of a scuffed-up bowling ball or a well-used credit card.
- Choose depending on your needs if you want
REALISTIC
orSPECTACULAR
result. - Go further and refine light estimation by defining your custom
LightEstimationConfig
A big thank to the ARCore Team (@devbridie) and to the Filament Team (@romainguy) for helping us making the two "worlds" live together with the correct estimated to physical values.
Augmented faces
This part was missing since the SFB to glTF move but thanks to the enormous work of @fvito and @grassydragon (fragment shader genius),
after 3 months of reflections, discussions and developments (#93), the result is just amazing!!!
We are not speaking here of a simple filter that add decorations around the detected face but of a complete real time face "substituter" (bones positioning/orientation, skin/texture modeling, face occlusion)
- The visual effects can consist of up to two components: The face mesh and the face regions renderable.
- The face mesh is used for visualizing 2d images mapped to the surface of someone's face. The face regions renderable is used for visualizing 3d objects (e.g. fox nose and ears) that will move with the regions of the face that are tracked by ARCore. When creating a face regions Renderable, the regions are mapped to bones in the model.
Fix green flickering and laggy camera stream
Thanks to @RGregat the camera stream is now very responsive and the 1.19.6 green flickering is now solved.
- Swapped call order of doUpdate and doRender
- Fixed a poorly implemented replacement of a deprecated part in the ExternalTexture class
We need sponsoring to continue...
After one year of days and nights working on Scenform Maintained, we didn't get even $1 sponsoring.
Sceneform Maintained is not only a quick library for helping developers but a complete AR SDK.
After a quick look at the Play Store, we can see that they are a lot of paying users (billions for some) apps that are using this SDK.
I'm not looking forward to earn a living with Sceneform Maintained but every work that make you earn money should also be remunerated/redistributed to this repository contributors.
So my decision for now is to keep the new features (Instant placement, depth points, objects detection, environment skybox,..) private and spend my time on personal remunerative apps until I get a descent sponsoring.
Note that this is only my personal choice but other contributors can still make PR.