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