Nikolay Suslov hace 7 años
padre
commit
785deace71

+ 25 - 31
LICENSE

@@ -1,4 +1,27 @@
-Copyright 2017 Krestianstvo.org
+LiveCoding.space
+Copyright (c) 2015 Krestianstvo.org
+The MIT License (MIT)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+VWF License
 Copyright 2012 United States Government, as represented by the Secretary of Defense, Under Secretary
 of Defense (Personnel & Readiness).
 
@@ -10,33 +33,4 @@ compliance with the License. You may obtain a copy of the License at
 Unless required by applicable law or agreed to in writing, software distributed under the License is
 distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 implied. See the License for the specific language governing permissions and limitations under the
-License.
-
-
-Use of Source Images for VWF Website Have the Following:
-
-About Page:
-	Icons under "What","Why", and "Where" section were used from:
-		http://mac.softpedia.com/get/Graphics/Virtually-Insane-Iconset.shtml
-		License: Freeware/Free
-
-	HTML5 Logo by World Wide Web Consortium
-		http://www.w3.org/html/logo/downloads/HTML5_sticker.png
-		License: Creative Commons Attribution 3.0 Unported
-
-	WebGL Header Image by Michael Vacirca
-		Lockheed Martin Virtual World Framework Team
-		License: Creative Commons Attribution 3.0 Unported
-
-	
-	WebSockets Header Image by Michael Vacirca
-		Lockheed Martin Virtual World Framework Team
-		License: Creative Commons Attribution 3.0 Unported
-
-	JavaScript Header Image by Chris Williams
-		http://www.2ality.com/2011/10/logo-js.html
-		License: WTFPL
-
-	Fork me on GitHub Image by Tom Preston-Werner
-		https://github.com/blog/273-github-ribbons
-		License: MIT
+License.

+ 3 - 3
support/client/lib/vwf.js

@@ -302,7 +302,7 @@
                         deps: [ "vwf/model/aframe/aframe-master" ]
                     },
                     
