changeset 464:8bf4bb02ed05

sleeeeeep.
author Robert McIntyre <rlm@mit.edu>
date Fri, 28 Mar 2014 00:42:42 -0400
parents 6d55ac73bc6f
children e4104ce9105c
files org/body.org thesis/cortex.org thesis/images/Eve.jpg
diffstat 3 files changed, 61 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
     1.1 --- a/org/body.org	Thu Mar 27 20:46:36 2014 -0400
     1.2 +++ b/org/body.org	Fri Mar 28 00:42:42 2014 -0400
     1.3 @@ -33,7 +33,9 @@
     1.4  Instead of using the human-like "deformable bag of bones" approach, I
     1.5  decided to base my body plans on the robot EVE from the movie wall-E. 
     1.6  
     1.7 -#+caption: EVE from the movie WALL-E.  This body plan turns out to be much better suited to my purposes than a more human-like one.
     1.8 +#+caption: EVE from the movie WALL-E.  This body plan turns out to
     1.9 +#+caption: be much better suited to my purposes than a more 
    1.10 +#+caption: human-like one.
    1.11  [[../images/Eve.jpg]]
    1.12  
    1.13  EVE's body is composed of several rigid components that are held
     2.1 --- a/thesis/cortex.org	Thu Mar 27 20:46:36 2014 -0400
     2.2 +++ b/thesis/cortex.org	Fri Mar 28 00:42:42 2014 -0400
     2.3 @@ -485,14 +485,70 @@
     2.4          pipeline. The engine was not built to serve any particular
     2.5          game but is instead meant to be used for any 3D game. 
     2.6  
     2.7 -
     2.8     I chose jMonkeyEngine3 because it because it had the most features
     2.9 -   out of all the open projects I looked at, and because I could then
    2.10 +   out of all the free projects I looked at, and because I could then
    2.11     write my code in clojure, an implementation of =LISP= that runs on
    2.12     the JVM.
    2.13  
    2.14  ** Bodies are composed of segments connected by joints
    2.15  
    2.16 +   For the simple worm-like creatures I will use later on in this
    2.17 +   thesis, I could define a simple API in =CORTEX= that would allow
    2.18 +   one to create boxes, spheres, etc., and leave that API as the sole
    2.19 +   way to create creatures. However, for =CORTEX= to truly be useful
    2.20 +   for other projects, it needs to have a way to construct complicated
    2.21 +   creatures. If possible, it would be nice to leverage work that has
    2.22 +   already been done by the community of 3D modelers, or at least
    2.23 +   enable people who are talented at moedling but not programming to
    2.24 +   design =CORTEX= creatures. 
    2.25 +
    2.26 +   Therefore, I use Blender, a free 3D modeling program, as the main
    2.27 +   way to create creatures in =CORTEX=. However, the creatures modeled
    2.28 +   in Blender must also be simple to simulate in jMonkeyEngine3's game
    2.29 +   engine, and must also be easy to rig with =CORTEX='s senses. 
    2.30 +   
    2.31 +   While trying to find a good compromise for body-design, one option
    2.32 +   I ultimately rejected is to use blender's [[http://wiki.blender.org/index.php/Doc:2.6/Manual/Rigging/Armatures][armature]] system. The idea
    2.33 +   would have been to define a mesh which describes the creature's
    2.34 +   entire body. To this you add an skeleton which deforms this
    2.35 +   mesh. This technique is used extensively to model humans and create
    2.36 +   realistic animations. It is hard to use for my purposes because it
    2.37 +   is difficult to update the creature's Physics Collision Mesh in
    2.38 +   tandem with its Geometric Mesh under the influence of the
    2.39 +   armature. Without this the creature will not be able to grab things
    2.40 +   in its environment, and it won't be able to tell where its physical
    2.41 +   body is by using its eyes. Also, armatures do not specify any
    2.42 +   rotational limits for a joint, making it hard to model elbows,
    2.43 +   shoulders, etc.
    2.44 +
    2.45 +   Instead of using the human-like ``deformable bag of bones''
    2.46 +   approach, I decided to base my body plans on multiple solid objects
    2.47 +   that are connected by joints, inspired by the robot =EVE= from the
    2.48 +   movie WALL-E.
    2.49 +   
    2.50 +   #+caption: =EVE= from the movie WALL-E.  This body plan turns 
    2.51 +   #+caption: out to be much better suited to my purposes than a more 
    2.52 +   #+caption: human-like one.
    2.53 +   [[./images/Eve.jpg]]
    2.54 +
    2.55 +   =EVE='s body is composed of several rigid components that are held
    2.56 +   together by invisible joint constraints. This is what I mean by
    2.57 +   ``eve-like''. The main reason that I use eve-style bodies is for
    2.58 +   efficiency, and so that there will be correspondence between the
    2.59 +   AI's vision and the physical presence of its body. Each individual
    2.60 +   section is simulated by a separate rigid body that corresponds
    2.61 +   exactly with its visual representation and does not change.
    2.62 +   Sections are connected by invisible joints that are well supported
    2.63 +   in jMonkeyEngine3. Bullet, the physics backend for jMonkeyEngine3,
    2.64 +   can efficiently simulate hundreds of rigid bodies connected by
    2.65 +   joints. Sections do not have to stay as one piece forever; they can
    2.66 +   be dynamically replaced with multiple sections to simulate
    2.67 +   splitting in two. This could be used to simulate retractable claws
    2.68 +   or =EVE='s hands, which are able to coalesce into one object in the
    2.69 +   movie.
    2.70 +   
    2.71 +   
    2.72 +
    2.73  ** Eyes reuse standard video game components
    2.74  
    2.75  ** Hearing is hard; =CORTEX= does it right
     3.1 Binary file thesis/images/Eve.jpg has changed