soonspacejs
Version:
soonspacejs 2.x
209 lines (208 loc) • 5.7 kB
TypeScript
import { Object3D } from 'three';
import { Tween } from 'three/examples/jsm/libs/tween.module.js';
import { IColor, Position, BaseSelectOptions } from './base';
import { GridHelperOptions } from './manager';
import { ControlsOptions } from './controls';
export type IColorSpace = 'Linear' | 'sRGB';
export type CameraType = 'perspective' | 'orthographic';
interface CameraViewpointData {
position: Position;
target: Position;
zoom: number;
}
interface CameraViewpointDataLegacy {
position: Position;
rotation: Position;
}
interface FlyToOptions {
enableTransition?: boolean;
}
interface FlyToObjOptions {
enableTransition?: boolean;
padding?: number | string;
minPadding?: number;
viewpointSpace?: 'world' | 'local';
}
interface SurroundOptions {
duration?: number;
startAngle?: number;
endAngle?: number;
end?: number;
onStart?: (tween: Tween<{
radian: number;
}>) => void;
}
interface LabelOptions {
mode?: 'scene' | 'screen';
extendScale?: number;
}
interface InternalOptions {
enableRenderCss2D: boolean;
enableRenderCss3D: boolean;
}
interface SelectModelOptions<TOptions> {
objects: Object3D[];
options?: TOptions;
}
interface EdgeSelectOptions {
color?: IColor;
hideColor?: IColor;
edgeThickness?: number;
edgeStrength?: number;
}
interface StrokeSelectOptions extends BaseSelectOptions {
isOpacityShow?: boolean;
edgeColor?: IColor;
edgeOpacity?: number;
modelCache?: boolean;
firstChild?: boolean;
}
type OpacitySelectOptions = BaseSelectOptions;
type HighlightSelectOptions = BaseSelectOptions;
interface EmissiveSelectOptions extends Omit<BaseSelectOptions, 'opacity'> {
baseColor?: IColor;
minOpacity?: number;
maxOpacity?: number;
duration?: number;
yoyo?: boolean;
}
interface FogOptions {
color?: IColor;
density?: number;
}
interface SkyOptions {
enabled?: boolean;
position?: Position;
scalar?: number;
turbidity?: number;
rayleigh?: number;
elevation?: number;
azimuth?: number;
}
interface ViewportOptions {
showInfo?: boolean;
showStats?: boolean;
showViewHelper?: boolean;
showGrid?: boolean | GridHelperOptions;
background?: {
color?: IColor | null;
alpha?: boolean;
img?: string;
skyBox?: string | {
dirPath: string;
fileNames: string[];
};
};
fog?: boolean | FogOptions;
controls?: ControlsOptions;
hoverEnabled?: boolean;
levelEnabled?: boolean;
scaleFixedEnabled?: boolean;
fileCacheEnabled?: boolean;
closeInfoLog?: boolean;
closeWarnLog?: boolean;
useIndexedDB?: boolean;
}
interface ViewportState {
useFreq: number;
delta: number;
/**
* 是否启用后处理
*/
enabledPostprocessing: boolean;
/**
* 是否暂停 render
*/
isPausedRender: boolean;
/**
* 场景是否被销毁
*/
isDisposed: boolean;
}
interface IntersectsOptions {
isFilterHideObject?: boolean;
}
export interface GetTextureOptions {
path?: string;
file: string | string[];
}
export interface EnvironmentOptions extends GetTextureOptions {
background?: boolean;
}
export interface BloomOptions {
enabled?: boolean;
mipmapBlur?: boolean;
radius?: number;
intensity?: number;
threshold?: number;
smoothing?: number;
scalar?: number;
opacity?: number;
selection?: Object3D[];
}
export interface SSAOOptions {
enabled?: boolean;
aoRadius?: number;
distanceFalloff?: number;
intensity?: number;
aoSamples?: number;
denoiseSamples?: number;
denoiseRadius?: number;
color?: IColor;
}
export interface SSGIOptions {
enabled?: boolean;
distance?: number;
thickness?: number;
autoThickness?: boolean;
maxRoughness?: number;
blend?: number;
denoiseIterations?: number;
denoiseKernel?: number;
denoiseDiffuse?: number;
denoiseSpecular?: number;
depthPhi?: number;
normalPhi?: number;
roughnessPhi?: number;
envBlur?: number;
importanceSampling?: boolean;
directLightMultiplier?: number;
maxEnvLuminance?: number;
steps?: number;
refineSteps?: number;
spp?: number;
resolutionScale?: number;
missedRays?: boolean;
}
export interface SSROptions {
enabled?: boolean;
intensity?: number;
exponent?: number;
distance?: number;
fade?: number;
roughnessFade?: number;
thickness?: number;
ior?: number;
maxRoughness?: number;
maxDepthDifference?: number;
blend?: number;
correction?: number;
correctionRadius?: number;
blur?: number;
blurKernel?: number;
blurSharpness?: number;
jitter?: number;
jitterRoughness?: number;
steps?: number;
refineSteps?: number;
missedRays?: boolean;
useNormalMap?: boolean;
useRoughnessMap?: boolean;
resolutionScale?: number;
velocityResolutionScale?: number;
}
export interface ToneMappingOptions {
type?: 'None' | 'Reinhard' | 'Cineon' | 'ACESFilmic' | 'AGX';
exposure?: number;
}
export { CameraViewpointData, CameraViewpointDataLegacy, FlyToOptions, FlyToObjOptions, SurroundOptions, LabelOptions, InternalOptions, SelectModelOptions, EdgeSelectOptions, StrokeSelectOptions, OpacitySelectOptions, HighlightSelectOptions, EmissiveSelectOptions, FogOptions, SkyOptions, ViewportOptions, ViewportState, IntersectsOptions, };