polygonjs-engine
Version:
node-based webgl 3D engine https://polygonjs.com
47 lines (38 loc) • 1.33 kB
text/typescript
import {PolyScene} from '../../../src/engine/scene/PolyScene';
export function ExpressionBbox() {
// create a scene
const scene = new PolyScene();
const root = scene.root();
// create a box and a sphere
const geo = root.createNode('geo');
const sphere = geo.createNode('sphere');
const box = geo.createNode('box');
const torus = geo.createNode('torus');
const merge1 = geo.createNode('merge');
const merge2 = geo.createNode('merge');
merge1.setInput(0, sphere);
merge1.setInput(1, box);
box.p.center.x.set(3);
merge2.setInput(0, merge1);
merge2.setInput(1, torus);
merge2.flags.display.set(true);
torus.p.radius.set(`bbox('../${merge1.name()}').max.x`);
torus.p.radiusTube.set(0.15);
torus.p.segmentsRadial.set(5);
torus.p.segmentsTube.set(60);
torus.p.direction.set([0, 0, 1]);
// add a light
root.createNode('hemisphereLight');
// create a camera
const perspectiveCamera1 = root.createNode('perspectiveCamera');
perspectiveCamera1.p.t.set([5, 5, 5]);
// add orbitControls
const events1 = perspectiveCamera1.createNode('events');
const orbitsControls = events1.createNode('cameraOrbitControls');
perspectiveCamera1.p.controls.setNode(orbitsControls);
// EXPORT
const nodes = [torus];
const htmlNodes = {box};
const camera = perspectiveCamera1;
return {scene, camera, nodes, htmlNodes};
}