瀏覽代碼

Add setDirty param in setInteractions, CanvasSnapshotPlugin ui param fix, add incRenderToScreen in RenderManager.

master
Palash Bansal 11 月之前
父節點
當前提交
deb77a6a15
沒有連結到貢獻者的電子郵件帳戶。

+ 2
- 2
src/core/ICamera.ts 查看文件

@@ -86,7 +86,7 @@ export interface ICamera<TE extends ICameraEventMap = ICameraEventMap> extends C
position: Vector3,

readonly interactionsEnabled: boolean;
setInteractions(enabled: boolean, by: string): void;
setInteractions(enabled: boolean, by: string, setDirty?: boolean): void;

/**
* Check whether user can interact with this camera.
@@ -199,4 +199,4 @@ export interface ICameraEventMap extends IObject3DEventMap {
bubbleToParent: false
// todo
} & ICameraSetDirtyOptions
}
}

+ 2
- 2
src/core/camera/PerspectiveCamera2.ts 查看文件

@@ -188,14 +188,14 @@ export class PerspectiveCamera2<TE extends ICameraEventMap = ICameraEventMap> ex
return this._interactionsDisabledBy.size === 0
}

setInteractions(enabled: boolean, by: string): void {
setInteractions(enabled: boolean, by: string, setDirty = true): void {
const size = this._interactionsDisabledBy.size
if (enabled) {
this._interactionsDisabledBy.delete(by)
} else {
this._interactionsDisabledBy.add(by)
}
if (size !== this._interactionsDisabledBy.size) this.refreshCameraControls(true)
if (size !== this._interactionsDisabledBy.size) this.refreshCameraControls(setDirty)
}

get canUserInteract() {

+ 18
- 19
src/plugins/export/CanvasSnapshotPlugin.ts 查看文件

@@ -1,10 +1,9 @@
import {serialize, timeout} from 'ts-browser-helpers'
import {AViewerPluginSync} from '../../viewer'
import {uiButton, uiConfig, uiFolderContainer, uiInput, uiVector} from 'uiconfig.js'
import {uiButton, uiConfig, uiFolderContainer, uiInput} from 'uiconfig.js'
import {CanvasSnapshot, CanvasSnapshotOptions} from '../../utils/canvas-snapshot'
import {ProgressivePlugin} from '../pipeline/ProgressivePlugin'
import {Zippable, zipSync} from 'three/examples/jsm/libs/fflate.module.js'
import {Vector4} from 'three'

export interface CanvasSnapshotPluginOptions extends CanvasSnapshotOptions{
/**
@@ -33,7 +32,7 @@ export interface CanvasSnapshotPluginOptions extends CanvasSnapshotOptions{
tileColumns?: number
}

@uiFolderContainer('Canvas Snapshot (Image Export)')
@uiFolderContainer('Image Export (Canvas Snapshot)')
export class CanvasSnapshotPlugin extends AViewerPluginSync {
static readonly PluginType = 'CanvasSnapshotPlugin'
enabled = true
@@ -140,7 +139,7 @@ export class CanvasSnapshotPlugin extends AViewerPluginSync {
if (progressive && lastMaxFrames !== undefined) {
progressive.maxFrameCount = lastMaxFrames
}
viewer.scene.mainCamera.setInteractions(true, CanvasSnapshotPlugin.PluginType)
viewer.scene.mainCamera.setInteractions(true, CanvasSnapshotPlugin.PluginType, false)
viewer.renderManager.renderScale = dpr

return file
@@ -150,21 +149,21 @@ export class CanvasSnapshotPlugin extends AViewerPluginSync {
@serialize()
filename = 'snapshot'

@uiInput('Frame Count')
@serialize()
progressiveFrames = 64
@uiInput('Tile Rows')
@serialize()
tileRows = 1
@uiInput('Tile Columns')
@serialize()
tileColumns = 1
@uiVector('Crop Rect (x, y, w, h)', [0, 1], 0.001)
@serialize()
rect = new Vector4(0, 0, 1, 1)
// @uiInput('Frame Count')
// @serialize()
// progressiveFrames = 64
//
// @uiInput('Tile Rows')
// @serialize()
// tileRows = 1
//
// @uiInput('Tile Columns')
// @serialize()
// tileColumns = 1
//
// @uiVector('Crop Rect (x, y, w, h)', [0, 1], 0.001)
// @serialize()
// rect = new Vector4(0, 0, 1, 1)

private _downloading = false


+ 7
- 2
src/rendering/RenderManager.ts 查看文件

@@ -240,12 +240,17 @@ export class RenderManager<TE extends IRenderManagerEventMap = IRenderManagerEve
this.dispatchEvent({type: 'postRender', scene, renderToScreen: this._composer.renderToScreen})
this._composer.renderToScreen = true
if (renderToScreen) {
this._frameCount += 1
this._totalFrameCount += 1
this.incRenderToScreen()
}
this._dirty = false
}

// todo better name
incRenderToScreen() {
this._frameCount += 1
this._totalFrameCount += 1
}

onPostFrame = () => {
for (const pass of this._passes) {
if (pass.enabled && pass.onPostFrame) pass.onPostFrame?.(this)

Loading…
取消
儲存