Open main menu

CDOT Wiki β

Changes

Canvas3D JS Library

3,933 bytes removed, 20:42, 26 January 2014
no edit summary
{{Admon/obsolete}}
 
== Introduction ==
The Canvas 3D JS Libary (C3DL) is a javascript Javascript library that will make it easier to write 3D applications using canvas 3dWebGL. It will provide provides a set of math, scene, and 3d object classes to make the canvas more accessible for developers that want to develop 3D content in browser.
== Contributors ==
* Catherine Leung
* [[User:asalga | Andor Salga]]* Peter Callaghan* [[User:Pplam3 | Patrick Lam]] (Picking)* [[User:Jamesboston | James Boston]] (Garbage collection)* Mark Paruzel (CodeBot)
* Andrew Smith
* Chris Bishop (Javascript)* Andor SalgaJeremy Giberson* [[User:Pplam3 | Patrick Lam]] (Picking - Javascript)Joe Drew* [[User:Jamesboston | James Boston]] (Garbage collection)Matthew Postill 
== Downloads ==
 
For the library, samples, and tutorials, go to [http://www.c3dl.org/ c3DL.org].
 
As of c3dl 2.0, our library uses WebGL. Any WebGL enabled browser will be able to view our content. To get a WebGL enabled browser see Tutorial 1 from our website and you do not need any addons.
 
For all older versions of c3dl, you will need the canvas 3D addon available here:
You can get the extension from https://addons.mozilla.org/en-US/firefox/addon/7171 (use suckmenot@mailinator.com/bugmenot for authentication).
For NOTE: It is HIGHLY recommended that you do not use the older version of our library, samples, and tutorials, go but to http://wwwuse version 2.c3dl0 or higher.org/
== Links ==
* [http://www.c3dl.org Our Web Sitec3DL.org]<!-- * [http://littlesvrgithub.cacom/canvas3dcathyatseneca/blog/ Our blogc3dl GitHub Repo] dead link -->* Our SVN Repo: [svn://cdot.senecac.on.ca/canvas3dOld SVN Repo]* [http://vladen.offwikipedia.net/hgorg/canvas3dwiki/ canvas3d source codeC3DL Wikipedia page] in Vlad's hg repo 
== Related Resources ==
* [http://www.openglkhronos.org/documentation open gl documentation]* [http://nehe.gamedev.net/ Nehe Tutorials on OpenGL]* [http://shape.cs.princeton.eduwebgl/benchmark/ .off (object file format) format info] == Prototype ==* [http://img126.imageshack.us/img126/3032/layoutqe4.jpg Canvas 3D API - Class DesignKhronos WebGL
== Documentation ==
Documentation can be found within the SVN repository in the on our website: [http://www.c3dl.org/index.php/documentation directory/ c3DL.org].
== Web site Task List ==
<ul>
<li>Write particle system tutorial</li>
<li>Write camera tutorial</li>
<li>Write keyboard control tutorial</li>
<li>Write callback function tutorial</li>
<li>Write transition tutorial for flash developers</li>
<li>Write blender tutorial: How to export to collada and import into the library</li>
<li>Write debugging tutorial: Creating meaningful debug output with and without firebug</li>
<li>At end of tutorials, provide link to demo showing what user can now do</li>
</ul>
<!--
== 1.0 Task List ==
<ol>
<li><del>Update library so it's compatible with canvas3d 0.4</del></li>
<li><del>Update library with hierarchy changes</del></li>
<li><del>Remove old 1.1 context code</del></li>
<li><del>Update documentation</del></li>
<li>Run final tests</li>
</ol>
-->
 
== 1.1 Task List ==
<ol>
<li>Fix backface culling</li>
<li>Speed up rendering</li>
<li>Implement drawing lines and points</li>
<li>Detect and warn users if they try to initialize a Collada object without first using addModel()</li>
<li>Refine distance calculations for overlapping objects for picking</li>
</ol>
 
== Library Task List ==
 
* Add dynamic object loading.
* Add sound support.
* Create a mechanism to prevent scripts from running before everything (textures, models) is done loading.
* Catch and report error on "Access to restricted URI denied", which occurs if user tries to access a model file which does not exist.
* Create a progress bar which includes percentage complete of model and texture loading.
* Add particle system size attenuation.
* Allow users to specify texture filtering
* Delete texture objects when textures are deleted from library.
* Create and post a hierarchical diagram of the library classes
* Investigate overriding spacebar and arrow keys from browser's default behavior.
* Add option to change back-face culling.
* Add option to use orthographic projection.
* Add picking for orthographic projection.
* Generate error if user tries to place camera at (0,0,0) and set's it's lookat to (0,0,0)
 
== Bug List ==
 
* Collada
** fix FindNode for Collada's scenegraph.
* Objects
** Fix angular velocity/gc bug. If object is set to spin on more than one axis, its angular velocity will change when the gc starts.
** Same linear velocity for Models and Collada objects makes one type 'overtake' the other.
* Picking
** Picking does not work when the canvas width isn't equal to the canvas height
* Particle System
** Error when creating a particle system without texture
* BoundingSphere
** When the bounding Sphere is rendered, it is not the correct size until the user clicks on the canvas. At that point all BoundingSpheres will change their sizes.
* General
** slowdown in update callback slows down rendering.
== Ideas List ==
Here are the wishlist of things we want to be able to do with the library.... If you want something add it to the list.
* 3D Asteroids - Good use of Collision detection, animation, particles, camera work, both mouse and keyboard controls.
* 3D graphs
&nbsp;&nbsp;&nbsp;&nbsp;- :* Display social networks and their relationships<br />&nbsp;&nbsp;&nbsp;&nbsp;- :* Get earthquake Richter-scale values from a service and show graphs on a map<br />&nbsp;&nbsp;&nbsp;&nbsp;- :* Display 3D graphs beside one another, gas prices along stock market values<br />&nbsp;&nbsp;&nbsp;&nbsp;- :* 3D flowcharts<br />
* 3D Traceroute - graphical view of an IP's path across the internet. More details [http://www.c3dl.org/index.php/uncategorized/canvas3d-traceroute-idea/ in this blog post]
* 3D Canvas Racing Demo - like [http://www.tapper-ware.net/canvas3d/ this] but better, to show that it's both easier to use, more funcionality functionality is available, and runs much faster (hopefully)
* Molecule Viewer - Rotate 3D molecules. Similar to [http://www.worldofmolecules.com/3D/bcarotene_3d.htm this]
* Matrix - Query search engines for sites, chat logs, blogs, etc. and display all the text in a matrix-like fashion.
* Really fancy animation of a bar graph, with columns growing and arrow moving. Will be an instant hit with businessmenbusiness people. Usable as easy as [http://code.google.com/apis/chart/ google's toy]
[[Image:higherhigher.jpg]]
* multi-player network air hockey. Supports up to 8 players. Create an arena based on number of players . Each wall has a hole and a paddle that players can move left and right. A ball is randomly sent flying and each time it goes through a hole, the player loses a point. Lose 10 points and that player is eliminated. Last person alive wins.
=== Meeting Summaries === ====May 29====* 2 Player Online ChessFor next week:* Orbit camera can be used to orbit around the board.<br /> Mark: Add * Effects can be used to library and do some bug fixes based on change what Chris found Chris: Work on putting his apps on site Andrew: Work on making material the libraries work with shaders. Provide a method for detecting capability of client to pieces and board use a 2such as metal, wood, etc.0 context and switch<br /> Andor: was absent but will work on shaders ====June 04==== Mark:  Cathy: send andrew * Picking can be used to allow a simple model interface to play with. Add equivalent of hello world tutorial for library. Begin documentation Chris: * Release Version 2 of move the Type Gamepieces. New feature is vertical movement. Andrew: figure out how to load files form http:// in javascript to be able to load Either clicking on two tiles can move a piece or clicking on a model from the internet; piece and display then a model that's in some ascii format Andor:* Get textures applied to cubes (no uv's yet) in 1.1 contexttile can move the piece.<br />:* Investigate box skewing problem in 2.0 contextFurther research is needed to determine the best server-side language to use to share board state between players.<br />:* Get camera working in 2.0 contextAnimation can be achieved simply by setting velocities of pieces.<br />* Clean up shader code converter and upload to repo.  ====June 12====General goal: establish a format for models.0.3 release date goal: end of june. Cathy: Work on more tutorials involving keyboard and camera control. Look for bugs, document the functions Mark: test changes with the basic demo (especially involving 2.0 context) when changing rendering. Chris: studying for midterms Andrew: Fix the 2.0 rendering. Work on loading and displaying models. Give Andor some idea about the preffered format. Andor: figure out the model format, get model and texture working in 1.1 context, get texture working in 2.0 context(?) ====June 19====Cathy: continue on tutorials. Mark: Chris: back from Exams. Updated demo to use latest API. Working on adding vertical movement for the cubes. Andrew:
Andor: Add textures to benchmarking, get rendering in Model work with same file with different contexts, get Model scaling to work, fix bugs.
[[Category:Open Source Communities]]