@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
55 lines (43 loc) • 1.49 kB
text/typescript
import {PolyScene} from '../../../src/engine/scene/PolyScene';
export function ExpressionCentroid() {
// create a scene
const scene = new PolyScene();
const root = scene.root();
// create a box and a sphere
const geo = root.createNode('geo');
const box = geo.createNode('box');
const torus = geo.createNode('torus');
const transform = geo.createNode('transform');
const noise = geo.createNode('noise');
const merge = geo.createNode('merge');
noise.setInput(0, torus);
transform.setInput(0, box);
merge.setInput(0, noise);
merge.setInput(1, transform);
merge.flags.display.set(true);
torus.p.radiusTube.set(0.1);
torus.p.segmentsRadial.set(10);
torus.p.segmentsTube.set(30);
noise.p.amplitude.set(0.7);
noise.p.freq.set([0.3, 0.3, 0.3]);
noise.p.offset.y.set('$T');
box.p.size.set(0.25);
transform.p.t.x.set(`centroid('../${noise.name()}').x`);
transform.p.t.z.set(`centroid('../${noise.name()}').z`);
// 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('eventsNetwork');
const orbitsControls = events1.createNode('cameraOrbitControls');
perspectiveCamera1.p.controls.setNode(orbitsControls);
// play
scene.play();
// EXPORT
const nodes = [torus];
const htmlNodes = {box};
const camera = perspectiveCamera1;
return {scene, camera, nodes, htmlNodes};
}