README.md 5.5 KB
Newer Older
M
testing  
Mr.doob 已提交
1 2 3
three.js
========

M
Mr.doob 已提交
4
#### Javascript 3D Engine ####
M
Mr.doob 已提交
5

M
r5  
Mr.doob 已提交
6 7
[![Flattr this](http://api.flattr.com/button/button-compact-static-100x17.png)](http://flattr.com/thing/287/three-js)

M
Mr.doob 已提交
8 9
Currently the engine only supports particles and triangles/quads with flat colors. The aim is to keep the code as simple and modular as possible.

M
Mr.doob 已提交
10
At the moment the engine can render using <canvas> and <svg>. WebGL rendering would come at a later stage but feel free to fork the project and have a go.
M
Mr.doob 已提交
11 12 13

Although this allows 3D for iPhoneOS and Android platforms the performance on these devices is not too good.

M
Mr.doob 已提交
14 15
[More info...](http://mrdoob.com/blog/post/693)

M
Mr.doob 已提交
16
### Examples ###
M
Mr.doob 已提交
17

M
Mr.doob 已提交
18
[![cube.png](http://github.com/mrdoob/three.js/raw/master/examples/geometry/cube.png)](http://mrdoob.com/lab/javascript/three/geometry/cube.html)
M
Mr.doob 已提交
19 20 21 22
[![random.png](http://github.com/mrdoob/three.js/raw/master/examples/particles/random.png)](http://mrdoob.com/lab/javascript/three/particles/random.html)
[![waves.png](http://github.com/mrdoob/three.js/raw/master/examples/particles/waves.png)](http://mrdoob.com/lab/javascript/three/particles/waves.html)
[![floor.png](http://github.com/mrdoob/three.js/raw/master/examples/particles/floor.png)](http://mrdoob.com/lab/javascript/three/particles/floor.html)

M
Mr.doob 已提交
23
### How to use ###
M
Mr.doob 已提交
24

M
Mr.doob 已提交
25
The library needs to be included first thing.
M
Mr.doob 已提交
26

M
Mr.doob 已提交
27
	<script type="text/javascript" src="js/three.js"></script>
M
Mr.doob 已提交
28

M
Mr.doob 已提交
29
Now we have access to the engine classes and methods.
M
Mr.doob 已提交
30

M
Mr.doob 已提交
31
This code creates a camera, then creates a scene object, adds a bunch of random particles to the scene, creates a &lt;canvas&gt; renderer and adds its viewport the document.body element.
M
Mr.doob 已提交
32 33 34 35

	<script type="text/javascript">

		var camera, scene, renderer;
36

M
Mr.doob 已提交
37 38 39
		init();
		setInterval(loop, 1000 / 60);

M
Mr.doob 已提交
40 41 42
		function init() {
		
			camera = new THREE.Camera(0, 0, 1000);
M
Mr.doob 已提交
43

M
Mr.doob 已提交
44
			scene = new THREE.Scene();
M
Mr.doob 已提交
45
	
M
Mr.doob 已提交
46
			renderer = new THREE.CanvasRenderer();
M
Mr.doob 已提交
47 48
			renderer.setSize(window.innerWidth, window.innerHeight);

M
Mr.doob 已提交
49 50
			for (var i = 0; i < 1000; i++) {
			
M
Mr.doob 已提交
51
				var particle = new THREE.Particle( new THREE.ColorFillMaterial(Math.random() * 0x808008 + 0x808080, 1) );
M
Mr.doob 已提交
52
				particle.size = Math.random() * 10 + 5;
M
Mr.doob 已提交
53 54 55 56 57
				particle.position.x = Math.random() * 2000 - 1000;
				particle.position.y = Math.random() * 2000 - 1000;
				particle.position.z = Math.random() * 2000 - 1000;
				particle.updateMatrix();
				scene.add( particle );
M
Mr.doob 已提交
58
				
M
Mr.doob 已提交
59 60
			}

61
			document.body.appendChild(renderer.domElement);
M
Mr.doob 已提交
62
			
63 64
		}

M
Mr.doob 已提交
65 66
		function loop() {
		
M
Mr.doob 已提交
67
			renderer.render(scene, camera);
M
Mr.doob 已提交
68
			
M
Mr.doob 已提交
69
		}
M
Mr.doob 已提交
70

M
Mr.doob 已提交
71
	</script>
72 73 74

If you are interested on messing with the actual library, instead of importing the three.js compressed file, you can include the original files in this order:

M
Mr.doob 已提交
75 76 77 78
	<script type="text/javascript" src="js/three/Three.js"></script>
	<script type="text/javascript" src="js/three/core/Color.js"></script>
	<script type="text/javascript" src="js/three/core/Vector2.js"></script>
	<script type="text/javascript" src="js/three/core/Vector3.js"></script>
79 80
	<script type="text/javascript" src="js/three/core/Vector4.js"></script>
	<script type="text/javascript" src="js/three/core/Rectangle.js"></script>	
M
Mr.doob 已提交
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
	<script type="text/javascript" src="js/three/core/Matrix4.js"></script>
	<script type="text/javascript" src="js/three/core/Vertex.js"></script>
	<script type="text/javascript" src="js/three/core/Face3.js"></script>
	<script type="text/javascript" src="js/three/core/Face4.js"></script>
	<script type="text/javascript" src="js/three/core/Geometry.js"></script>
	<script type="text/javascript" src="js/three/cameras/Camera.js"></script>
	<script type="text/javascript" src="js/three/objects/Object3D.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/materials/ColorFillMaterial.js"></script>
	<script type="text/javascript" src="js/three/materials/ColorStrokeMaterial.js"></script>
	<script type="text/javascript" src="js/three/materials/FaceColorFillMaterial.js"></script>
	<script type="text/javascript" src="js/three/materials/FaceColorStrokeMaterial.js"></script>
	<script type="text/javascript" src="js/three/scenes/Scene.js"></script>
	<script type="text/javascript" src="js/three/renderers/Renderer.js"></script>
	<script type="text/javascript" src="js/three/renderers/CanvasRenderer.js"></script>
	<script type="text/javascript" src="js/three/renderers/SVGRenderer.js"></script>
	<script type="text/javascript" src="js/three/renderers/renderables/RenderableFace3.js"></script>
	<script type="text/javascript" src="js/three/renderers/renderables/RenderableFace4.js"></script>
	<script type="text/javascript" src="js/three/renderers/renderables/RenderableParticle.js"></script>
101

M
Mr.doob 已提交
102
	
M
Mr.doob 已提交
103
### Change Log ###
M
Mr.doob 已提交
104

105 106 107 108 109 110
2010 05 17 - **r6** (21.003 kb)

* 2d clipping on CanvasRenderer and SVGRenderer
* clearRect optimisations on CanvasRenderer


M
Mr.doob 已提交
111
2010 05 16 - **r5** (19.026 kb)
M
Mr.doob 已提交
112 113 114 115 116 117 118 119 120 121 122 123

* Removed Class.js dependency
* Added THREE namespace
* Camera.x -> Camera.position.x
* Camera.target.x -> Camera.target.position.x
* ColorMaterial -> ColorFillMaterial
* FaceColorMaterial -> FaceColorFillMaterial
* Materials are now multipass (use array)
* Added ColorStrokeMaterial and FaceColorStrokeMaterial
* geometry.faces.a are now indexes instead of links 


124 125 126 127 128 129
2010 04 26 - **r4** (16.274 kb)

* SVGRenderer Particle rendering
* CanvasRenderer uses context.setTransform to avoid extra calculations


M
Mr.doob 已提交
130
2010 04 24 - **r3** (16.392 kb)
M
Mr.doob 已提交
131 132 133 134 135 136

* Fixed incorrect rotation matrix transforms
* Added Plane and Cube primitives


2010 04 24 - **r2** (15.724 kb)
M
Mr.doob 已提交
137 138 139

* Improved Color handling

M
Mr.doob 已提交
140 141

2010 04 24 - **r1** (15.25 kb)
M
Mr.doob 已提交
142 143

* First alpha release