|
@@ -417,8 +417,50 @@ THREE.ColladaLoader.prototype = {
|
|
|
|
|
|
function buildEffect( data ) {
|
|
|
|
|
|
+ return data;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ function getEffect( id ) {
|
|
|
+
|
|
|
+ return getBuild( library.effects[ id ], buildEffect );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // material
|
|
|
+
|
|
|
+ function parseMaterial( xml ) {
|
|
|
+
|
|
|
+ var data = {
|
|
|
+ name: xml.getAttribute( 'name' )
|
|
|
+ };
|
|
|
+
|
|
|
+ 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 'instance_effect':
|
|
|
+ data.url = parseId( child.getAttribute( 'url' ) );
|
|
|
+ break;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ library.materials[ xml.getAttribute( 'id' ) ] = data;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ function buildMaterial( data ) {
|
|
|
+
|
|
|
+ var effect = getEffect( data.url );
|
|
|
+ var technique = effect.profile.technique;
|
|
|
+
|
|
|
var material;
|
|
|
- var technique = data.profile.technique;
|
|
|
|
|
|
switch ( technique.type ) {
|
|
|
|
|
@@ -437,12 +479,12 @@ THREE.ColladaLoader.prototype = {
|
|
|
|
|
|
}
|
|
|
|
|
|
- var parameters = technique.parameters;
|
|
|
+ material.name = data.name;
|
|
|
|
|
|
function getTexture( sid ) {
|
|
|
|
|
|
- var sampler = data.profile.samplers[ sid ];
|
|
|
- var surface = data.profile.surfaces[ sampler.source ];
|
|
|
+ var sampler = effect.profile.samplers[ sid ];
|
|
|
+ var surface = effect.profile.surfaces[ sampler.source ];
|
|
|
|
|
|
var texture = new THREE.Texture( getImage( surface.init_from ) );
|
|
|
texture.wrapS = THREE.RepeatWrapping;
|
|
@@ -453,6 +495,8 @@ THREE.ColladaLoader.prototype = {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ var parameters = technique.parameters;
|
|
|
+
|
|
|
for ( var key in parameters ) {
|
|
|
|
|
|
var parameter = parameters[ key ];
|
|
@@ -478,46 +522,6 @@ THREE.ColladaLoader.prototype = {
|
|
|
|
|
|
}
|
|
|
|
|
|
- function getEffect( id ) {
|
|
|
-
|
|
|
- return getBuild( library.effects[ id ], buildEffect );
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- // material
|
|
|
-
|
|
|
- function parseMaterial( xml ) {
|
|
|
-
|
|
|
- var data = {
|
|
|
- name: xml.getAttribute( 'name' )
|
|
|
- };
|
|
|
-
|
|
|
- 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 'instance_effect':
|
|
|
- data.url = parseId( child.getAttribute( 'url' ) );
|
|
|
- break;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- library.materials[ xml.getAttribute( 'id' ) ] = data;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- function buildMaterial( data ) {
|
|
|
-
|
|
|
- return getEffect( data.url );
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
function getMaterial( id ) {
|
|
|
|
|
|
return getBuild( library.materials[ id ], buildMaterial );
|