Added user_id support, reinit OBJLoader to last version, cookie warning
This commit is contained in:
		
							parent
							
								
									517e214a81
								
							
						
					
					
						commit
						be1e251e6f
					
				
							
								
								
									
										13
									
								
								controllers/prototype/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										13
									
								
								controllers/prototype/index.js
									
									
									
									
										vendored
									
									
								
							| @ -1,16 +1,16 @@ | |||||||
| var pg = require('pg'); | var pg = require('pg'); | ||||||
| var pgc = require('../../private.js'); | var pgc = require('../../private.js'); | ||||||
| 
 | 
 | ||||||
| var createNewId = function() { | var createNewId = function(req, callback) { | ||||||
|     var value; |  | ||||||
|     pg.connect(pgc.url, function(err, client, release) { |     pg.connect(pgc.url, function(err, client, release) { | ||||||
|         client.query( |         client.query( | ||||||
|             "INSERT INTO users(name) VALUES('anonymous'); SELECT currval('users_id_seq');", |             "INSERT INTO users(name) VALUES('anonymous'); SELECT currval('users_id_seq');", | ||||||
|             [], |             [], | ||||||
|             function(err, result) { |             function(err, result) { | ||||||
|                 value = result.rows[0].currval; |                 req.session.user_id = result.rows[0].currval; | ||||||
|  |                 req.session.save(); | ||||||
|  |                 callback(); | ||||||
|                 release(); |                 release(); | ||||||
|                 return value; |  | ||||||
|             } |             } | ||||||
|         ); |         ); | ||||||
|     }); |     }); | ||||||
| @ -25,7 +25,8 @@ module.exports.index = function(req, res) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| module.exports.arrows = function(req, res) { | module.exports.arrows = function(req, res) { | ||||||
|     // req.session.user_id = createNewId();
 |     createNewId(req, function() { | ||||||
|  | 
 | ||||||
|         res.setHeader('Content-Type', 'text/html'); |         res.setHeader('Content-Type', 'text/html'); | ||||||
| 
 | 
 | ||||||
|         res.locals.cameraStyle = 'arrows'; |         res.locals.cameraStyle = 'arrows'; | ||||||
| @ -33,6 +34,8 @@ module.exports.arrows = function(req, res) { | |||||||
|         res.render('prototype.jade', res.locals, function(err, result) { |         res.render('prototype.jade', res.locals, function(err, result) { | ||||||
|             res.send(result); |             res.send(result); | ||||||
|         }); |         }); | ||||||
|  | 
 | ||||||
|  |     }); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| module.exports.viewports = function(req, res) { | module.exports.viewports = function(req, res) { | ||||||
|  | |||||||
| @ -7,7 +7,8 @@ | |||||||
|         "pg": "4.3.0", |         "pg": "4.3.0", | ||||||
|         "body-parser": "1.12.4", |         "body-parser": "1.12.4", | ||||||
|         "express-session": "1.11.2", |         "express-session": "1.11.2", | ||||||
|         "cookie-parser": "1.3.4" |         "cookie-parser": "1.3.4", | ||||||
|  |         "cookie-session": "1.1.0" | ||||||
|     }, |     }, | ||||||
|     "repository": { |     "repository": { | ||||||
|         "type": "git", |         "type": "git", | ||||||
|  | |||||||
							
								
								
									
										30
									
								
								server.js
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								server.js
									
									
									
									
									
								
							| @ -8,17 +8,22 @@ var secret = require('./private'); | |||||||
| 
 | 
 | ||||||
| var app = express(); | var app = express(); | ||||||
| var bodyParser = require('body-parser'); | var bodyParser = require('body-parser'); | ||||||
| var session = require('express-session'); | var session = require('cookie-session'); | ||||||
| var cookieParser = require('cookie-parser'); | var cookieParser = require('cookie-parser'); | ||||||
| var urls = require('./urls'); | var urls = require('./urls'); | ||||||
| 
 | 
 | ||||||
| app.set('view engine', 'jade'); | app.set('view engine', 'jade'); | ||||||
|  | app.set('trust proxy', 1); | ||||||
| 
 | 
 | ||||||
| app.use(cookieParser()); | app.use(cookieParser(secret.secret)); | ||||||
| app.use(session({ | app.use(session({ | ||||||
|     saveUninitialized: true, |     // express-session
 | ||||||
|     resave: true, |     // saveUninitialized: true,
 | ||||||
|     secret: secret.secret |     // resave: true,
 | ||||||
|  |     // secret: secret.secret
 | ||||||
|  | 
 | ||||||
|  |     // cookie-session
 | ||||||
|  |     keys: ['key1', 'key2'] | ||||||
| })); | })); | ||||||
| 
 | 
 | ||||||
| app.use(bodyParser.text()); | app.use(bodyParser.text()); | ||||||
| @ -32,13 +37,23 @@ app.use(function(req, res, next) { | |||||||
|     next(); |     next(); | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  | app.use(function(req, res, next) { | ||||||
|  |     if (req.cookies.alreadyCame) { | ||||||
|  |         res.locals.alertCookie = false; | ||||||
|  |     } else { | ||||||
|  |         res.locals.alertCookie = true; | ||||||
|  |         res.cookie('alreadyCame', true); | ||||||
|  |     } | ||||||
|  |     next(); | ||||||
|  | }); | ||||||
|  | 
 | ||||||
| // Load controllers
 | // Load controllers
 | ||||||
| require('./lib/boot')(app, { verbose: !module.parent }); | require('./lib/boot')(app, { verbose: !module.parent }); | ||||||
| 
 | 
 | ||||||
| app.use('/static', express.static('static')); | app.use('/static', express.static('static')); | ||||||
| 
 | 
 | ||||||
| app.post('/post', function(req, res) { | app.post('/post', function(req, res) { | ||||||
|     var user_id = 1; |     var user_id = req.session.user_id; | ||||||
|     var arrow_id = req.body.arrow_id; |     var arrow_id = req.body.arrow_id; | ||||||
| 
 | 
 | ||||||
|     pg.connect(secret.url, function(err, client, release) { |     pg.connect(secret.url, function(err, client, release) { | ||||||
| @ -52,7 +67,7 @@ app.post('/post', function(req, res) { | |||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     res.setHeader('Content-Type', 'text/html'); |     res.setHeader('Content-Type', 'text/html'); | ||||||
|     res.send("Hello"); |     res.send("user_id = " + user_id); | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| // When error raised
 | // When error raised
 | ||||||
| @ -86,5 +101,4 @@ if ( app.get('env') === 'development' ) { | |||||||
|     server_ip_address = process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1'; |     server_ip_address = process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1'; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| console.log("Starting server on " + server_ip_address + ":" + server_port); |  | ||||||
| app.listen(server_port, server_ip_address); | app.listen(server_port, server_ip_address); | ||||||
|  | |||||||
| @ -6,9 +6,6 @@ CREATE TABLE users ( | |||||||
|     name char(50) |     name char(50) | ||||||
| ); | ); | ||||||
| 
 | 
 | ||||||
| -- Create dummy user |  | ||||||
| INSERT INTO users(name) VALUES('Thomas'); |  | ||||||
| 
 |  | ||||||
| CREATE TABLE arrowclicked( | CREATE TABLE arrowclicked( | ||||||
|     id SERIAL PRIMARY KEY, |     id SERIAL PRIMARY KEY, | ||||||
|     user_id SERIAL REFERENCES users (id), |     user_id SERIAL REFERENCES users (id), | ||||||
|  | |||||||
| @ -22,124 +22,128 @@ THREE.OBJLoader.prototype = { | |||||||
| 
 | 
 | ||||||
| 			onLoad( scope.parse( text ) ); | 			onLoad( scope.parse( text ) ); | ||||||
| 
 | 
 | ||||||
| 		} ); | 		}, onProgress, onError ); | ||||||
| 
 | 
 | ||||||
| 	}, | 	}, | ||||||
| 
 | 
 | ||||||
| 	parse: function ( text ) { | 	parse: function ( text ) { | ||||||
| 
 | 
 | ||||||
| 		function vector( x, y, z ) { | 		console.time( 'OBJLoader' ); | ||||||
| 
 | 
 | ||||||
| 			return new THREE.Vector3( parseFloat( x ), parseFloat( y ), parseFloat( z ) ); | 		var object, objects = []; | ||||||
|  | 		var geometry, material; | ||||||
|  | 
 | ||||||
|  | 		function parseVertexIndex( value ) { | ||||||
|  | 
 | ||||||
|  | 			var index = parseInt( value ); | ||||||
|  | 
 | ||||||
|  | 			return ( index >= 0 ? index - 1 : index + vertices.length / 3 ) * 3; | ||||||
| 
 | 
 | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		function uv( u, v ) { | 		function parseNormalIndex( value ) { | ||||||
| 
 | 
 | ||||||
| 			return new THREE.Vector2( parseFloat( u ), parseFloat( v ) ); | 			var index = parseInt( value ); | ||||||
|  | 
 | ||||||
|  | 			return ( index >= 0 ? index - 1 : index + normals.length / 3 ) * 3; | ||||||
| 
 | 
 | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		function face3( a, b, c, normals ) { | 		function parseUVIndex( value ) { | ||||||
| 
 | 
 | ||||||
| 			return new THREE.Face3( a, b, c, normals ); | 			var index = parseInt( value ); | ||||||
|  | 
 | ||||||
|  | 			return ( index >= 0 ? index - 1 : index + uvs.length / 2 ) * 2; | ||||||
| 
 | 
 | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		var object = new THREE.Object3D(); | 		function addVertex( a, b, c ) { | ||||||
| 		var geometry, material, mesh; |  | ||||||
| 
 | 
 | ||||||
| 		function parseVertexIndex( index ) { | 			geometry.vertices.push( | ||||||
| 
 | 				vertices[ a ], vertices[ a + 1 ], vertices[ a + 2 ], | ||||||
| 			index = parseInt( index ); | 				vertices[ b ], vertices[ b + 1 ], vertices[ b + 2 ], | ||||||
| 
 | 				vertices[ c ], vertices[ c + 1 ], vertices[ c + 2 ] | ||||||
| 			return index >= 0 ? index - 1 : index + vertices.length; | 			); | ||||||
| 
 | 
 | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		function parseNormalIndex( index ) { | 		function addNormal( a, b, c ) { | ||||||
| 
 | 
 | ||||||
| 			index = parseInt( index ); | 			geometry.normals.push( | ||||||
| 
 | 				normals[ a ], normals[ a + 1 ], normals[ a + 2 ], | ||||||
| 			return index >= 0 ? index - 1 : index + normals.length; | 				normals[ b ], normals[ b + 1 ], normals[ b + 2 ], | ||||||
|  | 				normals[ c ], normals[ c + 1 ], normals[ c + 2 ] | ||||||
|  | 			); | ||||||
| 
 | 
 | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		function parseUVIndex( index ) { | 		function addUV( a, b, c ) { | ||||||
| 
 | 
 | ||||||
| 			index = parseInt( index ); | 			geometry.uvs.push( | ||||||
| 
 | 				uvs[ a ], uvs[ a + 1 ], | ||||||
| 			return index >= 0 ? index - 1 : index + uvs.length; | 				uvs[ b ], uvs[ b + 1 ], | ||||||
|  | 				uvs[ c ], uvs[ c + 1 ] | ||||||
|  | 			); | ||||||
| 
 | 
 | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		function add_face( a, b, c, normals_inds ) { | 		function addFace( a, b, c, d,  ua, ub, uc, ud, na, nb, nc, nd ) { | ||||||
| 
 | 
 | ||||||
| 			if ( normals_inds === undefined ) { | 			var ia = parseVertexIndex( a ); | ||||||
|  | 			var ib = parseVertexIndex( b ); | ||||||
|  | 			var ic = parseVertexIndex( c ); | ||||||
|  | 			var id; | ||||||
| 
 | 
 | ||||||
| 				geometry.faces.push( face3( | 			if ( d === undefined ) { | ||||||
| 					vertices[ parseVertexIndex( a ) ] - 1, | 
 | ||||||
| 					vertices[ parseVertexIndex( b ) ] - 1, | 				addVertex( ia, ib, ic ); | ||||||
| 					vertices[ parseVertexIndex( c ) ] - 1 |  | ||||||
| 				) ); |  | ||||||
| 
 | 
 | ||||||
| 			} else { | 			} else { | ||||||
| 
 | 
 | ||||||
| 				geometry.faces.push( face3( | 				id = parseVertexIndex( d ); | ||||||
| 					vertices[ parseVertexIndex( a ) ] - 1, | 
 | ||||||
| 					vertices[ parseVertexIndex( b ) ] - 1, | 				addVertex( ia, ib, id ); | ||||||
| 					vertices[ parseVertexIndex( c ) ] - 1, | 				addVertex( ib, ic, id ); | ||||||
| 					[ |  | ||||||
| 						normals[ parseNormalIndex( normals_inds[ 0 ] ) ].clone(), |  | ||||||
| 						normals[ parseNormalIndex( normals_inds[ 1 ] ) ].clone(), |  | ||||||
| 						normals[ parseNormalIndex( normals_inds[ 2 ] ) ].clone() |  | ||||||
| 					] |  | ||||||
| 				) ); |  | ||||||
| 
 | 
 | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 		} | 			if ( ua !== undefined ) { | ||||||
| 
 | 
 | ||||||
| 		function add_uvs( a, b, c ) { | 				ia = parseUVIndex( ua ); | ||||||
|  | 				ib = parseUVIndex( ub ); | ||||||
|  | 				ic = parseUVIndex( uc ); | ||||||
| 
 | 
 | ||||||
| 			geometry.faceVertexUvs[ 0 ].push( [ | 				if ( d === undefined ) { | ||||||
| 				uvs[ parseUVIndex( a ) ].clone(), |  | ||||||
| 				uvs[ parseUVIndex( b ) ].clone(), |  | ||||||
| 				uvs[ parseUVIndex( c ) ].clone() |  | ||||||
| 			] ); |  | ||||||
| 
 | 
 | ||||||
| 		} | 					addUV( ia, ib, ic ); | ||||||
| 		 |  | ||||||
| 		function handle_face_line(faces, uvs, normals_inds) { |  | ||||||
| 
 |  | ||||||
| 			if ( faces[ 3 ] === undefined ) { |  | ||||||
| 				 |  | ||||||
| 				add_face( faces[ 0 ], faces[ 1 ], faces[ 2 ], normals_inds ); |  | ||||||
| 				 |  | ||||||
| 				if ( uvs !== undefined && uvs.length > 0 ) { |  | ||||||
| 
 |  | ||||||
| 					add_uvs( uvs[ 0 ], uvs[ 1 ], uvs[ 2 ] ); |  | ||||||
| 
 |  | ||||||
| 				} |  | ||||||
| 
 | 
 | ||||||
| 				} else { | 				} else { | ||||||
| 
 | 
 | ||||||
| 				if ( normals_inds !== undefined && normals_inds.length > 0 ) { | 					id = parseUVIndex( ud ); | ||||||
| 
 | 
 | ||||||
| 					add_face( faces[ 0 ], faces[ 1 ], faces[ 3 ], [ normals_inds[ 0 ], normals_inds[ 1 ], normals_inds[ 3 ] ] ); | 					addUV( ia, ib, id ); | ||||||
| 					add_face( faces[ 1 ], faces[ 2 ], faces[ 3 ], [ normals_inds[ 1 ], normals_inds[ 2 ], normals_inds[ 3 ] ] ); | 					addUV( ib, ic, id ); | ||||||
| 
 |  | ||||||
| 				} else { |  | ||||||
| 
 |  | ||||||
| 					add_face( faces[ 0 ], faces[ 1 ], faces[ 3 ] ); |  | ||||||
| 					add_face( faces[ 1 ], faces[ 2 ], faces[ 3 ] ); |  | ||||||
| 
 | 
 | ||||||
| 				} | 				} | ||||||
| 
 | 
 | ||||||
| 				if ( uvs !== undefined && uvs.length > 0 ) { | 			} | ||||||
| 
 | 
 | ||||||
| 					add_uvs( uvs[ 0 ], uvs[ 1 ], uvs[ 3 ] ); | 			if ( na !== undefined ) { | ||||||
| 					add_uvs( uvs[ 1 ], uvs[ 2 ], uvs[ 3 ] ); | 
 | ||||||
|  | 				ia = parseNormalIndex( na ); | ||||||
|  | 				ib = parseNormalIndex( nb ); | ||||||
|  | 				ic = parseNormalIndex( nc ); | ||||||
|  | 
 | ||||||
|  | 				if ( d === undefined ) { | ||||||
|  | 
 | ||||||
|  | 					addNormal( ia, ib, ic ); | ||||||
|  | 
 | ||||||
|  | 				} else { | ||||||
|  | 
 | ||||||
|  | 					id = parseNormalIndex( nd ); | ||||||
|  | 
 | ||||||
|  | 					addNormal( ia, ib, id ); | ||||||
|  | 					addNormal( ib, ic, id ); | ||||||
| 
 | 
 | ||||||
| 				} | 				} | ||||||
| 
 | 
 | ||||||
| @ -151,10 +155,23 @@ THREE.OBJLoader.prototype = { | |||||||
| 
 | 
 | ||||||
| 		if ( /^o /gm.test( text ) === false ) { | 		if ( /^o /gm.test( text ) === false ) { | ||||||
| 
 | 
 | ||||||
| 			geometry = new THREE.Geometry(); | 			geometry = { | ||||||
| 			material = new THREE.MeshLambertMaterial(); | 				vertices: [], | ||||||
| 			mesh = new THREE.Mesh( geometry, material ); | 				normals: [], | ||||||
| 			object.add( mesh ); | 				uvs: [] | ||||||
|  | 			}; | ||||||
|  | 
 | ||||||
|  | 			material = { | ||||||
|  | 				name: '' | ||||||
|  | 			}; | ||||||
|  | 
 | ||||||
|  | 			object = { | ||||||
|  | 				name: '', | ||||||
|  | 				geometry: geometry, | ||||||
|  | 				material: material | ||||||
|  | 			}; | ||||||
|  | 
 | ||||||
|  | 			objects.push( object ); | ||||||
| 
 | 
 | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| @ -164,15 +181,15 @@ THREE.OBJLoader.prototype = { | |||||||
| 
 | 
 | ||||||
| 		// v float float float
 | 		// v float float float
 | ||||||
| 
 | 
 | ||||||
| 		var vertex_pattern = /v( +[\d|\.|\+|\-|e]+)( +[\d|\.|\+|\-|e]+)( +[\d|\.|\+|\-|e]+)/; | 		var vertex_pattern = /v( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)/; | ||||||
| 
 | 
 | ||||||
| 		// vn float float float
 | 		// vn float float float
 | ||||||
| 
 | 
 | ||||||
| 		var normal_pattern = /vn( +[\d|\.|\+|\-|e]+)( +[\d|\.|\+|\-|e]+)( +[\d|\.|\+|\-|e]+)/; | 		var normal_pattern = /vn( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)/; | ||||||
| 
 | 
 | ||||||
| 		// vt float float
 | 		// vt float float
 | ||||||
| 
 | 
 | ||||||
| 		var uv_pattern = /vt( +[\d|\.|\+|\-|e]+)( +[\d|\.|\+|\-|e]+)/; | 		var uv_pattern = /vt( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)/; | ||||||
| 
 | 
 | ||||||
| 		// f vertex vertex vertex ...
 | 		// f vertex vertex vertex ...
 | ||||||
| 
 | 
 | ||||||
| @ -190,9 +207,7 @@ THREE.OBJLoader.prototype = { | |||||||
| 
 | 
 | ||||||
| 		var face_pattern4 = /f( +(-?\d+)\/\/(-?\d+))( +(-?\d+)\/\/(-?\d+))( +(-?\d+)\/\/(-?\d+))( +(-?\d+)\/\/(-?\d+))?/ | 		var face_pattern4 = /f( +(-?\d+)\/\/(-?\d+))( +(-?\d+)\/\/(-?\d+))( +(-?\d+)\/\/(-?\d+))( +(-?\d+)\/\/(-?\d+))?/ | ||||||
| 
 | 
 | ||||||
| 		// fixes
 | 		//
 | ||||||
| 
 |  | ||||||
| 		text = text.replace( /\\\r?\n/g, '' ); // handles line continuations \
 |  | ||||||
| 
 | 
 | ||||||
| 		var lines = text.split( '\n' ); | 		var lines = text.split( '\n' ); | ||||||
| 
 | 
 | ||||||
| @ -212,11 +227,9 @@ THREE.OBJLoader.prototype = { | |||||||
| 				// ["v 1.0 2.0 3.0", "1.0", "2.0", "3.0"]
 | 				// ["v 1.0 2.0 3.0", "1.0", "2.0", "3.0"]
 | ||||||
| 
 | 
 | ||||||
| 				vertices.push( | 				vertices.push( | ||||||
| 					geometry.vertices.push( | 					parseFloat( result[ 1 ] ), | ||||||
| 						vector( | 					parseFloat( result[ 2 ] ), | ||||||
| 							result[ 1 ], result[ 2 ], result[ 3 ] | 					parseFloat( result[ 3 ] ) | ||||||
| 						) |  | ||||||
| 					) |  | ||||||
| 				); | 				); | ||||||
| 
 | 
 | ||||||
| 			} else if ( ( result = normal_pattern.exec( line ) ) !== null ) { | 			} else if ( ( result = normal_pattern.exec( line ) ) !== null ) { | ||||||
| @ -224,9 +237,9 @@ THREE.OBJLoader.prototype = { | |||||||
| 				// ["vn 1.0 2.0 3.0", "1.0", "2.0", "3.0"]
 | 				// ["vn 1.0 2.0 3.0", "1.0", "2.0", "3.0"]
 | ||||||
| 
 | 
 | ||||||
| 				normals.push( | 				normals.push( | ||||||
| 					vector( | 					parseFloat( result[ 1 ] ), | ||||||
| 						result[ 1 ], result[ 2 ], result[ 3 ] | 					parseFloat( result[ 2 ] ), | ||||||
| 					) | 					parseFloat( result[ 3 ] ) | ||||||
| 				); | 				); | ||||||
| 
 | 
 | ||||||
| 			} else if ( ( result = uv_pattern.exec( line ) ) !== null ) { | 			} else if ( ( result = uv_pattern.exec( line ) ) !== null ) { | ||||||
| @ -234,56 +247,66 @@ THREE.OBJLoader.prototype = { | |||||||
| 				// ["vt 0.1 0.2", "0.1", "0.2"]
 | 				// ["vt 0.1 0.2", "0.1", "0.2"]
 | ||||||
| 
 | 
 | ||||||
| 				uvs.push( | 				uvs.push( | ||||||
| 					uv( | 					parseFloat( result[ 1 ] ), | ||||||
| 						result[ 1 ], result[ 2 ] | 					parseFloat( result[ 2 ] ) | ||||||
| 					) |  | ||||||
| 				); | 				); | ||||||
| 
 | 
 | ||||||
| 			} else if ( ( result = face_pattern1.exec( line ) ) !== null ) { | 			} else if ( ( result = face_pattern1.exec( line ) ) !== null ) { | ||||||
| 
 | 
 | ||||||
| 				// ["f 1 2 3", "1", "2", "3", undefined]
 | 				// ["f 1 2 3", "1", "2", "3", undefined]
 | ||||||
| 
 | 
 | ||||||
| 				handle_face_line( | 				addFace( | ||||||
| 					[ result[ 1 ], result[ 2 ], result[ 3 ], result[ 4 ] ] | 					result[ 1 ], result[ 2 ], result[ 3 ], result[ 4 ] | ||||||
| 				); | 				); | ||||||
| 
 | 
 | ||||||
| 			} else if ( ( result = face_pattern2.exec( line ) ) !== null ) { | 			} else if ( ( result = face_pattern2.exec( line ) ) !== null ) { | ||||||
| 
 | 
 | ||||||
| 				// ["f 1/1 2/2 3/3", " 1/1", "1", "1", " 2/2", "2", "2", " 3/3", "3", "3", undefined, undefined, undefined]
 | 				// ["f 1/1 2/2 3/3", " 1/1", "1", "1", " 2/2", "2", "2", " 3/3", "3", "3", undefined, undefined, undefined]
 | ||||||
| 
 | 
 | ||||||
| 				handle_face_line( | 				addFace( | ||||||
| 					[ result[ 2 ], result[ 5 ], result[ 8 ], result[ 11 ] ], //faces
 | 					result[ 2 ], result[ 5 ], result[ 8 ], result[ 11 ], | ||||||
| 					[ result[ 3 ], result[ 6 ], result[ 9 ], result[ 12 ] ] //uv
 | 					result[ 3 ], result[ 6 ], result[ 9 ], result[ 12 ] | ||||||
| 				); | 				); | ||||||
| 
 | 
 | ||||||
| 			} else if ( ( result = face_pattern3.exec( line ) ) !== null ) { | 			} else if ( ( result = face_pattern3.exec( line ) ) !== null ) { | ||||||
| 
 | 
 | ||||||
| 				// ["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]
 | 				// ["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]
 | ||||||
| 
 | 
 | ||||||
| 				handle_face_line( | 				addFace( | ||||||
| 					[ result[ 2 ], result[ 6 ], result[ 10 ], result[ 14 ] ], //faces
 | 					result[ 2 ], result[ 6 ], result[ 10 ], result[ 14 ], | ||||||
| 					[ result[ 3 ], result[ 7 ], result[ 11 ], result[ 15 ] ], //uv
 | 					result[ 3 ], result[ 7 ], result[ 11 ], result[ 15 ], | ||||||
| 					[ result[ 4 ], result[ 8 ], result[ 12 ], result[ 16 ] ] //normal
 | 					result[ 4 ], result[ 8 ], result[ 12 ], result[ 16 ] | ||||||
| 				); | 				); | ||||||
| 
 | 
 | ||||||
| 			} else if ( ( result = face_pattern4.exec( line ) ) !== null ) { | 			} else if ( ( result = face_pattern4.exec( line ) ) !== null ) { | ||||||
| 
 | 
 | ||||||
| 				// ["f 1//1 2//2 3//3", " 1//1", "1", "1", " 2//2", "2", "2", " 3//3", "3", "3", undefined, undefined, undefined]
 | 				// ["f 1//1 2//2 3//3", " 1//1", "1", "1", " 2//2", "2", "2", " 3//3", "3", "3", undefined, undefined, undefined]
 | ||||||
| 
 | 
 | ||||||
| 				handle_face_line( | 				addFace( | ||||||
| 					[ result[ 2 ], result[ 5 ], result[ 8 ], result[ 11 ] ], //faces
 | 					result[ 2 ], result[ 5 ], result[ 8 ], result[ 11 ], | ||||||
| 					[ ], //uv
 | 					undefined, undefined, undefined, undefined, | ||||||
| 					[ result[ 3 ], result[ 6 ], result[ 9 ], result[ 12 ] ] //normal
 | 					result[ 3 ], result[ 6 ], result[ 9 ], result[ 12 ] | ||||||
| 				); | 				); | ||||||
| 
 | 
 | ||||||
| 			} else if ( /^o /.test( line ) ) { | 			} else if ( /^o /.test( line ) ) { | ||||||
| 
 | 
 | ||||||
| 				geometry = new THREE.Geometry(); | 				geometry = { | ||||||
| 				material = new THREE.MeshLambertMaterial(); | 					vertices: [], | ||||||
|  | 					normals: [], | ||||||
|  | 					uvs: [] | ||||||
|  | 				}; | ||||||
| 
 | 
 | ||||||
| 				mesh = new THREE.Mesh( geometry, material ); | 				material = { | ||||||
| 				mesh.name = line.substring( 2 ).trim(); | 					name: '' | ||||||
| 				object.add( mesh ); | 				}; | ||||||
|  | 
 | ||||||
|  | 				object = { | ||||||
|  | 					name: line.substring( 2 ).trim(), | ||||||
|  | 					geometry: geometry, | ||||||
|  | 					material: material | ||||||
|  | 				}; | ||||||
|  | 
 | ||||||
|  | 				objects.push( object ) | ||||||
| 
 | 
 | ||||||
| 			} else if ( /^g /.test( line ) ) { | 			} else if ( /^g /.test( line ) ) { | ||||||
| 
 | 
 | ||||||
| @ -311,18 +334,38 @@ THREE.OBJLoader.prototype = { | |||||||
| 
 | 
 | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		var children = object.children; | 		var container = new THREE.Object3D(); | ||||||
| 
 | 
 | ||||||
| 		for ( var i = 0, l = children.length; i < l; i ++ ) { | 		for ( var i = 0, l = objects.length; i < l; i ++ ) { | ||||||
| 
 | 
 | ||||||
| 			var geometry = children[ i ].geometry; | 			object = objects[ i ]; | ||||||
|  | 			geometry = object.geometry; | ||||||
| 
 | 
 | ||||||
| 			geometry.computeFaceNormals(); | 			var buffergeometry = new THREE.BufferGeometry(); | ||||||
| 			geometry.computeBoundingSphere(); | 
 | ||||||
|  | 			buffergeometry.addAttribute( 'position', new THREE.BufferAttribute( new Float32Array( geometry.vertices ), 3 ) ); | ||||||
|  | 
 | ||||||
|  | 			if ( geometry.normals.length > 0 ) { | ||||||
|  | 				buffergeometry.addAttribute( 'normal', new THREE.BufferAttribute( new Float32Array( geometry.normals ), 3 ) ); | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			if ( geometry.uvs.length > 0 ) { | ||||||
|  | 				buffergeometry.addAttribute( 'uv', new THREE.BufferAttribute( new Float32Array( geometry.uvs ), 2 ) ); | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			material = new THREE.MeshLambertMaterial(); | ||||||
|  | 			material.name = object.material.name; | ||||||
|  | 
 | ||||||
|  | 			var mesh = new THREE.Mesh( buffergeometry, material ); | ||||||
|  | 			mesh.name = object.name; | ||||||
|  | 
 | ||||||
|  | 			container.add( mesh ); | ||||||
| 
 | 
 | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		return object; | 		console.timeEnd( 'OBJLoader' ); | ||||||
|  | 
 | ||||||
|  | 		return container; | ||||||
| 
 | 
 | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -55,8 +55,14 @@ html(lang='fr') | |||||||
|                                     span.glyphicon.glyphicon-envelope(aria-hidden=true) |                                     span.glyphicon.glyphicon-envelope(aria-hidden=true) | ||||||
|                                     span(style={'margin-left':'5px'}) Contact |                                     span(style={'margin-left':'5px'}) Contact | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
|         section#main-section.container |         section#main-section.container | ||||||
|  |             if alertCookie | ||||||
|  |                 .alert.alert-warning.alert-dismissible(role="alert", style={'margin-top':'20px'}) | ||||||
|  |                     button.close(type="button", data-dismiss="alert", aria-label="Close") | ||||||
|  |                         span(aria-hidden="true") | ||||||
|  |                             × | ||||||
|  |                     <strong>Warning</strong> : this website use cookies ! | ||||||
|  | 
 | ||||||
|             block content |             block content | ||||||
| 
 | 
 | ||||||
|         script(src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js") |         script(src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js") | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user