# SetScreenToPanelSpaceFunction3D(Func<Vector2, Vector3>)

> Sets the function that handles the transformation from screen space to panel space. For overlay panels, this function returns the input value.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine.UIElements](/engine/6000.3/script-reference/unityengine/uielements.md)
* **Assembly:** UnityEngine.UIElementsModule

```csharp
public void SetScreenToPanelSpaceFunction3D(Func<Vector2, Vector3> screenToPanelSpaceFunction)
```

### Parameters

**** (\[Func\<Vector2, Vector3>]\(https\://learn.microsoft.com/dotnet/api/system.func-1)): The translation function. Set to `null` to revert to the default behavior.

### Remarks

If the panel's targetTexture is applied to 3D objects, use a function that raycasts against MeshColliders in the Scene. The function can first check whether the GameObject that the ray hits has a MeshRenderer with a shader that uses this panel's target texture. It can then return the transformed `RaycastHit.textureCoord` in the texture's pixel space. Return a coordinate outside the panel to skip incoming pointer events if the ray doesn't hit a valid target or location.

A non-zero z value should be returned when the element at the given screen coordinate contains 3-D transformations that make it overflow forward or backward out of the panel's surface. This z value is used by pointer events when converting between panel position and local position.
