screenToWorld: Difference between revisions

From Bohemia Interactive Community
(add. ArmA2 classification)
 
m (updated formatting)
 
(56 intermediate revisions by 11 users not shown)
Line 1: Line 1:
{{RV|type=command


[[Category:Scripting Commands ArmA2|{{uc:{{PAGENAME}}}}]]
|game1= arma2
|version1= 1.00
 
|game2= arma2oa
|version2= 1.50
 
|game3= tkoh
|version3= 1.00
 
|game4= arma3
|version4= 0.50
 
|gr1= Positions
 
|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, from the camera position along the [[screenToWorldDirection]] vector up to {{hl|viewDistance}} for terrain intersection and {{hl|2 * viewDistance}} for water intersection. In other words, it is similar to doing:
<sqf>
private _p1 = AGLToASL positionCameraToWorld [0, 0, 0]; // camera position ASL
private _vector = screenToWorldDirection _screenPos; // "aim" vector
private _p2 = _p1 vectorAdd (_vector vectorMultiply viewDistance * 2); // the ray does not go beyond 2 * view distance
ASLToAGL terrainIntersectAtASL [_p1, _p2]
</sqf>
}}
 
|s1= [[screenToWorld]] screen
 
|p1= screen: [[Array]] with [x, y] - screen position, see [[SafeZone]] for more information
* x: [[Number]]
* y: [[Number]]
 
|r1= [[Position#PositionAGL|PositionAGL]], world position on surface [x, y, 0]
 
|s2= camera [[screenToWorld]] position
 
|s2since= arma3 2.18
 
|p21= camera: [[Object]] - camera object
 
|p22= screen: [[Array]] with [x, y] - screen position, see [[SafeZone]] for more information
* x: [[Number]]
* y: [[Number]]
 
|r2= [[Position#PositionAGL|PositionAGL]], world position on surface [x,y,0]
 
|x1= <sqf>private _wPos = screenToWorld [0.5, 0.5];</sqf>
 
|x2= <sqf>private _wPos = _myCamera screenToWorld [0.5, 0.5]; // since {{arma3}} 2.18</sqf>
 
|seealso= [[SafeZone]] [[worldToScreen]] [[screenToWorldDirection]]
}}

Latest revision as of 18:38, 5 January 2026

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, from the camera position along the screenToWorldDirection vector up to viewDistance for terrain intersection and 2 * viewDistance for water intersection. In other words, it is similar to doing:
private _p1 = AGLToASL positionCameraToWorld [0, 0, 0]; // camera position ASL private _vector = screenToWorldDirection _screenPos; // "aim" vector private _p2 = _p1 vectorAdd (_vector vectorMultiply viewDistance * 2); // the ray does not go beyond 2 * view distance ASLToAGL terrainIntersectAtASL [_p1, _p2]
Groups:
Positions

Syntax

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

Alternative Syntax

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

Examples

Example 1:
private _wPos = screenToWorld [0.5, 0.5];
Example 2:
private _wPos = _myCamera screenToWorld [0.5, 0.5]; // since Arma 3 2.18

Additional Information

See also:
SafeZone worldToScreen screenToWorldDirection

Notes

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