This tool does all the magical incantations necessary for creating a scene with Three.js:
- Create
camera
,renderer
, andscene
instances - Size the renderer's DOM element to fill the browser window, with the appropriate pixel ratio
- Add the renderer's DOM element to the DOM
- Apply CSS to the page
- Add an event listener to resize the renderer's DOM element and update the camera when the browser window is resized
- Add your choice of controls
- Set up the animation loop with your render routine
- Update the controls each frame
npm install @depasquale/three-wizard
import Wizard from '@depasquale/three-wizard';
const wizard = new Wizard({
// Choose from `ImmersiveControls`, `OrbitControls`, and `static` (more options coming soon)
controls: 'OrbitControls',
});
// You can access these if necessary
const { scene, camera, renderer, controls } = wizard;
// Add things to the scene
// ...
Define the render loop in which things are updated each frame. (Three.js Wizard takes care of updating the controls and telling the renderer to render, so there's no need to include this boilerplate code.) Then start the animation.
const render = () => {
// Update things in the scene
// ...
};
wizard.start(render);
-
controls: 'ImmersiveControls' | 'OrbitControls' | 'static'
- The type of controls to be used in the scene. Default is
static
.
- The type of controls to be used in the scene. Default is
-
initialPosition: THREE.Vector3
- The camera's initial position in the scene. Default is
new THREE.Vector3(0, 1.6, 5)
.
- The camera's initial position in the scene. Default is
-
css: true | false
- Apply CSS to the page. Default is
true
.
- Apply CSS to the page. Default is
-
If using ImmersiveControls, the options for these controls can be included here as well.
A full example is provided in the example
directory. To try it locally in your browser, run:
npm run example
Or try it here.
- Add more controls options
- Add option to specify a target for the renderer's DOM element, instead of the full browser window