changeset 253:e23717fefc7f

added video and source listing to touch
author Robert McIntyre <rlm@mit.edu>
date Mon, 13 Feb 2012 22:52:00 -0700
parents f1a74d23e7e4
children 91654978c8e0
files org/touch.org
diffstat 1 files changed, 102 insertions(+), 36 deletions(-) [+]
line wrap: on
line diff
     1.1 --- a/org/touch.org	Mon Feb 13 20:19:34 2012 -0700
     1.2 +++ b/org/touch.org	Mon Feb 13 22:52:00 2012 -0700
     1.3 @@ -497,6 +497,7 @@
     1.4  I'll use a new creature --- a simple cube which has touch sensors
     1.5  evenly distributed along each of its sides.
     1.6  
     1.7 +#+name: test-touch-0
     1.8  #+begin_src clojure
     1.9  (in-ns 'cortex.test.touch)
    1.10  
    1.11 @@ -504,10 +505,7 @@
    1.12    (load-blender-model "Models/test-touch/touch-cube.blend"))
    1.13  #+end_src
    1.14  
    1.15 -#+begin_html
    1.16 -<br>
    1.17 -#+end_html
    1.18 -
    1.19 +** The Touch Cube
    1.20  #+begin_html
    1.21  <div class="figure">
    1.22  <center>
    1.23 @@ -527,12 +525,10 @@
    1.24  #+caption: The distribution of feelers along the touch-cube. The colors of the faces are irrelevant; only the white pixels specify feelers.
    1.25  [[../images/touch-profile.png]]
    1.26  
    1.27 +#+name: test-touch-1
    1.28  #+begin_src clojure
    1.29  (in-ns 'cortex.test.touch)
    1.30  
    1.31 -(import com.aurellem.capture.Capture)
    1.32 -(import java.io.File)
    1.33 -
    1.34  (defn test-basic-touch
    1.35    ([] (test-basic-touch false))
    1.36    ([record?]
    1.37 @@ -576,6 +572,7 @@
    1.38  #+end_html
    1.39  
    1.40  ** Generating the Basic Touch Video
    1.41 +#+name: magick4
    1.42  #+begin_src clojure
    1.43  (ns cortex.video.magick4
    1.44    (:import java.io.File)
    1.45 @@ -622,42 +619,82 @@
    1.46  
    1.47  * Adding Touch to the Worm
    1.48  
    1.49 -#+name: test-touch
    1.50 +#+name: test-touch-2
    1.51  #+begin_src clojure
    1.52 -(ns cortex.test.touch
    1.53 -  (:use (cortex world util sense body touch))
    1.54 -  (:use cortex.test.body))
    1.55 -
    1.56 -(cortex.import/mega-import-jme3)
    1.57 +(in-ns 'cortex.test.touch)
    1.58  
    1.59  (defn test-touch 
    1.60    ([] (test-touch false))
    1.61 -([record?]
    1.62 -  (let [the-worm (doto (worm) (body!))
    1.63 -        touch (touch! the-worm)
    1.64 -        touch-display (view-touch)]
    1.65 -    (world (nodify [the-worm (floor)])
    1.66 -           standard-debug-controls
    1.67 -           
    1.68 -           (fn [world]
    1.69 -             (if record? 
    1.70 -               (Capture/captureVideo 
    1.71 -                 world
    1.72 -                 (File. "/home/r/proj/cortex/render/worm-touch/main-view/")))
    1.73 -             (speed-up world)
    1.74 -             (light-up-everything world))
    1.75 +  ([record?]
    1.76 +     (let [the-worm (doto (worm) (body!))
    1.77 +           touch (touch! the-worm)
    1.78 +           touch-display (view-touch)]
    1.79 +       (world
    1.80 +        (nodify [the-worm (floor)])
    1.81 +        standard-debug-controls
    1.82 +        
    1.83 +        (fn [world]
    1.84 +          (if record? 
    1.85 +            (Capture/captureVideo 
    1.86 +             world
    1.87 +             (File. "/home/r/proj/cortex/render/worm-touch/main-view/")))
    1.88 +          (speed-up world)
    1.89 +          (light-up-everything world))
    1.90  
    1.91 -           (fn [world tpf]
    1.92 -             (touch-display 
    1.93 -              (map #(% (.getRootNode world)) touch)
    1.94 -(if record? 
    1.95 -(File. "/home/r/proj/cortex/render/worm-touch/touch/"))
    1.96 -
    1.97 -)))))
    1.98 +        (fn [world tpf]
    1.99 +          (touch-display 
   1.100 +           (map #(% (.getRootNode world)) touch)
   1.101 +           (if record? 
   1.102 +             (File. "/home/r/proj/cortex/render/worm-touch/touch/"))))))))
   1.103  #+end_src
   1.104  
   1.105 +** Worm Touch Demonstration 
   1.106 +#+begin_html
   1.107 +<div class="figure">
   1.108 +<center>
   1.109 +<video controls="controls" width="550">
   1.110 +  <source src="../video/worm-touch.ogg" type="video/ogg"
   1.111 +	  preload="none" poster="../images/aurellem-1280x480.png" />
   1.112 +</video>
   1.113 +</center>
   1.114 +<p>The worm responds to touch.</p>
   1.115 +</div>
   1.116 +#+end_html
   1.117  
   1.118  
   1.119 +** Generating the Worm Touch Video
   1.120 +#+name: magick5
   1.121 +#+begin_src clojure
   1.122 +(ns cortex.video.magick5
   1.123 +  (:import java.io.File)
   1.124 +  (:use clojure.contrib.shell-out))
   1.125 +
   1.126 +(defn images [path]
   1.127 +  (sort (rest (file-seq (File. path)))))
   1.128 +
   1.129 +(def base "/home/r/proj/cortex/render/worm-touch/")
   1.130 +
   1.131 +(defn pics [file]
   1.132 +  (images (str base file)))
   1.133 +
   1.134 +(defn combine-images []
   1.135 +  (let [main-view (pics "main-view")
   1.136 +        touch (pics "touch/0")
   1.137 +        targets (map
   1.138 +                 #(File. (str base "out/" (format "%07d.png" %)))
   1.139 +                 (range 0 (count main-view)))]
   1.140 +    (dorun
   1.141 +     (pmap
   1.142 +      (comp
   1.143 +       (fn [[ main-view touch target]]
   1.144 +         (println target)
   1.145 +         (sh "convert"
   1.146 +             main-view 
   1.147 +             touch     "-geometry" "+0+0" "-composite"
   1.148 +             target))
   1.149 +       (fn [& args] (map #(.getCanonicalPath %) args)))
   1.150 +       main-view touch targets))))
   1.151 +#+end_src
   1.152  
   1.153  * Headers 
   1.154  
   1.155 @@ -678,7 +715,25 @@
   1.156    (:import (com.jme3.math Triangle Vector3f Vector2f Ray Matrix4f)))
   1.157  #+end_src   
   1.158  
   1.159 +#+name: test-touch-header
   1.160 +#+begin_src clojure
   1.161 +(ns cortex.test.touch
   1.162 +  (:use (cortex world util sense body touch))
   1.163 +  (:use cortex.test.body)
   1.164 +  (:import com.aurellem.capture.Capture)
   1.165 +  (:import java.io.File)
   1.166 +  (:import (com.jme3.math Vector3f ColorRGBA)))
   1.167 +#+end_src
   1.168 +
   1.169  * Source Listing
   1.170 +  - [[../src/cortex/touch.clj][cortex.touch]]
   1.171 +  - [[../src/cortex/test/touch.clj][cortex.test.touch]]
   1.172 +  - [[../src/cortex/video/magick4.clj][cortex.video.magick4]]
   1.173 +  - [[../src/cortex/video/magick5.clj][cortex.video.magick5]]
   1.174 +#+html: <ul> <li> <a href="../org/touch.org">This org file</a> </li> </ul>
   1.175 +  - [[http://hg.bortreb.com ][source-repository]]
   1.176 +
   1.177 +
   1.178  * Next
   1.179  
   1.180  
   1.181 @@ -695,11 +750,22 @@
   1.182  <<visualization>>
   1.183  #+end_src
   1.184  
   1.185 +#+begin_src clojure :tangle ../src/cortex/test/touch.clj 
   1.186 +<<test-touch-header>>
   1.187 +<<test-touch-0>>
   1.188 +<<test-touch-1>>
   1.189 +<<test-touch-2>>
   1.190 +#+end_src
   1.191  
   1.192 -#+begin_src clojure :tangle ../src/cortex/test/touch.clj 
   1.193 -<<test-touch>>
   1.194 +#+begin_src clojure :tangle ../src/cortex/video/magick4.clj
   1.195 +<<magick4>>
   1.196  #+end_src
   1.197  
   1.198 +#+begin_src clojure :tangle ../src/cortex/video/magick5.clj
   1.199 +<<magick5>>
   1.200 +#+end_src
   1.201 +
   1.202 +
   1.203  
   1.204  
   1.205