Antes de seguir con el desarrollo de ejemplos se revisará la biblioteca SceneJS, que facilitará bastante el trabajo de diseño y programación WebGL.
Entre las diversas bibliotecas de código abierto para WebGL que podemos usar, tenemos:
Se usará la biblioteca SceneJS, desarrollada por @xeolabs.
<head> de la webpage
<script src="../scenejs/scenejs.js"></script>
A continuación vamos a construir una escena, en este caso un cilindro
//Incluir los plugins
SceneJS.setConfigs({
pluginPath:"../scenejs/plugins"
});
//Definir la escena
SceneJS.createScene({
nodes:[
{
type:"cameras/orbit",
yaw:30,
pitch:-30,
zoom:200,
zoomSensitivity:10.0,
nodes:[
{
type:"material",
color:{ r:0.0, g:0.0, b:1.0 },
nodes:[
{
type:"geometry/cylinder",
radiusTop:20, // Default 20
radiusBottom:20, // Default 20
height:100, // Default 100
radialSegments:24, // Default 8
heightSegments:1, // Default 1
openEnded:false // Default false
}
]
}
]
}
]
});
El resultado se puede ver aquí
Veamos el caso del siguiente cubo:
//Incluir los plugins
SceneJS.setConfigs({
pluginPath:"../scenejs/plugins"
});
//Definir escena
var scene = SceneJS.createScene({
nodes:[
{type: "cameras/trackball",
eye: { x: 4, y: 4, z: -4.0 },
nodes:[
{type:"material",
color: { r: 1.0, g: 0.0, b: 0.0 },
nodes:[
{type:"geometry/box"
}
]
}
]
}
]
});
El resultado se puede ver aquí
Ahora crearemos un cubo que gira:
//Incluir los plugins
SceneJS.setConfigs({
pluginPath:"../scenejs/plugins"
});
//Definir escena
var scene = SceneJS.createScene({
nodes:[
{
type:"material",
color: { r: 0.0, g: 1.0, b: 0.0 },
nodes:[
{
type: "rotate",
id: "myRotate",
y: 1.0,
angle: 0,
nodes: [
{
type:"geometry/box",
}
]
}
]
}
]
});
scene.getNode("myRotate", function(myRotate) {
var angle = 0;
scene.on("tick",
function() {
myRotate.setAngle(angle += 0.5);
});
});
El resultado se puede ver aquí