Skip to content

Commit

Permalink
custom plane
Browse files Browse the repository at this point in the history
  • Loading branch information
unknown authored and unknown committed Feb 3, 2011
1 parent 6a68adc commit b98cc0a
Show file tree
Hide file tree
Showing 8 changed files with 161 additions and 15 deletions.
8 changes: 6 additions & 2 deletions c3dl-dev/tests/shapes/shapes.html
Expand Up @@ -15,8 +15,8 @@ <h1><a href="http://www.c3dl.org/">C3DL</a> Shape Test</h1>
<table>
<tr>
<td>
<div>Box</div>
<canvas id="box" style="border: 2px solid blue" width="300" height="300"></canvas> <br />
<div>Cube</div>
<canvas id="cube" style="border: 2px solid blue" width="300" height="300"></canvas> <br />
</td>
<td>
<div>Plane</div>
Expand All @@ -40,6 +40,10 @@ <h1><a href="http://www.c3dl.org/">C3DL</a> Shape Test</h1>
<div>Custom Shape with Texture</div>
<canvas id="customWTexture" style="border: 2px solid blue" width="300" height="300"></canvas> <br />
</td>
<td>
<div>Custom Plane</div>
<canvas id="customPlane" style="border: 2px solid blue" width="300" height="300"></canvas> <br />
</td>
</tr>
</table>
</body>
Expand Down
104 changes: 98 additions & 6 deletions c3dl-dev/tests/shapes/shapes.js
@@ -1,11 +1,12 @@
c3dl.addMainCallBack(boxMain, "box");
c3dl.addMainCallBack(cubeMain, "cube");
c3dl.addMainCallBack(planeMain, "plane");
c3dl.addMainCallBack(sphereMain, "sphere");
c3dl.addMainCallBack(sphere2Main, "sphereDetail");
c3dl.addMainCallBack(customMain, "custom");
c3dl.addMainCallBack(custom2Main, "customWTexture");
c3dl.addMainCallBack(customPlaneMain, "customPlane");
c3dl.addModel("sphere.dae");
function boxMain(canvasName){
function cubeMain(canvasName){
scn = new c3dl.Scene();
scn.setCanvasTag(canvasName);
renderer = new c3dl.WebGL();
Expand All @@ -14,13 +15,13 @@ function boxMain(canvasName){
scn.init(canvasName);

if (renderer.isReady()) {
var box = new c3dl.Box(5,5,5);
box.setAngularVel([0.0, -0.001, 0.0]);
box.setTexture("testing.jpg");
var cube = new c3dl.Cube(5,5,5);
cube.setAngularVel([0.0, -0.001, 0.0]);
cube.setTexture("testing.jpg");
var cam = new c3dl.FreeCamera();
cam.setPosition([0.0, 0.0, 15.0]);
cam.setLookAtPoint([0.0, 0.0, 0.0]);
scn.addObjectToScene(box);
scn.addObjectToScene(cube);
scn.setCamera(cam);
scn.startScene();
}
Expand Down Expand Up @@ -129,4 +130,95 @@ function custom2Main(canvasName){
scn.setCamera(cam);
scn.startScene();
}
}
var cam;
function customPlaneMain(canvasName){
scn = new c3dl.Scene();
scn.setCanvasTag(canvasName);
renderer = new c3dl.WebGL();
renderer.createRenderer(this);
scn.setRenderer(renderer);
scn.init(canvasName);

if (renderer.isReady()) {
//var vert = [-5,-5, -5,5, 0,5, 0,0, 5,0, 5,-5]; //norm up
//var vert = [-5,-5, -5,5, 5,5, 5,-5]; //norm up
// var vert = [5,5, -5,5, -5,-5, 5,-5]; //norm down

var vert= [0,0, 5,-5, 0,-5]; //norm up
//var vert= [0,-5, 0,0, 5,-5]; //norm up
//var vert= [5,-5, 0,-5, 0,0]; //norm up
//var vert= [0,0, 0,-5, 5,-5]; //norm down
//var vert= [0,-5, 5,-5, 0,0]; //norm down
//var vert= [5,-5, 0,0, 0,-5]; //norm down
var customPlane = new c3dl.CustomPlane(vert);
cam = new c3dl.FreeCamera();
cam.setPosition([0.0, 3, 10]);
cam.setLookAtPoint([0.0, 0.0, 0.0]);
scn.addObjectToScene(customPlane);
scn.setCamera(cam);
scn.startScene();
scn.setKeyboardCallback(onKeyUp, onKeyDown);
}
}

var keysDown = (
function keysDown() {
var key_w = false,
key_a = false,
key_s = false,
key_d = false;
return {
"KEY_W": key_w,
"KEY_A": key_a,
"KEY_S": key_s,
"KEY_D": key_d,
};
})();

//Keys
const KEY_D = 68;
const KEY_A = 65;
const KEY_W = 87;
const KEY_S = 83;

function onKeyDown(event) {
switch (event.keyCode) {
case KEY_W:
cam.setPosition([cam.getPosition()[0],cam.getPosition()[1]-0.5,cam.getPosition()[2]]);
cam.setLookAtPoint([0.0, 0.0, 0.0]);
break;
case KEY_A:
keysDown.KEY_A = true;
break;
case KEY_S:
cam.setPosition([cam.getPosition()[0],cam.getPosition()[1]+0.5,cam.getPosition()[2]]);
cam.setLookAtPoint([0.0, 0.0, 0.0]);
break;
case KEY_D:
keysDown.KEY_D = true;
break;
default:
break;
}
}

//When a key is released down
function onKeyUp(event) {
switch (event.keyCode) {
case KEY_W:
keysDown.KEY_W = false;
break;
case KEY_A:
keysDown.KEY_A = false;
break;
case KEY_S:
keysDown.KEY_S = false;
break;
case KEY_D:
keysDown.KEY_D = false;
break;
default:
break;
}
}
3 changes: 2 additions & 1 deletion c3dl/c3dapi.js
Expand Up @@ -77,10 +77,11 @@ c3dl_require('actors/line.js');

//shapes
c3dl_require('shapes/shape.js');
c3dl_require('shapes/box.js');
c3dl_require('shapes/cube.js');
c3dl_require('shapes/plane.js');
c3dl_require('shapes/sphere.js');
c3dl_require('shapes/custom.js');
c3dl_require('shapes/customplane.js');

//frustum culling
c3dl_require('frustum_culling/frustum.js');
Expand Down
1 change: 1 addition & 0 deletions c3dl/collada/primitiveset.js
Expand Up @@ -30,6 +30,7 @@ c3dl.PrimitiveSet = function ()
this.type = null;
this.lineList = null;
this.boundingVolume = null;
this.fillType = null;
this.buffers =
{
};
Expand Down
14 changes: 11 additions & 3 deletions c3dl/shaders/model/standard/std_callback.js
Expand Up @@ -114,11 +114,19 @@ c3dl.std_callback = function (renderingObj)

// VERTICES
renderer.setVertexAttribArray(progObjID, "Vertex", 3, currColl.getVBOVertices());
if (currColl.sphere) {
glCanvas3D.drawArrays(glCanvas3D.TRIANGLE_STRIP, 0, currColl.getVertices().length / 3);
if (renderer.getFillMode() === c3dl.FILL) {
if (currColl.fillType === "TRIANGLE_STRIP") {
glCanvas3D.drawArrays(glCanvas3D.TRIANGLE_STRIP, 0, currColl.getVertices().length / 3);
}
else if (currColl.fillType === "TRIANGLE_FAN") {
glCanvas3D.drawArrays(glCanvas3D.TRIANGLE_FAN, 0, currColl.getVertices().length / 3);
}
else {
glCanvas3D.drawArrays(glCanvas3D.TRIANGLES, 0, currColl.getVertices().length / 3);
}
}
else {
glCanvas3D.drawArrays(renderer.getFillMode(), 0, currColl.getVertices().length / 3);
glCanvas3D.drawArrays(c3dl.WIRE_FRAME, 0, currColl.getVertices().length / 3);
}
glCanvas3D.enable(glCanvas3D.POLYGON_OFFSET_FILL);
}
Expand Down
4 changes: 2 additions & 2 deletions c3dl/shapes/box.js → c3dl/shapes/cube.js
Expand Up @@ -3,7 +3,7 @@
Licenced under the MIT License (http://www.c3dl.org/index.php/mit-license/)
*/

c3dl.Box = c3dl.inherit(c3dl.Shape, function () {
c3dl.Cube = c3dl.inherit(c3dl.Shape, function () {
c3dl._superc(this);
this.primitiveSets[0] = new c3dl.PrimitiveSet();
var vertices = new C3DL_FLOAT_ARRAY([
Expand Down Expand Up @@ -38,7 +38,7 @@ c3dl.Box = c3dl.inherit(c3dl.Shape, function () {
}
});

c3dl.Box.prototype.init = function (length, width, height) {
c3dl.Cube.prototype.init = function (length, width, height) {
length = parseFloat(length);
width = parseFloat(width);
height = parseFloat(height);
Expand Down
40 changes: 40 additions & 0 deletions c3dl/shapes/customplane.js
@@ -0,0 +1,40 @@
/*
Copyright (c) 2008 Seneca College
Licenced under the MIT License (http://www.c3dl.org/index.php/mit-license/)
*/

c3dl.CustomPlane = c3dl.inherit(c3dl.Shape, function () {
c3dl._superc(this);
this.primitiveSets[0] = new c3dl.PrimitiveSet();
var vertices = new C3DL_FLOAT_ARRAY(arguments[0].length/2*3);
var normals = new C3DL_FLOAT_ARRAY(arguments[0].length/2*3);
var axis = [0,1,0];
if (arguments[1]) {
if (arguments[1] === "X") {
axis = [1,0,0];
}
else if (arguments[1] === "Y") {
axis = [0,1,0];
}
else if (arguments[1] === "Z") {
axis = [0,0,1];
}
}
if (arguments[2]) {
c3dl.multiplyVector(axis, 1, axis);
}
for (var i = 0, j=0; i < arguments[0].length; i+=2,j+=3) {
vertices[j] = arguments[0][i];
vertices[j+1] = 0;
vertices[j+2] = arguments[0][i+1];
normals[j] = axis[0];
normals[j+1] = axis[1];
normals[j+2] = axis[2];
}
this.primitiveSets[0].init(vertices, normals);
this.primitiveSets[0].fillType = "TRIANGLE_FAN";
this.boundingVolume.init(vertices);
});



2 changes: 1 addition & 1 deletion c3dl/shapes/sphere.js
Expand Up @@ -107,7 +107,7 @@ c3dl.Sphere = c3dl.inherit(c3dl.Shape, function () {
var normals = new C3DL_FLOAT_ARRAY(sphereArray);
texCoords = new C3DL_FLOAT_ARRAY(texCoords);
this.primitiveSets[0].init(vertices, normals, texCoords);
this.primitiveSets[0].sphere = true;
this.primitiveSets[0].fillType = "TRIANGLE_STRIP";
this.boundingVolume.init(vertices);
this.scale([0.5,0.5,0.5]);
this.init(arguments[0])
Expand Down

0 comments on commit b98cc0a

Please sign in to comment.