Page 1 of 1

Project Idea: User-Model Driven Evolved Geometry

Posted: Sat Mar 24, 2007 8:36 pm
by ichijoji
I thought I'd post this here in the hope of getting some feedback before I put in a real application. Any and all feedback is appreciated.

Abstract
I want to create a toolset that would be packaged with Ogre in order to allow the procedural creation of sets of models from simple seed models. This software would use an interactively evolutionary method to build a model of the modeler's design method for a particular style of model and use that user model to evolve geometry of that style from many seed models.

Background
Content creation represents a massive amount of the time, money, and people put into a game project. To reduce this cost, I propose a method for procedurally creating geometry that asks the user to describe the creation method, then recreates it on many other seed models. By doing this the cost of creating models can be reduced while still preserving the style of the creator.

Using interactive evolution in order to create subjectively good interfaces, art, and music is well established. However, the problem with these approaches is that they require a large amount of interaction with the user, requiring the user to rate each generated sample in the population. In order to prevent this from becoming a problem, and to allow the creation of stylistically similar models from different seeds, the user will only be required to rate generated models until a user model can be created that accurately recreates the user's preferences.

Method
The most important and difficult design decision in this project, as in any project using evolutionary computation, is how to represent potential solutions. I propose to represent models as trees of primitive objects such as wings, guns, and thrusters, with modifications to these primitives such as offset, rotation, scaling, and basic material settings being evolved into each node and propagated down the tree. This method will allow fast evolution while still allowing for visually distinct styles of models.

The second question is how to represent the user model. In order to do this, I intend to use a neuro-evolution method such as ESP or NEAT, that is, I propose to use a technique that uses a genetic algorithm to evolve the structure and weights of a neural net. The input to this network would be various statistically gathered properties about the model such as the most prevalent components and properties, variety in components and properties, and many other values. This network would then be trained to solve the classification problem of producing the same fitness for each sample model that the user produces. Once the model is sufficiently trained, it will contain a model of the user's modelling process that can then be used to procedurally generate models of the same style from different seeds.

This project will represent a lot of work in combining these elements into a working system, but since most of the components (except for the statistics gathering and tree-based evolution) are already implemented, I am confident that it will fit into the time limits set out by Google.

About Me
I am an undergrad research assistant in the Evolutionary Computing Systems Lab at the University of Nevada, Reno USA. I have held this position for 1.5 years and have worked during that time on a naval training simulation that is currently being used by the US Navy Surface Warfare Officers' School. Within this project, I have been actively involved with the research, development, and application of several cutting edge ai-techniques including co-evolved influence map based players, concurrent behavioral controllers, and case injected genetic algorithms.

As for my experience with Ogre, I am currently developing a space-themed online real time strategy game as part of a four person team as a senior project (screenshots and other info available at: www.smorts.novembear.com). For this project I have developed a game engine from the ground up that uses several libraries including Ogre for graphics rendering, Twisted for networking, and boost::python for scripting support among many other features. I am very enthusiastic about this project and believe that I can contribute to the overall Ogre project by using my expertise in AI.

Posted: Sat Mar 24, 2007 9:12 pm
by ichijoji
Schedules are mandatory.

Schedule
Based on the 10 week period between the Google timeline's official programming period of May 28 - August 20. I will be able to work on this project before then, but going by the official timeline this time will be spent collaborating with my mentor and the community to come to some sort of design before actually attempting implementation.

Week 1:
Using my game engine, implement the basic tree rendering system. This should be very easy as I already have support for parent-child relationships between scene nodes and transformations, though the material setting support will have to be implemented (by specifying the material to be used to render the model from the script). From my senior project, I will also have geometry ready to use for this step.

Weeks 2-5:
Implement the user modelling component. I already have implementations of the most common neuroevolution methods, so this will simply mean developing a user interface that generates models and allows the user to rate them. The program will then need to take those classification examples and evolve a network against them to accomplish a high classification rate. This evolution method will have to be tuned and adapted to accomplish this task.

Weeks 6-9:
Implement the evolution system using existing user models. This will mean developing an effectively evolvable represenation for trees of primitives and a decoding mechanism for that genotypic representation. While I have previously implemented many genetic algorithms, I have not previously written one that evolves a tree structure such as this. This means that I will have to do some research in order to find effective systems for evolving tree structures and implement and tune a new GA.

Week 10:
This week will be used to gather, fine tune, and publish results.

Posted: Sun Mar 25, 2007 8:39 am
by tuan kuranes
Interesting project.

Seems a bit too much "research" oriented, meaning I'm not sure it will end in any finished/usable/code tool at the end of summer.

Doing the research, the coding, the ogre integration and the documentation of such a tool, not speaking of debugging and user feedback modifications and community involvement will not fit in a single summer... unless a lot of preliminary work is already done (code samples/documenation/existing papers/existing implementations)

Posted: Sun Mar 25, 2007 9:07 pm
by ichijoji
There's actually very little research going on here. Most of the components, including the user modeling system, renderer, and interface are already done. The only outstanding components are statistics gathering about models and tree-based evolution. For tree-based evolution, I have access to people experienced with its implementations as well as their and others' papers on the topic which I am currently researching for my GA class. The statistics gathering system is the component that I'm most unsure how to write, but hopefully I can use the graphical and 3d math expertise of this community to leverage some competence in that area. After that, all I need to do is integration which should be very easy using my existing component-based engine.