testing morphVector condition

This commit is contained in:
Kirk Spencer 2020-03-27 13:57:17 -07:00
parent bf4f4e87e1
commit bac817a916
4 changed files with 40 additions and 29 deletions

6
dist/saver.min.js vendored

File diff suppressed because one or more lines are too long

View File

@ -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"

View File

@ -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,

View File

@ -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)