Friday, November 12, 2010

Qt3D and the Net Continued

Here is where Qt3D comes in. Qt3D is a research arm of Nokia's Qt software development kit (SDK). Jumping to a platform such as OpenGL ES2 when you're stuff is written in OpenGL is not a trivial change. The mathematics of 3d is very complex.

(Skip this paragraph if math is not your friend)
Take a simple cube for example, every corner of a cube has to be entered into an a variable array with 3 floating point numbers. Since there are 8 corners, this adds up to 8 * 3 or 24 floating point entries. Then in a separate array, a normal entry has to be made for each corner which tells the corner where to reflect light from. Then every face corner has to entered into an index that describes each face. That's 4 entries for each face. Since there are 6 faces, that's 6 * 4 = 24 entries. That's a grand total of 24 corners (vertices) + 24 face descriptions + 8 normals or 56 entries in 3 separate variable entries.

Now that I've described a cube, imagine the resurrection halls of Mansonia. Thank God I have standardized programs that can create these objects for me. For that I use  programs that create the 3d entity. I still have to deal with manipulating the arrays and delivering them to the graphics engine. I use Blender for that. It's open sourced, so it's free and is capable of creating all the 3d content I need to get the Urantia Book in 3d.

Ok. This is where Qt3d comes in. It makes it easy for me to take these arrays and properly present the objects with the right mathematics to position, rotate and resize them in the scenes that are created to present the information to the user.

Using Qt3d and Qt, I am now capable of presenting 3d content to the graphics card in an organized fashion using OpenGL ES2.

The next step is getting it to function on the Internet. Nokia's Qt SDK has an arm that has just released a project called Lighthouse which, hopefully, simplifies getting the system to work on differing types of computers. It has a branch that
takes my code and resets (recompiles) it to work on Native Client. Native Client, as I alluded to earlier, allows C++ programs like mine to work on then Internet.

A little bit on Native Client. Using the Qt's Lighthouse project, I can place my system through Native Client on a normal browser. The code is sandboxed, that is, protected from damaging the local computer and then it is presented to the user as if it had been installed. Google has a front end using Native Client's way of compiling the code (making my code usable by a computer), that first, makes sure that some methods of using the local computer aren't entered into the program and then they insure this when the user accesses the code by visiting the page on the Internet.

At that point the program downloads and is tested for compliance so that no program is capable of damaging the local computer. I think that Google has breached the new way of using the Internet. A real stroke of genius for Google and the power that will be placed on the Internet. The first time you download the code, it takes a bit of time and from then on it only downloads the changes. This way, when I upgrade, I won't beset the users with long waits. I've asked the programmers to add a wait progress icon to help with long waits. I'll be entering it in their bug and suggestion system today.

My hope is that Google succeeds with this platform. It represents the largest change to the Internet since it was born and will bring power between disparate systems. I create my own hardware, that is, build my own circuit boards and one thing that doesn't escape me is that the entire breath of hardware makers and controllers use C and C++ for control of their hardware. It is by far the best way to manipulate a CPU or GPU directly (Central Processing Unit and Graphics Processing Unit). So it goes to follow that most of these people will be able to control their stuff over the Internet if they are given the chance and that is where Native Client comes in. That is not the end of the story. All the major software is generally written in native code like C++ and now with Java. JavaScript is different, it is what is used on the Net. They will also give Cobol and Fortran the capability to present their programs also.

So, programs like Adobe Photoshop (if they take advantage of it), will be able to run from any computer on the net. That includes the new TV you're going to buy.

So a new age is born and I've waited long enough to get on the Net. Two days ago, I started playing with getting up and running on Native Client. Since the system is not completely ready for OpenGL ES2, 3d will have to wait till that's complete using Qt3D. In the meantime, I have the searching and indexing system running on the Urantia Book and it is capable of looking up things pretty quickly and in many different ways. Working directly with the Urantia book, I am capable of doing a lot of really interesting things with the book.  So that's what I'm putting up on the Internet first.

I've read some of the dissenting voices coming from the industry as far as Native Client is concerned. For instance, both Firefox and Opera say it's dangerous and they seem to be resisting the change. First comes rejection, then apathy, then acceptance. I guess it's the story of humanity. I've looked at their concerns with security and there is no doubt in my mind that ActiveX on Internet Explorer, Firefox's NSAPI, and the like are far more dangerous and have been creating the enormous virus and trojan problem we're having. I don't know anyone who hasn't been affected by these. Native Client will pretty much eliminate all of that. I use Kubuntu Linux now so I'm not plagued with any of these problems but everyone I know using Windows has been attacked. For now, Google's Chrome and Firefox are the only two working as yet. Chrome mainly. It's a good browser and will probably gain a strong following until Firefox and Opera have decided to use the Native Client code instead of Google forcing Native Client through NSAPI and the like.

Anyway, I am fully dedicated to bringing the Virtual Urantia platform and it's evolution to the Web, that is, as long as I'm mentally capable.

From now on, I'll be posting my efforts here, probably on a daily basis.

You can type in "Pierre Chicoine" Qt3D with the quotes around my name or "Pierre Chicoine" "Native Client" or PierreChicoine Qt3d or Pierre Chicoine Virtual Urantia to see some of my 3d exploits.

No comments:

Post a Comment