提交 e68109fd 编写于 作者: M Mr.doob

- Clean up

上级 10681d66
......@@ -7,7 +7,7 @@ three.js
The aim of this project is to create a lightweight 3D engine with a very low level of abstraction (aka for dummies). Currently there is no documentation available but feel free to use the examples as a reference and/or read the source code. However, be aware that the API may change from revision to revision breaking compatibility.
The engine can render using <canvas> and <svg> and WebGL.
The engine can render using <canvas>, <svg> and WebGL.
[More info...](http://mrdoob.com/blog/post/693)
......@@ -15,29 +15,32 @@ Other similar projects: [pre3d](http://deanm.github.com/pre3d/), [pvjs](http://c
### Examples ###
[![geometry_earth](http://github.com/mrdoob/three.js/raw/master/assets/examples/07_earth.png)](http://mrdoob.com/projects/three.js/examples/geometry_earth.html)
[![geometry_terrain](http://github.com/mrdoob/three.js/raw/master/assets/examples/06_terrain.png)](http://mrdoob.com/projects/three.js/examples/geometry_terrain.html)
[![materials_video](http://github.com/mrdoob/three.js/raw/master/assets/examples/05_video.png)](http://mrdoob.com/projects/three.js/examples/materials_video.html)
[![geometry_vr](http://github.com/mrdoob/three.js/raw/master/assets/examples/04_vr.png)](http://mrdoob.com/projects/three.js/examples/geometry_vr.html)
[![geometry_cube](http://github.com/mrdoob/three.js/raw/master/assets/examples/03_cube.png)](http://mrdoob.com/projects/three.js/examples/geometry_cube.html)
[![particles_random](http://github.com/mrdoob/three.js/raw/master/assets/examples/02_random.png)](http://mrdoob.com/projects/three.js/examples/particles_random.html)
[![particles_wave](http://github.com/mrdoob/three.js/raw/master/assets/examples/01_waves.png)](http://mrdoob.com/projects/three.js/examples/particles_waves.html)
[![particles_floor](http://github.com/mrdoob/three.js/raw/master/assets/examples/00_floor.png)](http://mrdoob.com/projects/three.js/examples/particles_floor.html)
[![geometry_birds](http://mrdoob.github.com/three.js/assets/examples/08_birds.png)](http://mrdoob.github.com/three.js/examples/geometry_birds.html)
[![geometry_earth](http://mrdoob.github.com/three.js/assets/examples/07_earth.png)](http://mrdoob.github.com/three.js/examples/geometry_earth.html)
[![geometry_terrain](http://mrdoob.github.com/three.js/assets/examples/06_terrain.png)](http://mrdoob.github.com/three.js/examples/geometry_terrain.html)
[![materials_video](http://mrdoob.github.com/three.js/assets/examples/05_video.png)](http://mrdoob.github.com/three.js/examples/materials_video.html)
[![geometry_vr](http://mrdoob.github.com/three.js/assets/examples/04_vr.png)](http://mrdoob.github.com/three.js/examples/geometry_vr.html)
[![geometry_cube](http://mrdoob.github.com/three.js/assets/examples/03_cube.png)](http://mrdoob.github.com/three.js/examples/geometry_cube.html)
[![particles_random](http://mrdoob.github.com/three.js/assets/examples/02_random.png)](http://mrdoob.github.com/three.js/examples/particles_random.html)
[![particles_wave](http://mrdoob.github.com/three.js/assets/examples/01_waves.png)](http://mrdoob.github.com/three.js/examples/particles_waves.html)
[![particles_floor](http://mrdoob.github.com/three.js/assets/examples/00_floor.png)](http://mrdoob.github.com/three.js/examples/particles_floor.html)
### Featured projects ###
[![Or so they say...](http://github.com/mrdoob/three.js/raw/master/assets/projects/07_orsotheysay.png)](http://xplsv.com/prods/demos/online/xplsv_orsotheysay/)
[![Rat](http://github.com/mrdoob/three.js/raw/master/assets/projects/06_rat.png)](http://tech.lab212.org/2010/07/export-textured-models-from-blender2-5-to-three-js/)
[![Failure](http://github.com/mrdoob/three.js/raw/master/assets/projects/05_failure.png)](http://www.is-real.net/experiments/three/failure/)
[![Space Cannon 3D](http://github.com/mrdoob/three.js/raw/master/assets/projects/02_spacecannon.png)](http://labs.brian-stoner.com/spacecannon/)
[![Alocasia](http://github.com/mrdoob/three.js/raw/master/assets/projects/04_alocasia.png)](http://arithmetric.com/projects/alocasia/)
[![DDD](http://github.com/mrdoob/three.js/raw/master/assets/projects/01_ddd.png)](http://the389.com/works/three/)
[![jsflowfield4d](http://github.com/mrdoob/three.js/raw/master/assets/projects/00_jsflowfield4d.png)](http://test.sjeiti.com/jsflowfield4d/)
[![spikeball](http://github.com/mrdoob/three.js/raw/master/assets/projects/03_spikeball.png)](http://kile.stravaganza.org/lab/js/spikeball/)
[![The Wilderness Downtown](http://mrdoob.github.com/three.js/assets/projects/08_wutw.png)](http://thewildernessdowntown.com/)
[![CloudSCAD](http://mrdoob.github.com/three.js/assets/projects/08_cloudscad.png)](http://cloudscad.com/stl_viewer/)
[![Or so they say...](http://mrdoob.github.com/three.js/assets/projects/07_orsotheysay.png)](http://xplsv.com/prods/demos/online/xplsv_orsotheysay/)
[![Rat](http://mrdoob.github.com/three.js/assets/projects/06_rat.png)](http://tech.lab212.org/2010/07/export-textured-models-from-blender2-5-to-three-js/)
[![Failure](http://mrdoob.github.com/three.js/assets/projects/05_failure.png)](http://www.is-real.net/experiments/three/failure/)
[![Space Cannon 3D](http://mrdoob.github.com/three.js/assets/projects/02_spacecannon.png)](http://labs.brian-stoner.com/spacecannon/)
[![Alocasia](http://mrdoob.github.com/three.js/assets/projects/04_alocasia.png)](http://arithmetric.com/projects/alocasia/)
[![DDD](http://mrdoob.github.com/three.js/assets/projects/01_ddd.png)](http://the389.com/works/three/)
[![jsflowfield4d](http://mrdoob.github.com/three.js/assets/projects/00_jsflowfield4d.png)](http://test.sjeiti.com/jsflowfield4d/)
[![spikeball](http://mrdoob.github.com/three.js/assets/projects/03_spikeball.png)](http://kile.stravaganza.org/lab/js/spikeball/)
### Usage ###
Download the [minified library](http://github.com/mrdoob/three.js/raw/master/build/Three.js) and include it in your html.
Download the [minified library](http://mrdoob.github.com/three.js/build/Three.js) and include it in your html.
<script type="text/javascript" src="js/Three.js"></script>
......@@ -102,6 +105,9 @@ For creating a customised version of the library, including the source files in
<script type="text/javascript" src="js/three/objects/Line.js"></script>
<script type="text/javascript" src="js/three/objects/Mesh.js"></script>
<script type="text/javascript" src="js/three/objects/Particle.js"></script>
<script type="text/javascript" src="js/three/lights/Light.js"></script>
<script type="text/javascript" src="js/three/lights/AmbientLight.js"></script>
<script type="text/javascript" src="js/three/lights/DirectionalLight.js"></script>
<script type="text/javascript" src="js/three/materials/LineColorMaterial.js"></script>
<script type="text/javascript" src="js/three/materials/MeshBitmapUVMappingMaterial.js"></script>
<script type="text/javascript" src="js/three/materials/MeshColorFillMaterial.js"></script>
......@@ -125,11 +131,17 @@ For creating a customised version of the library, including the source files in
Thanks to the power of the internets (and github <3) these people have kindly helped out with the project.
[Paul Brunt](http://github.com/supereggbert), [Fernando Serrano](http://kile.stravaganza.org/), [kikko](http://github.com/kikko).
[philogb](http://github.com/philogb), [supereggbert](http://github.com/supereggbert), [kikko](http://github.com/kikko), [kile](http://kile.stravaganza.org/), ...
### Change Log ###
2010 09 17 - **r17** (39.005 kb)
* Added `Light`, `AmbientLight` and `DirectionalLight` ([philogb](http://github.com/philogb))
* `WebGLRenderer` basic lighting support ([philogb](http://github.com/philogb))
2010 08 21 - **r16** (35.592 kb)
* Workaround for Opera bug (clearRect not working with context with negative scale)
......
此差异已折叠。
此差异已折叠。
......@@ -54,8 +54,8 @@
<script type="text/javascript" src="cameras/FreeCamera.js"></script>
<script type="text/javascript" src="primitives/Cube.js"></script>
<script type="text/javascript" src="primitives/Plane.js"></script>
<script type="text/javascript" src="geometry/primitives/Cube.js"></script>
<script type="text/javascript" src="geometry/primitives/Plane.js"></script>
<script type="text/javascript" src="http://github.com/mrdoob/stats.js/raw/master/build/Stats.js"></script>
......
var Bird = function () {
var scope = this;
THREE.Geometry.call(this);
v( 5, 0, 0 );
v( - 5, - 2, 1 );
v( - 5, 0, 0 );
v( - 5, - 2, - 1 );
v( 0, 2, - 6 );
v( 0, 2, 6 );
v( 2, 0, 0 );
v( - 3, 0, 0 );
f3( 0, 2, 1 );
// f3( 0, 3, 2 );
f3( 4, 7, 6 );
f3( 5, 6, 7 );
function v( x, y, z ) {
scope.vertices.push( new THREE.Vertex( new THREE.Vector3( x, y, z ) ) );
}
function f3( a, b, c ) {
scope.faces.push( new THREE.Face3( a, b, c ) );
}
}
Bird.prototype = new THREE.Geometry();
Bird.prototype.constructor = Bird;
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>three.js - geometry - birds</title>
<style type="text/css">
body {
color: #808080;
font-family:Monospace;
font-size:13px;
text-align:center;
background-color: #ffffff;
margin: 0px;
overflow: hidden;
}
#info {
position: absolute;
top: 0px; width: 100%;
padding: 5px;
}
</style
</head>
<body>
<div id="container"></div>
<div id="info"><a href="http://github.com/mrdoob/three.js" target="_blank">three.js</a> - birds demo</div>
<script type="text/javascript" src="http://github.com/mrdoob/stats.js/raw/master/build/Stats.js"></script>
<script type="text/javascript" src="../build/Three.js"></script>
<script type="text/javascript" src="geometry/Bird.js"></script>
<script type="text/javascript">
// Based on http://www.openprocessing.org/visuals/?visualID=6910
var Boid = function() {
var vector = new THREE.Vector3(),
_acceleration, _width = 500, _height = 500, _depth = 200, _goal, _neighborhoodRadius = 100,
_maxSpeed = 4, _maxSteerForce = 0.1, _avoidWalls = false;
this.position = new THREE.Vector3();
this.velocity = new THREE.Vector3();
_acceleration = new THREE.Vector3();
this.setGoal = function ( target ) {
_goal = target;
}
this.setAvoidWalls = function ( value ) {
_avoidWalls = value;
}
this.setWorldSize = function ( width, height, depth ) {
_width = width;
_height = height;vector
_depth = depth;
}
this.run = function ( boids ) {
if ( _avoidWalls ) {
vector.set( - _width, this.position.y, this.position.z );
vector = this.avoid( vector );
vector.multiplyScalar( 5 );
_acceleration.addSelf( vector );
vector.set( _width, this.position.y, this.position.z );
vector = this.avoid( vector );
vector.multiplyScalar( 5 );
_acceleration.addSelf( vector );
vector.set( this.position.x, - _height, this.position.z );
vector = this.avoid( vector );
vector.multiplyScalar( 5 );
_acceleration.addSelf( vector );
vector.set( this.position.x, _height, this.position.z );
vector = this.avoid( vector );
vector.multiplyScalar( 5 );
_acceleration.addSelf( vector );
vector.set( this.position.x, this.position.y, - _depth );
vector = this.avoid( vector );
vector.multiplyScalar( 5 );
_acceleration.addSelf( vector );
vector.set( this.position.x, this.position.y, _depth );
vector = this.avoid( vector );
vector.multiplyScalar( 5 );
_acceleration.addSelf( vector );
}/* else {
this.checkBounds();
}
*/
if ( Math.random() > 0.5 ) {
this.flock( boids );
}
this.move();
}
this.flock = function ( boids ) {
if ( _goal ) {
_acceleration.addSelf( this.reach( _goal, 0.005 ) );
}
_acceleration.addSelf( this.alignment( boids ) );
_acceleration.addSelf( this.cohesion( boids ) );
_acceleration.addSelf( this.separation( boids ) );
}
this.move = function () {
this.velocity.addSelf( _acceleration );
var l = this.velocity.length();
if ( l > _maxSpeed ) {
this.velocity.divideScalar( l / _maxSpeed );
}
this.position.addSelf( this.velocity );
_acceleration.set( 0, 0, 0 );
}
this.checkBounds = function () {
if ( this.position.x > _width ) this.position.x = - _width;
if ( this.position.x < - _width ) this.position.x = _width;
if ( this.position.y > _height ) this.position.y = - _height;
if ( this.position.y < - _height ) this.position.y = _height;
if ( this.position.z > _depth ) this.position.z = - _depth;
if ( this.position.z < - _depth ) this.position.z = _depth;
}
//
this.avoid = function ( target ) {
var steer = new THREE.Vector3();
steer.copy( this.position );
steer.subSelf( target );
steer.multiplyScalar( 1 / this.position.distanceToSquared( target ) );
return steer;
}
this.repulse = function ( target ) {
var distance = this.position.distanceTo( target );
if ( distance < 150 ) {
var steer = new THREE.Vector3();
steer.sub( this.position, target );
steer.multiplyScalar( 0.5 / distance );
_acceleration.addSelf( steer );
}
}
this.reach = function ( target, amount ) {
var steer = new THREE.Vector3();
steer.sub( target, this.position );
steer.multiplyScalar( amount );
return steer;
}
this.alignment = function ( boids ) {
var boid, velSum = new THREE.Vector3(),
count = 0;
for ( var i = 0, il = boids.length; i < il; i++ ) {
if ( Math.random() > 0.6 ) continue;
boid = boids[ i ];
distance = boid.position.distanceTo( this.position );
if ( distance > 0 && distance <= _neighborhoodRadius ) {
velSum.addSelf( boid.velocity );
count++;
}
}
if ( count > 0 ) {
velSum.divideScalar( count );
var l = velSum.length();
if ( l > _maxSteerForce ) {
velSum.divideScalar( l / _maxSteerForce );
}
}
return velSum;
}
this.cohesion = function ( boids ) {
var boid, distance,
posSum = new THREE.Vector3(),
steer = new THREE.Vector3(),
count = 0;
for ( var i = 0, il = boids.length; i < il; i ++ ) {
if ( Math.random() > 0.6 ) continue;
boid = boids[ i ];
distance = boid.position.distanceTo( this.position );
if ( distance > 0 && distance <= _neighborhoodRadius ) {
posSum.addSelf( boid.position );
count++;
}
}
if ( count > 0 ) {
posSum.divideScalar( count );
}
steer.sub( posSum, this.position );
var l = steer.length();
if ( l > _maxSteerForce ) {
steer.divideScalar( l / _maxSteerForce );
}
return steer;
}
this.separation = function ( boids ) {
var boid, distance,
posSum = new THREE.Vector3(),
repulse = new THREE.Vector3();
for ( var i = 0, il = boids.length; i < il; i ++ ) {
if ( Math.random() > 0.6 ) continue;
boid = boids[ i ];
distance = boid.position.distanceTo( this.position );
if ( distance > 0 && distance <= _neighborhoodRadius ) {
repulse.sub( this.position, boid.position );
repulse.normalize();
repulse.divideScalar( distance );
posSum.addSelf( repulse );
}
}
return posSum;
}
}
</script>
<script type="text/javascript">
var SCREEN_WIDTH = window.innerWidth,
SCREEN_HEIGHT = window.innerHeight,
SCREEN_WIDTH_HALF = SCREEN_WIDTH / 2,
SCREEN_HEIGHT_HALF = SCREEN_HEIGHT / 2;
var camera, scene, renderer,
birds, bird;
var boid, boids;
var stats;
init();
function init() {
camera = new THREE.Camera( 75, SCREEN_WIDTH / SCREEN_HEIGHT, 1, 10000 );
camera.position.z = 450;
scene = new THREE.Scene();
birds = [];
boids = [];
for ( var i = 0; i < 200; i ++ ) {
boid = boids[ i ] = new Boid();
boid.position.x = Math.random() * 400 - 200;
boid.position.y = Math.random() * 400 - 200;
boid.position.z = Math.random() * 400 - 200;
boid.velocity.x = Math.random() * 2 - 1;
boid.velocity.y = Math.random() * 2 - 1;
boid.velocity.z = Math.random() * 2 - 1;
boid.setAvoidWalls( true );
boid.setWorldSize( 500, 500, 400 );
bird = birds[ i ] = new THREE.Mesh( new Bird(), new THREE.MeshColorFillMaterial( Math.random() * 0xffffff ) );
bird.phase = Math.floor( Math.random() * 62.83 );
bird.position = boids[ i ].position;
bird.doubleSided = true;
// bird.scale.x = bird.scale.y = bird.scale.z = 10;
scene.addObject( bird );
}
renderer = new THREE.CanvasRenderer();
// renderer.autoClear = false;
renderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT );
document.addEventListener( 'mousemove', onDocumentMouseMove, false );
document.body.appendChild( renderer.domElement );
stats = new Stats();
stats.domElement.style.position = 'absolute';
stats.domElement.style.left = '0px';
stats.domElement.style.top = '0px';
document.getElementById( 'container' ).appendChild(stats.domElement);
setInterval( loop, 1000 / 200 );
}
function onDocumentMouseMove( event ) {
var vector = new THREE.Vector3( event.clientX - SCREEN_WIDTH_HALF, - event.clientY + SCREEN_HEIGHT_HALF, 0 );
for ( var i = 0, il = boids.length; i < il; i++ ) {
boid = boids[ i ];
vector.z = boid.position.z;
boid.repulse( vector );
}
}
function loop() {
for ( var i = 0, il = birds.length; i < il; i++ ) {
boid = boids[ i ];
boid.run( boids );
bird = birds[ i ];
color = bird.material[0].color;
color.r = color.g = color.b = ( 500 - bird.position.z ) / 1000;
color.updateStyleString();
bird.rotation.y = Math.atan2( - boid.velocity.z, boid.velocity.x );
bird.rotation.z = Math.asin( boid.velocity.y / boid.velocity.length() );
bird.phase = ( bird.phase + ( Math.max( 0, bird.rotation.z ) + 0.1 ) ) % 62.83;
bird.geometry.vertices[ 5 ].position.y = bird.geometry.vertices[ 4 ].position.y = Math.sin( bird.phase ) * 5;
}
renderer.render( scene, camera );
stats.update();
}
</script>
</body>
</html>
......@@ -17,8 +17,8 @@
<script type="text/javascript" src="../build/Three.js"></script>
<script type="text/javascript" src="primitives/Cube.js"></script>
<script type="text/javascript" src="primitives/Plane.js"></script>
<script type="text/javascript" src="geometry/primitives/Cube.js"></script>
<script type="text/javascript" src="geometry/primitives/Plane.js"></script>
<script type="text/javascript" src="http://github.com/mrdoob/stats.js/raw/master/build/Stats.js"></script>
......
<!DOCTYPE HTML>
<html lang="en">
<head>
<title>three.js - geometry - cube</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>
<style type="text/css">
body {
font-family: Monospace;
background-color: #f0f0f0;
margin: 0px;
overflow: hidden;
}
</style>
</head>
<body>
<script type="text/javascript" src="../build/Three.js"></script>
<script type="text/javascript" src="../src/core/Matrix4.js"></script>
<script type="text/javascript" src="../src/renderers/WebGLRenderer.js"></script>
<script type="text/javascript" src="primitives/Cube.js"></script>
<script type="text/javascript" src="primitives/Plane.js"></script>
<script type="text/javascript" src="http://github.com/mrdoob/stats.js/raw/master/build/Stats.js"></script>
<script type="text/javascript">
var SCREEN_WIDTH = window.innerWidth;
var SCREEN_HEIGHT = window.innerHeight;
var container;
var stats;
var camera;
var scene;
var renderer;
var cube, plane;
var targetRotation = 0;
var targetRotationOnMouseDown = 0;
var mouseX = 0;
var mouseXOnMouseDown = 0;
var windowHalfX = window.innerWidth / 2;
var windowHalfY = window.innerHeight / 2;
init();
setInterval(loop, 1000/60);
function init() {
container = document.createElement('div');
document.body.appendChild(container);
var info = document.createElement('div');
info.style.position = 'absolute';
info.style.top = '10px';
info.style.width = '100%';
info.style.textAlign = 'center';
info.innerHTML = 'Drag to spin the cube';
container.appendChild(info);
camera = new THREE.Camera( 70, SCREEN_WIDTH / SCREEN_HEIGHT, 1, 10000 );
camera.position.y = 150;
camera.position.z = 500;
camera.target.position.y = 150;
camera.updateMatrix();
scene = new THREE.Scene();
// Cube
geometry = new Cube( 200, 200, 200 );
for (var i = 0; i < geometry.faces.length; i++) {
geometry.faces[i].color.setRGBA( Math.random() * 0.5, Math.random() * 0.5 + 0.5, Math.random() * 0.5 + 0.5, 1 );
}
cube = new THREE.Mesh(geometry, new THREE.MeshFaceColorFillMaterial() );
cube.position.y = 150;
scene.addObject(cube);
// Plane
plane = new THREE.Mesh( new Plane( 200, 200, 4, 4 ), new THREE.MeshColorFillMaterial( 0xe0e0e0 ) );
plane.rotation.x = -90 * ( Math.PI / 180 );
scene.addObject(plane);
renderer = new THREE.WebGLRenderer();
renderer.setSize(SCREEN_WIDTH, SCREEN_HEIGHT);
container.appendChild(renderer.domElement);
stats = new Stats();
stats.domElement.style.position = 'absolute';
stats.domElement.style.top = '0px';
container.appendChild(stats.domElement);
document.addEventListener('mousedown', onDocumentMouseDown, false);
document.addEventListener('touchstart', onDocumentTouchStart, false);
document.addEventListener('touchmove', onDocumentTouchMove, false);
}
//
function onDocumentMouseDown( event ) {
event.preventDefault();
document.addEventListener('mousemove', onDocumentMouseMove, false);
document.addEventListener('mouseup', onDocumentMouseUp, false);
document.addEventListener('mouseout', onDocumentMouseOut, false);
mouseXOnMouseDown = event.clientX - windowHalfX;
targetRotationOnMouseDown = targetRotation;
}
function onDocumentMouseMove( event ) {
mouseX = event.clientX - windowHalfX;
targetRotation = targetRotationOnMouseDown + (mouseX - mouseXOnMouseDown) * 0.02;
}
function onDocumentMouseUp( event ) {
document.removeEventListener('mousemove', onDocumentMouseMove, false);
document.removeEventListener('mouseup', onDocumentMouseUp, false);
document.removeEventListener('mouseout', onDocumentMouseOut, false);
}
function onDocumentMouseOut( event ) {
document.removeEventListener('mousemove', onDocumentMouseMove, false);
document.removeEventListener('mouseup', onDocumentMouseUp, false);
document.removeEventListener('mouseout', onDocumentMouseOut, false);
}
function onDocumentTouchStart( event ) {
if(event.touches.length == 1) {
event.preventDefault();
mouseXOnMouseDown = event.touches[0].pageX - windowHalfX;
targetRotationOnMouseDown = targetRotation;
}
}
function onDocumentTouchMove( event ) {
if(event.touches.length == 1) {
event.preventDefault();
mouseX = event.touches[0].pageX - windowHalfX;
targetRotation = targetRotationOnMouseDown + (mouseX - mouseXOnMouseDown) * 0.05;
}
}
//
function loop() {
plane.rotation.z = cube.rotation.y += (targetRotation - cube.rotation.y) * 0.05;
renderer.render(scene, camera);
stats.update();
}
</script>
</body>
</html>
......@@ -31,14 +31,14 @@
<body>
<div id="container"></div>
<div id="info"><a href="http://github.com/mrdoob/three.js" target="_blank">three.js</a> - earth demo</div>
<div id="info"><a href="http://github.com/mrdoob/three.js" target="_blank">three.js</a> - earth demo</div>
<script type="text/javascript" src="http://github.com/mrdoob/stats.js/raw/master/build/Stats.js"></script>
<script type="text/javascript" src="../build/Three.js"></script>
<script type="text/javascript" src="primitives/Plane.js"></script>
<script type="text/javascript" src="primitives/Sphere.js"></script>
<script type="text/javascript" src="geometry/primitives/Plane.js"></script>
<script type="text/javascript" src="geometry/primitives/Sphere.js"></script>
<script type="text/javascript">
......
......@@ -37,7 +37,7 @@
<script type="text/javascript" src="../build/Three.js"></script>
<script type="text/javascript" src="primitives/Plane.js"></script>
<script type="text/javascript" src="geometry/primitives/Plane.js"></script>
<script type="text/javascript">
......
......@@ -32,7 +32,7 @@
<script type="text/javascript" src="../build/Three.js"></script>
<script type="text/javascript" src="primitives/Plane.js"></script>
<script type="text/javascript" src="geometry/primitives/Plane.js"></script>
<script type="text/javascript">
......
......@@ -18,7 +18,7 @@
<script type="text/javascript" src="http://github.com/mrdoob/stats.js/raw/master/build/Stats.js"></script>
<script type="text/javascript" src="../build/Three.js"></script>
<script type="text/javascript" src="primitives/Plane.js"></script>
<script type="text/javascript" src="geometry/primitives/Plane.js"></script>
<video id="video" autoplay style="display:none">
<source src="textures/sintel.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'>
......
......@@ -32,6 +32,9 @@
<script type="text/javascript" src="../src/objects/Mesh.js"></script>
<script type="text/javascript" src="../src/objects/Particle.js"></script>
<script type="text/javascript" src="../src/objects/Line.js"></script>
<script type="text/javascript" src="../src/lights/Light.js"></script>
<script type="text/javascript" src="../src/lights/AmbientLight.js"></script>
<script type="text/javascript" src="../src/lights/DirectionalLight.js"></script>
<script type="text/javascript" src="../src/materials/LineColorMaterial.js"></script>
<script type="text/javascript" src="../src/materials/MeshBitmapUVMappingMaterial.js"></script>
<script type="text/javascript" src="../src/materials/MeshColorFillMaterial.js"></script>
......@@ -40,9 +43,6 @@
<script type="text/javascript" src="../src/materials/MeshFaceColorStrokeMaterial.js"></script>
<script type="text/javascript" src="../src/materials/ParticleCircleMaterial.js"></script>
<script type="text/javascript" src="../src/materials/ParticleBitmapMaterial.js"></script>
<script type="text/javascript" src="../src/lights/Light.js"></script>
<script type="text/javascript" src="../src/lights/AmbientLight.js"></script>
<script type="text/javascript" src="../src/lights/DirectionalLight.js"></script>
<script type="text/javascript" src="../src/scenes/Scene.js"></script>
<script type="text/javascript" src="../src/renderers/Renderer.js"></script>
<script type="text/javascript" src="../src/renderers/CanvasRenderer.js"></script>
......@@ -53,10 +53,10 @@
<script type="text/javascript" src="../src/renderers/renderables/RenderableParticle.js"></script>
<script type="text/javascript" src="../src/renderers/renderables/RenderableLine.js"></script>
<script type="text/javascript" src="objects/Qrcode.js"></script>
<script type="text/javascript" src="primitives/Cube.js"></script>
<script type="text/javascript" src="primitives/Plane.js"></script>
<script type="text/javascript" src="primitives/Cylinder.js"></script>
<script type="text/javascript" src="geometry/Qrcode.js"></script>
<script type="text/javascript" src="geometry/primitives/Cube.js"></script>
<script type="text/javascript" src="geometry/primitives/Plane.js"></script>
<script type="text/javascript" src="geometry/primitives/Cylinder.js"></script>
<script type="text/javascript" src="http://github.com/mrdoob/stats.js/raw/master/build/Stats.js"></script>
......
......@@ -7,9 +7,8 @@ THREE.Color = function ( hex ) {
/*
this.r; this.g; this.b; this.a;
this.hex;
*/
this.__styleString = 'rgba(0, 0, 0, 1)';
*/
this.setHex = function ( hex ) {
......@@ -39,10 +38,10 @@ THREE.Color = function ( hex ) {
this.updateRGBA = function () {
this.a = ( this.hex >> 24 & 0xff ) / 0xff;
this.r = ( this.hex >> 16 & 0xff ) / 0xff;
this.g = ( this.hex >> 8 & 0xff ) / 0xff;
this.b = ( this.hex & 0xff ) / 0xff;
this.a = ( this.hex >> 24 & 255 ) / 255;
this.r = ( this.hex >> 16 & 255 ) / 255;
this.g = ( this.hex >> 8 & 255 ) / 255;
this.b = ( this.hex & 255 ) / 255;
};
......
/**
* @author mr.doob / http://mrdoob.com/
*/
THREE.ParticleDOMMaterial = function ( domElement ) {
this.domElement = domElement;
this.toString = function () {
return 'THREE.ParticleDOMMaterial ( domElement: ' + this.domElement + ' )';
};
};
......@@ -4,9 +4,10 @@
THREE.Line = function ( geometry, material ) {
THREE.Object3D.call( this, material );
THREE.Object3D.call( this );
this.geometry = geometry;
this.material = material instanceof Array ? material : [ material ];
};
......
......@@ -4,9 +4,10 @@
THREE.Mesh = function ( geometry, material ) {
THREE.Object3D.call( this, material );
THREE.Object3D.call( this );
this.geometry = geometry;
this.material = material instanceof Array ? material : [ material ];
this.flipSided = false;
this.doubleSided = false;
......
......@@ -11,8 +11,6 @@ THREE.Object3D = function ( material ) {
this.matrix = new THREE.Matrix4();
this.screen = new THREE.Vector3();
this.material = material instanceof Array ? material : [ material ];
this.autoUpdateMatrix = true;
this.updateMatrix = function () {
......
......@@ -4,8 +4,9 @@
THREE.Particle = function ( material ) {
THREE.Object3D.call( this, material );
THREE.Object3D.call( this );
this.material = material instanceof Array ? material : [ material ];
this.autoUpdateMatrix = false;
};
......
/**
* @author mr.doob / http://mrdoob.com/
*/
THREE.DOMRenderer = function () {
THREE.Renderer.call( this );
var _div = document.createElement( 'div' ),
_width, _height, _widthHalf, _heightHalf;
this.domElement = _div;
this.setSize = function ( width, height ) {
_width = width; _height = height;
_widthHalf = _width / 2; _heightHalf = _height / 2;
};
this.render = function ( scene, camera ) {
var e, el, m, ml, element, material, dom, v1x, v1y;
this.project( scene, camera );
for ( e = 0, el = this.renderList.length; e < el; e++ ) {
element = this.renderList[ e ];
if ( element instanceof THREE.RenderableParticle ) {
v1x = element.x * _widthHalf + _widthHalf; v1y = element.y * _heightHalf + _heightHalf;
for ( m = 0, ml = element.material.length; m < ml; m++ ) {
material = element.material[ m ];
if ( material instanceof THREE.ParticleDOMMaterial ) {
dom = material.domElement;
dom.style.left = v1x + 'px';
dom.style.top = v1y + 'px';
}
}
}
}
};
}
THREE.DOMRenderer.prototype = new THREE.Renderer();
THREE.DOMRenderer.prototype.constructor = THREE.DOMRenderer;
import sys
import os
filename = 'Three.js'
# MERGER
files = []
files.append('Three.js')
files.append('core/Color.js')
files.append('core/Vector2.js')
files.append('core/Vector3.js')
files.append('core/Vector4.js')
files.append('core/Rectangle.js')
files.append('core/Matrix4.js')
files.append('core/Vertex.js')
files.append('core/Face3.js')
files.append('core/Face4.js')
files.append('core/UV.js')
files.append('core/Geometry.js')
files.append('cameras/Camera.js')
files.append('objects/Object3D.js')
files.append('objects/Line.js')
files.append('objects/Mesh.js')
files.append('objects/Particle.js')
files.append('lights/Light.js')
files.append('lights/AmbientLight.js')
files.append('lights/DirectionalLight.js')
files.append('materials/LineColorMaterial.js')
files.append('materials/MeshBitmapUVMappingMaterial.js')
files.append('materials/MeshColorFillMaterial.js')
files.append('materials/MeshColorStrokeMaterial.js')
files.append('materials/MeshFaceColorFillMaterial.js')
files.append('materials/MeshFaceColorStrokeMaterial.js')
files.append('materials/ParticleBitmapMaterial.js')
files.append('materials/ParticleCircleMaterial.js')
files.append('materials/ParticleDOMMaterial.js')
files.append('scenes/Scene.js')
files.append('renderers/Renderer.js')
files.append('renderers/DOMRenderer.js')
files.append('renderers/CanvasRenderer.js')
files.append('renderers/SVGRenderer.js')
files.append('renderers/WebGLRenderer.js')
files.append('renderers/renderables/RenderableFace3.js')
files.append('renderers/renderables/RenderableFace4.js')
files.append('renderers/renderables/RenderableParticle.js')
files.append('renderers/renderables/RenderableLine.js')
string = ''
for item in files:
src_file = open('../src/' + item,'r')
string += src_file.read() + "\n"
tmp_file = open('temp.js','w')
tmp_file.write(string)
tmp_file.close()
# YUICOMPRESSOR
os.system("java -jar yuicompressor-2.4.2.jar temp.js -o ../build/" + filename + " --charset utf-8 -v")
os.unlink("temp.js")
# HEADER
rev_file = open('REVISION','r')
rev = rev_file.read().rstrip()
output = '../build/' + filename
string = "// " + filename + " r" + rev + " - http://github.com/mrdoob/three.js\n"
src_file = open(output,'r')
string += src_file.read()
dep_file = open(output,'w')
dep_file.write(string)
dep_file.close()
import sys
import os
filename = 'ThreeCanvas.js'
# MERGER
files = []
files.append('Three.js')
files.append('core/Color.js')
files.append('core/Vector2.js')
files.append('core/Vector3.js')
files.append('core/Vector4.js')
files.append('core/Rectangle.js')
files.append('core/Matrix4.js')
files.append('core/Vertex.js')
files.append('core/Face3.js')
files.append('core/Face4.js')
files.append('core/UV.js')
files.append('core/Geometry.js')
files.append('cameras/Camera.js')
files.append('objects/Object3D.js')
files.append('objects/Line.js')
files.append('objects/Mesh.js')
files.append('objects/Particle.js')
files.append('lights/Light.js')
files.append('lights/AmbientLight.js')
files.append('lights/DirectionalLight.js')
files.append('materials/LineColorMaterial.js')
files.append('materials/MeshBitmapUVMappingMaterial.js')
files.append('materials/MeshColorFillMaterial.js')
files.append('materials/MeshColorStrokeMaterial.js')
files.append('materials/MeshFaceColorFillMaterial.js')
files.append('materials/MeshFaceColorStrokeMaterial.js')
files.append('materials/ParticleBitmapMaterial.js')
files.append('materials/ParticleCircleMaterial.js')
files.append('scenes/Scene.js')
files.append('renderers/Renderer.js')
files.append('renderers/CanvasRenderer.js')
files.append('renderers/renderables/RenderableFace3.js')
files.append('renderers/renderables/RenderableFace4.js')
files.append('renderers/renderables/RenderableParticle.js')
files.append('renderers/renderables/RenderableLine.js')
string = ''
for item in files:
src_file = open('../src/' + item,'r')
string += src_file.read() + "\n"
tmp_file = open('temp.js','w')
tmp_file.write(string)
tmp_file.close()
# YUICOMPRESSOR
os.system("java -jar yuicompressor-2.4.2.jar temp.js -o ../build/" + filename + " --charset utf-8 -v")
os.unlink("temp.js")
# HEADER
rev_file = open('REVISION','r')
rev = rev_file.read().rstrip()
output = '../build/' + filename
string = "// " + filename + " r" + rev + " - http://github.com/mrdoob/three.js\n"
src_file = open(output,'r')
string += src_file.read()
dep_file = open(output,'w')
dep_file.write(string)
dep_file.close()
import sys
import os
filename = 'ThreeDOM.js'
# MERGER
files = []
files.append('Three.js')
files.append('core/Color.js')
files.append('core/Vector2.js')
files.append('core/Vector3.js')
files.append('core/Vector4.js')
files.append('core/Rectangle.js')
files.append('core/Matrix4.js')
files.append('core/Vertex.js')
files.append('core/Face3.js')
files.append('core/Face4.js')
files.append('core/UV.js')
files.append('cameras/Camera.js')
files.append('objects/Object3D.js')
files.append('objects/Particle.js')
files.append('materials/ParticleDOMMaterial.js')
files.append('scenes/Scene.js')
files.append('renderers/Renderer.js')
files.append('renderers/DOMRenderer.js')
files.append('renderers/renderables/RenderableParticle.js')
string = ''
for item in files:
src_file = open('../src/' + item,'r')
string += src_file.read() + "\n"
tmp_file = open('temp.js','w')
tmp_file.write(string)
tmp_file.close()
# YUICOMPRESSOR
os.system("java -jar yuicompressor-2.4.2.jar temp.js -o ../build/" + filename + " --charset utf-8 -v")
os.unlink("temp.js")
# HEADER
rev_file = open('REVISION','r')
rev = rev_file.read().rstrip()
output = '../build/' + filename
string = "// " + filename + " r" + rev + " - http://github.com/mrdoob/three.js\n"
src_file = open(output,'r')
string += src_file.read()
dep_file = open(output,'w')
dep_file.write(string)
dep_file.close()
import sys
import os
# MERGER
filename = 'ThreeDebug.js'
rev = 16
# MERGER
files = []
files.append('Three.js')
......@@ -23,6 +23,9 @@ files.append('objects/Object3D.js')
files.append('objects/Line.js')
files.append('objects/Mesh.js')
files.append('objects/Particle.js')
files.append('lights/Light.js')
files.append('lights/AmbientLight.js')
files.append('lights/DirectionalLight.js')
files.append('materials/LineColorMaterial.js')
files.append('materials/MeshBitmapUVMappingMaterial.js')
files.append('materials/MeshColorFillMaterial.js')
......@@ -31,8 +34,10 @@ files.append('materials/MeshFaceColorFillMaterial.js')
files.append('materials/MeshFaceColorStrokeMaterial.js')
files.append('materials/ParticleBitmapMaterial.js')
files.append('materials/ParticleCircleMaterial.js')
files.append('materials/ParticleDOMMaterial.js')
files.append('scenes/Scene.js')
files.append('renderers/Renderer.js')
files.append('renderers/DOMRenderer.js')
files.append('renderers/CanvasRenderer.js')
files.append('renderers/SVGRenderer.js')
files.append('renderers/WebGLRenderer.js')
......@@ -64,16 +69,20 @@ tmp_file.close()
# YUICOMPRESSOR
os.system("java -jar yuicompressor-2.4.2.jar temp.js -o ../build/ThreeDebug.js --charset utf-8 -v")
os.system("java -jar yuicompressor-2.4.2.jar temp.js -o ../build/" + filename + " --charset utf-8 -v")
os.unlink("temp.js");
# HEADER
output = '../build/ThreeDebug.js'
string = "// three.js r" + str(rev) + " - http://github.com/mrdoob/three.js\n"
rev_file = open('REVISION','r')
rev = rev_file.read().rstrip()
output = '../build/' + filename
string = "// " + filename + " r" + rev + " - http://github.com/mrdoob/three.js\n"
src_file = open(output,'r')
string += src_file.read();
string += src_file.read()
dep_file = open(output,'w')
dep_file.write(string)
......
import sys
import os
# MERGER
filename = 'ThreeSVG.js'
rev = 16
# MERGER
files = []
files.append('Three.js')
......@@ -23,6 +23,9 @@ files.append('objects/Object3D.js')
files.append('objects/Line.js')
files.append('objects/Mesh.js')
files.append('objects/Particle.js')
files.append('lights/Light.js')
files.append('lights/AmbientLight.js')
files.append('lights/DirectionalLight.js')
files.append('materials/LineColorMaterial.js')
files.append('materials/MeshBitmapUVMappingMaterial.js')
files.append('materials/MeshColorFillMaterial.js')
......@@ -33,9 +36,7 @@ files.append('materials/ParticleBitmapMaterial.js')
files.append('materials/ParticleCircleMaterial.js')
files.append('scenes/Scene.js')
files.append('renderers/Renderer.js')
files.append('renderers/CanvasRenderer.js')
files.append('renderers/SVGRenderer.js')
files.append('renderers/WebGLRenderer.js')
files.append('renderers/renderables/RenderableFace3.js')
files.append('renderers/renderables/RenderableFace4.js')
files.append('renderers/renderables/RenderableParticle.js')
......@@ -54,13 +55,17 @@ tmp_file.close()
# YUICOMPRESSOR
os.system("java -jar yuicompressor-2.4.2.jar temp.js -o ../build/Three.js --charset utf-8 -v")
os.system("java -jar yuicompressor-2.4.2.jar temp.js -o ../build/" + filename + " --charset utf-8 -v")
os.unlink("temp.js")
# HEADER
output = '../build/Three.js'
string = "// three.js r" + str(rev) + " - http://github.com/mrdoob/three.js\n"
rev_file = open('REVISION','r')
rev = rev_file.read().rstrip()
output = '../build/' + filename
string = "// " + filename + " r" + rev + " - http://github.com/mrdoob/three.js\n"
src_file = open(output,'r')
string += src_file.read()
......
import sys
import os
filename = 'ThreeWebGL.js'
# MERGER
files = []
files.append('Three.js')
files.append('core/Color.js')
files.append('core/Vector2.js')
files.append('core/Vector3.js')
files.append('core/Vector4.js')
files.append('core/Rectangle.js')
files.append('core/Matrix4.js')
files.append('core/Vertex.js')
files.append('core/Face3.js')
files.append('core/Face4.js')
files.append('core/UV.js')
files.append('core/Geometry.js')
files.append('cameras/Camera.js')
files.append('objects/Object3D.js')
files.append('objects/Line.js')
files.append('objects/Mesh.js')
files.append('objects/Particle.js')
files.append('lights/Light.js')
files.append('lights/AmbientLight.js')
files.append('lights/DirectionalLight.js')
files.append('materials/LineColorMaterial.js')
files.append('materials/MeshBitmapUVMappingMaterial.js')
files.append('materials/MeshColorFillMaterial.js')
files.append('materials/MeshColorStrokeMaterial.js')
files.append('materials/MeshFaceColorFillMaterial.js')
files.append('materials/MeshFaceColorStrokeMaterial.js')
files.append('materials/ParticleBitmapMaterial.js')
files.append('materials/ParticleCircleMaterial.js')
files.append('scenes/Scene.js')
files.append('renderers/WebGLRenderer.js')
string = ''
for item in files:
src_file = open('../src/' + item,'r')
string += src_file.read() + "\n"
tmp_file = open('temp.js','w')
tmp_file.write(string)
tmp_file.close()
# YUICOMPRESSOR
os.system("java -jar yuicompressor-2.4.2.jar temp.js -o ../build/" + filename + " --charset utf-8 -v")
os.unlink("temp.js")
# HEADER
rev_file = open('REVISION','r')
rev = rev_file.read().rstrip()
output = '../build/' + filename
string = "// " + filename + " r" + rev + " - http://github.com/mrdoob/three.js\n"
src_file = open(output,'r')
string += src_file.read()
dep_file = open(output,'w')
dep_file.write(string)
dep_file.close()
#!/bin/sh
echo Compiling Three.js
python Builder.py
echo Compiling ThreeDebug.js
python BuilderDebug.py
# echo Compiling ThreeDOM.js
# python BuilderDOM.py
# echo Compiling ThreeCanvas.js
# python BuilderCanvas.py
# echo Compiling ThreeSVG.js
# python BuilderSVG.py
# echo Compiling ThreeWebGL.js
# python BuilderWebGL.py
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册