# PVInstance

Roblox Engine API class from Roblox Studio 0.744.0.7441077 (version-7aaa6838d36c4448).

- Inherits from, nearest first: [Instance](https://rapi.sleaze.dev/classes/Instance.md), [Object](https://rapi.sleaze.dev/classes/Object.md)
- Subclasses: [BasePart](https://rapi.sleaze.dev/classes/BasePart.md), [Camera](https://rapi.sleaze.dev/classes/Camera.md), [Model](https://rapi.sleaze.dev/classes/Model.md)
- Tags: Not browsable, Not creatable
- Memory category: Instances
- HTML page: https://rapi.sleaze.dev/classes/PVInstance/
- Roblox documentation: https://create.roblox.com/docs/reference/engine/classes/PVInstance

Abstract class for all objects that have a physical location in the world.

## Properties

### Pivot Offset

```luau
PVInstance.Pivot Offset: CFrame
```

- Tags: Not replicated, Not scriptable

Editor-only property that displays and edits the pivot's [`CFrame`](https://rapi.sleaze.dev/index/types/CFrame.md) relative to the instance, moving only the pivot and leaving the instance in place.

### Origin

```luau
PVInstance.Origin: CFrame
```

- Tags: Not replicated, Not scriptable

Editor-only property that reads and sets the world [`CFrame`](https://rapi.sleaze.dev/index/types/CFrame.md) of the [`PVInstance`](https://rapi.sleaze.dev/classes/PVInstance.md)'s pivot, moving the entire instance when changed from the Studio Properties window.

## Methods

### GetPivot

```luau
PVInstance:GetPivot(): CFrame
```

- Tags: Thread safe, Simulation access

Gets the pivot of a [`PVInstance`](https://rapi.sleaze.dev/classes/PVInstance.md).

Returns: The world-space [`CFrame`](https://rapi.sleaze.dev/index/types/CFrame.md) of the instance's pivot.

### PivotTo

```luau
PVInstance:PivotTo(targetCFrame: CFrame)
```

- Tags: Simulation access

Transforms the [`PVInstance`](https://rapi.sleaze.dev/classes/PVInstance.md) along with all of its descendant `PVInstances` such that the pivot is now located at the specified [`CFrame`](https://rapi.sleaze.dev/index/types/CFrame.md).

Parameters:

- `targetCFrame`: The [`CFrame`](https://rapi.sleaze.dev/index/types/CFrame.md) that the [`PVInstance`](https://rapi.sleaze.dev/classes/PVInstance.md) pivot should equal after moving it.

## Inherited members

- From [Instance](https://rapi.sleaze.dev/classes/Instance.md): `Archivable`, `archivable`, `Attributes`, `AttributesReplicate`, `AttributesSerialize`, `HistoryId`, `Name`, `Parent`, `PredictionMode`, `PropertyStatusStudio`, `RobloxLocked`, `SerializedOverrides`, `SourceAssetId`, `Tags`, `UniqueId`, `numExpectedDirectChildren`, `DataCost`, `Capabilities`, `DefinesCapabilities`, `IsInSandbox`, `Sandboxed`, `AddTag`, `ClearAllChildren`, `Clone`, `Destroy`, `FindFirstAncestor`, `FindFirstAncestorOfClass`, `FindFirstAncestorWhichIsA`, `FindFirstChild`, `FindFirstChildOfClass`, `FindFirstChildWhichIsA`, `FindFirstDescendant`, `GetActor`, `GetAttribute`, `GetAttributeChangedSignal`, `GetAttributes`, `GetChildren`, `GetDebugId`, `GetDescendants`, `GetFullName`, `GetStyled`, `GetStyledPropertyChangedSignal`, `GetTags`, `HasTag`, `IsAncestorOf`, `IsDescendantOf`, `IsPropertyModified`, `QueryDescendants`, `RemoveTag`, `ResetPropertyToDefault`, `SetAttribute`, `WaitForChild`, `Remove`, `children`, `clone`, `destroy`, `findFirstChild`, `getChildren`, `isDescendantOf`, `remove`, `AncestryChanged`, `AttributeChanged`, `ChildAdded`, `ChildRemoved`, `DescendantAdded`, `DescendantRemoving`, `Destroying`, `StyledPropertiesChanged`, `childAdded`
- From [Object](https://rapi.sleaze.dev/classes/Object.md): `ClassName`, `className`, `GetPropertyChangedSignal`, `IsA`, `isA`, `Changed`
