/** * @author Sean Griffin / http://twitter.com/sgrif * @author Michael Guerrero / http://realitymeltdown.com * @author mrdoob / http://mrdoob.com/ * @author ikerr / http://verold.com */ export class SkeletonHelper { // THREE.SkeletonHelper = function(object) { // this.bones = this.getBoneList(object); // var geometry = new THREE.Geometry(); // for (var i = 0; i < this.bones.length; i++) { // var bone = this.bones[i]; // if (bone.parent instanceof THREE.Bone) { // geometry.vertices.push(new THREE.Vector3()); // geometry.vertices.push(new THREE.Vector3()); // geometry.colors.push(new THREE.Color(0, 0, 1)); // geometry.colors.push(new THREE.Color(0, 1, 0)); // } // } // geometry.dynamic = true; // var material = new THREE.LineBasicMaterial({ vertexColors: THREE.VertexColors, depthTest: false, depthWrite: false, transparent: true }); // THREE.LineSegments.call(this, geometry, material); // this.root = object; // this.matrix = object.matrixWorld; // this.matrixAutoUpdate = false; // this.update(); // }; // THREE.SkeletonHelper.prototype = Object.create(THREE.LineSegments.prototype); // THREE.SkeletonHelper.prototype.constructor = THREE.SkeletonHelper; // THREE.SkeletonHelper.prototype.getBoneList = function(object) { // var boneList = []; // if (object instanceof THREE.Bone) { // boneList.push(object); // } // for (var i = 0; i < object.children.length; i++) { // boneList.push.apply(boneList, this.getBoneList(object.children[i])); // } // return boneList; // }; // THREE.SkeletonHelper.prototype.update = function() { // var geometry = this.geometry; // var matrixWorldInv = new THREE.Matrix4().getInverse(this.root.matrixWorld); // var boneMatrix = new THREE.Matrix4(); // var j = 0; // for (var i = 0; i < this.bones.length; i++) { // var bone = this.bones[i]; // if (bone.parent instanceof THREE.Bone) { // boneMatrix.multiplyMatrices(matrixWorldInv, bone.matrixWorld); // geometry.vertices[j].setFromMatrixPosition(boneMatrix); // boneMatrix.multiplyMatrices(matrixWorldInv, bone.parent.matrixWorld); // geometry.vertices[j + 1].setFromMatrixPosition(boneMatrix); // j += 2; // } // } // geometry.verticesNeedUpdate = true; // geometry.computeBoundingSphere(); // }; }