javascript – 如何制作TextGeometry多线?如何将它放在一个正方形内,以便它像div中的html文本一样包裹?

前端之家收集整理的这篇文章主要介绍了javascript – 如何制作TextGeometry多线?如何将它放在一个正方形内,以便它像div中的html文本一样包裹?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用WebGL,three.js和THREE.TextGeometry制作一些3D文本.它到目前为止工作正常.我能够创建一行3D文本.

现在我想创建多行文本,就像一个短段.最好,当它到达放置它的盒子/矩形的边框时,我希望它自然地包裹.我想要一个类似于标准HTML文本在div内部时所具有的行为,当它到达时包裹到多行它的边缘是父div.

以下是我创建单行的方法

  1. textGeo = new THREE.TextGeometry(
  2. 'Hello there. Am I a paragraph? I hope so.','size': 30
  3. 'height': 2
  4. 'font': 'helvetiker'
  5. 'weight': 'normal'
  6. 'style': 'normal'
  7. bevelThickness: 0.1
  8. bevelSize: 0
  9. bevelEnabled: true
  10. material: 0
  11. extrudeMaterial: 1
  12. )
  13.  
  14. materialArray = [
  15. new THREE.MeshBasicMaterial( { color: 0xFFFFFF } )
  16. new THREE.MeshBasicMaterial( { color: 0x666666,shading: THREE.SmoothShading } )
  17. ]
  18.  
  19. textMaterial = new THREE.MeshFaceMaterial(materialArray)
  20. textGeo = new THREE.Mesh(textGeo,textMaterial)
  21.  
  22. textGeo.position.x = -150
  23. textGeo.rotation.y = de2ra(15)
  24.  
  25. scene.add textGeo

我怎样才能制作这条多线?另外,我怎么能把它放在一个正方形里面呢?我如何创建广场?

解决方法

一种方法可能是 draw your text in HTML and render it in the 3D scene.

另一种方法是实例化文本,测试它的大小,并将其分成多个TextGeometry实例(如果它大于最大所需宽度),y轴偏移高度.您可以使用geometry.boundingBox(在调用geometry.computeBoundingBox()之后)获取几何的尺寸,这是一个THREE.Box3.边界框具有最小和最大属性,这些属性是表示相对角顶点的向量,因此您可以通过调用例如:给出沿给定轴的几何尺寸.

  1. geometry.boundingBox.max.x - geometry.boundingBox.min.x

猜你在找的JavaScript相关文章