I was able to get the "old-develop" branch of Gladius working last night. Tonight, I hope to get the newer stuff working. Per comments from Alan Kligman, Gladius is undergoing a major rewrite so the new "develop" branch will not work quite the same. Still, I hope to get it working tonight.
Much of the current effort in Gladius is focused on modularizing the engine, which should make swapping parts in and out much easier. I have very little idea what those parts might be, but I will find out. Anyhow, some of the stuff that used to be in "old-develop" has moved into separate GitHub repositories. There is also a common repository, plain-old "gladius", which has some example code. In fact, I think that might include the example code that I used last night, rewritten for the newer Gladius.
To find out, I checkout the git repository:
git clone https://github.com/gladiusjs/gladius.gitThere is a "cube" example in there, which sounds suspiciously like the example I got working last night. I try that again by copying the HTML into my express.js server:
➜ public git:(master) ✗ pwd /home/chris/repos/gladius-my/public ➜ public git:(master) cp ../../gladius/examples/cube/index.html .I edit the HTML to reflect the location of the Javascript files in my application:
<!DOCTYPE html> <html> <head> <script src="/scripts/gladius-core.js"></script> <script src="/scripts/gladius-cubicvr.js"></script> <script src="/scripts/cube.js"></script> <title>Gladius Cube Example</title> </head> <body> <canvas style="float: left; margin: 10px" id="test-canvas" width="500" height="500"> </canvas> </body> </html>I already have a
gladius-core.js
that I compiled the other night. But I will need gladius-cubicvr.js
and cube.js
:➜ public git:(master) ✗ cp ../../gladius/gladius-cubicvr.js scripts ➜ public git:(master) ✗ cp ../../gladius/examples/cube/cube.js scriptsIt seems that something is hard-coding
procedural-material.js
and procedural-mesh.js
in the server's /assets
directory so I move that in as well:➜ public git:(master) ✗ mkdir assets ➜ public git:(master) ✗ cp ../../gladius/examples/assets/procedural-* assetsWith that I am ready to access the example cube:
Ooh, neat! That is a much more interesting example than the one from last night. The cube in the middle spins around while a smaller cube orbits around it.
Dang, that was really easy. I could have saved myself some work and angst had I started there. Ah, who am I kidding? I love the pain of messing about with things that don't quite work. Anyhow....
I would like to convert that to require.js since that is how Gladius code is supposed to be developed. So I remove all of the
<script>
tags, replacing them with the usual require.js <script>
tag and the actual require statement:<html> <head> <script src='/scripts/require.js'></script> <script> require.config({ baseUrl: 'scripts' }); require(['gladius-core', 'gladius-cubicvr'], function(Gladius, cubicvrExtension){ // copy cube.js here }); </script> </head> <body><!-- canvas here --></body> </html>I configure require.js to look for its scripts under the
/scripts
path. Then I require 'gladius-core'
and 'gladius-cubicvr'
. With that, I copy the contents of cube.js
directly in my page's <script>
tag—with one change. Instead of registering the cubicvr extension from a global object:engine.registerExtension( Gladius["gladius-cubicvr"], cubicvrOptions );I can use the
cubicvrExtension
variable corresponding to the gladius-cubicvr
library:engine.registerExtension( cubicvrExtension, cubicvrOptions );And it just works!
Tomorrow, I think I'll figure out what a "cubic vr" is. Or maybe what a "procedural mesh" is. There is a lot I do not know, which should make for a fun adventure.
Day #405
No comments:
Post a Comment