November 2, 2009 at 11:57 pm (Canvas 3d, FSOSS, Seneca, open source)
This year’s FSOSS was a bit smaller than usual which is to be expected given the state of the economy and a flu virus that seems to be jumping around like a mad grasshopper. However there was still a quite a bit of neat stuff going on. I didn’t get to go to as many talks as I would have liked to but I did catch Al MacDonald’s (side note, Al’s site does NOT use Flash!) talk on Processing.js.
I was really interested in it because it is similar in some ways to my own project, the Canvas 3D JS Library. Processing.js is a language for programming graphics and animations by drawing onto the Canvas Element using the Processing Language. I had learned a bit about Processing.js before hand but seeing Al McDonald explain it was much much better.
The neat part about Processing.js is that not only will it allow you to create stunning visual effects but being part of a web page means that you can drive the visualization with data from the web. Al showed a demo of a search engine that visualized search results with processing code. Drawing with processing requires only that you include the Processing.js files as part of your page (similar to how c3dl works). It does not require add-ons.
There are several students at Seneca working on adding more functions to Processing.js (it is not the complete processing language after all). Part of this will include adding 3D functionalities to processing.js using WebGL. As c3dl has already done a lot of work in this area, we are looking forward to working on this aspect with the Processing.js project.
One strange thought I had while attending the Processing.js talk was that for some reason it reminded me of Apple Logo (or was it Apple Turtle?). This was the second programming language I ever learned (the first was BASIC). It ran on my old Apple II and basically you can use it to draw pictures by giving commands to a “turtle” (think of it as a cursor that told you where the pen was). As the turtle moves, it draws a line. You could tell it to go forward, backwards, turn a certain amount lift the pen or put it back down and a probably a whole bunch of other stuff that I cannot remember now. It was not a fast language but it was really cool because I could visually see what my instructions were doing. Although I had not used it in years nor was it a practical language it was part of what sparked my interest in programming when I was young.
With that in mind, I can’t help but to think how this could be a really good way to introduce to programming for students at younger grades. It has some very unique benefits:
- It’s seems to be a simple language to learn.
- It’s highly visual and graphical (its not just text… /yawn /boring)
- It’s open source (no proprietary licensing required to develop or publish with it…just a text editor and a browser)
- It’s part of the web, you can do some really neat stuff that interacts with the web and data on the web.
- What you do is on the web…you can do something, publish it and show off your work.
I have done workshops for high school students in past to trigger their interest in programming. I think something like this would be far more interesting than plain old web pages.
Leave a Comment
October 19, 2009 at 10:59 pm (Canvas 3d, Seneca, open source)
I’ve been watching the Seneca Open Source planet for a little while and noticed that a few students are using Git. A friend had recommended it to me when I was working on my website for school this summer. For those of you using a mac with Git, you may be interested in trying out GitX. It has a nice gui for some of the tasks (not all… I still had to got to command line for some stuff).
Leave a Comment
February 26, 2008 at 7:52 pm (Canvas 3d, open source)
For the past week I have been attending the GCD. Lots of really neat stuff that I learned while there. However, one of the most valuable things during this time was a chance to meet with Vlad about the c3dl project. I showed Vlad what we had and some of our concerns.
Mark, one of the developers for the project, had some concerns about how the animation looked and how it seemed to drop frames once in a while. Mark had a few ideas about this and thought it had to do with error checking on his arguments. As soon as as I showed it to Vlad, he had an immediate answer for me. Two words: Garbage Collection (GC). The hiccup that we saw in the animation was caused by GC. The other thing I learned was that doubles were garbage collected (something that should change soon). Since most of our information (vectors, matrices, etc) are store as doubles, garbage collection on doubles are even more noticeable.
Vlad had mentioned that this is likely going to fixed with the changes currently being made to JS. In the mean time, we should continue to work on making our code as fast as possible. Our scene is still very small so I wonder how a bigger scene would affect performance.
Leave a Comment
February 19, 2008 at 2:04 am (Canvas 3d, open source)
The Canvas 3d Library site (http://www.c3dl.org) is now officially up and running. The site was built by the PHUG group and they did a fantastic job of making it look good.
I’m really excited about the possibilities for our project. Currently we are not able to provide actual samples of Canvas 3D right on our site as it is not supported by today’s browsers. One day when it is supported, I think it would be really neat to just have samples built using our libraries right on our page. For now we’ll have to settle for quicktime captures (coming shortly)
1 Comment
February 19, 2008 at 2:04 am (Canvas 3d, open source)
Several things are happening today that I’m really excited about. The first is that our website is now up and running (see this blog post about it). The second is that we are now ready for our 0.1 release! Here is a screenshot of what you would see when you run it (the cubes are not static though… they will spin!) :

Ok… I know… its just 4 boxes. Nothing fancy. However the really neat part of this is not in the ability of to animate 4 cubes but rather the simplicity of how this can be accomplished using our API. Using the API, you can create the scene, the 4 spinning cubes and do the animation in under 30 lines of code.
Things that we need to do in the next little while:
Documentation – like many programmers, we really don’t have very good documentation in our code. We need to get our api documented so that people can actually do something with our API
Tutorials – Simple tutorials would be really useful. I have always found reading API documentations to be dumped into the deep end of a pool and then being asked “can you swmi?” Simple examples showing different uses of the API would be really helpful in showing its usage.
Code cleanup/review – the programmers working have a lot of background with C/C++. Not so much with javascript. What we could use is another eye to help us with fine tuning the API. Are we coding in the most effective way possible? Are we on the right track? What would make this easier to use? Do we need to abstract away more (there is still the need to use vectors in some of our calls for directions and so on… do we need to make it even more intuitive?)
This is our first really big step and we would welcome any feedback that we can get.
Leave a Comment
January 31, 2008 at 10:50 pm (Canvas 3d, open source)
Our little canvas 3d library project is coming along nicely. The idea is that we will build a smallish api and demonstrate how it can be used in a variety project. Currently Mark and Andrew are working on various classes that will serve as the base for this library.
We have completed the back ground math classes (matrices, vectors, quaternions) and one of the camera class.
Next up we will be adding the Scene/Shape class to the mix.
My hope is to be able to get a simple working demo in the next 2 weeks that will show how these classes will work.
Leave a Comment
January 22, 2008 at 11:41 pm (Canvas 3d, open source)
The canvas 3D project has been ongoing for quite a while and the time has come to actually put in a blog post about it. Soooo here goes:
In short our project is to create a simple open source library to allow the delivery of 3D content via a browser using Canvas 3D. 3D is much more complex than 2D. Not only is the data set bigger but things such as camera, scene and so on become involved. Typically manipulate objects in 3D space requires a lot of matrix math that in general is not easy for most programmers. Our project’s aim is to build a set of simple tools and api’s to simplify 3D in the browser.
Currently, in order to use Canvas 3D in the browser, you need to know how to program with open gl. Our goal is to create some javascript libraries that will hide some of the complexities of this.
Things that we are planning to add:
- 3D model loading – The ability to create models in programs like 3ds max/blender and load them with ease
- model manipulation – rotations, translations, etc.
- Scenes – handling multiple objects
- Cameras- multipletypes
- Physics – addition of physics to the objects in the scene
Still in the brain storming kind of phase so lots of ideas still to come. We will be building this up in small steps and releasing as we go. Feel free to test things out and give us some feedback.
Our wiki page:
http://zenit.senecac.on.ca/wiki/index.php/Canvas3D_JS_Library
Leave a Comment