javascript - 如何旋转 THREE.TubeGeometry 段?

标签 javascript three.js

我创建了一个半径Segments = 2 的平面 THREE.TubeGeometry,将其添加到场景中时垂直于地面:

enter image description here

是否可以旋转每个管段,使它们与地面平行?

JSFiddle example.

var points = [];
for (var i = 0; i < 5; i++) {
   var randomY = i*5/2*10 + -50;
   var randomX = 15*Math.sin(5*i);
   points.push(new THREE.Vector3(randomX, randomY, 0));
}
var tubeGeometry = new THREE.TubeGeometry(new THREE.SplineCurve3(points), 64, 6, 2, false);
tubeMesh = createMesh(tubeGeometry);
scene.add(tubeMesh);

最佳答案

我对您的建议是使用自定义平面几何体(不是 TubeGeometry!)并计算您希望它们所在的顶点(而不是旋转!)。

获取几何图形的方法类似于:

  1. 创建随机点(这里需要一些数学知识才能将它们放在您想要的位置,但这是有趣的部分!)
  2. 从每条曲线获取样条点
  3. 对它们进行三 Angular 测量

如果您决定继续使用此处的代码,请进行更改以使其与平面平行。在tubeMesh创建之后添加到generateTube函数:

tubeMesh.rotateY(Math.PI/2);

关于javascript - 如何旋转 THREE.TubeGeometry 段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38830649/

相关文章:

javascript - 使用嵌入的文本区域内容高度动态增加 ionic 列表项高度

javascript - PHP @move_uploaded_file 使用 Resumable.js 返回 false

javascript - 更新顶点几何体 Threejs

javascript - 如何将所有 STL 文件合并到一个几何体

javascript - 使用 raycaster 选择 gltf 的特定元素并添加事件监听器

javascript - 如何通过 jQuery 按下键盘的按钮之一?

javascript - 如何使用 jQuery/JavaScript 通过用户输入更改 <div> 的宽度?

javascript - 无法访问jquery和ajax的功能

node.js - Three.js 与 typescript 自动完成

javascript - 三个 js 正确地从场景中移除对象(仍然保留在 HEAP 中)