jds580s
jds580s

Reputation: 69

THREE.js - morphTargetInfluences on an imported JSON mesh not getting results

I have a basic three.js scene in which I am attempting to get objects exported from Blender (as JSON files with embedded morphs) to function and update their shapes with user input.

Here is a test scene http://onthez.com/temphosting/three-js-morph-test/morph-test.html

The slab is being resized without morphs by simply scaling a box, which is working just fine.

I must be missing something fundamental with the little monument on top. It has 3 morphs (width, depth, height) that are intended to allow it to resize.

I am using this code to implement the morph based on users dat.gui input.

folder1.add( params, 'width', 12, 100 ).step(1).name("Width").onChange( function () {
  updateFoundation();
  building.morphTargetInfluences['width'] = params.width/100;
  roofL.morphTargetInfluences['width'] = params.width/100;
  roofR.morphTargetInfluences['width'] = params.width/100;
  building.updateMorphs();
});

The materials for building, roofL, and roofR each have morphTargets set as true. I've been going over the three.js examples here: http://threejs.org/examples/?q=morph#webgl_morphtargets_human as well as #webgl_morphtargets and #webgl_morphtargets_horse

Any thoughts or input would be much appreciated!

Upvotes: 0

Views: 1037

Answers (1)

jds580s
jds580s

Reputation: 69

I believe I've reached a solution for my question I was under the impression that the JSON loader was preserving the morph target names to be used in place of an index number with morphTargetInfluences

something like morphTargetInfluences['myMorphTargetName'] but, after closer inspection in the console it seems like they should be referred to by number like morphTargetInfluences[0]

Not the most intuitive, but I can work with it.

Upvotes: 1

Related Questions