domElement = {
let controlPanel = {
cameraControls: {
cloudRotationSpeed: 0.001,
},
surfaceControls: {
bumpScale: 0.02,
viewClouds: true,
reverseColor: false,
},
lightControls: {
pointLight: true,
ambientLight: false
}
};
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(45, width / height, 0.01, 500);
camera.position.z = 2.5;
const renderer = new THREE.WebGLRenderer({antialias: true});
const canvas = renderer.domElement;
renderer.setSize(width, height);
renderer.render(scene, camera);
const controls = new THREE.OrbitControls(camera, canvas);
controls.enablePan = false;
controls.maxDistance = 5;
controls.minDistance = 1.5;
const lights = addLight();
lights.map(light => scene.add(light));
const meshes = await addMeshes();
const cloud = meshes[1];
meshes.map(mesh => scene.add(mesh));
addGUI(lights, meshes, controlPanel);
function render() {
stats.update();
requestAnimationFrame( render );
cloud.rotation.y -= controlPanel.cameraControls.cloudRotationSpeed;
renderer.render(scene, camera);
}
render();
return canvas;
}