javascript - three.js - 样条上的相机没有统一的速度
问题描述
我用这个很酷的代码笔让我的相机跟随样条线: https ://codepen.io/wiledal/pen/WvNvEq
这很好用,但我想在我的相机移动过程中保持均匀的速度。我使用了CatmullRomCurve3()
函数的所有参数,但无济于事。
在下面的示例中,您可以看到它在到达曲线时立即减速。
我应该尝试在我的样条曲线上到处都有相同的点强度吗?如果是这样,我该怎么做?
非常感谢。
var renderer, scene, camera, spline, camPos, camPosIndex;
function init(){
renderer = new THREE.WebGLRenderer();
scene = new THREE.Scene();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
const W = window.innerWidth;
camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, .1, 2000 );
spline = new THREE.CatmullRomCurve3([
new THREE.Vector3( -70, 9 ),
new THREE.Vector3( -20, 9 ),
new THREE.Vector3( -13, 9 ),
new THREE.Vector3( 13, -9 ),
new THREE.Vector3( 20, -9 ),
new THREE.Vector3( 70, -9 ),
]);
var points = spline.getPoints(500);
var geometry = new THREE.BufferGeometry().setFromPoints( points );
var material = new THREE.LineBasicMaterial( { color : 0xffffff } );
// Create the final object to add to the scene
var splineObject = new THREE.Line( geometry, material );
scene.add(splineObject);
camPosIndex = 0;
}
let speed = 1000;
function update() {
renderer.render(scene, camera);
requestAnimationFrame(update);
camPosIndex++;
if (camPosIndex > speed) {
camPosIndex = 0;
}
var camPos = spline.getPoint(camPosIndex / speed);
var camRot = spline.getTangent(camPosIndex / speed);
camera.position.x = camPos.x;
camera.position.y = camPos.y;
camera.position.z = camPos.z + 40; // so I can watch my spline
camera.rotation.x = camRot.x;
camera.rotation.y = camRot.y;
camera.rotation.z = camRot.z;
camera.lookAt(spline.getPoint((camPosIndex+1) / speed));
}
init();
update();
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/110/three.min.js"></script>
解决方案
推荐阅读
- geometry - Jira CircleCI 集成。请提供一个 CircleCI API 令牌以使该球体正常工作
- tinkerpop - 带有 spring-data-gremlin 的 Janusgraph
- reactjs - React 原生入职幻灯片
- python - qt.qpa.plugin:在“”中找不到 Qt 平台插件“windows”
- python - python中的FFT没有给出预期的结果
- elasticsearch - 使用 elasticsearch 注册的搜索模板不起作用
- swap - 什么理由?我有这样的错误“处理响应错误”
- r - 使用 MODISTools 时不断收到此错误
- c# - 不能将 Xamarin.Forms.GoogleMaps nuget 包与 Xamarin.Forms 5.0 一起使用?
- pygame - PyInstaller 'ModuleNotFoundError: 没有名为 'pygame.__pyinstaller' 的模块