参考:
http://www.hewebgl.com/article/getarticle/27
我想threejs是啥这个网站上的介绍肯定比我要说的好的多,可以多看看这个。
不过作为一个一直耕耘在pc端的三维程序员我想更多的关注在是否有一天bs和云渲染、分布式渲染能够kill pc端的大部分实现。
写个hello world!居然失败了,后来发现 相机的lookat()是一个 three.vector3()的坐标。
先上代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="threejsBuild/build/three.js" ></script>
<style type="text/css">
div#canvas-frame {
border: none;
cursor: pointer;
width: 100%;
height: 600px;
background-color: #EEEEEE;
}
</style>
</head>
<body id="canvas-frame" >
<script>
var renderer;
var width=window.innerWidth;
var height = window.innerHeight;
function initThree() {
renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
renderer.setClearColor(0x000000, 1.0);
}
var camera;
function initCamera() {
camera = new THREE.PerspectiveCamera(75, width / height, 1, 10000);
//camera.position.x = 0;
// camera.position.y = 0;
camera.position.z = 5;
camera.up.x = 0;
camera.up.y = 0;
camera.up.z = 1;
var pos=new THREE.Vector3(0,0,0);
camera.lookAt(pos);
}
var scene;
function initScene() {
scene = new THREE.Scene();
}
var light;
function initLight() {
light = new THREE.DirectionalLight(0xFF0000, 1.0, 0);
light.position.set(100, 100, 200);
scene.add(light);
}
var cube;
function initObject() {
var geometry = new THREE.CubeGeometry(1,1,1);
var material = new THREE.MeshBasicMaterial({color: 0x00ff00});
cube = new THREE.Mesh(geometry, material);
scene.add(cube);
//camera.lookAt(cube.position);
}
function render()
{
requestAnimationFrame(render);
renderer.clear();
cube.rotation.x += 0.1;
cube.rotation.y += 0.1;
renderer.render(scene, camera);
}
function threeStart() {
initThree();
initCamera();
initScene();
initLight();
initObject();
render();
}
threeStart();
</script>
</body>
</html>
顺便把框架也写了写,感觉threejs挺好玩的。