# HG changeset patch # User Robert McIntyre # Date 1395981762 14400 # Node ID 8bf4bb02ed0520470648376892df6056308f76b0 # Parent 6d55ac73bc6fc7860f3943588fa202ed8be942e1 sleeeeeep. diff -r 6d55ac73bc6f -r 8bf4bb02ed05 org/body.org --- a/org/body.org Thu Mar 27 20:46:36 2014 -0400 +++ b/org/body.org Fri Mar 28 00:42:42 2014 -0400 @@ -33,7 +33,9 @@ Instead of using the human-like "deformable bag of bones" approach, I decided to base my body plans on the robot EVE from the movie wall-E. -#+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. +#+caption: EVE from the movie WALL-E. This body plan turns out to +#+caption: be much better suited to my purposes than a more +#+caption: human-like one. [[../images/Eve.jpg]] EVE's body is composed of several rigid components that are held diff -r 6d55ac73bc6f -r 8bf4bb02ed05 thesis/cortex.org --- a/thesis/cortex.org Thu Mar 27 20:46:36 2014 -0400 +++ b/thesis/cortex.org Fri Mar 28 00:42:42 2014 -0400 @@ -485,14 +485,70 @@ pipeline. The engine was not built to serve any particular game but is instead meant to be used for any 3D game. - I chose jMonkeyEngine3 because it because it had the most features - out of all the open projects I looked at, and because I could then + out of all the free projects I looked at, and because I could then write my code in clojure, an implementation of =LISP= that runs on the JVM. ** Bodies are composed of segments connected by joints + For the simple worm-like creatures I will use later on in this + thesis, I could define a simple API in =CORTEX= that would allow + one to create boxes, spheres, etc., and leave that API as the sole + way to create creatures. However, for =CORTEX= to truly be useful + for other projects, it needs to have a way to construct complicated + creatures. If possible, it would be nice to leverage work that has + already been done by the community of 3D modelers, or at least + enable people who are talented at moedling but not programming to + design =CORTEX= creatures. + + Therefore, I use Blender, a free 3D modeling program, as the main + way to create creatures in =CORTEX=. However, the creatures modeled + in Blender must also be simple to simulate in jMonkeyEngine3's game + engine, and must also be easy to rig with =CORTEX='s senses. + + While trying to find a good compromise for body-design, one option + I ultimately rejected is to use blender's [[http://wiki.blender.org/index.php/Doc:2.6/Manual/Rigging/Armatures][armature]] system. The idea + would have been to define a mesh which describes the creature's + entire body. To this you add an skeleton which deforms this + mesh. This technique is used extensively to model humans and create + realistic animations. It is hard to use for my purposes because it + is difficult to update the creature's Physics Collision Mesh in + tandem with its Geometric Mesh under the influence of the + armature. Without this the creature will not be able to grab things + in its environment, and it won't be able to tell where its physical + body is by using its eyes. Also, armatures do not specify any + rotational limits for a joint, making it hard to model elbows, + shoulders, etc. + + Instead of using the human-like ``deformable bag of bones'' + approach, I decided to base my body plans on multiple solid objects + that are connected by joints, inspired by the robot =EVE= from the + movie WALL-E. + + #+caption: =EVE= from the movie WALL-E. This body plan turns + #+caption: out to be much better suited to my purposes than a more + #+caption: human-like one. + [[./images/Eve.jpg]] + + =EVE='s body is composed of several rigid components that are held + together by invisible joint constraints. This is what I mean by + ``eve-like''. The main reason that I use eve-style bodies is for + efficiency, and so that there will be correspondence between the + AI's vision and the physical presence of its body. Each individual + section is simulated by a separate rigid body that corresponds + exactly with its visual representation and does not change. + Sections are connected by invisible joints that are well supported + in jMonkeyEngine3. Bullet, the physics backend for jMonkeyEngine3, + can efficiently simulate hundreds of rigid bodies connected by + joints. Sections do not have to stay as one piece forever; they can + be dynamically replaced with multiple sections to simulate + splitting in two. This could be used to simulate retractable claws + or =EVE='s hands, which are able to coalesce into one object in the + movie. + + + ** Eyes reuse standard video game components ** Hearing is hard; =CORTEX= does it right diff -r 6d55ac73bc6f -r 8bf4bb02ed05 thesis/images/Eve.jpg Binary file thesis/images/Eve.jpg has changed