Friday, January 31, 2014

Cloudy Thoughts

In a recent post, I wrote about cloud services in a slightly negative light. To be clear, I have nothing against them. Storing projects online is convenient. It makes collaboration simpler. There's no need to install or update licenses! I just received a long-overdue workstation upgrade. When I think about how much time I'll be spending this month just getting it ready for use, part of me dreams of a future when all of my apps are available online.

Indeed, I may offer some kind of cloud service for Mana in the future, or rather partner up with someone that wants to organize that end of things. As a customer, however, I prefer to have an offline option. I don't want to have an internet connection required and unless the cloud is offering some advantage beyond storage, I'd rather not pay monthly for it, either.

I mentioned in a recent post as having something new to offer. It is basically a 3d modeling tool that functions entirely inside a web browser. My first trial with it was pretty unsuccessful, but there's a recent update that looks like a complete overhaul. I'll definitely have to find some time to give it another whirl.

Saturday, January 18, 2014

To Three Or Not To Three?

That is the question!

I've been spending time evaluating Three.js as a potential export target for Mana Web. As a framework, Three is nicely organized and a great starting point for experimentation. Its renderer, however, is lacking some key features that I'd like to include in an online model viewer.

For one thing, there are no variance shadow maps. It wasn't as easy as I'd hoped, but I've managed to add them to my local copy. The screen shots below show the results of that effort. The code is messy right now, but once I'm finished I will see if I can get it added to Three officially. I've never used GitHub before, but I think it is time I learned!
webgl_viewer01 webgl_viewer02 webgl_viewer03 webgl_viewer04
Another thing I'd like to see is animation blending. At present, there is no way to upload multiple animations for the same character and intermix them. An animator can blend morph targets with skeletal animation, but cannot transition from an idle pose to walking to running.

As much as I like Three, it is tempting to start a Mana.js project. The features I need already exist, I'm very familiar with my own code, and I've done a partial port before. It would be more of a known quantity.

But Three.js already has quite a following and it is actively updated. Perhaps the best course is to do both. I can port Mana to JavaScript and provide a plugin that uses the Three.js renderer, but activates additional features.

Thursday, January 16, 2014

Elevator Pitches

A short, but noteworthy, article on pitching products recently caught my attention (to read it, click here). It presents a "value proposition" statement that I've decided I will one day blow up to poster size and put on the wall of my meeting room or office or foyer or heck, maybe it does belong in an elevator!

It goes like this:

For [target customer] who has [customer need], [product name] is a [market category] that [one key benefit]. Unlike [competitor name], the product [unique differentiator].

Honestly, if anyone is pitching a product or service and cannot fill out the above mad lib, how can they expect their audience to care, much less give them their time and/or money?

With that in mind, here's my value proposition for the lite version of Mana, which I've decided to call "Mana Web," for now:

For anyone with a web page who wants to include interactive 3d content, Mana Web is a model loader and viewer that exports a ready-to-use Html 5 web page (using WebGL). Unlike services like SketchFab and Verold, which are cloud-based, the product allows the customer to upload content to his/her own site or make use of cloud storage alternatives.

Mana is a little harder to pin down because I imagine it having more than one target customer and many potential uses. Here's one stab at it:

For game and app developers who want to mix 2D and 3D content, Mana is a toolkit for crafting software that tracks and seamlessly blends various forms of media. Unlike Unity3D, Mana will satisfy hobbyists with its ease of use (Lua Script, anyone?) and professionals with its lack of restrictions (no $100k cap).

Wednesday, January 8, 2014

Future In The Cloud?

My recent web browsing has been focused on sites that offer 3d model galleries. I've known about SketchFab and for some time, but a couple of others have recently blipped on my radar. One is called "" and it appears to offer more than the others because in addition to allowing uploads of pre-built models, it has a modeling interface. I gave it a try today and found it extremely buggy, but it is in beta.

Another site called "verold" offers a service that seems similar to I signed up and in a fairly short time had my test model uploaded and looking decent. Here is the result of that, but you must have a WebGL capable browser to view.

The verold options are pretty limited, but I'm sure that will change. Their claim is that a much larger set of tools is on the way and will allow for custom programming of uploaded content. People will be able to make games from within their browsers!

Perhaps I'm old school, but I prefer having direct control over my own content. I declare this as I type into a browser logged into a blogging service provided by Google. The current business trend of selling software as a service is not going anywhere and certainly has its advantages, both for the businesses and their customers.

Anyone can upload models into the verold gallery and the service is free as long as the models are public. They charge only for private projects and the $7/month fee seems reasonable. However, there are many cloud storage options. What if I want to use one of those? Or what if I already have my own website with storage that's already paid for and I want to use that instead?

These questions bring to light a new possibility for Mana.

At this time, I am still thinking about running a KickStarter for a simple version of Mana called Mana Lite (I'd call it Mini if not for Apple). It would be an easy to use model and scene editor that would export an HTML 5 web page. The resulting HTML and JavaScript files would be nicely formatted for readability and could easily be modified to suit any purpose. If Mana Lite proves popular, many features could be added for editing models, textures, lights, shaders, animation, etc.

Most importantly, the exported content could be uploaded to anywhere the customer pleases!

Wednesday, January 1, 2014

Not With A Bang

But a trickle?

I'm now convinced that WebGL should be a part of Mana's future.

WebGL is OpenGL for web browsers and Mana is an OpenGL engine, so a port seems only natural. Three years ago, I actually did a partial conversion as both an exercise and an experiment. The engine ran at a reasonable frame rate in both Chrome and Firefox, but then, it wasn't doing that much.

My hesitation to move forward with it was threefold.

One, the performance and support were lacking. Microsoft had no intention of including it in Internet Explorer and a lot of features were still missing in the browsers that did.

Two, the openness of the web means that a direct port would be showing the world the guts of Mana. Let me be clear that I want for as many people as possible to use Mana and make cool stuff with it! Eventually, I do expect to make the source available - but not just yet.

Three, scripting Mana is Lua-based. A complete WebGL version would require some kind of Lua to JavaScript interpreter. Either that, or force users to maintain two sets of script if they want both desktop and web deployments of their apps.

Enter Three.js, an MIT-licensed WebGL engine that has proven itself quite popular. Kudos to Mr.doob and the other contributors! It was not far enough along when I looked into it years ago, but that appears to have changed. The documentation is still lacking, but there are lots of great examples that seem pretty straightforward.

If Mana featured an export that would produce a ready-to-use webpage using the Three.js renderer, I think that would be useful to a lot of people. Not to mention fun!

Perhaps a new KickStarter is born.