## On to the Future of 3D Web Content: Blend4Web

One of the subjects in Computing which continue to fascinate me, is CGI and so-called 3D Models as well as Scenes, that can be rendered to a 2D perspective View. At the same time, for the more trendy readers who like VR Goggles, those scenes can be rendered to 2 2D Views, just so that there will be parallax between them, and the scene seen with stereoscopic vision.

One of the facts which has been made known is that, sometime in 2020, Adobe plans to retire Flash. On one of my home pages, I actually have a 3D animation which used to run under Flash 11, when compiled with Stage3D support. What I find is that the latest Flash Firefox plugin will not display it for Linux, but Google Chrome still plays it. It’s an animation that should be fixed, but, since I neither have the software anymore which I once used to author it, nor the ability to expect browsers to support Flash in the future, I have just skipped fixing that animation.

What I may do at some point in the future, however, is to create some other sort of 3D content, that can be published as part of Web-pages. And, through the use of HTML5 and WebGL, this is quite feasible. The only question which struck me next was, What sort of platform could I use, eventually, that is Free and Open-Source? And the answer that presents itself, is Blend4Web – Community Edition!

Because this platform, which I’ve tested partially, is fully open-source, the licensing requires that I publish any and all source code used to create my future content, including source code belonging to Blend4Web-CE itself. Thus, to avoid procrastinating on that front, I have made the Open-Source version of that code available Here.

This way, whenever I want to create some 3D content, I will not need to worry much about the licensing requirement. Yet, if my readers want to, they may go to the company’s Web-site, linked to above, and purchase the paid-for version of the software instead, differently from the Open-Source version, which I really prefer and use. (:1)

I want to caution my readers however. This software tree comprises 1.4GB, and if the readers wish to download it, I’d strongly urge them to do so from the company’s Web-site, not mine, because the company has a Content Delivery Network – a CDN – that will enable many downloads, while I do not.

Note: Differently from what some readers have already inferred, Yes, the company Web-site also offers free downloads, of the Open-Source version, which is referred to as the ‘Community Edition’.

(Updated 01/05/2020, 11h40 … )

## Atomic Game Engine Installed – twice

One of the projects which I have recently undertaken, is to compile and install Atomic Game Engine, both on my Linux laptop ‘Klystron’, and on my Windows 7 machine ‘Mithral’. This was originally a closed platform, but has received renewed interest, because it is now available under the MIT license, which is a form of Open-Source licensing, more permissive than GPL v3 is.

This platform has the eventual capability, to deploy 3D applications and games, to Windows, OS/X, Linux, Android, iOS and WebGL recipient-platforms, while some forms of it will run under Windows and Linux, in my own experience.

I have to say though, that my ability to get the Linux version of this game-design platform working, was not due to my own prowess, but rather to the fact that the development team at Atomic Game Engine, provided dedicated and consistent technical support to me, every time I ran into a problem. I would guess they are rather tired of answering my many questions for the moment, so it is also good news, that both under Linux and Windows, my installations of this platform are complete – to my own satisfaction.

I have exported a 3D application to Android from my Windows platform, but have not reproduced this success under Linux, mainly because the platform requires that I specify where my Android SDK and where my Ant executable are located – sensibly – and I do not have any Android SDK presently, installed on ‘Klystron’. I do have the Android SDK installed on ‘Mithral’, which as I said is required, and so the export to Android worked there.

Installation under Windows was much more straightforward than it was under Linux, which is often the case, because the Windows version comes as an available binary SDK, while under Linux it still needs to be custom-compiled. And whenever we custom-compile anything, we can run into dependency issues.

One major issue I faced under Linux, was the fact that the Mono packages that are standard for my Debian distribution, are not adequate in what they provide, for development in C# to be enabled. And so what I needed to do, was to subscribe to another Mono repository, managed by Mono project, to upgrade my whole Mono installation, and after that, C# also worked.

So, Atomic Game Engine allows for 3D applications and games to be designed, using the languages C#, JavaScript, and TypeScript, according to my own experience… But, a C# Project cannot be exported for WebGL playing.

Also, I have discovered along the way, that We are no longer expected to install ‘Visual Studio 2015 Express’, but rather “Visual Studio 2015 Community Edition”, and in order to get C# support to work properly on my Windows 7 machine, I needed to do an in-place upgrade, from ‘VS Express’ to ‘VS Community’.

I am pleased that all the installation and upgrading seems to have gone well, and seems to have left me with no major reliability issues, either on ‘Klystron’ or on ‘Mithral’.

However, because the build of Mono now on ‘Klystron’ is non-standard, I cannot vouch for it in general. On my actual server-box ‘Phoenix’, I must choose to stick with the more conservative Mono packages, that are meant to go with Debian, because this box needs to run reliably 100% of the time. OTOH, on ‘Klystron’, I had nothing else depending on Mono, for which reason I was also willing to do the upgrade.

Dirk

## CSEditing

In This Posting, I wrote that I had completed my testing of ‘Crystal Space 2.1‘ on the laptop I name ‘Klystron’ – for now, by installing the ‘Blender‘ add-on script, that would actually allow a user to create content.

But there was yet another facet of this open-source game engine, which I have not yet tested. This is the ‘CSEditing‘ extension. On the surface, this plug-in is supposed to permit in-game editing of content.

Digging a bit deeper reveals a flaw, in what my expectations were.

Crystal Space is not a game, but a set of libraries with an API, that allows its users to create games, but which also allows its users to create any type of application, which will then benefit from complex 3D-graphic output. If such a game or application has in-game editing, it will be because individual users gave their creations this ability. It is not as if any of the CS demos actually show off this ability, and thus, there are few or no 3D applications yet written, that use this additional API.

When we compile the libraries that comprise CSEditing, we also compile an executable – a run-time program, which is meant just to prove that the API exists and can be used from an application. This actual run-time is not in itself a comprehensive editor.

In fact, the loading of the shared libraries, which make this feature work, still needs to be taken care of by the user, who wants to use Crystal Space in C++ to create his application. AFAIK, CSEditing does not depend on the Crystal Entity Layer.

The actual CSEditing API only has sparse documentation, which would be very valuable in the future, seeing as users will be trying to integrate such an advanced feature into their indie creations. But this also seems to suggest, that this is very much a work in progress.

What the demo application does show, is the stated capability of subdividing the window into panels, each of which either display a 3D view, or which display certain types of information panels, and which can be used to select elements of the 3D scene. Based on this last capability, a C++ program should also be able to grab more properties from each of the selected nodes, than this scant run-time does in practice.

But then, this run-time only display certain information about ‘the scene graph’ as it were, without allowing its user to edit anything. It would be up to the user himself, to design a better application that uses this API.

And so, users like me are more likely just to appreciate such full-featured applications as Blender, to do actual editing. Without targeting an audience ourselves, with a transferred ability to edit content.