Я добавил элементы управления преобразованием в сферу, чтобы ее можно было перемещать по моей сцене. Я также добавил элементы управления орбитой для панорамирования вокруг моей сцены, что прекрасно работает. Когда сцена загружается в первый раз, задержки нет, и она прекрасно работает, но как только я перемещаю сферу, возникает значительная задержка.
Я могу справиться с этим, но что я действительно хочу исправить, так это то, что даже когда я отменяю сферу и больше не перемещаю ее, при использовании элементов управления орбитой сохраняется задержка.
- Почему задержка продолжается даже после того, как я не активно использую элементы управления преобразованием?
var renderer, scene, camera, controls;
init();
var geometry = new THREE.SphereGeometry( .025, 5, 5 );
var material = new THREE.MeshPhongMaterial( {color: 0xffffff} );
var sphere = new THREE.Mesh( geometry, material );
addControls(sphere,"translate");
scene.add(sphere);
render();
function addControls(object, type) {
var transformControl = new THREE.TransformControls( camera, renderer.domElement );
transformControl.addEventListener( 'change', render );
transformControl.addEventListener( 'dragging-changed', function ( event ) {
controls.enabled = ! event.value;
} );
transformControl.attach( object );
transformControl.setMode( type );
transformControl.setSpace( "local" );
scene.add( transformControl );
}
function init() {
// Renderer
renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.setSize(WIDTH, HEIGHT);
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setClearColor(0xffffff);
document.body.appendChild(renderer.domElement);
// Camera
camera = new THREE.PerspectiveCamera(100, WIDTH / HEIGHT, 0.1, 1000);
camera.position.set(500, 0, 0);
// Orbit Controls
controls = new THREE.OrbitControls(camera, renderer.domElement);
controls.maxDistance = 5;
// Scene
scene = new THREE.Scene();
}
function render() {
renderer.render(scene, camera);
requestAnimationFrame(render);
}
Я попытался удалить элементы управления преобразованием со сцены, поместив в addControls()
следующее:
window.addEventListener( 'keypress', function ( event ) {
transformControl.detach( object );
transformControl.dispose();
scene.remove(transformControl);
} );
После того, как я немного передвинул сферу, я нажимал клавишу, и элементы управления преобразованием исчезали, но отставание продолжалось.
Я ожидал, что может быть некоторая задержка при перемещении сферы, но это исчезнет, когда она не будет перемещена.
Вместо этого задержка сохраняется, даже когда я использую только элементы управления орбитой.
- Как я могу минимизировать это отставание?