Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | import type {
Volume3DCamera,
Volume3DViewportRenderContext,
} from './viewport3DTypes';
export default function applyVolume3DCamera(
ctx: Pick<Volume3DViewportRenderContext, 'vtk'>,
camera?: Partial<Volume3DCamera>,
options: { resetClippingRange?: boolean } = {}
): void {
if (!camera) {
return;
}
const vtkCamera = ctx.vtk.renderer.getActiveCamera();
if (camera.parallelProjection !== undefined) {
vtkCamera.setParallelProjection(camera.parallelProjection);
}
if (camera.viewUp) {
vtkCamera.setViewUp(...camera.viewUp);
}
if (camera.viewPlaneNormal) {
vtkCamera.setDirectionOfProjection(
-camera.viewPlaneNormal[0],
-camera.viewPlaneNormal[1],
-camera.viewPlaneNormal[2]
);
}
if (camera.position) {
vtkCamera.setPosition(...camera.position);
}
if (camera.focalPoint) {
vtkCamera.setFocalPoint(...camera.focalPoint);
}
if (camera.parallelScale !== undefined) {
vtkCamera.setParallelScale(camera.parallelScale);
}
if (camera.viewAngle !== undefined) {
vtkCamera.setViewAngle(camera.viewAngle);
}
if (camera.clippingRange !== undefined) {
vtkCamera.setClippingRange(...camera.clippingRange);
} else if (options.resetClippingRange) {
ctx.vtk.renderer.resetCameraClippingRange();
}
}
|