University of Southern CaliforniaUSC
USC ICT TwitterUSC ICT FacebookUSC ICT YouTube

Collision and Navigation Mesh Ignored During Path Finding | General SmartBody Discussion | Forum

Avatar

Please consider registering
guest

sp_LogInOut Log In sp_Registration Register

Register | Lost password?
Advanced Search

— Forum Scope —




— Match —





— Forum Options —





Minimum search word length is 3 characters - maximum search word length is 84 characters

sp_Feed Topic RSS sp_TopicIcon
Collision and Navigation Mesh Ignored During Path Finding
March 10, 2016
1:21 pm
Avatar
Member
Members
Forum Posts: 26
Member Since:
September 16, 2015
sp_UserOfflineSmall Offline

Thank you for the useful library.

  • Currently using the latest SDK: SmartBodySDK-r6296-linux.tar.gz
  • Using a navigation mesh
  • Navigation mesh has a restricted walkable space - the steering grid is (20 x 20) with (1000 x 1000) cells
  • Using ChrBrad
  • Navigation mesh has been tested using holes
  • Navigation mesh has been tested using 3m pillars
  • Both holes and pillars are square with a minimum size of 1.25m and maximum of 2.5m

The scenario is a few characters are wandering around a mesh, avoiding each other and some obstacles.

A few issues have been observed:

  • During steering, when the character is walking around, on occasion a turn will take the character through the edge or corner of a pillar/hole where the space should be non-walkable.
  • When two characters come close enough to collide and are near non-walkable space, the avoidance paths taken can push one or both characters through the non-walkable space.
  • This also occurs near the edge of the navigation mesh. The steering grid boundaries are ignored and the character will move out of the grid space. There is an error message that occurs but the program freezes and exits at that point.
  1. How can these be resolved?
  2. Is it necessary to enable physics and/or collision to resolve these?
  3. Are pawns needed to take the place of the obstacles for collision detection and proper avoidance?

Thank you.

March 11, 2016
5:55 pm
Avatar
Admin
Forum Posts: 983
Member Since:
December 1, 2011
sp_UserOfflineSmall Offline

The steering doesn't handle collisions ; you need to add a collision handler for that.

The steering algorithm attempts to avoids objects that are in the path (whether moving or not moving), but since the movement doesn't match the steering exactly, it is possible that in avoiding one object, intersection with another object occurs.

Yes, pawns with a collision shape can be used as obstacles in the environment (you can go to View->Steer->All Steering to visualize the collision obstacles). The steering needs to be disabled/enabled when new collision objects are added.

March 15, 2016
11:19 am
Avatar
Member
Members
Forum Posts: 26
Member Since:
September 16, 2015
sp_UserOfflineSmall Offline

To clarify, at the moment the concern is when two people meet, their avoidance steering pushes them through a stationary collision object. As you mentioned, in this case the steering will be avoiding the person and may steer through an object.

Since having just collision pawns is not sufficient, is there an available example or any guidelines for creating a collision handler? The goal is to resolve the aforementioned circumstance. I found some mention of it in the User Guide PDF but I am curious if there are other resources or additional suggestions.

March 17, 2016
11:01 am
Avatar
Member
Members
Forum Posts: 26
Member Since:
September 16, 2015
sp_UserOfflineSmall Offline

Additionally, the steering path for the character to get from A to B is calculated and then executed as a BML locomotion command (e.g. execBML("<locomotion target=...")).

Would it be more effective to evaluate the path in increments, such as evaluating at each waypoint or every few meters, instead of completely ahead of time?

Thank you.

March 24, 2016
5:51 pm
Avatar
Admin
Forum Posts: 983
Member Since:
December 1, 2011
sp_UserOfflineSmall Offline

The steering does that to some extent. When you specify a target, you are instructing the steering to plot a path using the steering algorithm (the PPRAI algorithm as part of SteerSuite). You can also  tell SmartBody via BML to achieve a path via a set of waypoints like this:

 

<locomotion target="0 2 4 5 -2 7">

 

which will segment the path finding into three paths (0,2) (4,5) (-2,7), each of which is targeted by the steering algorithm. So you have some of that kind of control.

Ari

March 31, 2016
6:56 pm
Avatar
Member
Members
Forum Posts: 26
Member Since:
September 16, 2015
sp_UserOfflineSmall Offline
Awaiting Moderation

Forum Timezone: America/Los_Angeles

Top Posters:

jwwalker: 80

jyambao: 52

rbaral: 47

adiaz: 30

WargnierP: 29

lucky7456969: 28

mbarros: 28

avida.matt: 26

JonathanW: 24

laguerre: 23

Member Stats:

Guest Posters: 67

Members: 101752

Moderators: 3

Admins: 4

Forum Stats:

Groups: 1

Forums: 5

Topics: 462

Posts: 2407