|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- ---
- prev:
- text: 'PopmotionPlugin'
- link: './PopmotionPlugin'
-
- next:
- text: 'TransformAnimationPlugin'
- link: './TransformAnimationPlugin'
-
- ---
-
- # CameraViewPlugin
-
- [//]: # (todo: image)
-
- [Example](https://threepipe.org/examples/#camera-view-plugin/) —
- [Source Code](https://github.com/repalash/threepipe/blob/master/src/plugins/animation/CameraViewPlugin.ts) —
- [API Reference](https://threepipe.org/docs/classes/CameraViewPlugin.html)
-
- `CameraViewPlugin` adds support to save and load camera views, which can then be animated to.
- It uses `PopmotionPlugin` internally to animate any camera to a saved view or to loop through all the saved views.
-
- It also provides a UI to manage the views.
-
- ```typescript
- import {CameraViewPlugin, ThreeViewer, CameraView, Vector3, Quaternion, EasingFunctions, timeout} from 'threepipe'
-
- const viewer = new ThreeViewer({...})
-
- const cameraViewPlugin = viewer.addPluginSync(new CameraViewPlugin())
-
- const intialView = cameraViewPlugin.getView()
- // or = viewer.scene.mainCamera.getView()
-
- // create a new view
- const view = new CameraView(
- 'My View', // name
- new Vector3(0, 0, 10), // position
- new Vector3(0, 0, 0), // target
- new Quaternion(0, 0, 0, 1), // quaternion rotation
- 1 // zoom
- )
-
- // or clone a view
- const view2 = intialView.clone()
- view2.position.add(new Vector3(0, 5, 0)) // move up 5 units
-
- // animate the main camera to a view
- await cameraViewPlugin.animateToView(
- view,
- 2000, // in ms, = 2sec
- EasingFunctions.easeInOut,
- ).catch(()=>console.log('Animation stopped'))
-
- // stop any/all animations
- cameraViewPlugin.stopAllAnimations()
-
- // add views to the plugin
- cameraViewPlugin.addView(view)
- cameraViewPlugin.addView(view2)
- cameraViewPlugin.addView(intialView)
- cameraViewPlugin.addCurrentView() // adds the current view of the main camera
-
- // loop through all the views once
- cameraViewPlugin.animDuration = 2000 // default duration
- cameraViewPlugin.animEase = EasingFunctions.easeInOutSine // default easing
- await cameraViewPlugin.animateAllViews()
-
- // loop through all the views forever
- cameraViewPlugin.viewLooping = true
- await timeout(10000) // wait for some time
- // stop looping
- cameraViewPlugin.viewLooping = false
-
- ```
|