1,234
edits
Changes
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.
== 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 (Javascript)* Jeremy Giberson* Joe Drew* Matthew Postill
== Downloads ==
For the library, samples, and tutorials, go to [http://cs.senecacwww.onc3dl.caorg/~leung/canvas3d/canvas3d-0c3DL.2.0.xpi Andrew's patchorg] - this change to the canvas 3D extension allows the "simple" examples from Vlad's page to work with ati cards. This is intended for Windows only. Model viewer examples do not work yet.
== Examples Links ==* INCOMPLETE[http://www.c3dl.org c3DL.org]* [http://github.com/cathyatseneca/c3dl GitHub Repo]* [svn://cdot.senecac.on.ca/canvas3d Old SVN Repo]* [http://en.wikipedia.org/wiki/C3DL Wikipedia page]
=== Scene Class =Related Resources ==* IN PROGRESS[http://www.khronos.org/webgl/ Khronos WebGL]
== Math Operations Documentation ==
* 3D Asteroids - Good use of Collision detection, animation, particles, camera work, both mouse and keyboard controls.
* Getters** getMatrix() - '''Returns an array Simulation of 16 numbers. Each value represents a location of the matrix starting at the top left corner (Row-Major)'''3D path finding
* Setters3D graphs:*Display social networks and their relationships<br />:* setMatrix(newMatArray) Get earthquake Richter- '''Takes an Array of 16 numbers that represent the matrix in Row-Major format'''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 />
* Calculations** identity() 3D Traceroute - '''Sets the matrix up to be graphical view of an identity matrix'''** transpose() - 'IP'' Transposes s path across the matrix to be in Column-Major format, and vice versa'''** inverse() - '''Calculates the Inverse of the matrixinternet. More details [http://www. Returns NULL if it fails, else it returns an inverse matrix'''** determinant() - '''Returns a number that is the Matrices determinant'''** adjoint() - '''Returns the Hermitian transpose (Adjoint) of this matrix'''** multiplyByScalar(scalar) - '''Multiplies the values of the matrix by a number'''** divideByScalar(scalar) - '''Divides the values of the matrix by a number'''** multiplyByMatrix(mat) - '''Multiplies two matrices togetherc3dl. It returns a new matrix'''** multiplyByVector(vec) - '''Mutiplies the orientation of the matrix by the vectororg/index. This function returns the newly oriented Vector'''** addMatrix(mat) php/uncategorized/canvas3d- '''Adds the values of two matrices together. It returns a new matrix'''** subtractMatrix(mat) traceroute- '''Subtracts the values of the two matrices. It return a new matrix'''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 functionality is available, and runs much faster (hopefully)
* Getters** getW() - '''Returns the numerical W component of the Quaternion'''** getX() - '''Returns the numerical X component of the Quaternion'''** getY() - '''Returns the numerical Y component of the Quaternion'''** getZ() - '''Returns the numerical Z component of the Quaternion'''** getMatrix() - '''Returns a Matrix object that reflects the orientation of the quaternion'''** getAxisAngle(axis, angle) - '''Takes in two values, a Vector object and a Number. Converts the orientation of the quaternion into an axis Vector and an angle around it'''3D Sudoku
* Setters** setFromQuat(quat) - '''Sets this Quaternion with the same value as the one being passed in'''** setFromMatrix(mat) - '''Creates a Quaternion orientation from the orientation of the Matrix object that is passed in''3D Rubik's Cube
* Calculations** length() House Explorer/Designer - '''Returns the length of the Quaternion'''** lengthSq() - '''Returns Load a number that represents the square mesh of this Quaternion's length'''** addQuat(quat) - '''Takes a Quaternion object that will be added to this Quaternion's internal (w, x, y, z) values'''** subtractQuat(quat) - '''Takes room or a Quaternion object where its values will be subtracted from this Quaternion's (w, x, y, z) values'''** multiplQuat(scalar) - '''Takes a number house and multiplies its values by allow users to navigate through the Quaternion's (w, x, y, z) values'''** conjugate() - '''Returns environment or design a Quaternion that is this Quaternion's conjugate'''** dot(quat) - '''Takes room in a Quaternion and returns the Dot Product of the two'''** normalize() - '''Normalizes the quaternion'''** inverse() - '''Returns the inverse of this Quaternion'''house.
* Getters** getPosition() multi- '''Returns a Vector Object that represents the position player network air hockey. Supports up to 8 players. Create an arena based on number of the Camera'''** getUp() - '''Returns players . Each wall has a Vector Object that represents the orientation of Up'''** getDir() - '''Returns hole and a Vector Object paddle that players can move left and right. A ball is the direction the camera is facing'''** getLeft() - '''Returns randomly sent flying and each time it goes through a Vector Object that represents hole, the orientation of Left'''** getLinearVel() - '''Returns player loses a Vector that is the velocity point. Lose 10 points and that the camera player is traveling at'''** getAngularVel() - '''Returns a Vector that contains the rotation velocity around the local (x, y, z) axis of the camera'''eliminated. Last person alive wins.
* Setters2 Player Online Chess:** setPosition(vec) - '''Takes a Vector that sets the Orbit camera's position'''** setLookAtPoint(vec) - '''Takes a Vector that represents the point the camera will look at'''** setUpVector(vec) - '''Takes a vector that orients the camera Up'''** setLinearVel(vec) - ''' Takes a vector that is the camera's linear velocity'''** setAngularVec(vec) - '''Takes a vector that represents the camera's rotational velocity around local (x, y, z) axis''' * Other Functions** rotateOnAxis(axis, angle) - '''Takes a vector and a number that represents a relative rotation can be used to the camera's orientation'''** yaw(angle) - '''Takes a number that the camera will rotate around its Up vector'''** roll(angle) - '''Takes a number that the camera will rotate around its direction vector'''** pitch(angle) - '''Takes a number that the camera will rotate orbit around its Left vector'''** update(timeElapsed) - '''Takes a number that represents the amount of milliseconds that passed since the last call to updateboard. This function updates the position and rotation based on the set velocities''' == World Objects ==<br /> === Shape Class ====== Primitive Class ====== Model Class === == TO DO ==* get a website (in progress)* find out about exposing of open gl 1.1 calls*:* Should the OpenGL 1.1 calls Effects can be exposed used to change what material the Canvas3D web2.0 architecture. Mainly, for those functions that make 3D math easy (ie. gluLookAtpieces and board use such as metal, glMatrixModewood, etc).<br /> == Ideas List == Here are the wishlist of things we want :* Picking can be used to be able allow a simple interface to do with move the librarypieces.... If you want something add it to the list * 3D Asteroids - Good use of Collision detection, animation, particles, camera work, both mouse Either clicking on two tiles can move a piece or clicking on a piece and keyboard controls. * Solar System Explorer - Pull then a tile can move the positions of our planets from some sort of webservice and display them, allowing users to see their relative alignmentpiece. * Simulation of 3D path finding * 3D graphs- Display social networks and their relationships<br />:* Further research is needed to determine the best server- Get earthquake Richter-scale values from a service and show graphs on a mapside language to use to share board state between players.<br />- Display 3D graphs beside one another, gas prices along stock market values:* Animation can be achieved simply by setting velocities of pieces.<br />