Browse Source

morph test is working
fixed buffer geometry formatting

repsac 10 years ago
parent
commit
c01ba8a5d6

+ 1 - 1
utils/exporters/blender/addons/io_three/exporter/geometry.py

@@ -267,7 +267,7 @@ class Geometry(base_classes.BaseNode):
                 }
             else:
                 data[constants.ATTRIBUTES] = component_data
-            data.update({constants.METADATA: self.metadata}) 
+            data[constants.METADATA] = self.metadata 
             data[constants.NAME] = self[constants.NAME]
 
         return data 

+ 18 - 9
utils/exporters/blender/addons/io_three/exporter/scene.py

@@ -77,36 +77,45 @@ class Scene(base_classes.BaseScene):
         data = {}
         
         embed_anim = self.options.get(constants.EMBED_ANIMATION, True)
+        embed = self.options[constants.EMBED_GEOMETRY]
 
         compression = self.options.get(constants.COMPRESSION)
         extension = constants.EXTENSIONS.get(compression, 
             constants.EXTENSIONS[constants.JSON])
 
+        #@TODO: test this new logic
+        export_dir = os.path.dirname(self.filepath)
         for key, value in self.items():
-            embed = self.options[constants.EMBED_GEOMETRY]
-            if key == constants.GEOMETRIES and embed:
+            
+            if key == constants.GEOMETRIES:
                 geometries = []
                 for geometry in value:
+
+                    if not embed_anim:
+                        geometry.write_animation(export_dir)
+
+                    if embed:
+                        for each in value:
+                            geometries.append(each.copy())
+                        continue
+
                     geom_data = geometry.copy()
 
                     geo_type = geom_data[constants.TYPE].lower()
                     if geo_type == constants.GEOMETRY.lower():
-                        import sys;sys.exit(0)
                         geom_data.pop(constants.DATA)
+                    elif geo_type == constants.BUFFER_GEOMETRY.lower():
+                        geom_data.pop(constants.ATTRIBUTES)
+                        geom_data.pop(constants.METADATA)
 
-                    dirname = os.path.dirname(self.filepath)
                     url = 'geometry.%s%s' % (geometry.node, extension)
-                    geometry_file = os.path.join(dirname, url)
+                    geometry_file = os.path.join(export_dir, url)
 
                     geometry.write(filepath=geometry_file)
                     geom_data[constants.URL] = os.path.basename(url)
 
                     geometries.append(geom_data)
 
-                    if not embed_anim:
-                        geom_dir = os.path.dirname(geometry_file)
-                        geometry.write_animation(geom_dir)
-
                 data[key] = geometries
             elif isinstance(value, list):
                 data[key] = []

BIN
utils/exporters/blender/extras/io_three.xmind


+ 22 - 3
utils/exporters/blender/tests/scripts/js/review.js

@@ -1,18 +1,28 @@
 var scene, renderer, camera, container, animation;
-
+var hasMorph = false;
+var prevTime = Date.now();
 var clock = new THREE.Clock();
 
 function render() {
         
     renderer.render( scene, camera );
-      
+ 
+    if ( hasMorph ) {
+
+        var time = Date.now();
+
+        animation.update( time - prevTime );
+
+        prevTime = time;
+
+    }     
 }
 
 function animate() {
 
     requestAnimationFrame( animate );
 
-    if ( animation != null ) {
+    if ( animation !== null ) {
 
         var delta = clock.getDelta();
         THREE.AnimationHandler.update( delta );
@@ -121,6 +131,15 @@ function loadGeometry( data, url ) {
 
         mesh = new THREE.Mesh( data.geometry, material );
 
+        if ( data.geometry.morphTargets !== undefined ) {
+
+            console.log( 'loading morph targets' );
+            data.materials[ 0 ].morphTargets = true;
+            animation = new THREE.MorphAnimation( mesh );
+            hasMorph = true;
+
+        }
+
     }
 
     setupScene();

+ 1 - 1
utils/exporters/blender/tests/scripts/test_geometry_morph_targets.bash

@@ -4,5 +4,5 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
 source "$DIR/setup_test_env.bash"
 
 blender --background $BLEND/anim.blend --python $PYSCRIPT -- \
-    $JSON --vertices --faces --morphTargets
+    $JSON --vertices --faces --morphTargets --embedAnimation
 makereview $@ --tag $(tagname)

+ 1 - 1
utils/exporters/blender/tests/scripts/test_scene_buffer_geometry.bash

@@ -5,5 +5,5 @@ source "$DIR/setup_test_env.bash"
 
 blender --background $BLEND/cubeA.blend --python $PYSCRIPT -- \
     $JSON --vertices --normals --geometryType BufferGeometry \
-    --scene --materials #--embedGeometry 
+    --scene --materials --embedGeometry 
 makereview $@ --tag $(tagname)

+ 9 - 0
utils/exporters/blender/tests/scripts/test_scene_buffer_geometry_noembed.bash

@@ -0,0 +1,9 @@
+#!/bin/bash
+
+DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+source "$DIR/setup_test_env.bash"
+
+blender --background $BLEND/cubeA.blend --python $PYSCRIPT -- \
+    $JSON --vertices --normals --geometryType BufferGeometry \
+    --scene --materials
+makereview $@ --tag $(tagname)