- Clean up
@@ -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 ###
|
||||
|
||||
[](http://mrdoob.com/projects/three.js/examples/geometry_earth.html)
|
||||
[](http://mrdoob.com/projects/three.js/examples/geometry_terrain.html)
|
||||
[](http://mrdoob.com/projects/three.js/examples/materials_video.html)
|
||||
[](http://mrdoob.com/projects/three.js/examples/geometry_vr.html)
|
||||
[](http://mrdoob.com/projects/three.js/examples/geometry_cube.html)
|
||||
[](http://mrdoob.com/projects/three.js/examples/particles_random.html)
|
||||
[](http://mrdoob.com/projects/three.js/examples/particles_waves.html)
|
||||
[](http://mrdoob.com/projects/three.js/examples/particles_floor.html)
|
||||
[](http://mrdoob.github.com/three.js/examples/geometry_birds.html)
|
||||
[](http://mrdoob.github.com/three.js/examples/geometry_earth.html)
|
||||
[](http://mrdoob.github.com/three.js/examples/geometry_terrain.html)
|
||||
[](http://mrdoob.github.com/three.js/examples/materials_video.html)
|
||||
[](http://mrdoob.github.com/three.js/examples/geometry_vr.html)
|
||||
[](http://mrdoob.github.com/three.js/examples/geometry_cube.html)
|
||||
[](http://mrdoob.github.com/three.js/examples/particles_random.html)
|
||||
[](http://mrdoob.github.com/three.js/examples/particles_waves.html)
|
||||
[](http://mrdoob.github.com/three.js/examples/particles_floor.html)
|
||||
|
||||
### Featured projects ###
|
||||
|
||||
[](http://xplsv.com/prods/demos/online/xplsv_orsotheysay/)
|
||||
[](http://tech.lab212.org/2010/07/export-textured-models-from-blender2-5-to-three-js/)
|
||||
[](http://www.is-real.net/experiments/three/failure/)
|
||||
[](http://labs.brian-stoner.com/spacecannon/)
|
||||
[](http://arithmetric.com/projects/alocasia/)
|
||||
[](http://the389.com/works/three/)
|
||||
[](http://test.sjeiti.com/jsflowfield4d/)
|
||||
[](http://kile.stravaganza.org/lab/js/spikeball/)
|
||||
[](http://thewildernessdowntown.com/)
|
||||
[](http://cloudscad.com/stl_viewer/)
|
||||
[](http://xplsv.com/prods/demos/online/xplsv_orsotheysay/)
|
||||
[](http://tech.lab212.org/2010/07/export-textured-models-from-blender2-5-to-three-js/)
|
||||
[](http://www.is-real.net/experiments/three/failure/)
|
||||
[](http://labs.brian-stoner.com/spacecannon/)
|
||||
[](http://arithmetric.com/projects/alocasia/)
|
||||
[](http://the389.com/works/three/)
|
||||
[](http://test.sjeiti.com/jsflowfield4d/)
|
||||
[](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)
|
||||
|
||||
|
Before Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 7.1 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 9.8 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 8.4 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 7.8 KiB |
@@ -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>
|
||||
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
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;
|
||||
@@ -0,0 +1,431 @@
|
||||
<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>
|
||||
|
||||
|
||||
@@ -1,181 +0,0 @@
|
||||
<!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;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
/**
|
||||
* @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;
|
||||
|
||||
};
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
/**
|
||||
* @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;
|
||||
@@ -0,0 +1,79 @@
|
||||
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()
|
||||
@@ -0,0 +1,75 @@
|
||||
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()
|
||||
@@ -0,0 +1,59 @@
|
||||
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()
|
||||
@@ -1,9 +1,9 @@
|
||||
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)
|
||||
@@ -1,9 +1,9 @@
|
||||
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()
|
||||
@@ -0,0 +1,70 @@
|
||||
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()
|
||||
@@ -0,0 +1 @@
|
||||
17
|
||||
@@ -0,0 +1,19 @@
|
||||
#!/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
|
||||