这仍然在r69中可用吗?在“滚动”的过程中我自己,但在继续前进之前,要确保我没有忽略任何重要的文档或有用的库......
答案 0 :(得分:10)
尝试完成此example。查看控制台中的消息。
<script src="js/modifiers/BendModifier.js"></script>
var text = "THREE.BendModifier";
var textGeometry = new THREE.TextGeometry(text, {
size: 128,
height: 50,
curveSegments: 4,
font: "gentilis",
weight: "bold",
style: "normal",
bevelEnabled: true,
bevelThickness: 2,
bevelSize: 1,
});
var textMaterial = new THREE.MeshPhongMaterial({
color: 0x62254a
});
var text3D = new THREE.Mesh(textGeometry, textMaterial);
var direction = new THREE.Vector3(0, 0, -1);
var axis = new THREE.Vector3(0, 1, 0);
var angle = Math.PI / 6;
var modifier = new THREE.BendModifier();
modifier.set(direction, axis, angle).modify( text3D.geometry );
textGeometry.computeBoundingBox();
var textWidth = textGeometry.boundingBox.max.x - textGeometry.boundingBox.min.x;
text3D.position.set(-0.5 * textWidth, 500, 0);
scene.add(text3D);
答案 1 :(得分:4)
只是想提一下你需要根据这里https://stackoverflow.com/a/40492948/7132939更改BendModifier.js 使其适用于较新版本的three.js
BendModifier.js使用THREE.Matrix3.getInverse(),它不再起作用了。 因此,您需要更改BendModifier.js以使用THREE.Matrix4.getInverse(..)以及链接答案中提到的另一个更改。
生成文本已更改 - 使用THREE.fontLoader()
可以找到完整的工作示例following this link
内部链接的完整答案:
THREE.js发生了变化,但调整BendModifier.js脚本非常容易。只需更改行
即可 var InverseP = new THREE.Matrix3().getInverse( P );
和
newVertices[i] = new THREE.Vector3(); newVertices[i].copy( geometry.vertices[i] ).applyMatrix3( InverseP );
到Matrix4 - 所以他们会读:
var InverseP = new THREE.Matrix4().getInverse( P );
和
newVertices[i] = new THREE.Vector3(); newVertices[i].copy( geometry.vertices[i] ).applyMatrix4( InverseP );
刚刚尝试使用three.min.81.js,它运行正常。