Reference API Roblox

Engine API

Website

Related

Reference API Roblox

WorldModel

Extends limited physics for its children on to a parent ViewportFrame.

Member index 1

HistoryMember
732UseWorkspaceCollisionGroups: bool
inherited from WorldRoot
648ArePartsTouchingOthers(partList: Instances, overlapIgnored: float = 0.000199999995): bool
638Blockcast(cframe: CFrame, size: Vector3, direction: Vector3, params: RaycastParams = RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}): RaycastResult?
648BulkMoveTo(partList: Instances, cframeList: Array, eventMode: BulkMoveMode = FireAllEvents): null
552CacheCurrentTerrain(id: string, center: Vector3, radius: float): string
552ClearCachedTerrain(id: string): bool
731FindPartOnRay(ray: Ray, ignoreDescendantsInstance: Instance = Instance, terrainCellsAreCubes: bool = false, ignoreWater: bool = false): Tuple
731FindPartOnRayWithIgnoreList(ray: Ray, ignoreDescendantsTable: Instances, terrainCellsAreCubes: bool = false, ignoreWater: bool = false): Tuple
731FindPartOnRayWithWhitelist(ray: Ray, whitelistDescendantsTable: Instances, ignoreWater: bool = false): Tuple
731FindPartsInRegion3(region: Region3, ignoreDescendantsInstance: Instance = Instance, maxParts: int = 20): Instances
731FindPartsInRegion3WithIgnoreList(region: Region3, ignoreDescendantsTable: Instances, maxParts: int = 20): Instances
731FindPartsInRegion3WithWhiteList(region: Region3, whitelistDescendantsTable: Instances, maxParts: int = 20): Instances
678GetAwakeContactNormals(): Array
678GetAwakeContactParts(): Array
678GetAwakeContactPositions(): Array
678GetAwakeRootParts(): Instances
690GetPartBoundsInBox(cframe: CFrame, size: Vector3, overlapParams: OverlapParams = OverlapParams{MaxParts=0, Tolerance=0, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}): Instances
690GetPartBoundsInRadius(position: Vector3, radius: float, overlapParams: OverlapParams = OverlapParams{MaxParts=0, Tolerance=0, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}): Instances
690GetPartsInPart(part: BasePart, overlapParams: OverlapParams = OverlapParams{MaxParts=0, Tolerance=0, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}): Instances
573IKMoveTo(part: BasePart, target: CFrame, translateStiffness: float = 0.5, rotateStiffness: float = 0.5, collisionsMode: IKCollisionsMode = OtherMechanismsAnchored): null
731IsRegion3Empty(region: Region3, ignoreDescendentsInstance: Instance = Instance): bool
731IsRegion3EmptyWithIgnoreList(region: Region3, ignoreDescendentsTable: Instances): bool
638Raycast(origin: Vector3, direction: Vector3, raycastParams: RaycastParams = RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}): RaycastResult?
638RaycastCachedTerrain(id: string, origin: Vector3, direction: Vector3, ignoreWater: bool): RaycastResult?
667SetInsertPoint(point: Vector3): null
638Shapecast(part: BasePart, direction: Vector3, params: RaycastParams = RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}): RaycastResult?
638Spherecast(position: Vector3, radius: float, direction: Vector3, params: RaycastParams = RaycastParams{IgnoreWater=false, BruteForceAllSlow=false, RespectCanCollide=false, CollisionGroup=Default, FilterDescendantsInstances={}}): RaycastResult?
648StepPhysics(dt: float, parts: Instances = {}): null
731findPartOnRay(ray: Ray, ignoreDescendantsInstance: Instance = Instance, terrainCellsAreCubes: bool = false, ignoreWater: bool = false): Tuple
731findPartsInRegion3(region: Region3, ignoreDescendantsInstance: Instance = Instance, maxParts: int = 20): Instances
inherited from Model
731LevelOfDetail: ModelLevelOfDetail
731ModelStreamingMode: ModelStreamingMode
731PrimaryPart: BasePart
731Scale: float
731WorldPivot: CFrame
573AddPersistentPlayer(playerInstance: Player = Player): null
573BreakJoints(): null
607GetBoundingBox(): (CFrame, Vector3)
462GetExtentsSize(): Vector3
731GetModelCFrame(): CFrame
731GetModelSize(): Vector3
648GetPersistentPlayers(): Instances
731GetPrimaryPartCFrame(): CFrame
562GetScale(): float
573MakeJoints(): null
573MoveTo(position: Vector3): null
573RemovePersistentPlayer(playerInstance: Player = Player): null
731ResetOrientationToIdentity(): null
573ScaleTo(newScaleFactor: float): null
731SetIdentityOrientation(): null
731SetPrimaryPartCFrame(cframe: CFrame): null
573TranslateBy(delta: Vector3): null
731breakJoints(): null
731makeJoints(): null
731move(location: Vector3): null
731moveTo(location: Vector3): null
inherited from PVInstance
731Origin: CFrame
731Pivot Offset: CFrame
576GetPivot(): CFrame
573PivotTo(targetCFrame: CFrame): null
inherited from Instance
731Archivable: bool
731Capabilities: SecurityCapabilities
731IsInSandbox: bool
731Name: string
731Parent: Instance
731PredictionMode: PredictionMode
731Sandboxed: bool
731UniqueId: UniqueId
576AddTag(tag: string): null
573ClearAllChildren(): null
462Clone(): Instance
573Destroy(): null
486FindFirstAncestor(name: string): Instance
486FindFirstAncestorOfClass(className: string): Instance
486FindFirstAncestorWhichIsA(className: string): Instance
486FindFirstChild(name: string, recursive: bool = false): Instance
486FindFirstChildOfClass(className: string): Instance
486FindFirstChildWhichIsA(className: string, recursive: bool = false): Instance
486FindFirstDescendant(name: string): Instance
563GetActor(): Actor
486GetAttribute(attribute: string): Variant
462GetAttributeChangedSignal(attribute: string): RBXScriptSignal
631GetAttributes(): Dictionary
648GetChildren(): Instances
462GetDebugId(scopeLength: int = 4): string
707GetDescendants(): Instances
486GetFullName(): string
706GetStyled(name: string, selector: string?): Variant
657GetStyledPropertyChangedSignal(property: string): RBXScriptSignal
576GetTags(): Array
576HasTag(tag: string): bool
486IsAncestorOf(descendant: Instance): bool
486IsDescendantOf(ancestor: Instance): bool
664IsPropertyModified(property: string): bool
698QueryDescendants(selector: string): Instances
573Remove(): null
576RemoveTag(tag: string): null
664ResetPropertyToDefault(property: string): null
573SetAttribute(attribute: string, value: Variant): null
462WaitForChild(childName: string, timeOut: double): Instance
731children(): Instances
731clone(): Instance
731destroy(): null
731findFirstChild(name: string, recursive: bool = false): Instance
731getChildren(): Instances
731isDescendantOf(ancestor: Instance): bool
731remove(): null
462AncestryChanged(child: Instance, parent: Instance)
462AttributeChanged(attribute: string)
462ChildAdded(child: Instance)
462ChildRemoved(child: Instance)
462DescendantAdded(descendant: Instance)
462DescendantRemoving(descendant: Instance)
500Destroying()
657StyledPropertiesChanged()
731childAdded(child: Instance)
inherited from Object
731ClassName: string
731className: string
647GetPropertyChangedSignal(property: string): RBXScriptSignal
647IsA(className: string): bool
731isA(className: string): bool
647Changed(property: string)

Description

When parented to a ViewportFrame, WorldModel extends limited physics for its children on to that ViewportFrame. For example, BaseParts that are parented to the WorldModel can be animated and spatially queried (for example by raycasts) but those parts are not simulated. Furthermore, you can put Humanoid characters in the WorldModel and their joints will be set up correctly for animation.

To avoid possible performance issues, make sure to only create WorldModels when you want to show them and to delete WorldModels that are currently not in use.

History 6

Members 1

UseWorkspaceCollisionGroups

TypeDefault
boolfalse

When set to true, the WorldModel uses the collision group definitions and collidability matrix of the Workspace that contains it, rather than maintaining its own independent set. The containing Workspace may be an indirect ancestor — for example, when the WorldModel is nested inside a ViewportFrame. Spatial queries and physics stepping within this WorldModel then respect those Workspace-level groups. When set to false (the default), the WorldModel maintains its own independent collision groups.

Note that the PhysicsService collision-group methods (PhysicsService:RegisterCollisionGroup(), PhysicsService:CollisionGroupSetCollidable(), etc.) operate on the collision groups of the DataModel's Workspace; they do not write to a WorldModel's own group store.

History 1

Settings