Open main menu

CDOT Wiki β

Changes

Canvas3D JS Library

2,319 bytes added, 20:42, 26 January 2014
no edit summary
== Introduciton =={{Admon/obsolete}}
Under Construction== Introduction ==
The Canvas 3D JS Libary (C3DL) is a Javascript library that will make it easier to write 3D applications using WebGL. It 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. == People Working On This Project 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
* Jeremy Giberson
* Joe Drew
* Matthew Postill
 
== Downloads ==
NOTEFor the library, samples, and tutorials, go to [http: //www.c3dl.org/ c3DL.org]. As of c3dl 2.0, our library uses WebGL. these downloads are mostly meant for in-house testing and not really polishedAny WebGL enabled browser will be able to view our content. It may also only work on To get a specific platform onlyWebGL enabled browser see Tutorial 1 from our website and you do not need any addons. please read  For all older versions of c3dl, you will need the note regarding 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). NOTE: It is HIGHLY recommended that you do not use the downloadolder version of our library but to use version 2.0 or higher== Links ==* [http://cswww.c3dl.org c3DL.org]* [http://github.com/cathyatseneca/c3dl GitHub Repo]* [svn://cdot.senecac.on.ca/~leungcanvas3d Old SVN Repo]* [http://en.wikipedia.org/wiki/C3DL Wikipedia page]  == Related Resources ==* [http://www.khronos.org/webgl/ Khronos WebGL]  == Documentation == Documentation can be found on our website: [http://canvas3dwww.c3dl.org/index.php/documentation/canvas3dc3DL.org].  == 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 -0Good use of Collision detection, animation, particles, camera work, both mouse and keyboard controls.2 * Solar System Explorer - Pull the positions of our planets from some sort of webservice and display them, allowing users to see their relative alignment.0.xpi Andrew * Simulation of 3D path finding * 3D graphs:* Display social networks and their relationships<br />:* Get earthquake Richter-scale values from a service and show graphs on a map<br />:* Display 3D graphs beside one another, gas prices along stock market values<br />:* 3D flowcharts<br /> * 3D Traceroute - graphical view of an IP's patchpath 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 change ] but better, to the canvas 3D extension allows the "simple" examples from Vladshow that it's page both easier to use, more functionality is available, and runs much faster (hopefully) * Molecule Viewer - Rotate 3D molecules. Similar to work with ati cards[http://www. This is intended for Windows onlyworldofmolecules. Model viewer examples do not work yetcom/3D/bcarotene_3d.htm this]
* 3D Sudoku
== Prototype ==[http://img126.imageshack.us/img126/3032/layoutqe4.jpg Canvas * 3D API - Class Design]Rubik's Cube
== Math Operations ==* House Explorer/Designer - Load a mesh of a room or a house and allow users to navigate through the environment or design a room in a house.
=== Vector Class ===A Vector basically describes a direction in the form of X, Y, * 3D Photo Album - Download images and Z coordinates of create a 3D worldphoto album similar to [http://www. Basic 3D math cannot exist without the utilization of spatial coordinates which the Vector Class encapsulatesmypictures3d.com/images/screenshots/art_gallery/art4.jpg this]. The Vector Class will have the following members within it:
* void Normalize() Matrix - '''Unit Normalization'''* float Dot() - '''Dot Product'''* float Length() - '''Length of Vector from (0Query search engines for sites, chat logs, 0blogs, 0)'''* float LengthSquared() - '''Squared value of Length'''* Vector Cross(Vector) - '''Cross Product'''* Vector Multiply(Float) - '''Multiplication by a scalar'''* Vector Divide(Float) - '''Division by a scalar'''* Vector Subtract(Vector) - '''Subtraction of a Vector'''* Vector Add(Vector) - '''Addition to etc. and display all the text in a Vector'''* bool Equals(Vector) matrix- '''Equals Comparison'''like fashion.
=== Matrix Class ===A Matrix Class is necessary to provide Matrix operations such as rotation, translation* Really fancy animation of a bar graph, with columns growing and scaling to any point in the 3D worldarrow moving. It is composed of a 4x4 matrix of floating point values that can Will be applied to any Matrix operationan instant hit with business people. The Matrix Class has the following membersUsable as easy as [http://code.google.com/apis/chart/ google's toy][[Image:higherhigher.jpg]]
* void Identity() - '''Create Identity Matrix'''* void Transpose() - '''Transpose Generic model viewer application, with back/forward/index + zoom/rotate buttons that would download and display models from the web. Would have to be able to convert 3dsmax models in JS. So a Matrix'''* void Inverse() - '''Inverse Matrix Values'''* float Multiply(Matrix) - '''Multiplication by Scalar'''* float Divide(Matrix) - '''Division by Scalar'''* Matrix Add(Matrix) - '''Addition museum or such could just slap the app on the page and give it an array of two Matrices'''* Matrix Subtract(Matrix) - '''Subtraction of two Matrices'''* Vector Multiply(Vector) - '''Matrix times a Vector'''* Matrix Multiply(Matrix) - '''Matrix times a Matrix'''URLs for the stuff to show.
== Camera ==* Pong. Should be fairly easy, we just need to code the collision detection.
=== Pan Camera Class ====== Fixed Camera Class ====== Chase Camera Class ====== Free Camera Class ===* 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.
== World Objects ==* 2 Player Online Chess:* Orbit camera can be used to orbit around the board.<br />:* Effects can be used to change what material the pieces and board use such as metal, wood, etc.<br />:* Picking can be used to allow a simple interface to move the pieces. Either clicking on two tiles can move a piece or clicking on a piece and then a tile can move the piece.<br />:* Further research is needed to determine the best server-side language to use to share board state between players.<br />:* Animation can be achieved simply by setting velocities of pieces.<br />
=== Shape Class ====== Primitive Class ====== Model Class ===[[Category:Open Source Communities]]