• Advertisement

# Vision Raycasting

This topic is 1664 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

## Recommended Posts

I'm currently developing vision raycasting for FPS game, I have few questions:

1. How many ray is accurate to detect vision from a tank?

2. How many ray for each character?

3. Should I calculate the distance against EVERY model and create rays at each model if it's close enough?

4. If the model is a character the ray will start from his eyes, however, if it's a tank, from where the ray should start?

5. How do I determine the exact ray target? (rayTo = target.position) --> I don't think this is good enough

I want to create something efficient and at the same time with high performance.

Advertisement

Any advise? :)

#### Share this post

##### Share on other sites

1. How many ray is accurate to detect vision from a tank?

one from each station with an exterior view to each target in the station's arc of sight/fire within visible range. the type of tank will make a big difference. in a large WW1 tank, you might have 6 stations with exterior views, and FOVs of 30-45 degrees. in a newer tank, you might have something like a 90 degree FOV for the driver, a 30 degree FOV for the gunner, and a 360 degree FOV for the commander/spotter.

2. How many ray for each character?

one to each target in visual range. infantry has a 360 FOV.

3. Should I calculate the distance against EVERY model and create rays at each model if it's close enough?

that's what i do (sneak/stealth mode, fps/rpg game). but i only do the ray casting LOS/LOF (line of sight / line of fire) calculations if the player is in sneak mode (and undetected by hostiles).

4. If the model is a character the ray will start from his eyes, however, if it's a tank, from where the ray should start?

the visual orifice of the station. IE the driver's view slot in a WW2 tank, the persicope on top of the turret of a modern tank, the MG station's viewport on the side of a WW1 tank, etc.

5. How do I determine the exact ray target? (rayTo = target.position) --> I don't think this is good enough

for infantry, center to center may be good enough. to increase accuracy, you'd step up to something like checking 4 corners of a bounding box, or perhaps some type of bounding sphere type test. for tanks, if center to center isn't good enough (probably won't be), again you'd go BBox corners, etc. for a tank, bbox corners would be more accurate than bounding sphere.

with center to center vs bbox, almost half a target would be visible before the LOS/LOF test indicated so.

I want to create something efficient and at the same time with high performance.

by that i assume you mean accurate (hi performance) and fast (efficient).

accurate means bbox or the like. fast means...   well. write the code. if its not fast enough, then you optimize. of course, no harm with writing it with speed in mind from the get go... i think i just did a bressingham's kinda thing (step moving along a direction vector, checking for collisions with occluding objects/terrain).  speed was a concern, but i got it working ok. can't recall if i had to optimize. if so, must not have been much.

#### Share this post

##### Share on other sites

• Advertisement