提交 85f06ba4 编写于 作者: A alteredq

Refactored MeshFaceMaterial.materials handling.

Patch to #2623
上级 b2470e35
......@@ -11051,7 +11051,11 @@ THREE.MeshNormalMaterial.prototype.clone = function () {
* @author mrdoob / http://mrdoob.com/
*/
THREE.MeshFaceMaterial = function () {};
THREE.MeshFaceMaterial = function ( materials ) {
this.materials = materials instanceof Array ? materials : [];
};
THREE.MeshFaceMaterial.prototype.clone = function () {
......@@ -17037,13 +17041,21 @@ THREE.WebGLRenderer = function ( parameters ) {
function getBufferMaterial( object, geometryGroup ) {
if ( object.material && ! ( object.material instanceof THREE.MeshFaceMaterial ) ) {
if ( object.material instanceof THREE.MeshFaceMaterial ) {
return object.material;
if ( object.material.materials.length > 0 ) {
return object.material.materials[ geometryGroup.materialIndex ];
} else {
return object.geometry.materials[ geometryGroup.materialIndex ];
}
} else if ( geometryGroup.materialIndex >= 0 ) {
} else {
return object.geometry.materials[ geometryGroup.materialIndex ];
return object.material;
}
......@@ -20307,7 +20319,15 @@ THREE.WebGLRenderer = function ( parameters ) {
if ( materialIndex >= 0 ) {
material = object.geometry.materials[ materialIndex ];
if ( meshMaterial.materials.length > 0 ) {
material = meshMaterial.materials[ materialIndex ];
} else {
material = object.geometry.materials[ materialIndex ];
}
if ( material.transparent ) {
......
因为 它太大了无法显示 source diff 。你可以改为 查看blob
......@@ -2,10 +2,9 @@
* @author mrdoob / http://mrdoob.com/
*/
THREE.MeshFaceMaterial = function (materials) {
this.useGeometryMaterial = !materials;
this.materials = materials !== undefined ? materials : [];
THREE.MeshFaceMaterial = function ( materials ) {
this.materials = materials instanceof Array ? materials : [];
};
......
......@@ -890,21 +890,21 @@ THREE.WebGLRenderer = function ( parameters ) {
function getBufferMaterial( object, geometryGroup ) {
if ( object.material && ! ( object.material instanceof THREE.MeshFaceMaterial ) ) {
if ( object.material instanceof THREE.MeshFaceMaterial ) {
return object.material;
if ( object.material.materials.length > 0 ) {
return object.material.materials[ geometryGroup.materialIndex ];
} else if ( geometryGroup.materialIndex >= 0 ) { // what does this line prevent??
} else {
if (object.material instanceof THREE.MeshFaceMaterial && !object.material.useGeometryMaterial){
return object.material.materials[ geometryGroup.materialIndex ];
} else {
return object.geometry.materials[ geometryGroup.materialIndex ];
}
return object.geometry.materials[ geometryGroup.materialIndex ];
}
} else {
return object.material;
}
......@@ -4167,16 +4167,17 @@ THREE.WebGLRenderer = function ( parameters ) {
materialIndex = buffer.materialIndex;
if ( materialIndex >= 0 ) {
if (meshMaterial.useGeometryMaterial){
material = object.geometry.materials[ materialIndex ];
} else {
material = meshMaterial.materials[ materialIndex ];
}
if ( meshMaterial.materials.length > 0 ) {
material = meshMaterial.materials[ materialIndex ];
} else {
material = object.geometry.materials[ materialIndex ];
}
if ( material.transparent ) {
globject.transparent = material;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册