import * as THREE from 'three';
import { OpenGeometry, Polygon, Cuboid, Cylinder, Vector3 } from '@opengeometry/kernel-three';
// Initialize scene
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
// Initialize OpenGeometry
await OpenGeometry.create({
wasmURL: '/opengeometry_bg.wasm'
});
// Create shapes
const polygon = new Polygon({
vertices: [
new Vector3(-1, 0, -1),
new Vector3(1, 0, -1),
new Vector3(1, 0, 1),
new Vector3(-1, 0, 1)
],
color: 0x2563eb
});
polygon.outline = true;
scene.add(polygon);
const cuboid = new Cuboid({
center: new Vector3(3, 0.5, 0),
width: 1.5,
height: 1.5,
depth: 1.5,
color: 0x10b981
});
cuboid.outline = true;
scene.add(cuboid);
const cylinder = new Cylinder({
center: new Vector3(-3, 1, 0),
radius: 0.75,
height: 2,
segments: 32,
angle: 2 * Math.PI,
color: 0x0ea5e9
});
cylinder.outline = true;
scene.add(cylinder);
// Setup camera
camera.position.set(5, 4, 6);
camera.lookAt(0, 0, 0);
// Render loop
function animate() {
requestAnimationFrame(animate);
renderer.render(scene, camera);
}
animate();