Tôi đang tạo một số văn bản 3D bằng cách sử dụng WebGL
, three.js
và THREE.TextGeometry
. Nó hoạt động tốt cho đến nay. Tôi có thể tạo một dòng văn bản 3D.Làm cách nào để tạo một đa dòng TextGeometry? Làm thế nào để đặt nó bên trong một hình vuông để nó kết thúc tốt đẹp như văn bản html không bên trong một div?
Bây giờ tôi muốn tạo văn bản nhiều dòng, như đoạn văn ngắn. Tốt hơn, tôi muốn nó quấn tự nhiên khi nó đạt đến biên giới của một hộp/hình chữ nhật đặt nó vào. Tôi muốn có một hành vi tương tự mà tiêu chuẩn HTML
văn bản có khi nó bên trong của một div, gói nhiều dòng khi nó đạt đến cạnh của div cha của nó.
Đây là cách tôi đang tạo ra một dòng duy nhất:
textGeo = new THREE.TextGeometry(
'Hello there. Am I a paragraph? I hope so.',
'size': 30
'height': 2
'font': 'helvetiker'
'weight': 'normal'
'style': 'normal'
bevelThickness: 0.1
bevelSize: 0
bevelEnabled: true
material: 0
extrudeMaterial: 1
)
materialArray = [
new THREE.MeshBasicMaterial({ color: 0xFFFFFF })
new THREE.MeshBasicMaterial({ color: 0x666666, shading: THREE.SmoothShading })
]
textMaterial = new THREE.MeshFaceMaterial(materialArray)
textGeo = new THREE.Mesh(textGeo, textMaterial)
textGeo.position.x = -150
textGeo.rotation.y = de2ra(15)
scene.add textGeo
Làm thế nào tôi có thể làm cho nhiều dòng này? Ngoài ra, làm thế nào tôi có thể đặt này bên trong một hình vuông để nó kết thúc tốt đẹp? Làm cách nào để tạo hình vuông?
Nó sẽ có thể tính toán trước kích thước và kerning của mỗi chữ cái, sau đó tính toán có bao nhiêu chữ cái sẽ phù hợp với kích thước của canvas hoặc hình dạng mặt phẳng của bố mẹ? – zakdances
Có, có chức năng canvasText. Xem đoạn trích này từ [tại đây] (http://www.w3schools.com/tags/canvas_measuretext.asp): 'var c = document.getElementById (" myCanvas ");' 'var ctx = c.getContext ("2d"); ' 'ctx.font = "30px Arial";' ' var txt = "Hello World" ' 'ctx.fillText ("width:" + ctx.measureText (txt). width, 10,50) ' ' ctx.fillText (txt, 10,100); ' Bạn có thể đặt phông chữ của canvas thành phông chữ bạn sẽ sử dụng cho văn bản 3D. – disatisfieddinosaur