renderer = {
const renderer = new THREE.WebGLRenderer({ antialias: true });
const scene = new THREE.Scene();
scene.background = new THREE.Color(0xf2f7f9);
scene.add(new THREE.AxesHelper(10));
const newCylinder = ([x, y, z], color) => {
const geometry = new THREE.CylinderGeometry( 1, 1, 1, 32 );
const material = new THREE.MeshBasicMaterial( {color} );
const cylinder = new THREE.Mesh(geometry, material);
cylinder.position.x = x;
cylinder.position.y = y;
cylinder.position.z = z;
return cylinder;
};
const cylinder1 = newCylinder([1, 1, 1], 0xff0000);
const cylinder2 = newCylinder([3, 1, 1], 0x00ff00);
scene.add(cylinder1);
scene.add(cylinder2);
const fov = 45;
const aspect = width / height;
const near = 1;
const far = 100000;
const camera = new THREE.PerspectiveCamera(fov, aspect, near, far);
camera.position.set(5, 5, 7);
const controls = new THREE.OrbitControls(camera, renderer.domElement);
invalidation.then(() => (renderer.dispose()));
controls.addEventListener("change", () => renderer.render(scene, camera));
controls.enabled = false
renderer.setSize(width, height);
renderer.setPixelRatio(devicePixelRatio);
renderer.render(scene, camera);
const transformControls1 = new THREE.TransformControls(
camera,
renderer.domElement,
);
transformControls1.addEventListener('change', () => renderer.render(scene, camera));
transformControls1.setSpace('local');
scene.add(transformControls1);
transformControls1.attach(cylinder1);
const transformControls2 = new THREE.TransformControls(
camera,
renderer.domElement,
);
transformControls2.addEventListener('change', () => renderer.render(scene, camera));
transformControls2.setSpace('local');
scene.add(transformControls2);
transformControls2.attach(cylinder2);
yield renderer.domElement;
}