Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0aefc8041c1188bfb8d974c2403809784689b130
      
https://github.com/WebKit/WebKit/commit/0aefc8041c1188bfb8d974c2403809784689b130
  Author: Yoel Hawa <[email protected]>
  Date:   2026-10-02 (Fri, 02 Oct 2026)

  Changed paths:
    A LayoutTests/model-element/model-element-fit-centers-content-expected.txt
    A LayoutTests/model-element/model-element-fit-centers-content.html
    A LayoutTests/model-element/volumetric/volumetric-scene-fit-expected.txt
    A LayoutTests/model-element/volumetric/volumetric-scene-fit.html
    M Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.h
    M Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.mm
    M Source/WebKit/UIProcess/Model/PortalPresentationManagerProxy.mm
    M Source/WebKit/WebKitSwift/RealityKit/WKRKEntity.h
    M Source/WebKit/WebKitSwift/RealityKit/WKRKEntity.swift
    M Source/WebKit/WebKitSwift/StageMode/WKStageMode.swift

  Log Message:
  -----------
  [visionOS] Add auto-fit behavior to connected volumetric scenes
https://bugs.webkit.org/show_bug.cgi?id=324616
<rdar://182292558>

Reviewed by Etienne Segonzac.

Content in a connected volumetric scene kept its inline fit, which comes
from the layer's bounds in points, so it sat in the volume at the wrong
size and off-center, and a resize did not re-fit it. Fit it to a sphere
inscribed in the volume's smaller in-plane extent instead, resting on the
floor of the volume.

The fit also canceled the bounding box center without rotating it, so
rotated content whose bounding box is not centered on its origin ended up
off-center. The orbit path masked this by re-centering afterward in
WKRKEntity's recenter(at:), but other re-fits did not, such as a resize after
leaving orbit. Cancel the rotated center in the fit and remove recenter(at:).
setContainerTransformInPortal() now keeps the content in place when it moves
the orbit pivot, as operationDidUpdate() already did, because the pivot is
now re-centered after each re-fit.

Tests: model-element/model-element-fit-centers-content.html
       model-element/volumetric/volumetric-scene-fit.html

* LayoutTests/model-element/model-element-fit-centers-content-expected.txt: 
Added.
* LayoutTests/model-element/model-element-fit-centers-content.html: Added.
* LayoutTests/model-element/volumetric/volumetric-scene-fit-expected.txt: Added.
* LayoutTests/model-element/volumetric/volumetric-scene-fit.html: Added.
* Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.h:
* Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.mm:
(WebKit::computeSRT):
(WebKit::ModelProcessModelPlayerProxy::computeMergedBounds const):
(WebKit::ModelProcessModelPlayerProxy::computeTransform):
(WebKit::ModelProcessModelPlayerProxy::didFinishLoading):
(WebKit::ModelProcessModelPlayerProxy::updateForCurrentStageMode):
(WebKit::ModelProcessModelPlayerProxy::setPresentationMode):
(WebKit::ModelProcessModelPlayerProxy::applyPresentationTransform):
(WebKit::isFinite):
(WebKit::ModelProcessModelPlayerProxy::computeVolumetricFitSRT):
(WebKit::ModelProcessModelPlayerProxy::applyVolumetricPresentationTransform):
* Source/WebKit/UIProcess/Model/PortalPresentationManagerProxy.mm:
(WebKit::PortalPresentationManagerProxy::showVolumetricScene):
(WebKit::PortalPresentationManagerProxy::reconnectVolumetricSceneToContentContext):
 Report the mock
size to a rebound player too, as a real scene does.
* Source/WebKit/WebKitSwift/RealityKit/WKRKEntity.h:
* Source/WebKit/WebKitSwift/RealityKit/WKRKEntity.swift:
(WKRKEntity.transformMatrix(relativeTo:)):
(WKRKEntity.setTransformMatrix(_:relativeTo:)):
(WKRKEntity.removeFromParentEntity):
(WKRKEntity.interactionContainerDidRecenter(fromTransform:)): Deleted.
(WKRKEntity.recenter(at:)): Deleted.
* Source/WebKit/WebKitSwift/StageMode/WKStageMode.swift:
(WKStageModeInteractionDriver.recenterInteractionPivotOnContent):
(WKStageModeInteractionDriver.setContainerTransformInPortal):
(WKStageModeInteractionDriver.operationDidUpdate(_:)):

Canonical link: https://commits.webkit.org/322544@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to