README.md 7.4 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 17
Similar projects: [pre3d](http://deanm.github.com/pre3d/), [pvjs](http://code.google.com/p/pvjswebgl/), [jsjl](http://tulrich.com/geekstuff/canvas/perspective.html), [k3d](http://www.kevs3d.co.uk/dev/canvask3d/k3d_test.html), ...

M
Mr.doob 已提交
18
### Examples ###
M
Mr.doob 已提交
19

M
Mr.doob 已提交
20 21 22 23 24 25
[![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)
M
Mr.doob 已提交
26

M
Mr.doob 已提交
27
[![Space Cannon 3D](http://github.com/mrdoob/three.js/raw/master/assets/projects/02_spacecannon.png)](http://labs.brian-stoner.com/spacecannon/)
M
Mr.doob 已提交
28
[![Alocasia](http://github.com/mrdoob/three.js/raw/master/assets/projects/04_alocasia.png)](http://arithmetric.com/projects/alocasia/)
M
Mr.doob 已提交
29 30
[![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/)
M
Mr.doob 已提交
31
[![spikeball](http://github.com/mrdoob/three.js/raw/master/assets/projects/03_spikeball.png)](http://kile.stravaganza.org/lab/js/spikeball/)
M
Mr.doob 已提交
32

M
Mr.doob 已提交
33
### How to use ###
M
Mr.doob 已提交
34

M
Mr.doob 已提交
35
The library needs to be included first thing.
M
Mr.doob 已提交
36

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

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

M
Mr.doob 已提交
41
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 已提交
42 43 44 45

	<script type="text/javascript">

		var camera, scene, renderer;
46

M
Mr.doob 已提交
47 48 49
		init();
		setInterval(loop, 1000 / 60);

M
Mr.doob 已提交
50
		function init() {
M
Mr.doob 已提交
51

M
Mr.doob 已提交
52
			camera = new THREE.Camera(0, 0, 1000);
M
Mr.doob 已提交
53

M
Mr.doob 已提交
54
			scene = new THREE.Scene();
M
Mr.doob 已提交
55

M
Mr.doob 已提交
56
			renderer = new THREE.CanvasRenderer();
M
Mr.doob 已提交
57 58
			renderer.setSize(window.innerWidth, window.innerHeight);

M
Mr.doob 已提交
59
			for (var i = 0; i < 1000; i++) {
M
Mr.doob 已提交
60

M
Mr.doob 已提交
61
				var particle = new THREE.Particle( new THREE.ColorFillMaterial(Math.random() * 0x808008 + 0x808080, 1) );
M
Mr.doob 已提交
62
				particle.size = Math.random() * 10 + 5;
M
Mr.doob 已提交
63 64 65 66
				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 已提交
67

M
Mr.doob 已提交
68 69
			}

70
			document.body.appendChild(renderer.domElement);
M
Mr.doob 已提交
71

72 73
		}

M
Mr.doob 已提交
74
		function loop() {
M
Mr.doob 已提交
75

M
Mr.doob 已提交
76
			renderer.render(scene, camera);
M
Mr.doob 已提交
77

M
Mr.doob 已提交
78
		}
M
Mr.doob 已提交
79

M
Mr.doob 已提交
80
	</script>
81 82 83

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 已提交
84 85 86 87
	<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>
88
	<script type="text/javascript" src="js/three/core/Vector4.js"></script>
M
Mr.doob 已提交
89
	<script type="text/javascript" src="js/three/core/Rectangle.js"></script>
M
Mr.doob 已提交
90 91 92 93 94 95 96 97 98
	<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 已提交
99
	<script type="text/javascript" src="js/three/objects/Line.js"></script>
100
	<script type="text/javascript" src="js/three/materials/BitmapUVMappingMaterial.js"></script>
M
Mr.doob 已提交
101 102 103 104 105 106 107 108 109 110 111
	<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 已提交
112 113
	<script type="text/javascript" src="js/three/renderers/renderables/RenderableLine.js"></script>

114

M
Mr.doob 已提交
115
### Change Log ###
M
Mr.doob 已提交
116

117
2010 06 06 - **r8** (23.597 kb)
118 119 120

* Moved UVs to Geometry.
* CanvasRenderer expands screen space points (workaround for antialias gaps).
121
* CanvasRenderer supports BitmapUVMappingMaterial.
122 123


M
Mr.doob 已提交
124
2010 06 05 - **r7** (22.387 kb)
M
Mr.doob 已提交
125

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


131 132 133 134 135 136
2010 05 17 - **r6** (21.003 kb)

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


M
Mr.doob 已提交
137
2010 05 16 - **r5** (19.026 kb)
M
Mr.doob 已提交
138 139 140 141 142 143 144 145 146 147 148 149

* 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 


150 151 152 153 154 155
2010 04 26 - **r4** (16.274 kb)

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


M
Mr.doob 已提交
156
2010 04 24 - **r3** (16.392 kb)
M
Mr.doob 已提交
157 158 159 160 161 162

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


2010 04 24 - **r2** (15.724 kb)
M
Mr.doob 已提交
163 164 165

* Improved Color handling

M
Mr.doob 已提交
166 167

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

* First alpha release