加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

three.js 做成3d文字效果思路及代码

发布时间:2022-04-20 08:51:39 所属栏目:语言 来源:互联网
导读:网页展示文字的方式有很多,将文字刻在3D图形上的你有没有看到过呢?将文字刻在3D图形上,文字能够随着图形一起运动,视觉效果呈现更酷炫。那么这是如何实现的呢?three.js是一款运行在浏览器中的3D引擎,我们能用它创建各种三维场景。因此,我们能够尝试使
       网页展示文字的方式有很多,将文字刻在3D图形上的你有没有看到过呢?将文字刻在3D图形上,文字能够随着图形一起运动,视觉效果呈现更酷炫。那么这是如何实现的呢?three.js是一款运行在浏览器中的3D引擎,我们能用它创建各种三维场景。因此,我们能够尝试使用three.js来复现3D动态文字效果。
 
准备工作
       笔者自行封装的three.js模板:Three.js Starter。读者可以点击右下角fork一份后再开始本项目。本项目需要用到位图字体,可以直接复制demo的HTML里的font字体代码
 
       一个注意点:three-bmfont-text这个库依赖全局的three.js,因此要在JS里额外引入一次three.js,如下图
  
       实现思路
加载位图字体文件,将其转化为文字对象所需要的形状和材质
创建文字对象
创建渲染目标,可以理解为canvas中的canvas,因为接下来我们要将文字对象本身当做贴图
创建承载字体的容器,将文字对象作为贴图贴上去
动画
       正片
       搭好架子
 
<div class="relative w-screen h-screen">
 <div class="kinetic-text w-full h-full bg-blue-1"></div>
 <div class="font">
 <font>
  一坨从demo里CV而来的字体代码
 </font>
 </div>
</div>
:root {
 --blue-color-1: #2c3e50;
}
 
class KineticText extends Base {
 constructor(sel: string, debug: boolean) {
 super(sel, debug);
 this.cameraPosition = new THREE.Vector3(0, 0, 4);
 this.clock = new THREE.Clock();
 this.meshConfig = {
  torusKnot: {
  vertexShader: kineticTextTorusKnotVertexShader,
  fragmentShader: kineticTextTorusKnotFragmentShader,
  geometry: new THREE.TorusKnotGeometry(9, 3, 768, 3, 4, 3)
  }
 };
 this.meshNames = Object.keys(this.meshConfig);

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读