|
@@ -1228,6 +1228,8 @@ THREE.ColladaLoader.prototype = {
|
|
|
case 'emission':
|
|
|
case 'diffuse':
|
|
|
case 'specular':
|
|
|
+ case 'bump':
|
|
|
+ case 'ambient':
|
|
|
case 'shininess':
|
|
|
case 'transparency':
|
|
|
data[ child.nodeName ] = parseEffectParameter( child );
|
|
@@ -1590,6 +1592,12 @@ THREE.ColladaLoader.prototype = {
|
|
|
if ( parameter.color && material.specular ) material.specular.fromArray( parameter.color );
|
|
|
if ( parameter.texture ) material.specularMap = getTexture( parameter.texture );
|
|
|
break;
|
|
|
+ case 'bump':
|
|
|
+ if ( parameter.texture ) material.normalMap = getTexture( parameter.texture );
|
|
|
+ break;
|
|
|
+ case 'ambient':
|
|
|
+ if ( parameter.texture ) material.lightMap = getTexture( parameter.texture );
|
|
|
+ break;
|
|
|
case 'shininess':
|
|
|
if ( parameter.float && material.shininess ) material.shininess = parameter.float;
|
|
|
break;
|
|
@@ -2122,7 +2130,9 @@ THREE.ColladaLoader.prototype = {
|
|
|
var id = parseId( child.getAttribute( 'source' ) );
|
|
|
var semantic = child.getAttribute( 'semantic' );
|
|
|
var offset = parseInt( child.getAttribute( 'offset' ) );
|
|
|
- primitive.inputs[ semantic ] = { id: id, offset: offset };
|
|
|
+ var set = parseInt( child.getAttribute( 'set' ) );
|
|
|
+ var inputname = ( set > 0 ? semantic + set : semantic );
|
|
|
+ primitive.inputs[ inputname ] = { id: id, offset: offset };
|
|
|
primitive.stride = Math.max( primitive.stride, offset + 1 );
|
|
|
if ( semantic === 'TEXCOORD' ) primitive.hasUV = true;
|
|
|
break;
|
|
@@ -2225,6 +2235,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
var position = { array: [], stride: 0 };
|
|
|
var normal = { array: [], stride: 0 };
|
|
|
var uv = { array: [], stride: 0 };
|
|
|
+ var uv2 = { array: [], stride: 0 };
|
|
|
var color = { array: [], stride: 0 };
|
|
|
|
|
|
var skinIndex = { array: [], stride: 4 };
|
|
@@ -2357,6 +2368,11 @@ THREE.ColladaLoader.prototype = {
|
|
|
uv.stride = sources[ id ].stride;
|
|
|
break;
|
|
|
|
|
|
+ case 'TEXCOORD1':
|
|
|
+ buildGeometryData( primitive, sources[ id ], input.offset, uv2.array );
|
|
|
+ uv.stride = sources[ id ].stride;
|
|
|
+ break;
|
|
|
+
|
|
|
default:
|
|
|
console.warn( 'THREE.ColladaLoader: Semantic "%s" not handled in geometry build process.', key );
|
|
|
|
|
@@ -2380,6 +2396,11 @@ THREE.ColladaLoader.prototype = {
|
|
|
uv.stride = sources[ input.id ].stride;
|
|
|
break;
|
|
|
|
|
|
+ case 'TEXCOORD1':
|
|
|
+ buildGeometryData( primitive, sources[ input.id ], input.offset, uv2.array );
|
|
|
+ uv2.stride = sources[ input.id ].stride;
|
|
|
+ break;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -2392,6 +2413,7 @@ THREE.ColladaLoader.prototype = {
|
|
|
if ( normal.array.length > 0 ) geometry.addAttribute( 'normal', new THREE.Float32BufferAttribute( normal.array, normal.stride ) );
|
|
|
if ( color.array.length > 0 ) geometry.addAttribute( 'color', new THREE.Float32BufferAttribute( color.array, color.stride ) );
|
|
|
if ( uv.array.length > 0 ) geometry.addAttribute( 'uv', new THREE.Float32BufferAttribute( uv.array, uv.stride ) );
|
|
|
+ if ( uv2.array.length > 0 ) geometry.addAttribute( 'uv2', new THREE.Float32BufferAttribute( uv2.array, uv2.stride ) );
|
|
|
|
|
|
if ( skinIndex.array.length > 0 ) geometry.addAttribute( 'skinIndex', new THREE.Float32BufferAttribute( skinIndex.array, skinIndex.stride ) );
|
|
|
if ( skinWeight.array.length > 0 ) geometry.addAttribute( 'skinWeight', new THREE.Float32BufferAttribute( skinWeight.array, skinWeight.stride ) );
|