javascript - 三.js TubeBufferGeometry 相机动画位置变化
问题描述
我正在尝试更改将用于相机动画的 TubeBufferGeometry.parameters.path 的位置/平移动态 (均基于此示例:webgl_geometry_extrude_splines)
到目前为止,这是我的代码的完整代码:Link to codesandbox with full code
代码的重要部分:
function init(){
// initial scene render etc. for full code take a look at codesanbox
// tube
var extrudePath = new Curves.GrannyKnot();
tubeGeometry = new THREE.TubeBufferGeometry( extrudePath, 50, 2, 1, true );
tubeGeometry.dynamic = true;
//unsuccessful approach to change the parameters of position
tubeGeometry.translate(100, 0, 0)
tubeGeometry.attributes.position.needsUpdate = true;
}
function animate() {
requestAnimationFrame( animate );
render();
}
function render() {
// animate camera along spline
var time = Date.now();
var looptime = 20 * 1000;
var t = ( time % looptime ) / looptime;
var pos = tubeGeometry.parameters.path.getPointAt( t );
pos.multiplyScalar( 1 );
splineCamera.position.copy( pos );
renderer.render( scene, splineCamera );
}
结果是没有让我翻译相机在默认位置绕着 GrannyKnot 曲线移动。
我期望的是在某个方向(例如位置 X + 100)上动态更改TubeBufferGeometry.parameters.path的位置/平移,这会影响我的相机移动
编辑 我刚刚意识到我可以通过添加来改变相机
function render() {
// animate camera along spline
var time = Date.now();
var looptime = 20 * 1000;
var t = ( time % looptime ) / looptime;
var pos = tubeGeometry.parameters.path.getPointAt( t );
pos.x += 100; //<----this line added
pos.multiplyScalar( 1 );
splineCamera.position.copy( pos );
renderer.render( scene, splineCamera );
}
但是如果有人会告诉我如何改变TubeBufferGeometry.parameters.path而不改变明确的 pos.x 就像上面的代码一样。我会很高兴的。
解决方案
推荐阅读
- ruby-on-rails - 带有 Searckiq 不正确评分的弹性搜索
- javascript - 使用 TediousJS 的 for 循环中的请求
- python - 无法隐藏根窗口
- azure - Azure Runbook 出错,无法查看或测试代码
- docker - 调查 docker 错误 standard_init_linux.go:228: exec 用户进程导致:没有这样的文件或目录
- python - 带有两个下拉列表和两个范围滑块的 Plotly Dash 回调问题
- c - GICv2 中断 ID 1023
- java - 为什么不在 Stream API 中使用 reduce 来合并多个 map?
- javascript - WebdriverIO - 在异步模式下按索引单击元素不起作用
- php - 当我存储评论时,错误:函数的参数太少| 拉拉维尔