screenToWorld: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "(\|[pr][0-9]+ *= *[^- ]*) *- *S([a-z ])" to "$1 - s$2")
No edit summary
Line 15: Line 15:
|gr1= Positions
|gr1= Positions


|descr= Returns the position on landscape ([[Position#PositionAGL|PositionAGL]]) corresponding to the given point on screen (in UI coordinates).
|descr= Returns the position on landscape ([[Position#PositionAGL|PositionAGL]]) corresponding to the given point on screen (in UI coordinates).  
{{Feature | informative | This command performs an intersection with the ground/water surface along a ray from the camera along the [[screenToWorldVector]] vector. In other words, it's similar to doing:
<sqf>
private _p1 = AGLtoASL positionCameraToWorld [0,0,0];                  // camera position ASL
private _vector = screenToWorldVector _screenPos;                      // "aim" vector
private _p2 = _p1 vectorAdd (_vector vectorMultiply viewDistance * 2); // terminal position is 2 x view distance
ASLtoAGL terrainIntersectAtASL [_p1, _p2]
</sqf>
}}


|s1= [[screenToWorld]] screen
|s1= [[screenToWorld]] screen
Line 22: Line 30:


|r1= [[Array]] - [[Position#PositionAGL|PositionAGL]], world position on surface [x,y,0]
|r1= [[Array]] - [[Position#PositionAGL|PositionAGL]], world position on surface [x,y,0]
|s2= camera [[screenToWorld]] position
|p21= camera: [[Object]] - camera object
|p22= position: [[Array]] - screen position [x,y] (see [[SafeZone]] for more info)
|r2= [[Array]] - [[Position#PositionAGL|PositionAGL]], world position on surface [x,y,0]


|x1= <sqf>_wPos = screenToWorld [0.5, 0.5];</sqf>
|x1= <sqf>_wPos = screenToWorld [0.5, 0.5];</sqf>


|seealso= [[SafeZone]] [[worldToScreen]]
|seealso= [[SafeZone]] [[worldToScreen]] [[screenToWorldVector]]
}}
}}

Revision as of 21:56, 5 June 2024

Hover & click on the images for description

Description

Description:
Returns the position on landscape (PositionAGL) corresponding to the given point on screen (in UI coordinates).
This command performs an intersection with the ground/water surface along a ray from the camera along the screenToWorldVector vector. In other words, it's similar to doing:
private _p1 = AGLtoASL positionCameraToWorld [0,0,0]; // camera position ASL private _vector = screenToWorldVector _screenPos; // "aim" vector private _p2 = _p1 vectorAdd (_vector vectorMultiply viewDistance * 2); // terminal position is 2 x view distance ASLtoAGL terrainIntersectAtASL [_p1, _p2]
Groups:
Positions

Syntax

Syntax:
screenToWorld screen
Parameters:
screen: Array - screen position [x,y] (see SafeZone for more info)
Return Value:
Array - PositionAGL, world position on surface [x,y,0]

Alternative Syntax

Syntax:
camera screenToWorld position
Parameters:
camera: Object - camera object
position: Array - screen position [x,y] (see SafeZone for more info)
Return Value:
Array - PositionAGL, world position on surface [x,y,0]

Examples

Example 1:
_wPos = screenToWorld [0.5, 0.5];

Additional Information

See also:
SafeZone worldToScreen screenToWorldVector

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note