Rendering and export API
Render functions return image bytes or canvases; write returned PNG bytes with writeFile. Movie export requires FFmpeg. See review and export.
Parameter declarations below are extracted from the current source. A value after = is the default; ? marks an optional input. Named data shapes are listed in API types.
renderPanelCanvas
function renderPanelCanvas(source: PanelRenderSource, panelId: string, options: {
annotations?: boolean;
frame?: number;
camera?: boolean;
layerIds?: readonly string[];
cache?: RenderCache;
} = {}): Canvas;renderPanelPNG
async function renderPanelPNG(source: RenderSource, panelId: string, options: {
annotations?: boolean;
frame?: number;
camera?: boolean;
layerIds?: readonly string[];
} = {}): Promise<Buffer>;renderFrameCanvas
function renderFrameCanvas(source: RenderSource, frame: number, options: {
annotations?: boolean;
cache?: RenderCache;
} = {}): Canvas;renderFramePNG
async function renderFramePNG(source: RenderSource, frame: number, options: {
annotations?: boolean;
} = {}): Promise<Buffer>;createRenderSession
/** A frozen document snapshot with bounded artwork cache; create another session after edits. */
export function createRenderSession(source: RenderSource, maxCacheBytes?: number): {
durationFrames: number;
frame: (frame: number) => Canvas;
panel: (id: string, frame?: number) => Canvas;
};renderCompositionGuides
async function renderCompositionGuides(source: RenderSource, panelId: string, options: CompositionGuides = {}): Promise<Buffer>;renderContactSheet
async function renderContactSheet(source: RenderSource, options: {
columns?: number;
thumbnailWidth?: number;
panelIds?: readonly string[];
} = {}): Promise<Buffer>;renderDetail
async function renderDetail(source: RenderSource, panelId: string, crop: {
x: number;
y: number;
width: number;
height: number;
}, frame?: number): Promise<Buffer>;renderOnionSkin
async function renderOnionSkin(source: RenderSource, samples: readonly OnionSkinSample[], options: {
opacity?: number;
camera?: boolean;
} = {}): Promise<Buffer>;renderFrameSheet
/** Timeline samples in caller order, including drawing substitutions and shot transitions. */
export async function renderFrameSheet(source: RenderSource, frames: readonly number[], options: {
columns?: number;
thumbnailWidth?: number;
} = {}): Promise<Buffer>;evaluateDrawing
/** Undefined is an ordinary group; null is a blank exposure. Keys are sorted on authoring. */
export function evaluateDrawing(sequence: readonly DrawingExposure[] | undefined, frame: number): string | null | undefined;evaluateLayer
function evaluateLayer(layer: Layer, frame: number): EvaluatedLayerState;evaluateCamera
function evaluateCamera(keyframes: readonly CameraKeyframe[], frame: number): EvaluatedCamera;exportStoryboard
async function exportStoryboard(source: RenderSource, outputDir: string, sheet: SheetOptions = {}): Promise<{
panelFiles: string[];
pdfFile: string;
pageCount: number;
}>;exportAnimaticPackage
async function exportAnimaticPackage(source: RenderSource, outputDir: string, options: {
assetRoot?: string;
maxFrames?: number;
} = {}): Promise<AnimaticPackageResult>;exportMovie
async function exportMovie(source: RenderSource, output: string, options: MovieOptions = {}): Promise<{ file: string; frames: number; seconds: number; renderSeconds: number; peakRssBytes: number; }>;encodeWav
function encodeWav(channels: Float32Array[], sampleRate = 48000): Buffer;createToneWav
function createToneWav(options: ToneOptions = {}): Buffer;startPreview
/** Read-only local review endpoints. Authoring remains in the JS/TS API. */
export async function startPreview(projectPath: string, options: {
port?: number;
} = {}): Promise<Server>;