Как закрепить "ползунок" в dat.gui.js?
Задание звучит так: заставить текст увеличиваться или уменьшаться при помощи dat.gui. В целом, этот код умеет его увеличивать или уменьшать, но результат не получается закрепить. Получается, что при использовании этого ползунка он начинает изменятся, но зафиксировать не удаётся. Объясните, пожалуйста, "почему"?
P.S: шрифты, текстуры не обязательны для использования
'<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Scene</title>
<script src="js/three.js"></script>
<script src="js/TrackballControls.js"></script>
<script src="js/dat.gui.min.js"></script>
</head>
<body>
<script>
init();
function init() {
var renderer = window.WebGLRenderingContext ? new THREE.WebGLRenderer({ antialias: true }) : new THREE.CanvasRenderer();
renderer.setClearColor(new THREE.Color(0x000000));
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
var camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000);
var scene = new THREE.Scene();
var controls = new THREE.TrackballControls(camera);
var ambiLight = new THREE.AmbientLight(0x141414);
scene.add(ambiLight);
var light = new THREE.DirectionalLight();
light.position.set(0, 80, 200);
scene.add(light);
var font;
var textMesh;
var fontLoader = new THREE.FontLoader();
fontLoader.load("fonts/Font.json", function (tex) {
font = tex;
createText();
createGUI();
});
function createText() {
if (textMesh) {
scene.remove(textMesh);
}
var textGeometry = new THREE.TextGeometry("Scene", {
size: settings.fontSize,
height: 3,
curveSegments: 6,
bevelEnabled: true,
bevelThickness: 2,
bevelSize: 1,
bevelSegments: 5,
font: font
});
var texture = new THREE.TextureLoader().load('Img/fire.jpg');
texture.wrapS = texture.wrapT = THREE.RepeatWrapping;
texture.repeat.set(0.05, 0.05);
var material = new THREE.MeshBasicMaterial({ map: texture });
var extrTexture = new THREE.TextureLoader().load('Img/sky.jpg');
extrTexture.wrapS = extrTexture.wrapT = THREE.RepeatWrapping;
extrTexture.offset.set(0, 0.7);
extrTexture.repeat.set(0, 0.13);
var extrMaterial = new THREE.MeshBasicMaterial({ map: extrTexture });
var materials = [material, extrMaterial];
textMesh = new THREE.Mesh(textGeometry, materials);
textGeometry.center();
scene.add(textMesh);
}
var settings = {
fontSize: 20,
};
function createGUI() {
var gui = new dat.GUI();
gui.add(settings, 'fontSize', 1, 50).onChange(function (value) {
settings.fontSize = value;
createText();
});
}
camera.position.x = -50;
camera.position.y = 70;
camera.position.z = 200;
camera.lookAt(scene.position);
renderScene();
function renderScene() {
requestAnimationFrame(renderScene);
controls.update();
renderer.render(scene, camera);
}
}
</script>
</body>
</html>
'