README.md 5.9 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/assets/examples/03_cube.png)](http://mrdoob.com/lab/javascript/three/geometry/cube.html)
M
Mr.doob 已提交
19 20 21
[![random.png](http://github.com/mrdoob/three.js/raw/master/assets/examples/02_random.png)](http://mrdoob.com/lab/javascript/three/particles/random.html)
[![waves.png](http://github.com/mrdoob/three.js/raw/master/assets/examples/01_waves.png)](http://mrdoob.com/lab/javascript/three/particles/waves.html)
[![floor.png](http://github.com/mrdoob/three.js/raw/master/assets/examples/00_floor.png)](http://mrdoob.com/lab/javascript/three/particles/floor.html)
M
Mr.doob 已提交
22

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
		function init() {
M
Mr.doob 已提交
41

M
Mr.doob 已提交
42
			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
			for (var i = 0; i < 1000; i++) {
M
Mr.doob 已提交
50

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
				particle.position.x = Math.random() * 2000 - 1000;
				particle.position.y = Math.random() * 2000 - 1000;
				particle.position.z = Math.random() * 2000 - 1000;
				scene.add( particle );
M
Mr.doob 已提交
57

M
Mr.doob 已提交
58 59
			}

60
			document.body.appendChild(renderer.domElement);
M
Mr.doob 已提交
61

62 63
		}

M
Mr.doob 已提交
64
		function loop() {
M
Mr.doob 已提交
65

M
Mr.doob 已提交
66
			renderer.render(scene, camera);
M
Mr.doob 已提交
67

M
Mr.doob 已提交
68
		}
M
Mr.doob 已提交
69

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

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 已提交
74 75 76 77
	<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>
78
	<script type="text/javascript" src="js/three/core/Vector4.js"></script>
M
Mr.doob 已提交
79
	<script type="text/javascript" src="js/three/core/Rectangle.js"></script>
M
Mr.doob 已提交
80 81 82 83 84 85 86 87 88
	<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>
M
Mr.doob 已提交
89
	<script type="text/javascript" src="js/three/objects/Line.js"></script>
M
Mr.doob 已提交
90 91 92 93 94 95 96 97 98 99 100
	<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>
M
Mr.doob 已提交
101 102
	<script type="text/javascript" src="js/three/renderers/renderables/RenderableLine.js"></script>

103

M
Mr.doob 已提交
104
### Change Log ###
M
Mr.doob 已提交
105

M
Mr.doob 已提交
106
2010 06 05 - **r7** (22.387 kb)
M
Mr.doob 已提交
107 108 109

* Added Line Object
* Workaround for WebKit not supporting rgba() in SVG yet
M
Mr.doob 已提交
110
* No need to call updateMatrix(). Use .autoUpdateMatrix = false if needed. (thx (Gregory Athons)[http://github.com/gregmax17])
M
Mr.doob 已提交
111 112


113 114 115 116 117 118
2010 05 17 - **r6** (21.003 kb)

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


M
Mr.doob 已提交
119
2010 05 16 - **r5** (19.026 kb)
M
Mr.doob 已提交
120 121 122 123 124 125 126 127 128 129 130 131

* 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 


132 133 134 135 136 137
2010 04 26 - **r4** (16.274 kb)

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


M
Mr.doob 已提交
138
2010 04 24 - **r3** (16.392 kb)
M
Mr.doob 已提交
139 140 141 142 143 144

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


2010 04 24 - **r2** (15.724 kb)
M
Mr.doob 已提交
145 146 147

* Improved Color handling

M
Mr.doob 已提交
148 149

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

* First alpha release