diff --git a/docs/api/core/Face3.html b/docs/api/core/Face3.html
index b3af11b4003e5c0387fe8231eb85f80556886c9e..403bb4ca654b6978ded3a6c03a1f11b2a38aaa33 100644
--- a/docs/api/core/Face3.html
+++ b/docs/api/core/Face3.html
@@ -74,7 +74,7 @@
[property:Integer materialIndex]
- Material index (points to [page:MeshFaceMaterial MeshFaceMaterial.materials]).
+ Material index (points to [page:MultiMaterial MultiMaterial.materials]).
Methods
diff --git a/docs/api/extras/SceneUtils.html b/docs/api/extras/SceneUtils.html
index 404147adfdd0f3019fcd463fce2f7ba2f68feedf..210c7b85ca561e76cd1e91f309cf597c420fe3ee 100644
--- a/docs/api/extras/SceneUtils.html
+++ b/docs/api/extras/SceneUtils.html
@@ -22,7 +22,7 @@
materials -- The materials for the object.
- Creates an new Object3D an new mesh for each material defined in materials. Beware that this is not the same as Meshfacematerial which defines multiple material for 1 mesh.
+ Creates an new Object3D an new mesh for each material defined in materials. Beware that this is not the same as MultiMaterial which defines multiple material for 1 mesh.
This is mostly useful for object that need a material and a wireframe implementation.
diff --git a/docs/api/loaders/JSONLoader.html b/docs/api/loaders/JSONLoader.html
index 9de47c7d308f5141e31f8ab0003a9dc7a0c7d966..e2ec37695e0bdb041810917b6f478aa161641998 100644
--- a/docs/api/loaders/JSONLoader.html
+++ b/docs/api/loaders/JSONLoader.html
@@ -61,7 +61,7 @@
'models/animated/monster/monster.js',
// Function when resource is loaded
function ( geometry, materials ) {
- var material = new THREE.MeshFaceMaterial( materials );
+ var material = new THREE.MultiMaterial( materials );
var object = new THREE.Mesh( geometry, material );
scene.add( object );
}
diff --git a/docs/api/materials/MeshFaceMaterial.html b/docs/api/materials/MultiMaterial.html
similarity index 94%
rename from docs/api/materials/MeshFaceMaterial.html
rename to docs/api/materials/MultiMaterial.html
index 6e704ac5308d680f55d116bf44b9b83ad814aa42..62541a6b3453ba72bd9f51c30ff764df1d42ae36 100644
--- a/docs/api/materials/MeshFaceMaterial.html
+++ b/docs/api/materials/MultiMaterial.html
@@ -11,7 +11,7 @@
[name]
- A Material to define multiple materials for the same geometry.
+ A Material to define multiple materials for the same geometry.
The geometry decides which material is used for which faces by the [page:Face3 faces materialindex].
The materialindex corresponds with the index of the material in the materials array.
@@ -25,7 +25,7 @@
materials -- The materials for the geometry.
- Creates a MeshFaceMaterial with the correct materials.
+ Creates a MultiMaterial with the correct materials.
diff --git a/docs/list.js b/docs/list.js
index b7834d4c480be102d40926edbef9b25f871ca74c..933529cff52dbbc925d6ca0d98ebfd45fe3958c7 100644
--- a/docs/list.js
+++ b/docs/list.js
@@ -72,7 +72,7 @@ var list = {
[ "Material", "api/materials/Material" ],
[ "MeshBasicMaterial", "api/materials/MeshBasicMaterial" ],
[ "MeshDepthMaterial", "api/materials/MeshDepthMaterial" ],
- [ "MeshFaceMaterial", "api/materials/MeshFaceMaterial" ],
+ [ "MultiMaterial", "api/materials/MultiMaterial" ],
[ "MeshLambertMaterial", "api/materials/MeshLambertMaterial" ],
[ "MeshNormalMaterial", "api/materials/MeshNormalMaterial" ],
[ "MeshPhongMaterial", "api/materials/MeshPhongMaterial" ],
diff --git a/editor/js/Loader.js b/editor/js/Loader.js
index fadfe4f22896f9c6f7bb27c5df49aa03ab337cbf..f9df9010ca6fae1975dc4d444170d417f5038246 100644
--- a/editor/js/Loader.js
+++ b/editor/js/Loader.js
@@ -451,7 +451,7 @@ var Loader = function ( editor ) {
if ( result.materials.length > 1 ) {
- material = new THREE.MeshFaceMaterial( result.materials );
+ material = new THREE.MultiMaterial( result.materials );
} else {
diff --git a/editor/js/Sidebar.Animation.js b/editor/js/Sidebar.Animation.js
index 951f05102129cbdfb6ab87c42884d036eb58a4c6..ff59dd2685fdfa89d1a9879fb2f93455ada2c736 100644
--- a/editor/js/Sidebar.Animation.js
+++ b/editor/js/Sidebar.Animation.js
@@ -36,7 +36,7 @@ Sidebar.Animation = function ( editor ) {
var material = child.material;
- if ( material instanceof THREE.MeshFaceMaterial ) {
+ if ( material instanceof THREE.MultiMaterial ) {
for ( var i = 0; i < material.materials.length; i ++ ) {
diff --git a/editor/js/libs/tern-threejs/threejs.js b/editor/js/libs/tern-threejs/threejs.js
index 991db1dffd058344fe0eb1f668f74a82de2488db..1a5efc83a0ec33ccfba84689f43b02046ed00839 100644
--- a/editor/js/libs/tern-threejs/threejs.js
+++ b/editor/js/libs/tern-threejs/threejs.js
@@ -368,7 +368,7 @@
},
"materialIndex": {
"!type": "number",
- "!doc": "Material index (points to [page:MeshFaceMaterial MeshFaceMaterial.materials])."
+ "!doc": "Material index (points to [page:MultiMaterial MultiMaterial.materials])."
},
"clone": {
"!type": "fn() -> +THREE.Face3",
@@ -960,7 +960,7 @@
"prototype": {
"createMultiMaterialObject": {
"!type": "fn(geometry: +THREE.Geometry, materials: []) -> +THREE.Object3D",
- "!doc": "Creates an new Object3D an new mesh for each material defined in materials. Beware that this is not the same as Meshfacematerial which defines multiple material for 1 mesh.
\n\t\tThis is mostly useful for object that need a material and a wireframe implementation."
+ "!doc": "Creates an new Object3D an new mesh for each material defined in materials. Beware that this is not the same as MultiMaterial which defines multiple material for 1 mesh.
\n\t\tThis is mostly useful for object that need a material and a wireframe implementation."
},
"attach": {
"!type": "fn(child: +THREE.Object3D, scene: +THREE.Object3D, parent: +THREE.Object3D)",
@@ -2839,8 +2839,8 @@
"!doc": "A material for drawing geometry by depth. Depth is based off of the camera near and far plane. White is nearest, black is farthest.",
"!type": "fn(parameters: object)"
},
- "MeshFaceMaterial": {
- "!url": "http://threejs.org/docs/#Reference/materials/MeshFaceMaterial",
+ "MultiMaterial": {
+ "!url": "http://threejs.org/docs/#Reference/materials/MultiMaterial",
"prototype": {
"materials": {
"!type": "[]",
diff --git a/examples/canvas_geometry_panorama.html b/examples/canvas_geometry_panorama.html
index bd9f6121dcd757b5e832cbf73289f4fe73f66879..58f1a9b3cf72d542f10c2e0cf9f8555bd227a5b8 100644
--- a/examples/canvas_geometry_panorama.html
+++ b/examples/canvas_geometry_panorama.html
@@ -81,7 +81,7 @@
];
- mesh = new THREE.Mesh( new THREE.BoxGeometry( 300, 300, 300, 7, 7, 7 ), new THREE.MeshFaceMaterial( materials ) );
+ mesh = new THREE.Mesh( new THREE.BoxGeometry( 300, 300, 300, 7, 7, 7 ), new THREE.MultiMaterial( materials ) );
mesh.scale.x = - 1;
scene.add( mesh );
diff --git a/examples/canvas_geometry_panorama_fisheye.html b/examples/canvas_geometry_panorama_fisheye.html
index 4d33d08e05c32f1ba8c640f80458c94d7055e0bb..6c9b481c40bf954657c9780bbdfcd9f101385b5b 100644
--- a/examples/canvas_geometry_panorama_fisheye.html
+++ b/examples/canvas_geometry_panorama_fisheye.html
@@ -81,7 +81,7 @@
];
- mesh = new THREE.Mesh( new THREE.BoxGeometry( 300, 300, 300, 7, 7, 7 ), new THREE.MeshFaceMaterial( materials ) );
+ mesh = new THREE.Mesh( new THREE.BoxGeometry( 300, 300, 300, 7, 7, 7 ), new THREE.MultiMaterial( materials ) );
mesh.scale.x = - 1;
scene.add( mesh );
diff --git a/examples/canvas_geometry_text.html b/examples/canvas_geometry_text.html
index 1387a4ecdfce5979f3436941b88e2507fa296fc5..5931735bd3a84601a555a90183c3d9e3cfd22135 100644
--- a/examples/canvas_geometry_text.html
+++ b/examples/canvas_geometry_text.html
@@ -92,7 +92,7 @@
var centerOffset = -0.5 * ( geometry.boundingBox.max.x - geometry.boundingBox.min.x );
- var material = new THREE.MeshFaceMaterial( [
+ var material = new THREE.MultiMaterial( [
new THREE.MeshBasicMaterial( { color: Math.random() * 0xffffff, overdraw: 0.5 } ),
new THREE.MeshBasicMaterial( { color: 0x000000, overdraw: 0.5 } )
] );
diff --git a/examples/canvas_materials.html b/examples/canvas_materials.html
index 8a73fce2f690141f44a9191e27b6ece961e70ee5..3258e3f5f6e9db63db078a3f78446a2a3ca30ed4 100644
--- a/examples/canvas_materials.html
+++ b/examples/canvas_materials.html
@@ -93,7 +93,7 @@
}
- materials.push( new THREE.MeshFaceMaterial( materials ) );
+ materials.push( new THREE.MultiMaterial( materials ) );
objects = [];
diff --git a/examples/js/Car.js b/examples/js/Car.js
index 440c2e804c64d2615f338127e4e4164d2601dbee..e810a933a8bb3f22f97083d210140a0785ad3508 100644
--- a/examples/js/Car.js
+++ b/examples/js/Car.js
@@ -299,8 +299,8 @@ THREE.Car = function () {
var s = scope.modelScale,
delta = new THREE.Vector3();
- var bodyFaceMaterial = new THREE.MeshFaceMaterial( scope.bodyMaterials );
- var wheelFaceMaterial = new THREE.MeshFaceMaterial( scope.wheelMaterials );
+ var bodyFaceMaterial = new THREE.MultiMaterial( scope.bodyMaterials );
+ var wheelFaceMaterial = new THREE.MultiMaterial( scope.wheelMaterials );
// body
diff --git a/examples/js/UCSCharacter.js b/examples/js/UCSCharacter.js
index 70e70f1e361da0eada5ff9388388977f4c0c0b9b..b5bd6ad870588d80a395677498f8629542d2ee48 100644
--- a/examples/js/UCSCharacter.js
+++ b/examples/js/UCSCharacter.js
@@ -44,7 +44,7 @@ THREE.UCSCharacter = function() {
geometry.computeBoundingBox();
geometry.computeVertexNormals();
- mesh = new THREE.SkinnedMesh( geometry, new THREE.MeshFaceMaterial() );
+ mesh = new THREE.SkinnedMesh( geometry, new THREE.MultiMaterial() );
mesh.name = config.character;
scope.root.add( mesh );
diff --git a/examples/js/loaders/ColladaLoader.js b/examples/js/loaders/ColladaLoader.js
index 92391636687be7f720edbce34f06ab865a42a3a5..a2ae5824933e133dd1cbcede85580d53a128f8ec 100644
--- a/examples/js/loaders/ColladaLoader.js
+++ b/examples/js/loaders/ColladaLoader.js
@@ -1169,7 +1169,7 @@ THREE.ColladaLoader = function () {
if ( num_materials > 1 ) {
- material = new THREE.MeshFaceMaterial( used_materials_array );
+ material = new THREE.MultiMaterial( used_materials_array );
}
diff --git a/examples/js/loaders/MMDLoader.js b/examples/js/loaders/MMDLoader.js
index 94d731592396e94bed7182512012079285662233..2b56df5ff1096cbcae3c9b7f474acfed49343e6c 100644
--- a/examples/js/loaders/MMDLoader.js
+++ b/examples/js/loaders/MMDLoader.js
@@ -1693,7 +1693,7 @@ THREE.MMDLoader.prototype.createMesh = function ( model, texturePath, onProgress
var scope = this;
var geometry = new THREE.Geometry();
- var material = new THREE.MeshFaceMaterial();
+ var material = new THREE.MultiMaterial();
var helper = new THREE.MMDLoader.DataCreationHelper();
var initVartices = function () {
@@ -2534,7 +2534,7 @@ THREE.MMDLoader.prototype.createMesh = function ( model, texturePath, onProgress
var bodyB = rigidBodies[ p.rigidBodyIndex2 ];
/*
- * Refer http://www20.atpages.jp/katwat/wp/?p=4135
+ * Refer http://www20.atpages.jp/katwat/wp/?p=4135
* for what this is for
*/
if ( bodyA.type !== 0 && bodyB.type === 2 ) {
@@ -4516,4 +4516,3 @@ THREE.MMDHelper.prototype = {
}
};
-
diff --git a/examples/js/loaders/deprecated/SceneLoader.js b/examples/js/loaders/deprecated/SceneLoader.js
index 644984fce92fff5decf63a4e2c4174f8bc303115..48cc780a6452806ef2a8477e3df706383fce1983 100644
--- a/examples/js/loaders/deprecated/SceneLoader.js
+++ b/examples/js/loaders/deprecated/SceneLoader.js
@@ -224,7 +224,7 @@ THREE.SceneLoader.prototype = {
if ( ! objJSON.material ) {
- material = new THREE.MeshFaceMaterial( result.face_materials[ objJSON.geometry ] );
+ material = new THREE.MultiMaterial( result.face_materials[ objJSON.geometry ] );
}
@@ -232,9 +232,9 @@ THREE.SceneLoader.prototype = {
// if there is just empty face material
// (must create new material as each model has its own face material)
- if ( ( material instanceof THREE.MeshFaceMaterial ) && material.materials.length === 0 ) {
+ if ( ( material instanceof THREE.MultiMaterial ) && material.materials.length === 0 ) {
- material = new THREE.MeshFaceMaterial( result.face_materials[ objJSON.geometry ] );
+ material = new THREE.MultiMaterial( result.face_materials[ objJSON.geometry ] );
}
@@ -1077,7 +1077,7 @@ THREE.SceneLoader.prototype = {
}
- // second pass through all materials to initialize MeshFaceMaterials
+ // second pass through all materials to initialize MultiMaterials
// that could be referring to other materials out of order
for ( matID in data.materials ) {
diff --git a/examples/js/renderers/Projector.js b/examples/js/renderers/Projector.js
index cbf1cf566fe43ab01fa4a9dfe1945a566c205251..c05f56bc358927a682322a55f31d169c095b4e4f 100644
--- a/examples/js/renderers/Projector.js
+++ b/examples/js/renderers/Projector.js
@@ -478,7 +478,7 @@ THREE.Projector = function () {
var material = object.material;
- var isFaceMaterial = material instanceof THREE.MeshFaceMaterial;
+ var isFaceMaterial = material instanceof THREE.MultiMaterial;
var objectMaterials = isFaceMaterial === true ? object.material : null;
for ( var v = 0, vl = vertices.length; v < vl; v ++ ) {
diff --git a/examples/scenes/test_scene.js b/examples/scenes/test_scene.js
index 5e96f33d96413e47fe0c172ddd6c78e7c583dace..46981eb3304d323bed9c93f821149bff2d66cff2 100644
--- a/examples/scenes/test_scene.js
+++ b/examples/scenes/test_scene.js
@@ -685,22 +685,22 @@
},
"face": {
- "type": "MeshFaceMaterial",
+ "type": "MultiMaterial",
"parameters": {}
},
"multi_1": {
- "type": "MeshFaceMaterial",
+ "type": "MultiMaterial",
"parameters": {}
},
"multi_2": {
- "type": "MeshFaceMaterial",
+ "type": "MultiMaterial",
"parameters": { "materials": [ "phong_compressed_cube", "phong_man", "phong_hand", "minecraft", "backsignals" ] }
},
"multi_veyron": {
- "type": "MeshFaceMaterial",
+ "type": "MultiMaterial",
"parameters": { "materials": [ "interior", "chrome", "darkerchrome", "glass", "chrome", "chrome", "backlights", "backsignals" ] }
}
diff --git a/examples/webgl_animation_skinning_morph.html b/examples/webgl_animation_skinning_morph.html
index 0107b32339903b216cb9a668bcf0024cd01941fd..f4cae3014a0a32e9c07d886dfd8b2cdf1ed66358 100644
--- a/examples/webgl_animation_skinning_morph.html
+++ b/examples/webgl_animation_skinning_morph.html
@@ -223,7 +223,7 @@
}
- mesh = new THREE.SkinnedMesh( geometry, new THREE.MeshFaceMaterial( materials ) );
+ mesh = new THREE.SkinnedMesh( geometry, new THREE.MultiMaterial( materials ) );
mesh.name = "Knight Mesh";
mesh.position.set( x, y - bb.min.y * s, z );
mesh.scale.set( s, s, s );
@@ -233,7 +233,7 @@
mesh.receiveShadow = true;
- mesh2 = new THREE.SkinnedMesh( geometry, new THREE.MeshFaceMaterial( materials ) );
+ mesh2 = new THREE.SkinnedMesh( geometry, new THREE.MultiMaterial( materials ) );
mesh2.name = "Lil' Bro Mesh";
mesh2.position.set( x - 240, y - bb.min.y * s, z + 500 );
mesh2.scale.set( s / 2, s / 2, s / 2 );
diff --git a/examples/webgl_effects_parallaxbarrier.html b/examples/webgl_effects_parallaxbarrier.html
index c9d65cf346ee43421c24a9ca7e49610a2e097139..4d157f911b19547ae2250d6b165aa0a9400c0048 100644
--- a/examples/webgl_effects_parallaxbarrier.html
+++ b/examples/webgl_effects_parallaxbarrier.html
@@ -564,7 +564,7 @@
geometry.sortFacesByMaterialIndex();
- var m = new THREE.MeshFaceMaterial(),
+ var m = new THREE.MultiMaterial(),
s = CARS[ car ].scale * 1,
r = CARS[ car ].init_rotation,
materials = CARS[ car ].materials,
diff --git a/examples/webgl_geometry_colors_blender.html b/examples/webgl_geometry_colors_blender.html
index deabf095797460899b9ac65c858fb7519f60d1ff..12e97ac2bb651db7520e01dc89764b73c97c92bb 100644
--- a/examples/webgl_geometry_colors_blender.html
+++ b/examples/webgl_geometry_colors_blender.html
@@ -109,7 +109,7 @@
materials[ 0 ].shading = THREE.FlatShading;
- mesh = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial( materials ) );
+ mesh = new THREE.Mesh( geometry, new THREE.MultiMaterial( materials ) );
mesh.position.x = 400;
mesh.scale.x = mesh.scale.y = mesh.scale.z = 250;
scene.add( mesh );
@@ -120,7 +120,7 @@
materials[ 0 ].shading = THREE.FlatShading;
- mesh2 = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial( materials ) );
+ mesh2 = new THREE.Mesh( geometry, new THREE.MultiMaterial( materials ) );
mesh2.position.x = - 400;
mesh2.scale.x = mesh2.scale.y = mesh2.scale.z = 250;
scene.add( mesh2 );
diff --git a/examples/webgl_geometry_extrude_shapes.html b/examples/webgl_geometry_extrude_shapes.html
index a0280c236bb063cf310f3aef884a9541e0aa1373..1500a596f70036434441acbcf605268f67e00ea6 100644
--- a/examples/webgl_geometry_extrude_shapes.html
+++ b/examples/webgl_geometry_extrude_shapes.html
@@ -168,7 +168,7 @@
var geometry = new THREE.ExtrudeGeometry( shape, extrudeSettings );
- var mesh = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial( materials ) );
+ var mesh = new THREE.Mesh( geometry, new THREE.MultiMaterial( materials ) );
mesh.position.set( 50, 100, 50 );
diff --git a/examples/webgl_geometry_large_mesh.html b/examples/webgl_geometry_large_mesh.html
index 39174582f3659f3dff203c39216bd68e77f2d76a..7a245f539a87e0835d8d70f7589cf4cfd47e15b9 100644
--- a/examples/webgl_geometry_large_mesh.html
+++ b/examples/webgl_geometry_large_mesh.html
@@ -169,7 +169,7 @@
loader.load( 'obj/lucy/Lucy100k_bin.js', function ( geometry, materials ) {
addMesh( geometry, 0.75, 900, 0, 0, 0,0,0, new THREE.MeshPhongMaterial( { color: 0x030303, specular: 0x990000, shininess: 30 } ) );
- addMesh( geometry, 0.75, 300, 0, 0, 0,0,0, new THREE.MeshFaceMaterial( materials ) );
+ addMesh( geometry, 0.75, 300, 0, 0, 0,0,0, new THREE.MultiMaterial( materials ) );
addMesh( geometry, 0.75, -300, 0, 0, 0,0,0, new THREE.MeshPhongMaterial( { color: 0x111111, specular: 0xffaa00, shininess: 10 } ) );
addMesh( geometry, 0.75, -900, 0, 0, 0,0,0, new THREE.MeshPhongMaterial( { color: 0x555555, specular: 0x666666, shininess: 10 } ) );
diff --git a/examples/webgl_geometry_text.html b/examples/webgl_geometry_text.html
index d18905cf131c19d3926f36d8fb2008f46d7a7728..5bfcf28257f96c403bb58349d8a638758e14c621 100644
--- a/examples/webgl_geometry_text.html
+++ b/examples/webgl_geometry_text.html
@@ -181,7 +181,7 @@
}
- material = new THREE.MeshFaceMaterial( [
+ material = new THREE.MultiMaterial( [
new THREE.MeshPhongMaterial( { color: 0xffffff, shading: THREE.FlatShading } ), // front
new THREE.MeshPhongMaterial( { color: 0xffffff, shading: THREE.SmoothShading } ) // side
] );
diff --git a/examples/webgl_geometry_text_earcut.html b/examples/webgl_geometry_text_earcut.html
index 9683671b4fcd75738bf82dc6cde957534a248f91..8892686cf1b5efd5934c223750b1c4717542ce9c 100644
--- a/examples/webgl_geometry_text_earcut.html
+++ b/examples/webgl_geometry_text_earcut.html
@@ -218,7 +218,7 @@
}
- material = new THREE.MeshFaceMaterial( [
+ material = new THREE.MultiMaterial( [
new THREE.MeshPhongMaterial( { color: 0xffffff, shading: THREE.FlatShading } ), // front
new THREE.MeshPhongMaterial( { color: 0xffffff, shading: THREE.SmoothShading } ) // side
] );
diff --git a/examples/webgl_geometry_text_pnltri.html b/examples/webgl_geometry_text_pnltri.html
index a8a996dcb593c438052c0423caec7484578113c9..0461bfb6f599f9620ffd9dac4b03f4fc85681d1d 100644
--- a/examples/webgl_geometry_text_pnltri.html
+++ b/examples/webgl_geometry_text_pnltri.html
@@ -195,7 +195,7 @@
}
- material = new THREE.MeshFaceMaterial( [
+ material = new THREE.MultiMaterial( [
new THREE.MeshPhongMaterial( { color: 0xffffff, shading: THREE.FlatShading } ), // front
new THREE.MeshPhongMaterial( { color: 0xffffff, shading: THREE.SmoothShading } ) // side
] );
diff --git a/examples/webgl_loader_ctm_materials.html b/examples/webgl_loader_ctm_materials.html
index acf3328f420a3d81d8b6f52a4a17ac9672675f8b..926905d7a63fb9c73e0a83a4d7f3f30499bcd2a7 100644
--- a/examples/webgl_loader_ctm_materials.html
+++ b/examples/webgl_loader_ctm_materials.html
@@ -278,7 +278,7 @@
hackMaterials( materials );
- var material = new THREE.MeshFaceMaterial( materials );
+ var material = new THREE.MultiMaterial( materials );
mesh = new THREE.Mesh( geometry, material );
mesh.position.set( x, y, z );
diff --git a/examples/webgl_loader_json_blender.html b/examples/webgl_loader_json_blender.html
index 9fc8dd35ff2d5c3a86d2da4fc4b309532a436bae..6de0dd5faa6099c1dc5eb7a194c1914d015170e8 100644
--- a/examples/webgl_loader_json_blender.html
+++ b/examples/webgl_loader_json_blender.html
@@ -113,7 +113,7 @@
material.morphTargets = true;
material.color.setHex( 0xffaaaa );
- var faceMaterial = new THREE.MeshFaceMaterial( materials );
+ var faceMaterial = new THREE.MultiMaterial( materials );
for ( var i = 0; i < 729; i ++ ) {
@@ -138,7 +138,7 @@
mesh.updateMatrix();
scene.add( mesh );
-
+
mixer.clipAction( geometry.animations[0], mesh )
.setDuration( 1 ) // one second
.startAt( - Math.random() ) // random phase (already running)
diff --git a/examples/webgl_loader_json_objconverter.html b/examples/webgl_loader_json_objconverter.html
index 10400a58708a07c46f067edb2f44e3899a9d21d4..b2001956cfa561393affc014e3ec2dd5cc0c19ab 100644
--- a/examples/webgl_loader_json_objconverter.html
+++ b/examples/webgl_loader_json_objconverter.html
@@ -220,7 +220,7 @@
function createScene( geometry, materials, x, y, z, b ) {
- zmesh = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial( materials ) );
+ zmesh = new THREE.Mesh( geometry, new THREE.MultiMaterial( materials ) );
zmesh.position.set( x, y, z );
zmesh.scale.set( 3, 3, 3 );
scene.add( zmesh );
diff --git a/examples/webgl_materials.html b/examples/webgl_materials.html
index e9ac63c62e3e6a29ab56357e1f9b65354272473c..61718390bf42b14a561526e31dcc67a353eee91f 100644
--- a/examples/webgl_materials.html
+++ b/examples/webgl_materials.html
@@ -108,7 +108,7 @@
}
- addMesh( geometry, new THREE.MeshFaceMaterial( materials ) );
+ addMesh( geometry, new THREE.MultiMaterial( materials ) );
particleLight = new THREE.Mesh( new THREE.SphereGeometry( 4, 8, 8 ), new THREE.MeshBasicMaterial( { color: 0xffffff } ) );
scene.add( particleLight );
diff --git a/examples/webgl_materials_cars.html b/examples/webgl_materials_cars.html
index 33a84041893d427a5f104a6c6a8d1302485bd8a3..017e60f2db7643a204005a2f4e4144a35f5bbfcd 100644
--- a/examples/webgl_materials_cars.html
+++ b/examples/webgl_materials_cars.html
@@ -572,7 +572,7 @@
geometry.sortFacesByMaterialIndex();
- var m = new THREE.MeshFaceMaterial(),
+ var m = new THREE.MultiMaterial(),
s = CARS[ car ].scale * 1,
r = CARS[ car ].init_rotation,
materials = CARS[ car ].materials,
diff --git a/examples/webgl_materials_lightmap.html b/examples/webgl_materials_lightmap.html
index d82f57e8c6c4c1e0838259d5df0e4a861032b9dc..0805785c9ee3a2305948c4eca3754c53b940cec1 100644
--- a/examples/webgl_materials_lightmap.html
+++ b/examples/webgl_materials_lightmap.html
@@ -154,7 +154,7 @@
}
- var mesh = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial( materials ) );
+ var mesh = new THREE.Mesh( geometry, new THREE.MultiMaterial( materials ) );
mesh.scale.multiplyScalar( 100 );
scene.add( mesh );
diff --git a/examples/webgl_nearestneighbour.html b/examples/webgl_nearestneighbour.html
index f60e83dee276394621bb633d43a1130c26910c76..af14b2ce974f952375d743b36d7578baae3ae853 100644
--- a/examples/webgl_nearestneighbour.html
+++ b/examples/webgl_nearestneighbour.html
@@ -107,7 +107,7 @@
];
- mesh = new THREE.Mesh( new THREE.BoxGeometry( 10000, 10000, 10000, 7, 7, 7 ), new THREE.MeshFaceMaterial( materials ) );
+ mesh = new THREE.Mesh( new THREE.BoxGeometry( 10000, 10000, 10000, 7, 7, 7 ), new THREE.MultiMaterial( materials ) );
mesh.scale.x = - 1;
scene.add(mesh);
diff --git a/examples/webgl_objects_update.html b/examples/webgl_objects_update.html
index 594f7a89f96d0791e7ad91ee1a15878d5d54e067..079a929295840e995085d071f1406970104d67fd 100644
--- a/examples/webgl_objects_update.html
+++ b/examples/webgl_objects_update.html
@@ -61,45 +61,45 @@
//
- object = createObject( createMeshFaceMaterial(), 4 );
+ object = createObject( createMultiMaterial(), 4 );
object.position.set( -400, 0, 200 );
scene.add( object );
objectNewGeometry = object;
- object = createObject( createMeshFaceMaterial(), 4 );
+ object = createObject( createMultiMaterial(), 4 );
object.position.set( -200, 0, 200 );
scene.add( object );
objectToggleAddRemove = object;
- object = createObject( createMeshFaceMaterial(), 4 );
+ object = createObject( createMultiMaterial(), 4 );
object.position.set( 0, 0, 200 );
scene.add( object );
objectRandomizeFaces = object;
/*
These are not yet used but they are ready to be shown
- object = createObject( createMeshFaceMaterial(), 4 );
+ object = createObject( createMultiMaterial(), 4 );
object.position.set( 200, 0, 200 );
scene.add( object );
//
- object = createObject( createMeshFaceMaterial(), 4 );
+ object = createObject( createMultiMaterial(), 4 );
object.position.set( -400, 0, 0 );
scene.add( object );
- object = createObject( createMeshFaceMaterial(), 4 );
+ object = createObject( createMultiMaterial(), 4 );
object.position.set( -200, 0, 0 );
scene.add( object );
- object = createObject( createMeshFaceMaterial(), 4 );
+ object = createObject( createMultiMaterial(), 4 );
object.position.set( 0, 0, 0 );
scene.add( object );
- object = createObject( createMeshFaceMaterial(), 4 );
+ object = createObject( createMultiMaterial(), 4 );
object.position.set( 200, 0, 0 );
scene.add( object );
- object = createObject( createMeshFaceMaterial(), 4 );
+ object = createObject( createMultiMaterial(), 4 );
object.position.set( 400, 0, 0 );
scene.add( object );
*/
@@ -136,7 +136,7 @@
return geometry;
}
- function createMeshFaceMaterial(){
+ function createMultiMaterial(){
var materials = [];
materials.push(new THREE.MeshBasicMaterial({color: 0xff0000}));
materials.push(new THREE.MeshBasicMaterial({color: 0xffff00}));
@@ -144,7 +144,7 @@
materials.push(new THREE.MeshBasicMaterial({color: 0x00ffff}));
materials.push(new THREE.MeshBasicMaterial({color: 0x0000ff}));
materials.push(new THREE.MeshBasicMaterial({color: 0xff00ff}));
- var material = new THREE.MeshFaceMaterial(materials);
+ var material = new THREE.MultiMaterial(materials);
return material;
}
diff --git a/examples/webgl_skinning_simple.html b/examples/webgl_skinning_simple.html
index 878658d0690e46ecc1209351157c64c9a420188c..fe344a6d5d7781b2b92248c291d6883f0c11ea60 100644
--- a/examples/webgl_skinning_simple.html
+++ b/examples/webgl_skinning_simple.html
@@ -71,7 +71,7 @@
}
- skinnedMesh = new THREE.SkinnedMesh(geometry, new THREE.MeshFaceMaterial(materials));
+ skinnedMesh = new THREE.SkinnedMesh(geometry, new THREE.MultiMaterial(materials));
skinnedMesh.scale.set( 1, 1, 1 );
scene.add( skinnedMesh );
diff --git a/src/loaders/MaterialLoader.js b/src/loaders/MaterialLoader.js
index 0e9392e9e97179f8316092f871e8486297180c7b..64534a5d2821f80e316fca491c0896f03dadadd8 100644
--- a/src/loaders/MaterialLoader.js
+++ b/src/loaders/MaterialLoader.js
@@ -136,7 +136,7 @@ THREE.MaterialLoader.prototype = {
if ( json.aoMap !== undefined ) material.aoMap = this.getTexture( json.aoMap );
if ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;
- // MeshFaceMaterial
+ // MultiMaterial
if ( json.materials !== undefined ) {
diff --git a/src/objects/Mesh.js b/src/objects/Mesh.js
index f1b28047cd7c45b9e127ede8efdc437a7f58b895..71e11f65e7879948ac983c1451d5d38c8d5033a1 100644
--- a/src/objects/Mesh.js
+++ b/src/objects/Mesh.js
@@ -252,7 +252,7 @@ THREE.Mesh.prototype.raycast = ( function () {
} else if ( geometry instanceof THREE.Geometry ) {
var fvA, fvB, fvC;
- var isFaceMaterial = material instanceof THREE.MeshFaceMaterial;
+ var isFaceMaterial = material instanceof THREE.MultiMaterial;
var materials = isFaceMaterial === true ? material.materials : null;
var vertices = geometry.vertices;
diff --git a/src/renderers/webgl/WebGLShadowMap.js b/src/renderers/webgl/WebGLShadowMap.js
index d26d4726679e3ec05a221437f96d1cc13a7fbdca..7d4a173cb3bd54358f7ecd884e7311a7d340d20b 100644
--- a/src/renderers/webgl/WebGLShadowMap.js
+++ b/src/renderers/webgl/WebGLShadowMap.js
@@ -251,7 +251,7 @@ THREE.WebGLShadowMap = function ( _renderer, _lights, _objects ) {
var geometry = _objects.update( object );
var material = object.material;
- if ( material instanceof THREE.MeshFaceMaterial ) {
+ if ( material instanceof THREE.MultiMaterial ) {
var groups = geometry.groups;
var materials = material.materials;
diff --git a/utils/build/includes/canvas.json b/utils/build/includes/canvas.json
index b3659b766f3cc7bcf7c67d5dd618ce6544efedcb..4a0e702b5858046334f2c22d9ef27e78f4541380 100644
--- a/utils/build/includes/canvas.json
+++ b/utils/build/includes/canvas.json
@@ -45,7 +45,7 @@
"src/materials/MeshPhongMaterial.js",
"src/materials/MeshDepthMaterial.js",
"src/materials/MeshNormalMaterial.js",
- "src/materials/MeshFaceMaterial.js",
+ "src/materials/MultiMaterial.js",
"src/materials/SpriteMaterial.js",
"src/textures/Texture.js",
"src/textures/CompressedTexture.js",
diff --git a/utils/converters/fbx/convert_to_threejs.py b/utils/converters/fbx/convert_to_threejs.py
index cba32dd843b5db884b86877670dbfa7b6967ac1f..d4701fd17d0c1a4bb9f486a5a2fe95f43993c60a 100755
--- a/utils/converters/fbx/convert_to_threejs.py
+++ b/utils/converters/fbx/convert_to_threejs.py
@@ -48,8 +48,8 @@ class ChunkedIndent(object):
self.force_rounding = force_rounding
def encode(self):
# Turn the flat array into an array of arrays where each subarray is of
- # length chunk_size. Then string concat the values in the chunked
- # arrays, delimited with a ', ' and round the values finally append
+ # length chunk_size. Then string concat the values in the chunked
+ # arrays, delimited with a ', ' and round the values finally append
# '{CHUNK}' so that we can find the strings with regex later
if not self.value:
return None
@@ -58,8 +58,8 @@ class ChunkedIndent(object):
else:
return ['{CHUNK}%s' % ', '.join(str(f) for f in self.value[i:i+self.size]) for i in range(0, len(self.value), self.size)]
-# This custom encoder looks for instances of NoIndent or ChunkedIndent.
-# When it finds
+# This custom encoder looks for instances of NoIndent or ChunkedIndent.
+# When it finds
class CustomEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, NoIndent) or isinstance(obj, ChunkedIndent):
@@ -156,7 +156,7 @@ def setBit(value, position, on):
else:
mask = ~(1 << position)
return (value & mask)
-
+
def generate_uvs(uv_layers):
layers = []
for uvs in uv_layers:
@@ -176,7 +176,7 @@ def generate_uvs(uv_layers):
# #####################################################
def hasUniqueName(o, class_id):
scene = o.GetScene()
- object_name = o.GetName()
+ object_name = o.GetName()
object_id = o.GetUniqueID()
object_count = scene.GetSrcObjectCount(class_id)
@@ -184,7 +184,7 @@ def hasUniqueName(o, class_id):
for i in range(object_count):
other = scene.GetSrcObject(class_id, i)
other_id = other.GetUniqueID()
- other_name = other.GetName()
+ other_name = other.GetName()
if other_id == object_id:
continue
@@ -193,11 +193,11 @@ def hasUniqueName(o, class_id):
return True
-def getObjectName(o, force_prefix = False):
+def getObjectName(o, force_prefix = False):
if not o:
- return ""
+ return ""
- object_name = o.GetName()
+ object_name = o.GetName()
object_id = o.GetUniqueID()
if not force_prefix:
@@ -210,7 +210,7 @@ def getObjectName(o, force_prefix = False):
return prefix + object_name
def getMaterialName(o, force_prefix = False):
- object_name = o.GetName()
+ object_name = o.GetName()
object_id = o.GetUniqueID()
if not force_prefix:
@@ -248,7 +248,7 @@ def getPrefixedName(o, prefix):
return (prefix + '_%s_') % o.GetUniqueID() + o.GetName()
# #####################################################
-# Triangulation
+# Triangulation
# #####################################################
def triangulate_node_hierarchy(node):
node_attribute = node.GetNodeAttribute();
@@ -259,7 +259,7 @@ def triangulate_node_hierarchy(node):
node_attribute.GetAttributeType() == FbxNodeAttribute.eNurbsSurface or \
node_attribute.GetAttributeType() == FbxNodeAttribute.ePatch:
converter.TriangulateInPlace(node);
-
+
child_count = node.GetChildCount()
for i in range(child_count):
triangulate_node_hierarchy(node.GetChild(i))
@@ -274,24 +274,24 @@ def triangulate_scene(scene):
# Generate Material Object
# #####################################################
def generate_texture_bindings(material_property, material_params):
- # FBX to Three.js texture types
+ # FBX to Three.js texture types
binding_types = {
- "DiffuseColor": "map",
- "DiffuseFactor": "diffuseFactor",
- "EmissiveColor": "emissiveMap",
- "EmissiveFactor": "emissiveFactor",
- "AmbientColor": "lightMap", # "ambientMap",
- "AmbientFactor": "ambientFactor",
- "SpecularColor": "specularMap",
- "SpecularFactor": "specularFactor",
+ "DiffuseColor": "map",
+ "DiffuseFactor": "diffuseFactor",
+ "EmissiveColor": "emissiveMap",
+ "EmissiveFactor": "emissiveFactor",
+ "AmbientColor": "lightMap", # "ambientMap",
+ "AmbientFactor": "ambientFactor",
+ "SpecularColor": "specularMap",
+ "SpecularFactor": "specularFactor",
"ShininessExponent": "shininessExponent",
- "NormalMap": "normalMap",
- "Bump": "bumpMap",
- "TransparentColor": "transparentMap",
- "TransparencyFactor": "transparentFactor",
- "ReflectionColor": "reflectionMap",
- "ReflectionFactor": "reflectionFactor",
- "DisplacementColor": "displacementMap",
+ "NormalMap": "normalMap",
+ "Bump": "bumpMap",
+ "TransparentColor": "transparentMap",
+ "TransparencyFactor": "transparentFactor",
+ "ReflectionColor": "reflectionMap",
+ "ReflectionFactor": "reflectionFactor",
+ "DisplacementColor": "displacementMap",
"VectorDisplacementColor": "vectorDisplacementMap"
}
@@ -330,7 +330,7 @@ def generate_material_object(material):
if implementation:
print("Shader materials are not supported")
-
+
elif material.GetClassId().Is(FbxSurfaceLambert.ClassId):
ambient = getHex(material.Ambient.Get())
@@ -425,10 +425,10 @@ def generate_material_object(material):
return output
def generate_proxy_material_object(node, material_names):
-
- material_type = 'MeshFaceMaterial'
- material_params = {
- 'materials' : material_names
+
+ material_type = 'MultiMaterial'
+ material_params = {
+ 'materials' : material_names
}
output = {
@@ -450,7 +450,7 @@ def extract_materials_from_node(node, material_dict):
node = mesh.GetNode()
if node:
material_count = node.GetMaterialCount()
-
+
material_names = []
for l in range(mesh.GetLayerCount()):
materials = mesh.GetLayer(l).GetMaterials()
@@ -499,7 +499,7 @@ def generate_material_dict(scene):
return material_dict
# #####################################################
-# Generate Texture Object
+# Generate Texture Object
# #####################################################
def generate_texture_object(texture):
@@ -512,7 +512,7 @@ def generate_texture_object(texture):
url = texture.GetFileName()
else:
url = getTextureName( texture )
-
+
#url = replace_inFolder2OutFolder( url )
#print( url )
@@ -532,7 +532,7 @@ def generate_texture_object(texture):
'anisotropy': True
}
-
+
return output
# #####################################################
@@ -540,11 +540,11 @@ def generate_texture_object(texture):
# #####################################################
def replace_inFolder2OutFolder(url):
folderIndex = url.find(inputFolder)
-
+
if folderIndex != -1:
url = url[ folderIndex+len(inputFolder): ]
url = outputFolder + url
-
+
return url
# #####################################################
@@ -552,11 +552,11 @@ def replace_inFolder2OutFolder(url):
# #####################################################
def replace_OutFolder2inFolder(url):
folderIndex = url.find(outputFolder)
-
+
if folderIndex != -1:
url = url[ folderIndex+len(outputFolder): ]
url = inputFolder + url
-
+
return url
# #####################################################
@@ -589,14 +589,14 @@ def extract_material_textures(material_property, texture_dict):
def extract_textures_from_node(node, texture_dict):
name = node.GetName()
mesh = node.GetNodeAttribute()
-
+
#for all materials attached to this mesh
material_count = mesh.GetNode().GetSrcObjectCount(FbxSurfaceMaterial.ClassId)
for material_index in range(material_count):
material = mesh.GetNode().GetSrcObject(FbxSurfaceMaterial.ClassId, material_index)
#go through all the possible textures types
- if material:
+ if material:
texture_count = FbxLayerElement.sTypeTextureCount()
for texture_index in range(texture_count):
material_property = material.FindProperty(FbxLayerElement.sTextureChannelNames(texture_index))
@@ -644,13 +644,13 @@ def extract_fbx_vertex_positions(mesh):
r = FbxVector4(r[0], r[1], r[2], 1)
s = node.GeometricScaling.Get()
s = FbxVector4(s[0], s[1], s[2], 1)
-
+
hasGeometricTransform = False
if t[0] != 0 or t[1] != 0 or t[2] != 0 or \
r[0] != 0 or r[1] != 0 or r[2] != 0 or \
s[0] != 1 or s[1] != 1 or s[2] != 1:
hasGeometricTransform = True
-
+
if hasGeometricTransform:
geo_transform = FbxMatrix(t,r,s)
else:
@@ -666,7 +666,7 @@ def extract_fbx_vertex_positions(mesh):
elif hasGeometricTransform:
transform = geo_transform
-
+
if transform:
for i in range(len(positions)):
v = positions[i]
@@ -688,16 +688,16 @@ def extract_fbx_vertex_normals(mesh):
layered_normal_values = []
poly_count = mesh.GetPolygonCount()
- control_points = mesh.GetControlPoints()
+ control_points = mesh.GetControlPoints()
for l in range(mesh.GetLayerCount()):
mesh_normals = mesh.GetLayer(l).GetNormals()
if not mesh_normals:
continue
-
+
normals_array = mesh_normals.GetDirectArray()
normals_count = normals_array.GetCount()
-
+
if normals_count == 0:
continue
@@ -718,13 +718,13 @@ def extract_fbx_vertex_normals(mesh):
r = FbxVector4(r[0], r[1], r[2], 1)
s = node.GeometricScaling.Get()
s = FbxVector4(s[0], s[1], s[2], 1)
-
+
hasGeometricTransform = False
if t[0] != 0 or t[1] != 0 or t[2] != 0 or \
r[0] != 0 or r[1] != 0 or r[2] != 0 or \
s[0] != 1 or s[1] != 1 or s[2] != 1:
hasGeometricTransform = True
-
+
if hasGeometricTransform:
geo_transform = FbxMatrix(t,r,s)
else:
@@ -740,7 +740,7 @@ def extract_fbx_vertex_normals(mesh):
elif hasGeometricTransform:
transform = geo_transform
-
+
if transform:
t = FbxVector4(0,0,0,1)
transform.SetRow(3, t)
@@ -761,7 +761,7 @@ def extract_fbx_vertex_normals(mesh):
for v in range(poly_size):
control_point_index = mesh.GetPolygonVertex(p, v)
-
+
# mapping mode is by control points. The mesh should be smooth and soft.
# we can get normals by retrieving each control point
if mesh_normals.GetMappingMode() == FbxLayerElement.eByControlPoint:
@@ -788,7 +788,7 @@ def extract_fbx_vertex_normals(mesh):
elif mesh_normals.GetMappingMode() == FbxLayerElement.eByPolygon or \
mesh_normals.GetMappingMode() == FbxLayerElement.eAllSame or \
- mesh_normals.GetMappingMode() == FbxLayerElement.eNone:
+ mesh_normals.GetMappingMode() == FbxLayerElement.eNone:
print("unsupported normal mapping mode for polygon vertex")
vertexId += 1
@@ -819,16 +819,16 @@ def extract_fbx_vertex_colors(mesh):
layered_color_values = []
poly_count = mesh.GetPolygonCount()
- control_points = mesh.GetControlPoints()
+ control_points = mesh.GetControlPoints()
for l in range(mesh.GetLayerCount()):
mesh_colors = mesh.GetLayer(l).GetVertexColors()
if not mesh_colors:
continue
-
+
colors_array = mesh_colors.GetDirectArray()
colors_count = colors_array.GetCount()
-
+
if colors_count == 0:
continue
@@ -864,7 +864,7 @@ def extract_fbx_vertex_colors(mesh):
poly_colors.append(index)
elif mesh_colors.GetMappingMode() == FbxLayerElement.eByPolygon or \
mesh_colors.GetMappingMode() == FbxLayerElement.eAllSame or \
- mesh_colors.GetMappingMode() == FbxLayerElement.eNone:
+ mesh_colors.GetMappingMode() == FbxLayerElement.eNone:
print("unsupported color mapping mode for polygon vertex")
vertexId += 1
@@ -907,16 +907,16 @@ def extract_fbx_vertex_uvs(mesh):
layered_uv_values = []
poly_count = mesh.GetPolygonCount()
- control_points = mesh.GetControlPoints()
+ control_points = mesh.GetControlPoints()
for l in range(mesh.GetLayerCount()):
mesh_uvs = mesh.GetLayer(l).GetUVs()
if not mesh_uvs:
continue
-
+
uvs_array = mesh_uvs.GetDirectArray()
uvs_count = uvs_array.GetCount()
-
+
if uvs_count == 0:
continue
@@ -946,13 +946,13 @@ def extract_fbx_vertex_uvs(mesh):
poly_uvs.append(index)
elif mesh_uvs.GetMappingMode() == FbxLayerElement.eByPolygonVertex:
uv_texture_index = mesh_uvs.GetIndexArray().GetAt(vertexId)
-
+
if mesh_uvs.GetReferenceMode() == FbxLayerElement.eDirect or \
mesh_uvs.GetReferenceMode() == FbxLayerElement.eIndexToDirect:
poly_uvs.append(uv_texture_index)
elif mesh_uvs.GetMappingMode() == FbxLayerElement.eByPolygon or \
mesh_uvs.GetMappingMode() == FbxLayerElement.eAllSame or \
- mesh_uvs.GetMappingMode() == FbxLayerElement.eNone:
+ mesh_uvs.GetMappingMode() == FbxLayerElement.eNone:
print("unsupported uv mapping mode for polygon vertex")
vertexId += 1
@@ -974,7 +974,7 @@ def generate_color_key(color):
def generate_uv_key(uv):
return (round(uv[0], 6), round(uv[1], 6))
-
+
def append_non_duplicate_uvs(source_uvs, dest_uvs, counts):
source_layer_count = len(source_uvs)
for layer_index in range(source_layer_count):
@@ -993,7 +993,7 @@ def append_non_duplicate_uvs(source_uvs, dest_uvs, counts):
source_uv_layer = source_uvs[layer_index]
for uv in source_uv_layer:
- key = generate_uv_key(uv)
+ key = generate_uv_key(uv)
if key not in dest_uv_layer:
dest_uv_layer[key] = count
count += 1
@@ -1005,7 +1005,7 @@ def append_non_duplicate_uvs(source_uvs, dest_uvs, counts):
def generate_unique_normals_dictionary(mesh_list):
normals_dictionary = {}
nnormals = 0
-
+
# Merge meshes, remove duplicate data
for mesh in mesh_list:
node = mesh.GetNode()
@@ -1013,7 +1013,7 @@ def generate_unique_normals_dictionary(mesh_list):
if len(normal_values) > 0:
for normal in normal_values:
- key = generate_normal_key(normal)
+ key = generate_normal_key(normal)
if key not in normals_dictionary:
normals_dictionary[key] = nnormals
nnormals += 1
@@ -1023,14 +1023,14 @@ def generate_unique_normals_dictionary(mesh_list):
def generate_unique_colors_dictionary(mesh_list):
colors_dictionary = {}
ncolors = 0
-
+
# Merge meshes, remove duplicate data
for mesh in mesh_list:
color_values, color_indices = extract_fbx_vertex_colors(mesh)
if len(color_values) > 0:
for color in color_values:
- key = generate_color_key(color)
+ key = generate_color_key(color)
if key not in colors_dictionary:
colors_dictionary[key] = ncolors
ncolors += 1
@@ -1067,7 +1067,7 @@ def generate_colors_from_dictionary(colors_dictionary):
def generate_uvs_from_dictionary_layers(uvs_dictionary_layers):
uv_values = []
for uvs_dictionary in uvs_dictionary_layers:
- uv_values_layer = []
+ uv_values_layer = []
for key, index in sorted(uvs_dictionary.items(), key = operator.itemgetter(1)):
uv_values_layer.append(key)
uv_values.append(uv_values_layer)
@@ -1138,7 +1138,7 @@ def process_mesh_vertices(mesh_list):
for mesh in mesh_list:
node = mesh.GetNode()
mesh_vertices = extract_fbx_vertex_positions(mesh)
-
+
vertices.extend(mesh_vertices[:])
vertex_offset += len(mesh_vertices)
vertex_offset_list.append(vertex_offset)
@@ -1154,7 +1154,7 @@ def process_mesh_materials(mesh_list):
#TODO: remove duplicate mesh references
for mesh in mesh_list:
node = mesh.GetNode()
-
+
material_count = node.GetMaterialCount()
if material_count > 0:
for l in range(mesh.GetLayerCount()):
@@ -1186,7 +1186,7 @@ def process_mesh_polygons(mesh_list, normals_to_indices, colors_to_indices, uvs_
flipWindingOrder = True
poly_count = mesh.GetPolygonCount()
- control_points = mesh.GetControlPoints()
+ control_points = mesh.GetControlPoints()
normal_values, normal_indices = extract_fbx_vertex_normals(mesh)
color_values, color_indices = extract_fbx_vertex_colors(mesh)
@@ -1204,7 +1204,7 @@ def process_mesh_polygons(mesh_list, normals_to_indices, colors_to_indices, uvs_
uv_indices = uv_indices_layers[l]
face_uv_indices = generate_uv_indices_for_poly(poly_index, uv_values, uv_indices, uvs_to_indices_list[l])
face_uv_layers.append(face_uv_indices)
-
+
face_vertices = []
for vertex_index in range(poly_size):
control_point_index = mesh.GetPolygonVertex(poly_index, vertex_index)
@@ -1217,7 +1217,7 @@ def process_mesh_polygons(mesh_list, normals_to_indices, colors_to_indices, uvs_
material_offset = material_offset_list[mesh_index]
vertex_offset = vertex_offset_list[mesh_index]
-
+
if poly_size > 4:
new_face_normals = []
new_face_colors = []
@@ -1235,7 +1235,7 @@ def process_mesh_polygons(mesh_list, normals_to_indices, colors_to_indices, uvs_
for layer in face_uv_layers:
new_face_uv_layers.append([layer[0], layer[i+1], layer[i+2]])
- face = generate_mesh_face(mesh,
+ face = generate_mesh_face(mesh,
poly_index,
new_face_vertices,
new_face_normals,
@@ -1246,7 +1246,7 @@ def process_mesh_polygons(mesh_list, normals_to_indices, colors_to_indices, uvs_
flipWindingOrder)
faces.append(face)
else:
- face = generate_mesh_face(mesh,
+ face = generate_mesh_face(mesh,
poly_index,
face_vertices,
face_normals,
@@ -1269,12 +1269,12 @@ def generate_mesh_face(mesh, polygon_index, vertex_indices, normals, colors, uv_
if materials:
hasMaterial = True
break
-
+
hasFaceUvs = False
hasFaceVertexUvs = len(uv_layers) > 0
- hasFaceNormals = False
+ hasFaceNormals = False
hasFaceVertexNormals = len(normals) > 0
- hasFaceColors = False
+ hasFaceColors = False
hasFaceVertexColors = len(colors) > 0
faceType = 0
@@ -1324,7 +1324,7 @@ def generate_mesh_face(mesh, polygon_index, vertex_indices, normals, colors, uv_
for polygon_uvs in uv_layers:
tmp.append([polygon_uvs[0], polygon_uvs[3], polygon_uvs[2], polygon_uvs[3]])
uv_layers = tmp
-
+
for i in range(nVertices):
index = vertex_indices[i] + vertex_offset
faceData.append(index)
@@ -1355,10 +1355,10 @@ def generate_mesh_face(mesh, polygon_index, vertex_indices, normals, colors, uv_
index = colors[i]
faceData.append(index)
- return faceData
+ return faceData
# #####################################################
-# Generate Mesh Object (for scene output format)
+# Generate Mesh Object (for scene output format)
# #####################################################
def generate_scene_output(node):
mesh = node.GetNodeAttribute()
@@ -1373,17 +1373,17 @@ def generate_scene_output(node):
normals_to_indices = generate_unique_normals_dictionary(mesh_list)
colors_to_indices = generate_unique_colors_dictionary(mesh_list)
uvs_to_indices_list = generate_unique_uvs_dictionary_layers(mesh_list)
-
+
normal_values = generate_normals_from_dictionary(normals_to_indices)
color_values = generate_colors_from_dictionary(colors_to_indices)
uv_values = generate_uvs_from_dictionary_layers(uvs_to_indices_list)
# Generate mesh faces for the Three.js file format
- faces = process_mesh_polygons(mesh_list,
+ faces = process_mesh_polygons(mesh_list,
normals_to_indices,
- colors_to_indices,
+ colors_to_indices,
uvs_to_indices_list,
- vertex_offsets,
+ vertex_offsets,
material_offsets)
# Generate counts for uvs, vertices, normals, colors, and faces
@@ -1410,7 +1410,7 @@ def generate_scene_output(node):
normal_values = ChunkedIndent(normal_values, 15, True)
color_values = ChunkedIndent(color_values, 15)
faces = ChunkedIndent(faces, 30)
-
+
metadata = {
'vertices' : nvertices,
'normals' : nnormals,
@@ -1437,7 +1437,7 @@ def generate_scene_output(node):
return output
# #####################################################
-# Generate Mesh Object (for non-scene output)
+# Generate Mesh Object (for non-scene output)
# #####################################################
def generate_non_scene_output(scene):
mesh_list = generate_mesh_list(scene)
@@ -1449,17 +1449,17 @@ def generate_non_scene_output(scene):
normals_to_indices = generate_unique_normals_dictionary(mesh_list)
colors_to_indices = generate_unique_colors_dictionary(mesh_list)
uvs_to_indices_list = generate_unique_uvs_dictionary_layers(mesh_list)
-
+
normal_values = generate_normals_from_dictionary(normals_to_indices)
color_values = generate_colors_from_dictionary(colors_to_indices)
uv_values = generate_uvs_from_dictionary_layers(uvs_to_indices_list)
# Generate mesh faces for the Three.js file format
- faces = process_mesh_polygons(mesh_list,
+ faces = process_mesh_polygons(mesh_list,
normals_to_indices,
- colors_to_indices,
+ colors_to_indices,
uvs_to_indices_list,
- vertex_offsets,
+ vertex_offsets,
material_offsets)
# Generate counts for uvs, vertices, normals, colors, and faces
@@ -1542,7 +1542,7 @@ def generate_mesh_list(scene):
return mesh_list
# #####################################################
-# Generate Embed Objects
+# Generate Embed Objects
# #####################################################
def generate_embed_dict_from_hierarchy(node, embed_dict):
if node.GetNodeAttribute() == None:
@@ -1573,7 +1573,7 @@ def generate_embed_dict(scene):
return embed_dict
# #####################################################
-# Generate Geometry Objects
+# Generate Geometry Objects
# #####################################################
def generate_geometry_object(node):
@@ -1636,9 +1636,9 @@ def generate_light_object(node):
if light_type == "directional":
# Three.js directional lights emit light from a point in 3d space to a target node or the origin.
- # When there is no target, we need to take a point, one unit away from the origin, and move it
+ # When there is no target, we need to take a point, one unit away from the origin, and move it
# into the right location so that the origin acts like the target
-
+
if node.GetTarget():
direction = position
else:
@@ -1646,7 +1646,7 @@ def generate_light_object(node):
scale = FbxVector4(1,1,1,1)
rotation = transform.GetR()
matrix = FbxMatrix(translation, rotation, scale)
- direction = matrix.MultNormalize(FbxVector4(0,1,0,1))
+ direction = matrix.MultNormalize(FbxVector4(0,1,0,1))
output = {
@@ -1654,7 +1654,7 @@ def generate_light_object(node):
'color': getHex(light.Color.Get()),
'intensity': light.Intensity.Get()/100.0,
'direction': serializeVector3( direction ),
- 'target': getObjectName( node.GetTarget() )
+ 'target': getObjectName( node.GetTarget() )
}
@@ -1681,7 +1681,7 @@ def generate_light_object(node):
'distance': light.FarAttenuationEnd.Get(),
'angle': light.OuterAngle.Get()*math.pi/180,
'exponent': light.DecayType.Get(),
- 'target': getObjectName( node.GetTarget() )
+ 'target': getObjectName( node.GetTarget() )
}
@@ -1704,7 +1704,7 @@ def generate_ambient_light(scene):
}
return output
-
+
# #####################################################
# Generate Camera Node Objects
# #####################################################
@@ -1719,7 +1719,7 @@ def generate_default_camera():
'fov': fov,
'near': near,
'far': far,
- 'position': serializeVector3( position )
+ 'position': serializeVector3( position )
}
return output
@@ -1727,7 +1727,7 @@ def generate_default_camera():
def generate_camera_object(node):
camera = node.GetNodeAttribute()
position = camera.Position.Get()
-
+
projection_types = [ "perspective", "orthogonal" ]
projection = projection_types[camera.ProjectionType.Get()]
@@ -1784,7 +1784,7 @@ def generate_camera_name_list_from_hierarchy(node, camera_list):
else:
attribute_type = (node.GetNodeAttribute().GetAttributeType())
if attribute_type == FbxNodeAttribute.eCamera:
- camera_string = getObjectName(node)
+ camera_string = getObjectName(node)
camera_list.append(camera_string)
for i in range(node.GetChildCount()):
generate_camera_name_list_from_hierarchy(node.GetChild(i), camera_list)
@@ -1798,7 +1798,7 @@ def generate_camera_name_list(scene):
return camera_list
# #####################################################
-# Generate Mesh Node Object
+# Generate Mesh Node Object
# #####################################################
def generate_mesh_object(node):
mesh = node.GetNodeAttribute()
@@ -1827,7 +1827,7 @@ def generate_mesh_object(node):
material_names.append('')
#If this mesh has more than one material, use a proxy material
- material_name = getMaterialName( node, True) if material_count > 1 else material_names[0]
+ material_name = getMaterialName( node, True) if material_count > 1 else material_names[0]
output = {
'geometry': getPrefixedName( node, 'Geometry' ),
@@ -1841,11 +1841,11 @@ def generate_mesh_object(node):
return output
# #####################################################
-# Generate Node Object
+# Generate Node Object
# #####################################################
def generate_object(node):
- node_types = ["Unknown", "Null", "Marker", "Skeleton", "Mesh", "Nurbs", "Patch", "Camera",
- "CameraStereo", "CameraSwitcher", "Light", "OpticalReference", "OpticalMarker", "NurbsCurve",
+ node_types = ["Unknown", "Null", "Marker", "Skeleton", "Mesh", "Nurbs", "Patch", "Camera",
+ "CameraStereo", "CameraSwitcher", "Light", "OpticalReference", "OpticalMarker", "NurbsCurve",
"TrimNurbsSurface", "Boundary", "NurbsSurface", "Shape", "LODGroup", "SubDiv", "CachedEffect", "Line"]
transform = node.EvaluateLocalTransform()
@@ -1872,7 +1872,7 @@ def generate_object(node):
return output
# #####################################################
-# Parse Scene Node Objects
+# Parse Scene Node Objects
# #####################################################
def generate_object_hierarchy(node, object_dict):
object_count = 0
@@ -1898,7 +1898,7 @@ def generate_object_hierarchy(node, object_dict):
if node.GetChildCount() > 0:
# Having 'children' above other attributes is hard to read.
- # We can send it to the bottom using the last letter of the alphabet 'z'.
+ # We can send it to the bottom using the last letter of the alphabet 'z'.
# This letter is removed from the final output.
if option_pretty_print:
object_data['zchildren'] = object_children
@@ -1959,7 +1959,7 @@ def extract_scene(scene, filename):
scene_settings = scene.GetGlobalSettings()
# This does not seem to be any help here
- # global_settings.GetDefaultCamera()
+ # global_settings.GetDefaultCamera()
defcamera = camera_names[0] if len(camera_names) > 0 else ""
if option_default_camera:
@@ -2005,7 +2005,7 @@ def extract_scene(scene, filename):
return output
# #####################################################
-# Generate Non-Scene Output
+# Generate Non-Scene Output
# #####################################################
def extract_geometry(scene, filename):
output = generate_non_scene_output(scene)
@@ -2017,10 +2017,10 @@ def extract_geometry(scene, filename):
def write_file(filepath, content):
index = filepath.rfind('/')
dir = filepath[0:index]
-
+
#if not os.path.exists(dir):
#os.makedirs(dir)
-
+
out = open(filepath, "w")
out.write(content.encode('utf8', 'replace'))
out.close()
@@ -2033,9 +2033,9 @@ def read_file(filepath):
def copy_textures(textures):
texture_dict = {}
-
+
for key in textures:
- url = textures[key]['fullpath']
+ url = textures[key]['fullpath']
#src = replace_OutFolder2inFolder(url)
#print( src )
@@ -2043,11 +2043,11 @@ def copy_textures(textures):
if url in texture_dict: # texture has been copied
continue
-
+
if not os.path.exists(url):
print("copy_texture error: we can't find this texture at " + url)
continue
-
+
try:
index = url.rfind('/')
if index == -1:
@@ -2073,7 +2073,7 @@ def findFilesWithExt(directory, ext, include_path = True):
current_ext = os.path.splitext(filename)[1].lower()
if current_ext == ext:
if include_path:
- found.append(os.path.join(root, filename))
+ found.append(os.path.join(root, filename))
else:
found.append(filename)
return found
@@ -2095,11 +2095,11 @@ if __name__ == "__main__":
elif platform.system() == 'Linux':
msg += '"/usr/local/lib/python2.6/site-packages"'
elif platform.system() == 'Darwin':
- msg += '"/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages"'
+ msg += '"/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages"'
msg += ' folder.'
print(msg)
sys.exit(1)
-
+
usage = "Usage: %prog [source_file.fbx] [output_file.js] [options]"
parser = OptionParser(usage=usage)
@@ -2115,15 +2115,15 @@ if __name__ == "__main__":
(options, args) = parser.parse_args()
- option_triangulate = options.triangulate
+ option_triangulate = options.triangulate
option_textures = True if not options.notextures else False
option_copy_textures = True if not options.notexturecopy else False
option_prefix = options.prefix
- option_geometry = options.geometry
+ option_geometry = options.geometry
option_forced_y_up = options.forceyup
- option_default_camera = options.defcamera
- option_default_light = options.deflight
- option_pretty_print = options.pretty
+ option_default_camera = options.defcamera
+ option_default_light = options.deflight
+ option_pretty_print = options.pretty
# Prepare the FBX SDK.
sdk_manager, scene = InitializeSdkObjects()
@@ -2143,17 +2143,17 @@ if __name__ == "__main__":
if option_triangulate:
print("\nForcing geometry to triangles")
triangulate_scene(scene)
-
+
axis_system = FbxAxisSystem.MayaYUp
-
+
if not option_forced_y_up:
- # According to asset's coordinate to convert scene
+ # According to asset's coordinate to convert scene
upVector = scene.GetGlobalSettings().GetAxisSystem().GetUpVector();
if upVector[0] == 3:
axis_system = FbxAxisSystem.MayaZUp
-
+
axis_system.ConvertScene(scene)
-
+
inputFolder = args[0].replace( "\\", "/" );
index = args[0].rfind( "/" );
inputFolder = inputFolder[:index]
@@ -2161,7 +2161,7 @@ if __name__ == "__main__":
outputFolder = args[1].replace( "\\", "/" );
index = args[1].rfind( "/" );
outputFolder = outputFolder[:index]
-
+
if option_geometry:
output_content = extract_geometry(scene, os.path.basename(args[0]))
else:
@@ -2176,12 +2176,12 @@ if __name__ == "__main__":
output_path = os.path.join(os.getcwd(), args[1])
write_file(output_path, output_string)
-
+
if option_copy_textures:
- copy_textures( output_content['textures'] )
+ copy_textures( output_content['textures'] )
print("\nExported Three.js file to:\n%s\n" % output_path)
# Destroy all objects created by the FBX SDK.
sdk_manager.Destroy()
- sys.exit(0)
\ No newline at end of file
+ sys.exit(0)
diff --git a/utils/converters/obj/convert_obj_three.py b/utils/converters/obj/convert_obj_three.py
index 68cb5458876dc905bbcf9063145bc7fd24c77371..d5bef6d83b19e5a284883652998c61674fbb06b0 100644
--- a/utils/converters/obj/convert_obj_three.py
+++ b/utils/converters/obj/convert_obj_three.py
@@ -53,7 +53,7 @@ How to use generated JS file in your HTML document
function createScene( geometry, materials ) {
- var mesh = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial( materials ) );
+ var mesh = new THREE.Mesh( geometry, new THREE.MultiMaterial( materials ) );
}
diff --git a/utils/converters/obj/convert_obj_three_for_python3.py b/utils/converters/obj/convert_obj_three_for_python3.py
index 9ee6e4aa34ddd0aa2319f219d0fc5227f91a7484..7f802ba39e6f51d4a74e0a59f77ed2392e04677c 100644
--- a/utils/converters/obj/convert_obj_three_for_python3.py
+++ b/utils/converters/obj/convert_obj_three_for_python3.py
@@ -53,7 +53,7 @@ How to use generated JS file in your HTML document
function createScene( geometry, materials ) {
- var mesh = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial( materials ) );
+ var mesh = new THREE.Mesh( geometry, new THREE.MultiMaterial( materials ) );
}
diff --git a/utils/exporters/blender/tests/scripts/js/review.js b/utils/exporters/blender/tests/scripts/js/review.js
index 96f0b59bfc913b801f33cd9c270135c9fe68a01b..7b33b493738e1fabf3d3eeda914973a1c4a45d38 100644
--- a/utils/exporters/blender/tests/scripts/js/review.js
+++ b/utils/exporters/blender/tests/scripts/js/review.js
@@ -132,7 +132,7 @@ function loadGeometry( data, url ) {
}
- var material = new THREE.MeshFaceMaterial( data.materials );
+ var material = new THREE.MultiMaterial( data.materials );
var mesh;
if ( data.geometry.animations !== undefined && data.geometry.animations.length > 0 ) {