-                    "vwf/model/aframe/addon/monument-app": {
+                    "vwf/model/aframe/addon/aframe-components": {
                         deps: [ "vwf/model/aframe/aframe-master",
                         "vwf/model/aframe/extras/aframe-extras",
                         "vwf/model/aframe/addon/aframe-sun-sky",
@@ -335,7 +335,7 @@
                     "vwf/model/aframe/extras/aframe-extras",
                     "vwf/model/aframe/addon/aframe-interpolation",
                     "vwf/model/aframe/addon/aframe-sun-sky",
-                    "vwf/model/aframe/addon/monument-app",
+                    "vwf/model/aframe/addon/aframe-components",
                     "vwf/model/aframe/addon/BVHLoader",
                     "vwf/model/aframe/addon/TransformControls",
                     "vwf/model/aframe/addon/THREE.MeshLine"    
@@ -364,7 +364,7 @@
                 { library: "vwf/model/aframe/extras/aframe-extras", active: false },
                 { library: "vwf/model/aframe/addon/aframe-interpolation", active: false },
                 { library: "vwf/model/aframe/addon/aframe-sun-sky", active: false },
-                { library: "vwf/model/aframe/addon/monument-app", active: false },
+                { library: "vwf/model/aframe/addon/aframe-components", active: false },
                 { library: "vwf/model/aframe/addon/BVHLoader", active: false },
                 { library: "vwf/model/aframe/addon/TransformControls", active: false },
                 { library: "vwf/model/aframe/addon/THREE.MeshLine", active: false },

+ 278 - 0
support/client/lib/vwf/model/aframe/addon/aframe-components.js

@@ -0,0 +1,278 @@
+if (typeof AFRAME === 'undefined') {
+    throw new Error('Component attempted to register before AFRAME was available.');
+}
+
+AFRAME.registerComponent('linepath', {
+    schema: {
+      color: { default: '#000' },
+      width: { default: 0.01 },
+      path: {
+        default: [
+          { x: -0.5, y: 0, z: 0 },
+          { x: 0.5, y: 0, z: 0 }
+        ]
+  
+        // Deserialize path in the form of comma-separated vec3s: `0 0 0, 1 1 1, 2 0 3`.
+        // parse: function (value) {
+        //   return value.split(',').map(coordinates.parse);
+        // },
+  
+        // Serialize array of vec3s in case someone does setAttribute('line', 'path', [...]).
+        // stringify: function (data) {
+        //   return data.map(coordinates.stringify).join(',');
+        // }
+      }
+    },
+    
+    update: function () {
+      var material = new MeshLineMaterial({
+            color: new THREE.Color(this.data.color), //this.data.color
+            lineWidth: this.data.width
+      });
+  
+      var geometry = new THREE.Geometry();
+      this.data.path.forEach(function (vec3) {
+        geometry.vertices.push(
+          new THREE.Vector3(vec3.x, vec3.y, vec3.z)
+        );
+      });
+  
+     let line = new MeshLine();
+      line.setGeometry( geometry );
+
+//new THREE.Line(geometry, material)
+
+      this.el.setObject3D('mesh', new THREE.Mesh( line.geometry, material ));
+    },
+    
+    remove: function () {
+      this.el.removeObject3D('mesh');
+    }
+  });
+
+
+AFRAME.registerComponent('gizmo', {
+
+    schema: {
+        mode: { default: 'translate' }
+      },
+
+    update: function (old) {
+        let modes = ['translate', 'rotate', 'scale'];
+        if (!this.gizmo) {
+            let newMode = modes.filter(el => {
+                return el == this.data.mode
+            })
+            if (newMode.length !== 0) {
+            this.mode = this.data.mode
+            this.transformControls.setMode(this.mode)
+            }
+        }
+    },
+
+    init: function () {
+        let self = this
+        this.mode = this.data.mode
+        let activeCamera = document.querySelector('#avatarControl').getObject3D('camera');
+        let renderer = this.el.sceneEl.renderer;
+
+        this.transformControls = new THREE.TransformControls(activeCamera, renderer.domElement);
+
+        this.transformControls.attach( this.el.object3D);
+        this.el.sceneEl.setObject3D('control-'+this.el.id,  this.transformControls);
+
+        this.transformControls.addEventListener('change', function (evt) {
+           // console.log('changed');
+            var object = self.transformControls.object;
+            if (object === undefined) {
+              return;
+            }
+
+            var transformMode = self.transformControls.getMode();
+            switch (transformMode) {
+              case 'translate':
+              vwf_view.kernel.setProperty(object.el.id, 'position', 
+              [object.position.x, object.position.y, object.position.z] )  
+           
+                break;
+              case 'rotate':
+              vwf_view.kernel.setProperty(object.el.id, 'rotation', 
+              [THREE.Math.radToDeg(object.rotation.x), THREE.Math.radToDeg(object.rotation.y), THREE.Math.radToDeg(object.rotation.z)] )  
+              
+                break;
+              case 'scale':
+              vwf_view.kernel.setProperty(object.el.id, 'scale', 
+              [object.scale.x, object.scale.y, object.scale.z] )
+               
+                break;
+            }
+            
+            //vwf_view.kernel.fireEvent(evt.detail.target.id, "clickEvent")
+      });
+    },
+
+    remove: function () {
+        this.transformControls.detach();
+        this.el.sceneEl.removeObject3D('control-'+this.el.id);
+       
+      },
+
+    tick: function (t) {
+        this.transformControls.update();
+    }
+
+  });
+
+
+
+AFRAME.registerComponent('cursor-listener', {
+    init: function () {
+        this.el.addEventListener('click', function (evt) {
+            console.log('I was clicked at: ', evt.detail.intersection.point);
+            let cursorID = 'cursor-avatar-'+ vwf_view.kernel.moniker();
+            if (evt.detail.cursorEl.id.includes(vwf_view.kernel.moniker())) {
+                 vwf_view.kernel.fireEvent(evt.detail.target.id, "clickEvent")
+            }
+            
+            //vwf_view.kernel.fireEvent(evt.detail.target.id, "clickEvent")
+      });
+    }
+  });
+
+AFRAME.registerComponent('raycaster-listener', {
+    init: function () {
+
+        let self = this;
+        this.intersected = false;
+        this.casters = {}
+
+      this.el.addEventListener('raycaster-intersected', function (evt) {
+
+        if (evt.detail.el.nodeName == 'A-CURSOR') {
+            //console.log('CURSOR was intersected at: ', evt.detail.intersection.point);
+
+        } else {
+            if (self.intersected) { 
+                
+
+            } else {
+                console.log('I was intersected at: ', evt.detail.intersection.point);
+                vwf_view.kernel.fireEvent(evt.detail.target.id, "intersectEvent")
+            }
+          
+            self.casters[evt.detail.el.id] = evt.detail.el;
+            self.intersected = true;
+        }
+        
+      });
+
+      this.el.addEventListener('raycaster-intersected-cleared', function (evt) {
+
+
+        if (evt.detail.el.nodeName == 'A-CURSOR') {
+            //console.log('CURSOR was intersected at: ', evt.detail.intersection.point);
+
+        } else {
+            if (self.intersected) { 
+                console.log('Clear intersection');
+                if (Object.entries(self.casters).length == 1 && (self.casters[evt.detail.el.id] !== undefined))
+                {
+                    vwf_view.kernel.fireEvent(evt.detail.target.id, "clearIntersectEvent")
+            }
+                delete self.casters[evt.detail.el.id]
+            } else {}
+        
+            self.intersected = false;
+        }
+
+        
+
+      });
+
+
+    }
+  });
+
+AFRAME.registerComponent('envmap', {
+
+    /**
+     * Creates a new THREE.ShaderMaterial using the two shaders defined
+     * in vertex.glsl and fragment.glsl.
+     */
+    init: function () {
+        const data = this.data;
+
+        //this.applyToMesh();
+        this.el.addEventListener('model-loaded', () => this.applyToMesh());
+    },
+    /**
+     * Update the ShaderMaterial when component data changes.
+     */
+    update: function () {
+
+    },
+
+    getEnvMap: function () {
+
+        var path = './assets/textures/skybox2/';
+        var format = '.jpg';
+        var urls = [
+            path + 'px' + format, path + 'nx' + format,
+            path + 'py' + format, path + 'ny' + format,
+            path + 'pz' + format, path + 'nz' + format
+        ];
+
+        envMap = new THREE.CubeTextureLoader().load(urls);
+        envMap.format = THREE.RGBFormat;
+        return envMap;
+
+    },
+
+    /**
+     * Apply the material to the current entity.
+     */
+    applyToMesh: function () {
+
+        const mesh = this.el.getObject3D('mesh');
+        //var scene = mesh;
+        var envMap = this.getEnvMap();
+
+
+        mesh.traverse(function (node) {
+
+            if (node.material) {
+
+                node.material.side = THREE.BackSide;
+                node.material.needsUpdate = true;
+                //side = THREE.DoubleSide; break;
+
+            }
+
+        });
+
+        mesh.traverse(function (node) {
+
+            if (node.material && (node.material.isMeshStandardMaterial ||
+                (node.material.isShaderMaterial && node.material.envMap !== undefined))) {
+
+                node.material.envMap = envMap;
+                node.material.needsUpdate = true;
+
+
+            }
+
+        });
+
+        // const mesh = this.el.getObject3D('mesh');
+        // if (mesh) {
+        //   mesh.material = this.material;
+        // }
+
+    },
+    /**
+     * On each frame, update the 'time' uniform in the shaders.
+     */
+    tick: function (t) {
+
+    }
+})

+ 0 - 609
support/client/lib/vwf/model/aframe/addon/monument-app.js

@@ -1,609 +0,0 @@
-if (typeof AFRAME === 'undefined') {
-    throw new Error('Component attempted to register before AFRAME was available.');
-}
-
-AFRAME.registerComponent('linepath', {
-    schema: {
-      color: { default: '#000' },
-      width: { default: 0.01 },
-      path: {
-        default: [
-          { x: -0.5, y: 0, z: 0 },
-          { x: 0.5, y: 0, z: 0 }
-        ]
-  
-        // Deserialize path in the form of comma-separated vec3s: `0 0 0, 1 1 1, 2 0 3`.
-        // parse: function (value) {
-        //   return value.split(',').map(coordinates.parse);
-        // },
-  
-        // Serialize array of vec3s in case someone does setAttribute('line', 'path', [...]).
-        // stringify: function (data) {
-        //   return data.map(coordinates.stringify).join(',');
-        // }
-      }
-    },
-    
-    update: function () {
-      var material = new MeshLineMaterial({
-            color: new THREE.Color(this.data.color), //this.data.color
-            lineWidth: this.data.width
-      });
-  
-      var geometry = new THREE.Geometry();
-      this.data.path.forEach(function (vec3) {
-        geometry.vertices.push(
-          new THREE.Vector3(vec3.x, vec3.y, vec3.z)
-        );
-      });
-  
-     let line = new MeshLine();
-      line.setGeometry( geometry );
-
-//new THREE.Line(geometry, material)
-
-      this.el.setObject3D('mesh', new THREE.Mesh( line.geometry, material ));
-    },
-    
-    remove: function () {
-      this.el.removeObject3D('mesh');
-    }
-  });
-
-
-AFRAME.registerComponent('gizmo', {
-
-    schema: {
-        mode: { default: 'translate' }
-      },
-
-    update: function (old) {
-        let modes = ['translate', 'rotate', 'scale'];
-        if (!this.gizmo) {
-            let newMode = modes.filter(el => {
-                return el == this.data.mode
-            })
-            if (newMode.length !== 0) {
-            this.mode = this.data.mode
-            this.transformControls.setMode(this.mode)
-            }
-        }
-    },
-
-    init: function () {
-        let self = this
-        this.mode = this.data.mode
-        let activeCamera = document.querySelector('#avatarControl').getObject3D('camera');
-        let renderer = this.el.sceneEl.renderer;
-
-        this.transformControls = new THREE.TransformControls(activeCamera, renderer.domElement);
-
-        this.transformControls.attach( this.el.object3D);
-        this.el.sceneEl.setObject3D('control-'+this.el.id,  this.transformControls);
-
-        this.transformControls.addEventListener('change', function (evt) {
-           // console.log('changed');
-            var object = self.transformControls.object;
-            if (object === undefined) {
-              return;
-            }
-
-            var transformMode = self.transformControls.getMode();
-            switch (transformMode) {
-              case 'translate':
-              vwf_view.kernel.setProperty(object.el.id, 'position', 
-              [object.position.x, object.position.y, object.position.z] )  
-           
-                break;
-              case 'rotate':
-              vwf_view.kernel.setProperty(object.el.id, 'rotation', 
-              [THREE.Math.radToDeg(object.rotation.x), THREE.Math.radToDeg(object.rotation.y), THREE.Math.radToDeg(object.rotation.z)] )  
-              
-                break;
-              case 'scale':
-              vwf_view.kernel.setProperty(object.el.id, 'scale', 
-              [object.scale.x, object.scale.y, object.scale.z] )
-               
-                break;
-            }
-            
-            //vwf_view.kernel.fireEvent(evt.detail.target.id, "clickEvent")
-      });
-    },
-
-    remove: function () {
-        this.transformControls.detach();
-        this.el.sceneEl.removeObject3D('control-'+this.el.id);
-       
-      },
-
-    tick: function (t) {
-        this.transformControls.update();
-    }
-
-  });
-
-
-
-AFRAME.registerComponent('cursor-listener', {
-    init: function () {
-        this.el.addEventListener('click', function (evt) {
-            console.log('I was clicked at: ', evt.detail.intersection.point);
-            let cursorID = 'cursor-avatar-'+ vwf_view.kernel.moniker();
-            if (evt.detail.cursorEl.id.includes(vwf_view.kernel.moniker())) {
-                 vwf_view.kernel.fireEvent(evt.detail.target.id, "clickEvent")
-            }
-            
-            //vwf_view.kernel.fireEvent(evt.detail.target.id, "clickEvent")
-      });
-    }
-  });
-
-AFRAME.registerComponent('raycaster-listener', {
-    init: function () {
-
-        let self = this;
-        this.intersected = false;
-        this.casters = {}
-
-      this.el.addEventListener('raycaster-intersected', function (evt) {
-
-        if (evt.detail.el.nodeName == 'A-CURSOR') {
-            //console.log('CURSOR was intersected at: ', evt.detail.intersection.point);
-
-        } else {
-            if (self.intersected) { 
-                
-
-            } else {
-                console.log('I was intersected at: ', evt.detail.intersection.point);
-                vwf_view.kernel.fireEvent(evt.detail.target.id, "intersectEvent")
-            }
-          
-            self.casters[evt.detail.el.id] = evt.detail.el;
-            self.intersected = true;
-        }
-        
-      });
-
-      this.el.addEventListener('raycaster-intersected-cleared', function (evt) {
-
-
-        if (evt.detail.el.nodeName == 'A-CURSOR') {
-            //console.log('CURSOR was intersected at: ', evt.detail.intersection.point);
-
-        } else {
-            if (self.intersected) { 
-                console.log('Clear intersection');
-                if (Object.entries(self.casters).length == 1 && (self.casters[evt.detail.el.id] !== undefined))
-                {
-                    vwf_view.kernel.fireEvent(evt.detail.target.id, "clearIntersectEvent")
-            }
-                delete self.casters[evt.detail.el.id]
-            } else {}
-        
-            self.intersected = false;
-        }
-
-        
-
-      });
-
-
-    }
-  });
-
-AFRAME.registerComponent('envmap', {
-
-    /**
-     * Creates a new THREE.ShaderMaterial using the two shaders defined
-     * in vertex.glsl and fragment.glsl.
-     */
-    init: function () {
-        const data = this.data;
-
-        //this.applyToMesh();
-        this.el.addEventListener('model-loaded', () => this.applyToMesh());
-    },
-    /**
-     * Update the ShaderMaterial when component data changes.
-     */
-    update: function () {
-
-    },
-
-    getEnvMap: function () {
-
-        var path = './assets/textures/skybox2/';
-        var format = '.jpg';
-        var urls = [
-            path + 'px' + format, path + 'nx' + format,
-            path + 'py' + format, path + 'ny' + format,
-            path + 'pz' + format, path + 'nz' + format
-        ];
-
-        envMap = new THREE.CubeTextureLoader().load(urls);
-        envMap.format = THREE.RGBFormat;
-        return envMap;
-
-    },
-
-    /**
-     * Apply the material to the current entity.
-     */
-    applyToMesh: function () {
-
-        const mesh = this.el.getObject3D('mesh');
-        //var scene = mesh;
-        var envMap = this.getEnvMap();
-
-
-        mesh.traverse(function (node) {
-
-            if (node.material) {
-
-                node.material.side = THREE.BackSide;
-                node.material.needsUpdate = true;
-                //side = THREE.DoubleSide; break;
-
-            }
-
-        });
-
-        mesh.traverse(function (node) {
-
-            if (node.material && (node.material.isMeshStandardMaterial ||
-                (node.material.isShaderMaterial && node.material.envMap !== undefined))) {
-
-                node.material.envMap = envMap;
-                node.material.needsUpdate = true;
-
-
-            }
-
-        });
-
-        // const mesh = this.el.getObject3D('mesh');
-        // if (mesh) {
-        //   mesh.material = this.material;
-        // }
-
-    },
-    /**
-     * On each frame, update the 'time' uniform in the shaders.
-     */
-    tick: function (t) {
-
-    }
-})
-
-
-AFRAME.registerComponent('avatarbvh0', {
-
-    /**
-     * Creates a new THREE.ShaderMaterial using the two shaders defined
-     * in vertex.glsl and fragment.glsl.
-     */
-    init: function () {
-        let skeletonHelper;
-        let self = this;
-        this.clock = new THREE.Clock();
-
-
-
-        let loader = new THREE.BVHLoader();
-        loader.load("./assets/walk.bvh", function (result) {
-
-            skeletonHelper = new THREE.SkeletonHelper(result.skeleton.bones[0]);
-            skeletonHelper.skeleton = result.skeleton; // allow animation mixer to bind to SkeletonHelper directly
-
-            //var material = new THREE.LineBasicMaterial( { vertexColors: THREE.VertexColors, depthTest: false, depthWrite: false, transparent: true } );
-
-            skeletonHelper.material.depthTest = true;
-            skeletonHelper.material.lineWidth = 10.0;
-            skeletonHelper.material.depthWrite = true;
-            skeletonHelper.material.transparent = false;
-            skeletonHelper.material.flatShading = true;
-
-            var boneContainer = new THREE.Group();
-            boneContainer.add(result.skeleton.bones[0]);
-
-            self.el.setObject3D('skeletonHelper', skeletonHelper);
-            self.el.setObject3D('mesh', boneContainer);
-            //scene.add( skeletonHelper );
-            // scene.add( boneContainer );
-
-            // play animation
-            self.mixer = new THREE.AnimationMixer(skeletonHelper);
-            self.mixer.clipAction(result.clip).setEffectiveWeight(1.0).play();
-
-        });
-
-    },
-    /**
-     * Update the ShaderMaterial when component data changes.
-     */
-    update: function () {
-
-    },
-
-
-
-    tick: function (t) {
-        var delta = this.clock.getDelta();
-
-        if (this.mixer) this.mixer.update(delta);
-    }
-})
-
-
-AFRAME.registerComponent('avatarbvh', {
-    
-    
-        init: function () {
-    
-            let helper;
-            let self = this;
-            this.clock = new THREE.Clock();
-
-            console.log(this.el.object3D);
-            this.el.addEventListener('model-loaded', function (evt) {
-
-                const model = evt.detail.model
-                console.log(model);
-
-                // let loader = new THREE.BVHLoader();
-                // loader.load("./assets/walk.bvh", function (bvh) {
-
-                //     console.log(model);
-                //      self.mixer = new THREE.AnimationMixer(model.children[0].children[0]);
-                // self.mixer.clipAction(bvh.clip).setEffectiveWeight(1.0).play();
-
-                // })
-
-
-
-                //console.log(evt);
-                self.mixer = new THREE.AnimationMixer(model);
-                self.mixer.clipAction(model.animations[0]).setEffectiveWeight(1.0).play();
-
-            })
-
-            
-
-            let loader = new THREE.BVHLoader();
-            loader.load("./assets/walk.bvh", function (bvh) {
-
-
-
-                const mesh = self.el.object3D;
-                //mesh.material.skinning = true;
-                
-                // mesh.updateMatrixWorld();
-                // mesh.skeleton.calculateInverses();   
-                // mesh.normalizeSkinWeights ()
-                
-                // See example from THREE.Skeleton for the armSkeleton
-
-
-                // var rootBone = bvh.skeleton.bones[0]
-                // mesh.add( rootBone );
-            
-                
-                
-                // mesh.bind( bvh.skeleton );
-                // skeletonHelper = new THREE.SkeletonHelper(mesh);
-
-                // self.mixer = new THREE.AnimationMixer(mesh );
-                // self.mixer.clipAction(bvh.clip).setEffectiveWeight(1.0).play();
-
-            })
-
-        },
-    
-        update: function () {
-        },
-    
-        tick: function (t) {
-
-            var delta = this.clock.getDelta();
-            // update skeletal animcation
-            if (this.mixer){
-            this.mixer.update(delta)
-            }
-
-        }
-    })
-
-
-AFRAME.registerComponent('avatarbvh_best', {
-
-    /**
-     * Creates a new THREE.ShaderMaterial using the two shaders defined
-     * in vertex.glsl and fragment.glsl.
-     */
-
-    createBones: function (object, jsonBones) {
-        /* adapted from the THREE.SkinnedMesh constructor */
-        // create bone instances from json bone data
-        const bones = jsonBones.map(gbone => {
-            bone = new THREE.Bone()
-            bone.name = gbone.name
-            bone.position.fromArray(gbone.pos)
-            bone.quaternion.fromArray(gbone.rotq)
-            if (gbone.scl !== undefined) bone.scale.fromArray(gbone.scl)
-            return bone
-        })
-        // add bone instances to the root object
-        jsonBones.forEach((gbone, index) => {
-            if (gbone.parent !== -1 && gbone.parent !== null && bones[gbone.parent] !== undefined) {
-                bones[gbone.parent].add(bones[index])
-            } else {
-               // object.add(bones[index])
-            }
-        })
-        return bones
-    },
-
-    createSkinnedMesh: function (mesh, skeleton) {
-        // create SkinnedMesh from static mesh geometry and swap it in the scene graph
-        const skinnedMesh = new THREE.SkinnedMesh(mesh.geometry, mesh.material)
-        skinnedMesh.castShadow = true
-        skinnedMesh.receiveShadow = true
-        // bind to skeleton
-        skinnedMesh.bind(skeleton)
-        // swap mesh for skinned mesh
-        //mesh.parent.add(skinnedMesh)
-       // mesh.parent.remove(mesh)
-        return skinnedMesh
-    },
-
-    init: function () {
-        let helper;
-        let self = this;
-        this.clock = new THREE.Clock();
-
-
-        let loader = new THREE.BVHLoader();
-        loader.load("./assets/walk.bvh", function (bvh) {
-
-           // skeletonHelper = new THREE.SkeletonHelper(result.skeleton.bones[0]);
-           // skeletonHelper.skeleton = result.skeleton; // allow animation mixer to bind to SkeletonHelper directly
-
-           self.bvhData = bvh;
-
-         new THREE.GLTFLoader().load("./assets/av2/avatar.gltf", result => {
-             let scene = result
-
-             
-             const mesh = new THREE.SkinnedMesh(
-                result,
-                new THREE.MeshPhongMaterial()
-            );
-            mesh.material.skinning = true;
-            //group.add( mesh );
-            
-            mesh.updateMatrixWorld();
-            mesh.skeleton.calculateInverses();   
-            mesh.normalizeSkinWeights ()
-            
-            // See example from THREE.Skeleton for the armSkeleton
-            var rootBone = self.bvhData.skeleton.bones[0]
-            mesh.add( rootBone );
-            
-            // Bind the skeleton to the mesh
-            
-            
-            mesh.bind( self.bvhData.skeleton );
-            
-            
-            
-            skeletonHelper = new THREE.SkeletonHelper(mesh);
-            //skeletonHelper.skeleton = self.bvhData.skeleton;
-            
-            //var boneContainer = new THREE.Group();
-            // boneContainer.add(mesh);
-            
-            // mesh.bind(self.bvhData.skeleton, mesh.matrixWorld)
-            
-            // const bones = self.createBones(result, result.bones)
-            
-            // mesh.updateMatrixWorld()
-            // let skeleton = new THREE.Skeleton(bones, undefined, true)
-            // mesh.bind(skeleton, mesh.matrixWorld)
-            
-            // let body = self.createSkinnedMesh(mesh, skeleton)
-            // skeletonHelper = new THREE.SkeletonHelper(body);
-            
-            
-            self.el.setObject3D('mesh', mesh)
-            //self.el.setObject3D('mesh',boneContainer)
-            
-            self.mixer = new THREE.AnimationMixer(mesh );
-            self.mixer.clipAction(self.bvhData.clip).setEffectiveWeight(1.0).play();
-            //self.mixer.clipAction( mesh.geometry.animations[ 0 ] ).play();
-            
-
-
-        //     const mesh = new THREE.SkinnedMesh(
-        //         result,
-        //         new THREE.MeshPhongMaterial()
-        //     );
-        //     mesh.material.skinning = true;
-        //     self.el.setObject3D('mesh', mesh)
-        //     self.mixer = new THREE.AnimationMixer( mesh );
-        //     self.mixer.clipAction( mesh.geometry.animations[ 0 ] ).play();
-
-
-            // find armature root object.
-            // This is a group instance with a userData.bones property
-            // containing bones in the same format as would normally be 
-            // found on a SkinnedMesh Geometry instance
-            
-            //let root = scene.getObjectByName('Human')
-
-            // manually create bones and parent them to the root object
-            // NOTE: This is normally done in the SkinnedMesh constructor
-           
-           // const bones = self.createBones(root, root.userData.bones)
-           // const bones = bvh.skeleton.bones[0]
-
-            // Important! must update world matrices before creating skeleton instance
-            //result.updateMatrixWorld()
-            // create skeleton
-            // let skeleton = new THREE.Skeleton(bones, undefined, true)
-            // const skinnedMesh = new THREE.SkinnedMesh(result, null)
-            // skinnedMesh.bind(skeleton, mesh.matrixWorld)
-            // create SkinnedMesh from static mesh geometry
-           // let body = self.createSkinnedMesh(root.getObjectByName('Body'), skeleton)
-            
-           //let body = self.createSkinnedMesh(result, skeleton)
-
-            //let clothes = self.createSkinnedMesh(root.getObjectByName('Clothes'), skeleton)
-            // create skeleton helper
-        //     self.helper = new THREE.SkeletonHelper(root)
-        //     scene.add(self.helper)
-        //   self.el.setObject3D('mesh', scene)
-          // self.el.setObject3D('mesh', clothes)
-            //self.el.setObject3D('skeletonHelper', self.helper)
-
-
-            // scene.add( helper )
-            // skeletal animation
-          // self.mixer = new THREE.AnimationMixer(root);
-          //self.mixer.clipAction(scene.animations[0]).play()
-         // self.mixer.clipAction(bvh.clip).setEffectiveWeight(1.0).play();
-         // let action = self.mixer.clipAction( scene.animations[ 0 ] ).play();
-          //action.enabled = true;
-
-        // self.mixer = new THREE.AnimationMixer(self.helper);
-        // self.mixer.clipAction(scene.animations[0]).play();
-
-            // start
-            //animate()
-        })
-
-    })
-
-    },
-    /**
-     * Update the ShaderMaterial when component data changes.
-     */
-    update: function () {
-
-    },
-
-
-
-    tick: function (t) {
-
-        var delta = this.clock.getDelta();
-        // update skeletal animcation
-        if (this.mixer){
-        this.mixer.update(delta)
-        // update skeleton helper
-        //this.helper.update()
-        }
-
-    }
-})

+ 0 - 26
support/client/lib/vwf/model/aframeComponent.js

@@ -936,27 +936,6 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
         return aframeObj;
     }
 
-
-    // function addNodeToHierarchy(node) {
-
-
-    //                 if (self.state.nodes[node.parentID] !== undefined) {
-    //                     var parent = self.state.nodes[node.parentID];
-
-
-    //                         if (parent.children === undefined) {
-    //                             parent.children = [];
-    //                         }
-    //                         parent.children.push(node.ID);
-    //                         console.info( "Adding child: " + node.ID );
-
-
-    //                 }
-
-
-    //         }
-
-
     function addNodeToHierarchy(node) {
 
         if (node.aframeObj) {
@@ -968,12 +947,7 @@ define(["module", "vwf/model", "vwf/utility"], function (module, model, utility)
                         parent.children = [];
                     }
                     parent.children.push(node.ID);
-                    //console.info( "Adding child: " + childID + " to " + nodeID );
-                    //node.aframeObj.setAttribute(node.componentName, {});
 
-                  //  console.info("Adding child: " + node.ID);
-                  
-                    //parent.aframeObj.appendChild(node.aframeObj);
                 }
             }