testing morphVector condition
This commit is contained in:
parent
bf4f4e87e1
commit
bac817a916
File diff suppressed because one or more lines are too long
|
@ -7,7 +7,7 @@
|
||||||
],
|
],
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"clean": "rimraf ./dist",
|
"clean": "rimraf ./dist",
|
||||||
"pre:build": "npm run clean",
|
"prebuild": "npm run clean",
|
||||||
"build": "rollup -c",
|
"build": "rollup -c",
|
||||||
"dev": "rollup -c -w",
|
"dev": "rollup -c -w",
|
||||||
"pretest": "npm run build"
|
"pretest": "npm run build"
|
||||||
|
|
|
@ -27,7 +27,7 @@ export default [
|
||||||
compress: {
|
compress: {
|
||||||
arguments: true,
|
arguments: true,
|
||||||
booleans_as_integers: true,
|
booleans_as_integers: true,
|
||||||
drop_console: true,
|
drop_console: false,
|
||||||
hoist_funs: true,
|
hoist_funs: true,
|
||||||
keep_fargs: false,
|
keep_fargs: false,
|
||||||
toplevel: true,
|
toplevel: true,
|
||||||
|
|
|
@ -11,6 +11,7 @@ export function parse(mesh) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
debugger;
|
||||||
geometry = mesh.geometry;
|
geometry = mesh.geometry;
|
||||||
|
|
||||||
if (geometry.isBufferGeometry) {
|
if (geometry.isBufferGeometry) {
|
||||||
|
@ -32,7 +33,6 @@ export function parse(mesh) {
|
||||||
.applyMatrix4(matrixScale);
|
.applyMatrix4(matrixScale);
|
||||||
newGeometry.attributes.position.setXYZ(i, vertex.x, vertex.y, vertex.z);
|
newGeometry.attributes.position.setXYZ(i, vertex.x, vertex.y, vertex.z);
|
||||||
} else {
|
} else {
|
||||||
var finalVector = new Vector4();
|
|
||||||
if (geometry.morphTargetInfluences !== undefined) {
|
if (geometry.morphTargetInfluences !== undefined) {
|
||||||
var morphVector = new Vector4(vertex.x, vertex.y, vertex.z);
|
var morphVector = new Vector4(vertex.x, vertex.y, vertex.z);
|
||||||
var tempMorph = new Vector4();
|
var tempMorph = new Vector4();
|
||||||
|
@ -51,7 +51,9 @@ export function parse(mesh) {
|
||||||
morphVector.add(tempMorph);
|
morphVector.add(tempMorph);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let finalVector = new Vector4();
|
||||||
for (let j = 0; j < geometry.skinIndexNames.length; j++) {
|
for (let j = 0; j < geometry.skinIndexNames.length; j++) {
|
||||||
|
//console.log(geometry.skinIndexNames)
|
||||||
newFunction_1(i, j, mesh, morphVector, finalVector);
|
newFunction_1(i, j, mesh, morphVector, finalVector);
|
||||||
}
|
}
|
||||||
newGeometry.attributes.position.setXYZ(i, finalVector.x, finalVector.y, finalVector.z);
|
newGeometry.attributes.position.setXYZ(i, finalVector.x, finalVector.y, finalVector.z);
|
||||||
|
@ -68,33 +70,42 @@ export function parse(mesh) {
|
||||||
function newFunction_1(i, j, mesh, morphVector, finalVector) {
|
function newFunction_1(i, j, mesh, morphVector, finalVector) {
|
||||||
var skinIndices = geometry.getAttribute([geometry.skinIndexNames[j]]);
|
var skinIndices = geometry.getAttribute([geometry.skinIndexNames[j]]);
|
||||||
var weights = geometry.getAttribute([geometry.skinWeightNames[j]]);
|
var weights = geometry.getAttribute([geometry.skinWeightNames[j]]);
|
||||||
var skinIndex = [];
|
|
||||||
skinIndex[0] = skinIndices.getX(i);
|
var skinIndex = [
|
||||||
skinIndex[1] = skinIndices.getY(i);
|
skinIndices.getX(i),
|
||||||
skinIndex[2] = skinIndices.getZ(i);
|
skinIndices.getY(i),
|
||||||
skinIndex[3] = skinIndices.getW(i);
|
skinIndices.getZ(i),
|
||||||
var skinWeight = [];
|
skinIndices.getW(i)
|
||||||
skinWeight[0] = weights.getX(i);
|
];
|
||||||
skinWeight[1] = weights.getY(i);
|
|
||||||
skinWeight[2] = weights.getZ(i);
|
var skinWeight = [
|
||||||
skinWeight[3] = weights.getW(i);
|
weights.getX(i),
|
||||||
var inverses = [];
|
weights.getY(i),
|
||||||
inverses[0] = mesh.skeleton.boneInverses[skinIndex[0]];
|
weights.getZ(i),
|
||||||
inverses[1] = mesh.skeleton.boneInverses[skinIndex[1]];
|
weights.getW(i)
|
||||||
inverses[2] = mesh.skeleton.boneInverses[skinIndex[2]];
|
];
|
||||||
inverses[3] = mesh.skeleton.boneInverses[skinIndex[3]];
|
|
||||||
var skinMatrices = [];
|
var inverses = [
|
||||||
skinMatrices[0] = mesh.skeleton.bones[skinIndex[0]].matrixWorld;
|
mesh.skeleton.boneInverses[skinIndex[0]],
|
||||||
skinMatrices[1] = mesh.skeleton.bones[skinIndex[1]].matrixWorld;
|
mesh.skeleton.boneInverses[skinIndex[1]],
|
||||||
skinMatrices[2] = mesh.skeleton.bones[skinIndex[2]].matrixWorld;
|
mesh.skeleton.boneInverses[skinIndex[2]],
|
||||||
skinMatrices[3] = mesh.skeleton.bones[skinIndex[3]].matrixWorld;
|
mesh.skeleton.boneInverses[skinIndex[3]]
|
||||||
|
];
|
||||||
|
|
||||||
|
var skinMatrices = [
|
||||||
|
mesh.skeleton.bones[skinIndex[0]].matrixWorld,
|
||||||
|
mesh.skeleton.bones[skinIndex[1]].matrixWorld,
|
||||||
|
mesh.skeleton.bones[skinIndex[2]].matrixWorld,
|
||||||
|
mesh.skeleton.bones[skinIndex[3]].matrixWorld
|
||||||
|
];
|
||||||
|
|
||||||
for (var k = 0; k < 4; k++) {
|
for (var k = 0; k < 4; k++) {
|
||||||
newFunction(morphVector, skinWeight, k, inverses, skinMatrices, finalVector);
|
newFunction(morphVector, finalVector, skinWeight, inverses, skinMatrices, k);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function newFunction(morphVector, skinWeight, k, inverses, skinMatrices, finalVector) {
|
function newFunction(morphVector, finalVector, skinWeight, inverses, skinMatrices, k) {
|
||||||
var vectorToCopy = geometry.morphTargetInfluences !== undefined
|
var vectorToCopy = geometry.morphTargetInfluences !== undefined && geometry.morphTargetInfluences.reduce((p, c) => p + c) > 0
|
||||||
? morphVector
|
? morphVector
|
||||||
: vertex;
|
: vertex;
|
||||||
var tempVector = new Vector4(vectorToCopy.x, vectorToCopy.y, vectorToCopy.z)
|
var tempVector = new Vector4(vectorToCopy.x, vectorToCopy.y, vectorToCopy.z)
|
||||||
|
|
Loading…
Reference in New Issue