Three.js学习之文字形状及自定义形状

  说起3d文字想起了早年word里的一些艺术字:

Three.js学习之文字形状及自定义形状

  那么TextGeometry可以用来创建三维的文字形状。

  使用文字形状需要下载和引用额外的字体库。这里,我们以 helvetiker字体为例。

引用:

<script type="text/javascript" src="https://www.jb51.net/你的路径/helvetiker_regular.typeface.json"></script>

  TextGeometry的构造函数是:

THREE.TextGeometry(text, parameters)

  text是文字字符串;

  parameters是以下参数组成的对象:

    · size:字号大小,一般为大写字母的高度

    · height:文字的厚度

    · curveSegments:弧线分段数,使得文字的曲线更加光滑

    · font:字体,默认是'helvetiker',需对应引用的字体文件

    · weight:值为'normal'或'bold',表示是否加粗

    · style:值为'normal'或'italics',表示是否斜体

    · bevelEnabled:布尔值,是否使用倒角,意为在边缘处斜切

    · bevelThickness:倒角厚度

    · bevelSize:倒角宽度

  创建一个三维文字:new THREE.TextGeometry('Hello', {size: 1, height: 1}),其效果为:

Three.js学习之文字形状及自定义形状

  可以适当调整材质和光照以达到期望效果:

//金属发亮物体 var material = new THREE.MeshPhongMaterial({ color: 0xffff00, specular:0xffff00, //指定该材质的光亮程度及其高光部分的颜色,如果设置成和color属性相同的颜色,则会得到另一个更加类似金属的材质,如果设置成grey灰色,则看起来像塑料 shininess:0 //指定高光部分的亮度,默认值为30 }); //方向光 var light = new THREE.DirectionalLight(0xffffff); light.position.set(-5, 10, 5); scene.add(light);

Three.js学习之文字形状及自定义形状

  源码:

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>3.js测试六</title> </head> <body> <canvas ></canvas> </body> <script type="text/javascript" src="https://www.jb51.net/js/three.min.js"></script> <!-- Find more information at https://github.com/mrdoob/three.js/tree/master/examples/fonts --> <script type="text/javascript"> function init() { var renderer = new THREE.WebGLRenderer({ canvas: document.getElementById('mainCanvas') }); renderer.setClearColor(0x000000); var scene = new THREE.Scene(); // camera var camera = new THREE.OrthographicCamera(-2.5, 2.5, 1.875, -1.875, 0.1, 100); camera.position.set(5, 5, 20); camera.lookAt(new THREE.Vector3(1, 0, 0)); scene.add(camera); // var material = new THREE.MeshBasicMaterial({ // color: 0xffff00, // wireframe: true // }); //金属发亮物体 var material = new THREE.MeshPhongMaterial({ color: 0xffff00, specular:0xffff00, //指定该材质的光亮程度及其高光部分的颜色,如果设置成和color属性相同的颜色,则会得到另一个更加类似金属的材质,如果设置成grey灰色,则看起来像塑料 shininess:0 //指定高光部分的亮度,默认值为30 }); //方向光 var light = new THREE.DirectionalLight(0xffffff); light.position.set(-5, 10, 5); scene.add(light); // load font var loader = new THREE.FontLoader(); loader.load('./helvetiker_regular.typeface.json', function(font) { var mesh = new THREE.Mesh(new THREE.TextGeometry('Hello', { font: font, size: 1, height: 1 }), material); scene.add(mesh); // render renderer.render(scene, camera); }); } </script> </html>

2.自定义形状

  对于Three.js没有提供的形状,可以提供自定义形状来创建。

  由于自定义形状需要手动指定每个顶点位置,以及顶点连接情况,如果该形状非常复杂,程序员的计算量就会比较大。在这种情况下,建议在3ds Max之类的建模软件中创建模型,然后使用Three.js导入到场景中,这样会更高效方便。

  自定义形状使用的是Geometry类,它是其他如CubeGeometry、SphereGeometry等几何形状的父类,其构造函数是:

THREE.Geometry()

  初始化一个几何形状,然后设置顶点位置以及顶点连接情况:

Three.js学习之文字形状及自定义形状

  源码:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wzxxjy.html