Installation

Option 1: With NPM and build tools

Install including requried peer dependecies:

npm i three eventemitter3 @vladkrutenyuk/three-kvy-core 

Import and use like that:

import * as THREE from "three";
import { OrbitControls } from "three/addons/controls/OrbitControls.js";
import * as KVY from "@vladkrutenyuk/three-kvy-core";

const ctx = KVY.CoreContext.create(THREE);

const mesh = new THREE.Mesh(new THREE.BoxGeometry(), new THREE.MeshNormalMaterial());
ctx.root.add(mesh);

const controls = new OrbitControls(ctx.three.camera, ctx.three.renderer.domElement);

ctx.three.mount(document.querySelector("#canvas-container"));
ctx.run();

Option 2: Without build tools

For example, using browser-ready ES Modules from esm.sh.

import * as THREE from "https://esm.sh/three/build/three.module.min.js";
import { OrbitControls } from "https://esm.sh/three/addons/controls/OrbitControls.js";
import * as KVY from "https://esm.sh/@vladkrutenyuk/three-kvy-core";

const ctx = KVY.CoreContext.create(THREE);
const controls = new OrbitControls(ctx.three.camera, ctx.three.renderer.domElement);
three-kvy-core ...