# HG changeset patch # User Robert McIntyre # Date 1326985755 25200 # Node ID 61d9c0e8d188e82817802eb92032de26149280d8 # Parent f89f0b9ed2fee8451cb9332cb9760770b3167fc3 don't create useless touch-maps, add some eye stuf diff -r f89f0b9ed2fe -r 61d9c0e8d188 assets/Models/creature1/try-again.blend Binary file assets/Models/creature1/try-again.blend has changed diff -r f89f0b9ed2fe -r 61d9c0e8d188 org/test-creature.org --- a/org/test-creature.org Thu Jan 19 07:22:40 2012 -0700 +++ b/org/test-creature.org Thu Jan 19 08:09:15 2012 -0700 @@ -410,8 +410,6 @@ (-> (.getAdditionalRenderState) (.setDepthTest false)))) - - (defn colorful [] (.getChild (worm-model) "worm-21")) @@ -628,40 +626,69 @@ limit 0.1 ;;results (CollisionResults.) ] - (fn [node] - (let [sensor-origins - (map - #(map (partial local-to-world geo) %) - feeler-coords) - triangle-normals - (map (partial get-ray-direction geo) - tris) - rays - (flatten - (map (fn [origins norm] - (map #(doto (Ray. % norm) + (if (empty? (touch-topology geo)) + nil + (fn [node] + (let [sensor-origins + (map + #(map (partial local-to-world geo) %) + feeler-coords) + triangle-normals + (map (partial get-ray-direction geo) + tris) + rays + (flatten + (map (fn [origins norm] + (map #(doto (Ray. % norm) (.setLimit limit)) origins)) - sensor-origins triangle-normals))] - (vector - (touch-topology geo) - (vec - (for [ray rays] - (do - (let [results (CollisionResults.)] - (.collideWith node ray results) - (let [touch-objects - (set - (filter #(not (= geo %)) - (map #(.getGeometry %) results)))] - (if (> (count touch-objects) 0) - 1 0))))))))))) + sensor-origins triangle-normals))] + (vector + (touch-topology geo) + (vec + (for [ray rays] + (do + (let [results (CollisionResults.)] + (.collideWith node ray results) + (let [touch-objects + (set + (filter #(not (= geo %)) + (map #(.getGeometry %) results)))] + (if (> (count touch-objects) 0) + 1 0)))))))))))) + +(defn touch [#^Node pieces] + (filter (comp not nil?) + (map enable-touch + (filter #(isa? (class %) Geometry) + (node-seq pieces))))) +;; human eye transmits 62kb/s to brain Bandwidth is 8.75 Mb/s +;; http://en.wikipedia.org/wiki/Retina -(defn touch [#^Node pieces] - (map enable-touch - (filter #(isa? (class %) Geometry) - (node-seq pieces)))) +(defn test-eye [] + (.getChild (worm-model) "worm-11")) + + +(defn retina-sensor-image + "Return a map of pixel selection functions to BufferedImages + describing the distribution of light-sensitive components on this + geometry's surface. Each function creates an integer from the rgb + values found in the pixel. :red, :green, :blue, :gray are already + defined as extracting the red green blue and average components + respectively." + [#^Geometry eye] + (if-let [eye-map (meta-data eye "eye")] + (map-vals + #(ImageToAwt/convert + (.getImage (.loadTexture (asset-manager) %)) + false false 0) + (read-string + eye-map)))) + + + + (defn debug-window "creates function that offers a debug view of sensor data"