Skip to content

Commit f94cae8

Browse files
committed
pin three.js version, simple view
1 parent c00c764 commit f94cae8

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

85 files changed

+88156
-41
lines changed

js/three.js/build/three.js

+34,730
Large diffs are not rendered by default.

js/three.js/build/three.min.js

+814
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

js/three.js/build/three.module.js

+47,840
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,329 @@
1+
/**
2+
* @author mrdoob / http://mrdoob.com/
3+
*/
4+
5+
THREE.OBJLoader = function ( manager ) {
6+
7+
this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;
8+
9+
};
10+
11+
THREE.OBJLoader.prototype = {
12+
13+
constructor: THREE.OBJLoader,
14+
15+
load: function ( url, onLoad, onProgress, onError ) {
16+
17+
var scope = this;
18+
19+
var loader = new THREE.XHRLoader( scope.manager );
20+
loader.setCrossOrigin( this.crossOrigin );
21+
loader.load( url, function ( text ) {
22+
23+
onLoad( scope.parse( text ) );
24+
25+
} );
26+
27+
},
28+
29+
parse: function ( text ) {
30+
31+
function vector( x, y, z ) {
32+
33+
return new THREE.Vector3( parseFloat( x ), parseFloat( y ), parseFloat( z ) );
34+
35+
}
36+
37+
function uv( u, v ) {
38+
39+
return new THREE.Vector2( parseFloat( u ), parseFloat( v ) );
40+
41+
}
42+
43+
function face3( a, b, c, normals ) {
44+
45+
return new THREE.Face3( a, b, c, normals );
46+
47+
}
48+
49+
var object = new THREE.Object3D();
50+
var geometry, material, mesh;
51+
52+
function parseVertexIndex( index ) {
53+
54+
index = parseInt( index );
55+
56+
return index >= 0 ? index - 1 : index + vertices.length;
57+
58+
}
59+
60+
function parseNormalIndex( index ) {
61+
62+
index = parseInt( index );
63+
64+
return index >= 0 ? index - 1 : index + normals.length;
65+
66+
}
67+
68+
function parseUVIndex( index ) {
69+
70+
index = parseInt( index );
71+
72+
return index >= 0 ? index - 1 : index + uvs.length;
73+
74+
}
75+
76+
function add_face( a, b, c, normals_inds ) {
77+
78+
if ( normals_inds === undefined ) {
79+
80+
geometry.faces.push( face3(
81+
vertices[ parseVertexIndex( a ) ] - 1,
82+
vertices[ parseVertexIndex( b ) ] - 1,
83+
vertices[ parseVertexIndex( c ) ] - 1
84+
) );
85+
86+
} else {
87+
88+
geometry.faces.push( face3(
89+
vertices[ parseVertexIndex( a ) ] - 1,
90+
vertices[ parseVertexIndex( b ) ] - 1,
91+
vertices[ parseVertexIndex( c ) ] - 1,
92+
[
93+
normals[ parseNormalIndex( normals_inds[ 0 ] ) ].clone(),
94+
normals[ parseNormalIndex( normals_inds[ 1 ] ) ].clone(),
95+
normals[ parseNormalIndex( normals_inds[ 2 ] ) ].clone()
96+
]
97+
) );
98+
99+
}
100+
101+
}
102+
103+
function add_uvs( a, b, c ) {
104+
105+
geometry.faceVertexUvs[ 0 ].push( [
106+
uvs[ parseUVIndex( a ) ].clone(),
107+
uvs[ parseUVIndex( b ) ].clone(),
108+
uvs[ parseUVIndex( c ) ].clone()
109+
] );
110+
111+
}
112+
113+
function handle_face_line(faces, uvs, normals_inds) {
114+
115+
if ( faces[ 3 ] === undefined ) {
116+
117+
add_face( faces[ 0 ], faces[ 1 ], faces[ 2 ], normals_inds );
118+
119+
if ( uvs !== undefined && uvs.length > 0 ) {
120+
121+
add_uvs( uvs[ 0 ], uvs[ 1 ], uvs[ 2 ] );
122+
123+
}
124+
125+
} else {
126+
127+
if ( normals_inds !== undefined && normals_inds.length > 0 ) {
128+
129+
add_face( faces[ 0 ], faces[ 1 ], faces[ 3 ], [ normals_inds[ 0 ], normals_inds[ 1 ], normals_inds[ 3 ] ] );
130+
add_face( faces[ 1 ], faces[ 2 ], faces[ 3 ], [ normals_inds[ 1 ], normals_inds[ 2 ], normals_inds[ 3 ] ] );
131+
132+
} else {
133+
134+
add_face( faces[ 0 ], faces[ 1 ], faces[ 3 ] );
135+
add_face( faces[ 1 ], faces[ 2 ], faces[ 3 ] );
136+
137+
}
138+
139+
if ( uvs !== undefined && uvs.length > 0 ) {
140+
141+
add_uvs( uvs[ 0 ], uvs[ 1 ], uvs[ 3 ] );
142+
add_uvs( uvs[ 1 ], uvs[ 2 ], uvs[ 3 ] );
143+
144+
}
145+
146+
}
147+
148+
}
149+
150+
// create mesh if no objects in text
151+
152+
if ( /^o /gm.test( text ) === false ) {
153+
154+
geometry = new THREE.Geometry();
155+
material = new THREE.MeshLambertMaterial();
156+
mesh = new THREE.Mesh( geometry, material );
157+
object.add( mesh );
158+
159+
}
160+
161+
var vertices = [];
162+
var normals = [];
163+
var uvs = [];
164+
165+
// v float float float
166+
167+
var vertex_pattern = /v( +[\d|\.|\+|\-|e]+)( +[\d|\.|\+|\-|e]+)( +[\d|\.|\+|\-|e]+)/;
168+
169+
// vn float float float
170+
171+
var normal_pattern = /vn( +[\d|\.|\+|\-|e]+)( +[\d|\.|\+|\-|e]+)( +[\d|\.|\+|\-|e]+)/;
172+
173+
// vt float float
174+
175+
var uv_pattern = /vt( +[\d|\.|\+|\-|e]+)( +[\d|\.|\+|\-|e]+)/;
176+
177+
// f vertex vertex vertex ...
178+
179+
var face_pattern1 = /f( +-?\d+)( +-?\d+)( +-?\d+)( +-?\d+)?/;
180+
181+
// f vertex/uv vertex/uv vertex/uv ...
182+
183+
var face_pattern2 = /f( +(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+))?/;
184+
185+
// f vertex/uv/normal vertex/uv/normal vertex/uv/normal ...
186+
187+
var face_pattern3 = /f( +(-?\d+)\/(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+)\/(-?\d+))?/;
188+
189+
// f vertex//normal vertex//normal vertex//normal ...
190+
191+
var face_pattern4 = /f( +(-?\d+)\/\/(-?\d+))( +(-?\d+)\/\/(-?\d+))( +(-?\d+)\/\/(-?\d+))( +(-?\d+)\/\/(-?\d+))?/
192+
193+
// fixes
194+
195+
text = text.replace( /\\\r\n/g, '' ); // handles line continuations \
196+
197+
var lines = text.split( '\n' );
198+
199+
for ( var i = 0; i < lines.length; i ++ ) {
200+
201+
var line = lines[ i ];
202+
line = line.trim();
203+
204+
var result;
205+
206+
if ( line.length === 0 || line.charAt( 0 ) === '#' ) {
207+
208+
continue;
209+
210+
} else if ( ( result = vertex_pattern.exec( line ) ) !== null ) {
211+
212+
// ["v 1.0 2.0 3.0", "1.0", "2.0", "3.0"]
213+
214+
vertices.push(
215+
geometry.vertices.push(
216+
vector(
217+
result[ 1 ], result[ 2 ], result[ 3 ]
218+
)
219+
)
220+
);
221+
222+
} else if ( ( result = normal_pattern.exec( line ) ) !== null ) {
223+
224+
// ["vn 1.0 2.0 3.0", "1.0", "2.0", "3.0"]
225+
226+
normals.push(
227+
vector(
228+
result[ 1 ], result[ 2 ], result[ 3 ]
229+
)
230+
);
231+
232+
} else if ( ( result = uv_pattern.exec( line ) ) !== null ) {
233+
234+
// ["vt 0.1 0.2", "0.1", "0.2"]
235+
236+
uvs.push(
237+
uv(
238+
result[ 1 ], result[ 2 ]
239+
)
240+
);
241+
242+
} else if ( ( result = face_pattern1.exec( line ) ) !== null ) {
243+
244+
// ["f 1 2 3", "1", "2", "3", undefined]
245+
246+
handle_face_line(
247+
[ result[ 1 ], result[ 2 ], result[ 3 ], result[ 4 ] ]
248+
);
249+
250+
} else if ( ( result = face_pattern2.exec( line ) ) !== null ) {
251+
252+
// ["f 1/1 2/2 3/3", " 1/1", "1", "1", " 2/2", "2", "2", " 3/3", "3", "3", undefined, undefined, undefined]
253+
254+
handle_face_line(
255+
[ result[ 2 ], result[ 5 ], result[ 8 ], result[ 11 ] ], //faces
256+
[ result[ 3 ], result[ 6 ], result[ 9 ], result[ 12 ] ] //uv
257+
);
258+
259+
} else if ( ( result = face_pattern3.exec( line ) ) !== null ) {
260+
261+
// ["f 1/1/1 2/2/2 3/3/3", " 1/1/1", "1", "1", "1", " 2/2/2", "2", "2", "2", " 3/3/3", "3", "3", "3", undefined, undefined, undefined, undefined]
262+
263+
handle_face_line(
264+
[ result[ 2 ], result[ 6 ], result[ 10 ], result[ 14 ] ], //faces
265+
[ result[ 3 ], result[ 7 ], result[ 11 ], result[ 15 ] ], //uv
266+
[ result[ 4 ], result[ 8 ], result[ 12 ], result[ 16 ] ] //normal
267+
);
268+
269+
} else if ( ( result = face_pattern4.exec( line ) ) !== null ) {
270+
271+
// ["f 1//1 2//2 3//3", " 1//1", "1", "1", " 2//2", "2", "2", " 3//3", "3", "3", undefined, undefined, undefined]
272+
273+
handle_face_line(
274+
[ result[ 2 ], result[ 5 ], result[ 8 ], result[ 11 ] ], //faces
275+
[ ], //uv
276+
[ result[ 3 ], result[ 6 ], result[ 9 ], result[ 12 ] ] //normal
277+
);
278+
279+
} else if ( /^o /.test( line ) ) {
280+
281+
geometry = new THREE.Geometry();
282+
material = new THREE.MeshLambertMaterial();
283+
284+
mesh = new THREE.Mesh( geometry, material );
285+
mesh.name = line.substring( 2 ).trim();
286+
object.add( mesh );
287+
288+
} else if ( /^g /.test( line ) ) {
289+
290+
// group
291+
292+
} else if ( /^usemtl /.test( line ) ) {
293+
294+
// material
295+
296+
material.name = line.substring( 7 ).trim();
297+
298+
} else if ( /^mtllib /.test( line ) ) {
299+
300+
// mtl file
301+
302+
} else if ( /^s /.test( line ) ) {
303+
304+
// smooth shading
305+
306+
} else {
307+
308+
// console.log( "THREE.OBJLoader: Unhandled line " + line );
309+
310+
}
311+
312+
}
313+
314+
var children = object.children;
315+
316+
for ( var i = 0, l = children.length; i < l; i ++ ) {
317+
318+
var geometry = children[ i ].geometry;
319+
320+
geometry.computeFaceNormals();
321+
geometry.computeBoundingSphere();
322+
323+
}
324+
325+
return object;
326+
327+
}
328+
329+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/**
2+
* Make all faces use unique vertices
3+
* so that each face can be separated from others
4+
*
5+
* @author alteredq / http://alteredqualia.com/
6+
*/
7+
8+
THREE.ExplodeModifier = function () {
9+
10+
};
11+
12+
THREE.ExplodeModifier.prototype.modify = function ( geometry ) {
13+
14+
var vertices = [];
15+
16+
for ( var i = 0, il = geometry.faces.length; i < il; i ++ ) {
17+
18+
var n = vertices.length;
19+
20+
var face = geometry.faces[ i ];
21+
22+
var a = face.a;
23+
var b = face.b;
24+
var c = face.c;
25+
26+
var va = geometry.vertices[ a ];
27+
var vb = geometry.vertices[ b ];
28+
var vc = geometry.vertices[ c ];
29+
30+
vertices.push( va.clone() );
31+
vertices.push( vb.clone() );
32+
vertices.push( vc.clone() );
33+
34+
face.a = n;
35+
face.b = n + 1;
36+
face.c = n + 2;
37+
38+
}
39+
40+
geometry.vertices = vertices;
41+
delete geometry.__tmpVertices;
42+
43+
}

0 commit comments

Comments
 (0)