StOneDOes Posted January 24, 2023 Share Posted January 24, 2023 There are some members of the NavAgent class that are useful but protected such as m_velocity would be ideal to have exposed by public function along with destination member. Also the ability to control the rate of which an agent must rotate before fully accelerating should be controllable. A larger value would give the object a larger turning circle, wheras a lower value or 0 would indicate that no actual rotation is required, but instead the model immediately faces the direction of the new destination and starts accelerating. If I can think of anything else I'll let you know but thats all for now Thanks 1 Quote Link to comment Share on other sites More sharing options...
Josh Posted January 24, 2023 Share Posted January 24, 2023 The parameters for nav agents can use are defined in DetourCrowd.h: /// Configuration parameters for a crowd agent. /// @ingroup crowd struct dtCrowdAgentParams { float radius; ///< Agent radius. [Limit: >= 0] float height; ///< Agent height. [Limit: > 0] float maxAcceleration; ///< Maximum allowed acceleration. [Limit: >= 0] float maxSpeed; ///< Maximum allowed speed. [Limit: >= 0] /// Defines how close a collision element must be before it is considered for steering behaviors. [Limits: > 0] float collisionQueryRange; float pathOptimizationRange; ///< The path visibility optimization range. [Limit: > 0] /// How aggresive the agent manager should be at avoiding collisions with this agent. [Limit: >= 0] float separationWeight; /// Flags that impact steering behavior. (See: #UpdateFlags) unsigned char updateFlags; /// The index of the avoidance configuration to use for the agent. /// [Limits: 0 <= value <= #DT_CROWD_MAX_OBSTAVOIDANCE_PARAMS] unsigned char obstacleAvoidanceType; /// The index of the query filter used by this agent. unsigned char queryFilterType; /// User defined data attached to the agent. void* userData; }; I don't think Detour actually has any concept of rotation. I think adjusting max acceleration is the only way to make a larger turning radius. My system just rotates thing in the direction they were last moving, with a smooth blend/transition between angles so they don't jitter. Quote My job is to make tools you love, with the features you want, and performance you can't live without. Link to comment Share on other sites More sharing options...
Josh Posted January 24, 2023 Share Posted January 24, 2023 Here are the obstacle avoidance parameters. I don't know what any of these do, I just use the default values: struct dtObstacleAvoidanceParams { float velBias; float weightDesVel; float weightCurVel; float weightSide; float weightToi; float horizTime; unsigned char gridSize; ///< grid unsigned char adaptiveDivs; ///< adaptive unsigned char adaptiveRings; ///< adaptive unsigned char adaptiveDepth; ///< adaptive }; Quote My job is to make tools you love, with the features you want, and performance you can't live without. Link to comment Share on other sites More sharing options...
Josh Posted January 24, 2023 Share Posted January 24, 2023 And I guess these are the update flags, although I have never used them: /// Crowd agent update flags. /// @ingroup crowd /// @see dtCrowdAgentParams::updateFlags enum UpdateFlags { DT_CROWD_ANTICIPATE_TURNS = 1, DT_CROWD_OBSTACLE_AVOIDANCE = 2, DT_CROWD_SEPARATION = 4, DT_CROWD_OPTIMIZE_VIS = 8, ///< Use #dtPathCorridor::optimizePathVisibility() to optimize the agent path. DT_CROWD_OPTIMIZE_TOPO = 16, ///< Use dtPathCorridor::optimizePathTopology() to optimize the agent path. }; Quote My job is to make tools you love, with the features you want, and performance you can't live without. Link to comment Share on other sites More sharing options...
StOneDOes Posted January 27, 2023 Author Share Posted January 27, 2023 Okay thank you for posting all this, I'll take a look into this and get back to you when I can. I'll be looking more to fine tune movement a bit later I guess, for now I'm trying to get the basics of each aspect of my framework down Quote Link to comment Share on other sites More sharing options...
Josh Posted January 27, 2023 Share Posted January 27, 2023 You can also look at Recast here and see if there are any features you think should be added to our engine: https://github.com/recastnavigation/recastnavigation Quote My job is to make tools you love, with the features you want, and performance you can't live without. Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.