Three.js 3D文本弯曲

时间:2014-12-31 03:59:02

标签: javascript three.js typography

这仍然在r69中可用吗?在“滚动”的过程中我自己,但在继续前进之前,要确保我没有忽略任何重要的文档或有用的库......

2 个答案:

答案 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

Screenshot of web site - 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,它运行正常。

相关问题