UNPKG

react-native-filament

Version:

A real-time physically based 3D rendering engine for React Native

62 lines (60 loc) 2.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Camera = Camera; var _reactNativeWorkletsCore = require("react-native-worklets-core"); var _useFilamentContext = require("../hooks/useFilamentContext"); var _RenderCallbackContext = require("./RenderCallbackContext"); // Sensible defaults: const defaultCameraPosition = [0, 0, 8]; const defaultCameraTarget = [0, 0, 0]; const defaultCameraUp = [0, 1, 0]; const defaultFocalLengthInMillimeters = 28; const defaultNear = 0.1; const defaultFar = 100; function Camera({ cameraManipulator, ...cameraConfig }) { const { camera, view } = (0, _useFilamentContext.useFilamentContext)(); const { aspect, cameraUp = defaultCameraUp, cameraTarget = defaultCameraTarget, cameraPosition = defaultCameraPosition, near = defaultNear, far = defaultFar, focalLengthInMillimeters = defaultFocalLengthInMillimeters } = cameraConfig; const cameraPositionX = cameraPosition[0]; const cameraPositionY = cameraPosition[1]; const cameraPositionZ = cameraPosition[2]; const cameraTargetX = cameraTarget[0]; const cameraTargetY = cameraTarget[1]; const cameraTargetZ = cameraTarget[2]; const cameraUpX = cameraUp[0]; const cameraUpY = cameraUp[1]; const cameraUpZ = cameraUp[2]; const prevAspectRatio = (0, _reactNativeWorkletsCore.useSharedValue)(0); _RenderCallbackContext.RenderCallbackContext.useRenderCallback(() => { 'worklet'; const aspectRatio = view.getAspectRatio(); if (prevAspectRatio.value !== aspectRatio) { prevAspectRatio.value = aspectRatio; // Setup camera lens: camera.setLensProjection(focalLengthInMillimeters, aspect ?? aspectRatio, near, far); console.log('Setting up camera lens with aspect ratio:', aspectRatio); } if (cameraManipulator != null) { camera.lookAtCameraManipulator(cameraManipulator); } else { camera.lookAt([cameraPositionX, cameraPositionY, cameraPositionZ], [cameraTargetX, cameraTargetY, cameraTargetZ], [cameraUpX, cameraUpY, cameraUpZ]); } }, [prevAspectRatio, camera, view, focalLengthInMillimeters, aspect, near, far, cameraManipulator, cameraPositionX, cameraPositionY, cameraPositionZ, cameraTargetX, cameraTargetY, cameraTargetZ, cameraUpX, cameraUpY, cameraUpZ]); return null; } //# sourceMappingURL=Camera.js.map