Mercurial > cortex
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