mirror of https://github.com/CesiumGS/obj2gltf.git
Better usemtl handling
This commit is contained in:
parent
1bebb590ef
commit
400dc3227b
|
@ -1,6 +1,10 @@
|
||||||
Change Log
|
Change Log
|
||||||
==========
|
==========
|
||||||
|
|
||||||
|
### 2.2.0 ???
|
||||||
|
|
||||||
|
* Fixed handling of `usemtl` when appearing before an `o` or `g` token. [#121](https://github.com/AnalyticalGraphicsInc/obj2gltf/pull/121)
|
||||||
|
|
||||||
### 2.1.0 2017-12-28
|
### 2.1.0 2017-12-28
|
||||||
|
|
||||||
* Fixed loading faces that contain less than 3 vertices. [#120](https://github.com/AnalyticalGraphicsInc/obj2gltf/pull/120)
|
* Fixed loading faces that contain less than 3 vertices. [#120](https://github.com/AnalyticalGraphicsInc/obj2gltf/pull/120)
|
||||||
|
|
|
@ -71,6 +71,7 @@ function loadObj(objPath, options) {
|
||||||
var node;
|
var node;
|
||||||
var mesh;
|
var mesh;
|
||||||
var primitive;
|
var primitive;
|
||||||
|
var activeMaterial;
|
||||||
|
|
||||||
// All nodes seen in the obj
|
// All nodes seen in the obj
|
||||||
var nodes = [];
|
var nodes = [];
|
||||||
|
@ -120,12 +121,15 @@ function loadObj(objPath, options) {
|
||||||
|
|
||||||
function addPrimitive() {
|
function addPrimitive() {
|
||||||
primitive = new Primitive();
|
primitive = new Primitive();
|
||||||
|
primitive.material = activeMaterial;
|
||||||
mesh.primitives.push(primitive);
|
mesh.primitives.push(primitive);
|
||||||
}
|
}
|
||||||
|
|
||||||
function useMaterial(name) {
|
function useMaterial(name) {
|
||||||
// Look to see if this material has already been used by a primitive in the mesh
|
|
||||||
var material = getName(name);
|
var material = getName(name);
|
||||||
|
activeMaterial = material;
|
||||||
|
|
||||||
|
// Look to see if this material has already been used by a primitive in the mesh
|
||||||
var primitives = mesh.primitives;
|
var primitives = mesh.primitives;
|
||||||
var primitivesLength = primitives.length;
|
var primitivesLength = primitives.length;
|
||||||
for (var i = 0; i < primitivesLength; ++i) {
|
for (var i = 0; i < primitivesLength; ++i) {
|
||||||
|
@ -136,7 +140,6 @@ function loadObj(objPath, options) {
|
||||||
}
|
}
|
||||||
// Add a new primitive with this material
|
// Add a new primitive with this material
|
||||||
addPrimitive();
|
addPrimitive();
|
||||||
primitive.material = getName(name);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getOffset(a, attributeData, components) {
|
function getOffset(a, attributeData, components) {
|
||||||
|
@ -533,6 +536,12 @@ function finishLoading(nodes, mtlPaths, objPath, options) {
|
||||||
function loadMtls(mtlPaths, objPath, options) {
|
function loadMtls(mtlPaths, objPath, options) {
|
||||||
var objDirectory = path.dirname(objPath);
|
var objDirectory = path.dirname(objPath);
|
||||||
var materials = [];
|
var materials = [];
|
||||||
|
|
||||||
|
// Remove duplicates
|
||||||
|
mtlPaths = mtlPaths.filter(function(value, index, self) {
|
||||||
|
return self.indexOf(value) === index;
|
||||||
|
});
|
||||||
|
|
||||||
return Promise.map(mtlPaths, function(mtlPath) {
|
return Promise.map(mtlPaths, function(mtlPath) {
|
||||||
mtlPath = path.resolve(objDirectory, mtlPath);
|
mtlPath = path.resolve(objDirectory, mtlPath);
|
||||||
var shallowPath = path.resolve(path.join(objDirectory, path.basename(mtlPath)));
|
var shallowPath = path.resolve(path.join(objDirectory, path.basename(mtlPath)));
|
||||||
|
|
Loading…
Reference in New Issue