首页 > 其他分享 >threeJs 创建文字方式

threeJs 创建文字方式

时间:2022-12-09 11:23:38浏览次数:41  
标签:文字 threeJs const 创建 THREE context canvas new font

一,使用 TextGeometry创建3D文字

1.需加载字体配合使用,使用THREE.FontLoader

 // 加载字体
    loadFont() {
      return new Promise(function (resolve, reject) {
        const loader = new THREE.FontLoader();
        loader.load( './helvetiker.json', function ( response ) {
          try {
            resolve(response)
          } catch(error) {
            reject(error)
          }
        });
      })

    }

注意:如果出现中文乱码问题,需挑选中文字体文件再转换成json使用,转换地址:http://gero3.github.io/facetype.js

2,使用 TextGeometry添加

    const font = await this.loadFont()

    fontOption = {
      font: font,
      size: 0.5,
      height: 0,
      curveSegments: 1,
      bevelThickness: 1,
      bevelSize: 0,
      bevelEnabled: false,
      bevelSegments: 0,
    };
  
     
    let txtMater = new THREE.MeshBasicMaterial({color: 0xffffff});

     const txtGeo1 = new THREE.TextGeometry('你好123', fontOption);

     let txtMesh1 = new THREE.Mesh(txtGeo1, txtMater);

     txtMesh1.position.set(0, 0, 8);

     this.scene.add(txtMesh1);    

  

 

二、使用CanvasTexture + Sprite生成文字

    let canvas = document.createElement('canvas');
    canvas.width = 400;
    canvas.height = 200;

    const context = canvas.getContext('2d');
   
    context.font = '60px Microsoft YaHei';
    context.textAlign = 'center';
    context.fillStyle = '#ffffff';
    const text = '宽度:1.2'
    const textWidth =  context.measureText(text).width
    context.fillText(text, textWidth / 2, 80);
 
   
    const texture = new THREE.CanvasTexture(canvas);
    texture.needsUpdate = true;
    
    const textSprit = new THREE.Sprite(new THREE.SpriteMaterial({map: texture, color: 0xffffff}));

    textSprit.position.set(0, 0, 8);
    textSprit.scale.set(2, 2, 2)

    this.scene.add(textSprit);    

  

标签:文字,threeJs,const,创建,THREE,context,canvas,new,font
From: https://www.cnblogs.com/xiaoluoli/p/16968404.html

相关文章

  • Threejs:光影
     环境光constcolor=0xFFFFFF;constintensity=1;constlight=newTHREE.AmbientLight(color,intensity);scene.add(light);创建地面constplaneSize=......
  • Threejs:捕获鼠标位置
     //获取鼠标坐标functiononPointerMove(event){//将鼠标点击位置的屏幕坐标转换成threejs中的标准坐标mouse.x=(event.clientX/window.innerWidth)*2-......
  • Threejs:创建矩阵
     设置顶点创建矩形constgeometry3=newTHREE.BufferGeometry();constvertices=newFloat32Array([-1.0,-1.0,1.0,1.0,-1.0,1.0,1.0,1.0,1.0,......
  • Threejs:创建纹理
    创建纹理//导入纹理constloader=newTHREE.TextureLoader();//加载所需要的纹理图片consttexture1=loader.load('./dist/texture/sea.jpg')constmaterial5......
  • Threejs:创建几何体——图元
     BoxGeometry盒子+MeshBasicMaterialconstgeometry=newTHREE.BoxGeometry(1,1,1);constmaterial=newTHREE.MeshBasicMaterial({color:0x00ff00});const......
  • day1:node安装+项目创建
    一、安装node1、http://nodejs.cn/download/中文网下载node工具,直接下一步式的安装。二、验证安装1、win+r 输入cmd,分别运行一下,node-v  npm-v ......
  • C# 创建文件到共享目录 C# create file to share folder
    try{//MapadriveSystem.Diagnostics.Process.Start(@"C:\WINDOWS\system32\net.exe",......
  • 从gin的启动开始看socket是如何在go服务器中创建的
    从gin的启动开始看socket是如何在服务器中创建的:gin->net/http->net->internal/syscall->syscall->runtime通过上面的调用流程,可以看出,http是对net的封装,方便开......
  • launcher的创建
    新入门skynet系列视频b站网址https://www.bilibili.com/video/BV19d4y1678X#launcher的创建目录当前工作线程完成步骤1可能另一个工作线程完成步骤2launcher服务是......
  • 随笔(四)『Java多线程(创建线程方式)』
    1、创建线程方式一:『继承Thread类』/***创建线程方式一:『继承Thread类』*/publicclassThreadTest{publicstaticclassMyThreadextendsThread{......