旋转立方体时,使文本始终与平面正交

时间:2015-02-05 06:47:25

标签: three.js

我使用以下模式创建出现在3D多维数据集上的文本标签:

canvas = createTextCanvas(text, color, font, size);
texture = new THREE.Texture(canvas);
geom = new THREE.PlaneBufferGeometry(canvas.width, canvas.height, segW, segH);
material = new THREE.MeshBasicMaterial({map: texture, transparent: true});
mesh = new THREE.Mesh(geom, material);

mesh.position.x = x;
mesh.position.y = y;
mesh.position.z = z;
texture.needsUpdate = true;

标签及其位置在多维数据集的每个边缘的for循环内设置。这导致标签看起来与此类似:

但是当我旋转立方体时(使用OrbitControls),您会看到标签不再像上面那样垂直显示:

因此,使用Cost标签作为示例,我希望每当旋转立方体时文本都保持垂直方向。基本上,我试图模仿VTK中轴标记的行为。

所以我认为这里的解决方案是将标签的up向量设置为一个始终与平面正交的向量。但我不确定如何实现这一点。任何建议或例子将不胜感激。

如果有帮助,我会使用BoxGeometryMeshNormalMaterial构建多维数据集。

1 个答案:

答案 0 :(得分:0)

你的意思是标签是否与立方体一起移动? 如果没有,则有一个例子:http://stemkoski.github.io/Three.js/Sprite-Text-Labels.html。标签面向您,但可能不垂直。 否则,你可能需要一个画布纹理,标签就像一个立方体就像一个对象,你可以设置它的位置以使它保持垂直。但它有时看起来不太好。例如:http://stemkoski.github.io/Three.js/Texture-From-Canvas.html。< / p>

我认为你只是希望当你改变视线时标签总是面向你。