|
@@ -1239,6 +1239,10 @@ class ColladaLoader extends Loader {
|
|
data.parameters = parseEffectParameters( child );
|
|
data.parameters = parseEffectParameters( child );
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
+ case 'extra':
|
|
|
|
+ data.extra = parseEffectExtra( child );
|
|
|
|
+ break;
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
@@ -1399,6 +1403,10 @@ class ColladaLoader extends Loader {
|
|
|
|
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
+ case 'bump':
|
|
|
|
+ data[ child.nodeName ] = parseEffectExtraTechniqueBump( child );
|
|
|
|
+ break;
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
@@ -1445,6 +1453,33 @@ class ColladaLoader extends Loader {
|
|
data[ child.nodeName ] = parseInt( child.textContent );
|
|
data[ child.nodeName ] = parseInt( child.textContent );
|
|
break;
|
|
break;
|
|
|
|
|
|
|
|
+ case 'bump':
|
|
|
|
+ data[ child.nodeName ] = parseEffectExtraTechniqueBump( child );
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return data;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parseEffectExtraTechniqueBump( xml ) {
|
|
|
|
+ var data = {};
|
|
|
|
+
|
|
|
|
+ for ( var i = 0, l = xml.childNodes.length; i < l; i ++ ) {
|
|
|
|
+
|
|
|
|
+ var child = xml.childNodes[ i ];
|
|
|
|
+
|
|
|
|
+ if ( child.nodeType !== 1 ) continue;
|
|
|
|
+
|
|
|
|
+ switch ( child.nodeName ) {
|
|
|
|
+
|
|
|
|
+ case 'texture':
|
|
|
|
+ data[ child.nodeName ] = { id: child.getAttribute( 'texture' ), texcoord: child.getAttribute( 'texcoord' ), extra: parseEffectParameterTexture( child ) };
|
|
|
|
+ break;
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
@@ -1712,9 +1747,29 @@ class ColladaLoader extends Loader {
|
|
|
|
|
|
//
|
|
//
|
|
|
|
|
|
- if ( extra !== undefined && extra.technique !== undefined && extra.technique.double_sided === 1 ) {
|
|
|
|
|
|
|
|
- material.side = DoubleSide;
|
|
|
|
|
|
+ if ( technique.extra !== undefined && technique.extra.technique !== undefined ) {
|
|
|
|
+
|
|
|
|
+ let techniques = technique.extra.technique;
|
|
|
|
+
|
|
|
|
+ for ( let k in techniques ) {
|
|
|
|
+
|
|
|
|
+ let v = techniques[k];
|
|
|
|
+
|
|
|
|
+ switch (k) {
|
|
|
|
+
|
|
|
|
+ case 'double_sided':
|
|
|
|
+ material.side = ( v === 1 ? THREE.DoubleSide : THREE.FrontSide );
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ case 'bump':
|
|
|
|
+ material.normalMap = getTexture( v.texture );
|
|
|
|
+ material.normalScale = new THREE.Vector2( 1, 1 );
|
|
|
|
+ break;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|