|
@@ -15,21 +15,29 @@ THREE.ObjectLoader.prototype = {
|
|
|
|
|
|
load: function ( url, onLoad, onProgress, onError ) {
|
|
|
|
|
|
- if ( this.texturePath === '' ) {
|
|
|
+ if(typeof url !== "string" ){
|
|
|
|
|
|
- this.texturePath = url.substring( 0, url.lastIndexOf( '/' ) + 1 );
|
|
|
+ this.parse(url.scene, onLoad);
|
|
|
|
|
|
- }
|
|
|
|
|
|
- var scope = this;
|
|
|
+ }else{
|
|
|
+
|
|
|
+ if ( this.texturePath === '' ) {
|
|
|
|
|
|
- var loader = new THREE.XHRLoader( scope.manager );
|
|
|
- loader.setCrossOrigin( this.crossOrigin );
|
|
|
- loader.load( url, function ( text ) {
|
|
|
+ this.texturePath = url.substring( 0, url.lastIndexOf( '/' ) + 1 );
|
|
|
|
|
|
- scope.parse( JSON.parse( text ), onLoad );
|
|
|
+ }
|
|
|
+
|
|
|
+ var scope = this;
|
|
|
|
|
|
- }, onProgress, onError );
|
|
|
+ var loader = new THREE.XHRLoader( scope.manager );
|
|
|
+ loader.setCrossOrigin( this.crossOrigin );
|
|
|
+ loader.load( url, function ( text ) {
|
|
|
+
|
|
|
+ scope.parse( JSON.parse( text ), onLoad );
|
|
|
+
|
|
|
+ }, onProgress, onError );
|
|
|
+ }
|
|
|
|
|
|
},
|
|
|
|
|
@@ -54,6 +62,7 @@ THREE.ObjectLoader.prototype = {
|
|
|
if ( onLoad !== undefined ) onLoad( object );
|
|
|
|
|
|
} );
|
|
|
+
|
|
|
var textures = this.parseTextures( json.textures, images );
|
|
|
var materials = this.parseMaterials( json.materials, textures );
|
|
|
var object = this.parseObject( json.object, geometries, materials );
|
|
@@ -63,7 +72,7 @@ THREE.ObjectLoader.prototype = {
|
|
|
if ( onLoad !== undefined ) onLoad( object );
|
|
|
|
|
|
}
|
|
|
-
|
|
|
+ console.log(object);
|
|
|
return object;
|
|
|
|
|
|
},
|
|
@@ -192,7 +201,7 @@ THREE.ObjectLoader.prototype = {
|
|
|
geometry = geometryLoader.parse( data.data ).geometry;
|
|
|
|
|
|
break;
|
|
|
-
|
|
|
+
|
|
|
case 'TextGeometry':
|
|
|
|
|
|
geometry = new THREE.TextGeometry(
|
|
@@ -245,51 +254,50 @@ THREE.ObjectLoader.prototype = {
|
|
|
|
|
|
material.uuid = data.uuid;
|
|
|
|
|
|
+ if ( data.depthTest !== undefined ) material.depthTest = data.depthTest;
|
|
|
+ if ( data.depthWrite !== undefined ) material.depthWrite = data.depthWrite;
|
|
|
+
|
|
|
if ( data.name !== undefined ) material.name = data.name;
|
|
|
|
|
|
- if ( data.map !== undefined ) {
|
|
|
+ if ( data.map !== undefined ) material.map = getTexture( data.map );
|
|
|
|
|
|
- material.map = getTexture( data.map );
|
|
|
+ if ( data.alphaMap !== undefined ) {
|
|
|
|
|
|
- }
|
|
|
+ material.alphaMap = getTexture( data.alphaMap );
|
|
|
+
|
|
|
+ material.transparent = true;
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
if ( data.bumpMap !== undefined ) {
|
|
|
|
|
|
material.bumpMap = getTexture( data.bumpMap );
|
|
|
- if ( data.bumpScale !== undefined ) {
|
|
|
- material.bumpScale = data.bumpScale;
|
|
|
- }
|
|
|
-
|
|
|
+ if ( data.bumpScale !== undefined) material.bumpScale = data.bumpScale;
|
|
|
}
|
|
|
|
|
|
- if ( data.alphaMap !== undefined ) {
|
|
|
-
|
|
|
- material.alphaMap = getTexture( data.alphaMap );
|
|
|
+ if ( data.normalMap !== undefined ) {
|
|
|
|
|
|
+ material.normalMap = getTexture( data.normalMap );
|
|
|
+ if ( data.normalScale ) material.normalScale = new THREE.Vector2( data.normalScale, data.normalScale );
|
|
|
+
|
|
|
}
|
|
|
|
|
|
+ if ( data.specularMap !== undefined ) material.specularMap = getTexture( data.specularMap );
|
|
|
+
|
|
|
if ( data.envMap !== undefined ) {
|
|
|
|
|
|
material.envMap = getTexture( data.envMap );
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- if ( data.normalMap !== undefined ) {
|
|
|
-
|
|
|
- material.normalMap = getTexture( data.normalMap );
|
|
|
- if ( data.normalScale !== undefined ) {
|
|
|
- material.normalScale = new THREE.Vector2( data.normalScale, data.normalScale );
|
|
|
- }
|
|
|
+ if ( data.reflectivity ) material.reflectivity = data.reflectivity;
|
|
|
+
|
|
|
+ material.envMap.mapping = THREE.EquirectangularRefractionMapping;
|
|
|
+ material.combine = THREE.MultiplyOperation;
|
|
|
|
|
|
}
|
|
|
|
|
|
if ( data.lightMap !== undefined ) {
|
|
|
|
|
|
material.lightMap = getTexture( data.lightMap );
|
|
|
-
|
|
|
- if ( data.lightMapIntensity !== undefined ) {
|
|
|
- material.lightMapIntensity = data.lightMapIntensity;
|
|
|
- }
|
|
|
+ if ( data.lightMapIntensity !== undefined ) material.lightMapIntensity = data.lightMapIntensity;
|
|
|
|
|
|
}
|
|
|
|
|
@@ -301,12 +309,6 @@ THREE.ObjectLoader.prototype = {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if ( data.specularMap !== undefined ) {
|
|
|
-
|
|
|
- material.specularMap = getTexture( data.specularMap );
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
materials[ data.uuid ] = material;
|
|
|
|
|
|
}
|
|
@@ -344,9 +346,9 @@ THREE.ObjectLoader.prototype = {
|
|
|
for ( var i = 0, l = json.length; i < l; i ++ ) {
|
|
|
|
|
|
var image = json[ i ];
|
|
|
- var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( image.url ) ? image.url : scope.texturePath + image.url;
|
|
|
+ var imageData = image.data64;
|
|
|
|
|
|
- images[ image.uuid ] = loadImage( path );
|
|
|
+ images[ image.uuid ] = loadImage(imageData);
|
|
|
|
|
|
}
|
|
|
|
|
@@ -437,6 +439,9 @@ THREE.ObjectLoader.prototype = {
|
|
|
|
|
|
};
|
|
|
|
|
|
+ console.log(data);
|
|
|
+ console.log(data.type);
|
|
|
+
|
|
|
switch ( data.type ) {
|
|
|
|
|
|
case 'Scene':
|
|
@@ -539,9 +544,6 @@ THREE.ObjectLoader.prototype = {
|
|
|
|
|
|
}
|
|
|
|
|
|
- if ( data.castShadow !== undefined ) object.castShadow = data.castShadow;
|
|
|
- if ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;
|
|
|
-
|
|
|
if ( data.visible !== undefined ) object.visible = data.visible;
|
|
|
if ( data.userData !== undefined ) object.userData = data.userData;
|
|
|
|