如何在 3D 球体周围环绕文本

Edo*_*awa 0 javascript 3d three.js babylonjs

我正在寻找一种在巴比伦或 Threejs 中将文本环绕在球体周围的方法。我对改变 javascript 技术持开放态度

gma*_*man 8

我会看一个生成文本的例子。然后我会分别生成每个字母,记录它们各自的宽度,并使用它们来计算我想要显示的字符串的总宽度

然后我可以将每个网格都Object3D设置为 an并将其Object3D旋转 y 设置为

widthSoFar = 0;
for each letter
   obj3d.rotation.y = widthSoFar / totalWidth * Math.PI * 2;
   widthSoFar += widthOfCurrentLetter;
Run Code Online (Sandbox Code Playgroud)

并将字母的 position.z 设置为某个半径,这将使字母围绕一个圆圈。

什么半径?

circumference = 2 * PI * radius
Run Code Online (Sandbox Code Playgroud)

所以

radius = circumference / (2 * PI)
Run Code Online (Sandbox Code Playgroud)

我们知道我们需要的周长,它是字符串的总宽度。

您可能会发现本教程有助于理解如何使用场景图节点(如 Object3D 节点)来组织场景以满足您的需求。

widthSoFar = 0;
for each letter
   obj3d.rotation.y = widthSoFar / totalWidth * Math.PI * 2;
   widthSoFar += widthOfCurrentLetter;
Run Code Online (Sandbox Code Playgroud)
circumference = 2 * PI * radius
Run Code Online (Sandbox Code Playgroud)
radius = circumference / (2 * PI)
Run Code Online (Sandbox Code Playgroud)