2015-09-23 2 views
0

Предположим, камера движется от одного положения к другому, или говорят, что камера следит за траекторией кривой (получая точки на кривой сплайна и копируя положение камеры в каждом рендере).Получить скорость движущейся камеры

Как мы можем вычислить скорость перспективной камеры?

ответ

0

Простой и грязный, вы можете установить камеру или любой другой объект, который имеет место в качестве меры объекта для контроля за его скорость:

var DebugSpeedometer = (function() { 

    var lastMeasurement = 0, 
     currentSpeed = 0; 

    var lastMeasurementPosition = new THREE.Vector3(), 
     distance = new THREE.Vector3(); 

    return { 

     update: function(measureObject, timeStep){ 

      if(lastMeasurement + timeStep < clock.getElapsedTime()) { 

       lastMeasurement = clock.getElapsedTime(); 
       distance = measureObject.getWorldPosition().distanceTo(lastMeasurementPosition); 
       currentSpeed = distance/timeStep; 
       lastMeasurementPosition = measureObject.getWorldPosition(); 

      } 

      return currentSpeed; 
     } 

    }; 

})(); 

// globals 
var clock = new THREE.Clock(); 
var speedoMeter = new DebugSpeedometer(); 

В функции обновления:

console.log(speedoMeter.update(camera, 1)); 
+0

Благодаря человеку его помогает с некоторым добавлением. Спасибо снова – Robun

+0

Обратите внимание, что это работает только с небольшим шагом времени. Если камера следит за кривой, она будет «обрезать углы» и дать вам недооценки, а чем меньше шаг времени, тем больше будет недооценка. Наверное, это нормально для большинства приложений, работающих со скоростью 60 кадров в секунду. –

+0

Моим фактическим требованием является перемещение кулачка от 1 до другого pos в определенное время, например. (0,0,0) до (100,0 100), скажем, 5 сек. – Robun

Смежные вопросы