Closed

Create a 3D navigational mesh for pathfinding/finding

This project received 10 bids from talented freelancers with an average bid price of $4117 USD.

Get free quotes for a project like this
Employer working
Project Budget
N/A
Total Bids
10
Project Description

I am currently leveraging Recast + Detour to enable 2D navigation in a game world. I now need a solution for navigation/pathfinding in a 3D world.

I'm looking for a developer that has the expertise to take input geometry (normals/indices/vertices) and create an algorithm/solution that can get from (x1, y1, z1) to (x2, y2, z2) through flying in this same world.

Input Geometry:
• You can download a sample continent here: [url removed, login to view] (991MB) An example file is here: [url removed, login to view]
• Each file in the above archive represents a tile of size [url removed, login to view] x [url removed, login to view] x Z (Z is variable, you can calculate this)
• The entire continent is within the range: ([url removed, login to view], [url removed, login to view], Z) to ([url removed, login to view], [url removed, login to view], Z)

Requirements:
1. Console application to: Convert geometry into navigational mesh files (the output file will match the name of the input, but with a different extension)
a. A settings header file must exist to allow easy changing of parameters (such as a walkable slope angle, etc...)
2. Console application to: Read in a continent (mesh files created by your first solution) in a thread safe fashion, store the information in memory and calculate a path between 2 points
a. It is very important that the calculating from A to B is thread-safe. After your work is complete, I will use a client/server model with multiple threads to handle calculations from A to B.
b. It needs to be fast, calculating a route needs to happen in less than 50ms
c. See the attached document ([url removed, login to view]) for more detailed requirements on the CalculateRoute function, there are more

You can design the solution, but I assume your mesh files would be a data structure storing information on what is traversable/flyable, potentially by storing flood fills, etc… Then you will know what areas are flyable vs. not flyable due to things like trees, mountains, buildings, water, etc…

Note: I'm not the expert here, at all, that's why I'm trying to find someone :) So I'm open to whatever solution you think would work.

I just need an end state where I can load in the nav mesh files created from the input geometry and get a path from A to B (using something like A*).

I'm using [url removed, login to view] for 2D pathing right now, feel free to leverage this an adapt if you’d like. Here is an example of what it returns (for 2D pathing): [url removed, login to view]

I can provide the 2D solution as a starting point, but the mesh generation is a combination of objective-C and C++, and requires you to own a mac to run it (as I created a GUI).

Summary of Requirements:
• Written in C++ (to be compiled on unix, do not use windows specific code)
• 2 Console applications
o 1 to create mesh files
o 1 to calculate A to B by reading in the above mesh files (thread safe) in less than 50ms

Looking to make some money?

  • Set your budget and the timeframe
  • Outline your proposal
  • Get paid for your work

Hire Freelancers who also bid on this project

    • Forbes
    • The New York Times
    • Time
    • Wall Street Journal
    • Times Online