From BlenderWiki

Jump to: navigation, search
Note: This is an archived version of the Blender Developer Wiki. The current and active wiki is available on wiki.blender.org.

GSoC 2010 proposal for Recast&Detour integration

Name

Nick Samarin

Email

nicks1987@bigmir.net

Synopsis

Recast&Detour is open-source solution for pathfinding in modern computer games (http://code.google.com/p/recastnavigation/). Recast library is a toolset for constructing navigation meshes from raw level geometry. Detour library processes pathfinding queries based on navigation meshes.The goal of the project is to integrate this solution in blender.

Benefits to Blender

This project will benefit for game developers who prototype game using Blender Game Engine or use Blender as level editor. It enables:

  • automatic creation navigation meshes at every study of constructing level geomtry without any export routine. So artists or game designers can easily build navmeshes, tweak parameters to check whether level geometry allows to travel freely across scene.
  • edit navigation meshes to achieve required covering of scene, resolving problem areas after automatic navmesh generation. It allows using blender as navmesh editor.
  • using Detour library as pathfinder in Blender Game Engine (executing collision and pathfinding queries)
  • using basic steering behaviours for agents in Blender Game Engine
  • using pathfinding for creating large-scale crowd animation scenes


Deliverables

  • Tool for automatic creation, editing and export navigation meshes.
  • Component for Blender Game Engine for executing pathfinding and collision queries, support of steering behaviours
  • Example AI using the pathfinding and steering to navigate from a start point to a goal location
  • Documentation and tutorials.

Project Details

Project consists of two parts:

First (part A), integration of Detour library into Blender Game Engine to enable process following queries:

  • pathfinding queries (find shortes path between start and goal node)
  • collision queries (raycast between two points, find distance to nearest wall)

Important part of navigation for intelligent agent is path following, i.e. advancement along calculated path. It can be executed as one of steering behaviours - the driving force motivating the agent movement. Also steering provides following basic behaviors: Seek, Flee, Arrive, Obstacle Avoidance, Wall Avoidance.

Second (part B), integration of Recast library (navigation mesh constructing toolset for games) means creating a tool with follows functions:

  • set parameters for navigation mesh generation process
  • automatically generate navigation mesh
  • import and export navigation mesh
  • represents navigation mesh as standart mesh structure to provide the ability to edit navmesh (create, delete and modify triangles of navigation mesh)


Project Schedule

April, 26 - May, 24 : learning blender codebase
May, 24 - July, 1 : Basic Detour integration in Blender(working on part A)
July, 1 - July, 12 : Creating documentation, tutorial and demo(working on part A)
July, 20 - August, 9 : Recast integration (working on part B)
August,9 - August, 15 : final testing, code scrubbing , finishing of writing documentations.

Bio

I'm 22 years old. I'm a Master student of "Insitute of Applied System Analysis" in National Technical University of Ukraine 'Kyiv Polytechnic Institute'. I've a strong knowledge of mathematics and C++ and 3 years experience as programmer in game industry. I worked for creation RPG game and addons for Torque Game engines. My primary interest in game development is AI, and specifically pathfinding. For 6 month I took part in contributing to the AI Sandbox (AI project from AiGameDev.com under mentoring of Alex J. Champandard). The several of my task have deal with pathfinding system. Now I'm finishing my master thesis, which also is devoted to pathfinding. I'm a big fan of Mikko Mononen's Recast&Detour Project and I think it would be great to integrate it in blender. Unfortunately, I don't familirized with Blender very well. My experience is limitted by modeling some trivial models and export it to Torque engine. But I think I have enough skills to look into Blender codebase and successfuly implement this project.