提交 57feb8f5 编写于 作者: M Mr.doob

Updated builds.

上级 9a6b7263
......@@ -10603,8 +10603,7 @@ THREE.GeometryLoader.prototype = {
if ( callback !== undefined ) {
var geometry = scope.parse( JSON.parse( event.target.responseText ) );
callback( geometry );
callback( scope.parse( JSON.parse( event.target.responseText ) ) );
}
......@@ -10642,8 +10641,7 @@ THREE.MaterialLoader.prototype = {
if ( callback !== undefined ) {
var material = scope.parse( JSON.parse( event.target.responseText ) );
callback( material );
callback( scope.parse( JSON.parse( event.target.responseText ) ) );
}
......@@ -10734,6 +10732,295 @@ THREE.MaterialLoader.prototype = {
};
/**
* @author mrdoob / http://mrdoob.com/
*/
THREE.ObjectLoader = function ( manager ) {
this.manager = ( manager !== undefined ) ? manager : THREE.DefaultLoadingManager;
};
THREE.ObjectLoader.prototype = {
constructor: THREE.ObjectLoader,
load: function ( url, callback ) {
var scope = this;
this.manager.add( url, 'text', function ( event ) {
if ( callback !== undefined ) {
callback( scope.parse( JSON.parse( event.target.responseText ) ) );
}
} );
},
parse: function ( json ) {
var geometries = this.parseGeometries( json.geometries );
var materials = this.parseMaterials( json.materials );
var object = this.parseObject( json.object, geometries, materials );
return object;
},
parseGeometries: function ( json ) {
var geometries = {};
if ( json !== undefined ) {
var loader = new THREE.JSONLoader();
for ( var i = 0, l = json.length; i < l; i ++ ) {
var geometry;
var data = json[ i ];
switch ( data.type ) {
case 'PlaneGeometry':
geometry = new THREE.PlaneGeometry(
data.width,
data.height,
data.widthSegments,
data.heightSegments
);
break;
case 'CubeGeometry':
geometry = new THREE.CubeGeometry(
data.width,
data.height,
data.depth,
data.widthSegments,
data.heightSegments,
data.depthSegments
);
break;
case 'CylinderGeometry':
geometry = new THREE.CylinderGeometry(
data.radiusTop,
data.radiusBottom,
data.height,
data.radiusSegments,
data.heightSegments,
data.openEnded
);
break;
case 'SphereGeometry':
geometry = new THREE.SphereGeometry(
data.radius,
data.widthSegments,
data.heightSegments,
data.phiStart,
data.phiLength,
data.thetaStart,
data.thetaLength
);
break;
case 'IcosahedronGeometry':
geometry = new THREE.IcosahedronGeometry(
data.radius,
data.detail
);
break;
case 'TorusGeometry':
geometry = new THREE.TorusGeometry(
data.radius,
data.tube,
data.radialSegments,
data.tubularSegments,
data.arc
);
break;
case 'TorusKnotGeometry':
geometry = new THREE.TorusKnotGeometry(
data.radius,
data.tube,
data.radialSegments,
data.tubularSegments,
data.p,
data.q,
data.heightScale
);
break;
case 'Geometry':
geometry = loader.parse( data.data ).geometry;
break;
}
if ( data.id !== undefined ) geometry.id = data.id;
if ( data.name !== undefined ) geometry.name = data.name;
geometries[ data.id ] = geometry;
}
}
return geometries;
},
parseMaterials: function ( json ) {
var materials = {};
if ( json !== undefined ) {
var loader = new THREE.MaterialLoader();
for ( var i = 0, l = json.length; i < l; i ++ ) {
var data = json[ i ];
var material = loader.parse( data );
if ( data.id !== undefined ) material.id = data.id;
if ( data.name !== undefined ) material.name = data.name;
materials[ data.id ] = material;
}
}
return materials;
},
parseObject: function ( data, geometries, materials ) {
var object;
switch ( data.type ) {
case 'Scene':
object = new THREE.Scene();
break;
case 'PerspectiveCamera':
object = new THREE.PerspectiveCamera( data.fov, data.aspect, data.near, data.far );
object.position.fromArray( data.position );
object.rotation.fromArray( data.rotation );
break;
case 'OrthographicCamera':
object = new THREE.OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );
object.position.fromArray( data.position );
object.rotation.fromArray( data.rotation );
break;
case 'AmbientLight':
object = new THREE.AmbientLight( data.color );
break;
case 'DirectionalLight':
object = new THREE.DirectionalLight( data.color, data.intensity );
object.position.fromArray( data.position );
break;
case 'PointLight':
object = new THREE.PointLight( data.color, data.intensity, data.distance );
object.position.fromArray( data.position );
break;
case 'SpotLight':
object = new THREE.SpotLight( data.color, data.intensity, data.distance, data.angle, data.exponent );
object.position.fromArray( data.position );
break;
case 'HemisphereLight':
object = new THREE.HemisphereLight( data.color, data.groundColor, data.intensity );
object.position.fromArray( data.position );
break;
case 'Mesh':
object = new THREE.Mesh( geometries[ data.geometry ], materials[ data.material ] );
object.position.fromArray( data.position );
object.rotation.fromArray( data.rotation );
object.scale.fromArray( data.scale );
break;
default:
object = new THREE.Object3D();
object.position.fromArray( data.position );
object.rotation.fromArray( data.rotation );
object.scale.fromArray( data.scale );
}
if ( data.id !== undefined ) object.id = data.id;
if ( data.name !== undefined ) object.name = data.name;
if ( data.visible !== undefined ) object.visible = data.visible;
if ( data.userData !== undefined ) object.userData = data.userData;
if ( data.children !== undefined ) {
for ( var child in data.children ) {
object.add( this.parseObject( data.children[ child ], geometries, materials ) );
}
}
return object;
}
};
/**
* @author alteredq / http://alteredqualia.com/
*/
......
因为 它太大了无法显示 source diff 。你可以改为 查看blob
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册