Browse Source

Experiment to get backwards compatibility with the original meaning of materials array in Mesh (= extra materials are drawn for whole mesh).

Limitations:
 - works just in CanvasRenderer
 - doesn't work for MeshBitmapUVMappingMaterial as secondary material
alteredq 15 years ago
parent
commit
0f69c71924
2 changed files with 8 additions and 4 deletions
  1. 2 2
      src/renderers/CanvasRenderer.js
  2. 6 2
      src/renderers/Projector.js

+ 2 - 2
src/renderers/CanvasRenderer.js

@@ -345,7 +345,7 @@ THREE.CanvasRenderer = function () {
 						_bboxRect.inflate( _context.lineWidth );
 						_bboxRect.inflate( _context.lineWidth );
 
 
 
 
-					} else if ( material instanceof THREE.MeshBitmapUVMappingMaterial ) {
+					} else if ( material instanceof THREE.MeshBitmapUVMappingMaterial && m == element.materialIndex ) {
 
 
 						bitmap = material.bitmap;
 						bitmap = material.bitmap;
 						bitmapWidth = bitmap.width - 1;
 						bitmapWidth = bitmap.width - 1;
@@ -523,7 +523,7 @@ THREE.CanvasRenderer = function () {
 
 
 						_bboxRect.inflate( _context.lineWidth );
 						_bboxRect.inflate( _context.lineWidth );
 
 
-					} else if ( material instanceof THREE.MeshBitmapUVMappingMaterial ) {
+					} else if ( material instanceof THREE.MeshBitmapUVMappingMaterial && m == element.materialIndex ) {
 
 
 						bitmap = material.bitmap;
 						bitmap = material.bitmap;
 						bitmapWidth = bitmap.width - 1;
 						bitmapWidth = bitmap.width - 1;

+ 6 - 2
src/renderers/Projector.js

@@ -96,7 +96,9 @@ THREE.Projector = function() {
 
 
 								_face3.z = Math.max( v1.positionScreen.z, Math.max( v2.positionScreen.z, v3.positionScreen.z ) );
 								_face3.z = Math.max( v1.positionScreen.z, Math.max( v2.positionScreen.z, v3.positionScreen.z ) );
 
 
-								_face3.material = [ object.material[face.material] ];
+								//_face3.material = [ object.material[face.material] ];
+                                _face3.material = object.material;
+                                _face3.materialIndex = face.material;
 								_face3.overdraw = object.overdraw;
 								_face3.overdraw = object.overdraw;
 								_face3.uvs = object.geometry.uvs[ f ];
 								_face3.uvs = object.geometry.uvs[ f ];
 								_face3.color = face.color;
 								_face3.color = face.color;
@@ -135,7 +137,9 @@ THREE.Projector = function() {
 
 
 								_face4.z = Math.max( v1.positionScreen.z, Math.max( v2.positionScreen.z, Math.max( v3.positionScreen.z, v4.positionScreen.z ) ) );
 								_face4.z = Math.max( v1.positionScreen.z, Math.max( v2.positionScreen.z, Math.max( v3.positionScreen.z, v4.positionScreen.z ) ) );
 
 
-								_face4.material = [ object.material[face.material] ];
+								//_face4.material = [ object.material[face.material] ];
+                                _face4.material = object.material;
+                                _face4.materialIndex = face.material;
 								_face4.overdraw = object.overdraw;
 								_face4.overdraw = object.overdraw;
 								_face4.uvs = object.geometry.uvs[ f ];
 								_face4.uvs = object.geometry.uvs[ f ];
 								_face4.color = face.color;
 								_face4.color = face.color;