基于babylon的轻量化模型引擎BCBIM学习(3)

313 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第11天,点击查看活动详情

前言

之前已经学习了如何用bcbimJs创建初始化场景,模型的上传、加载、销毁、隐藏和显示等接口,今天接着讲如何创建文字模型。

文字模型

创建文字模型

api.creatMeshWriter(text,config);

接口描述:

创建字体文件

传入参数:

  • text:所创建文字内容(必填)
  • config:所创建文字的样式 (非必填)

调用实例:

image.png

首先在页面上增加一个设置文字模型的按钮。声明一下,我这是用html和jQuery写的demo,用来学习测试的,如果是vue就不需要这样写。

        <div>
            <button id="createWordModel">设置文字模型</button>
        </div>
        $('#createWordModel').click(() => {
            let config = {
                scale: 0.1, // 缩放大小 默认0.1
                anchor: 'center',//锚点 可选值 left、right、center默认center
                size: 10, // 文字大小 默认10
                color: '#333333',//默认#333333
                position: { //文字位置 默认x:0,y:0,z:0
                    x: 0,
                    y: 0,
                    z: 0
                }
            }
            api.creatMeshWriter('这是我添加的文字', config).then(textMesh => {
                console.log(textMesh)//创建完成返回的字体模型
            });
        })

image.png

点击按钮生成文字模型

image.png

这就是生成的文字模型,等我给他换个角度看,这就能看见了。

image.png

设置字体模型颜色,透明度

接着我们来给这个文字设置颜色,来个绿色吧,健康点,再加点透明度看看会怎么样。

api.creatMeshWriter('这是一段文字').then(textMesh => {
     console.log(textMesh) //返回的字体模型
     textMesh.setColor('#00ff00');// 设置字体模型颜色
     textMesh.setAlpha(0.5);// 设置字体模型透明度
});

image.png

设置字体模型旋转

但是这个文字添加好之后从初始角度看它是趴在地上的,扁平的,我们来让它旋转一下,以便于第一眼就能直观的看见文字内容。

api.setMeshWriteRotation(textMesh,rotation);

接口描述:

创建字体模型完成后,需要字体模型旋转调用此接口

传入参数:

  • textMesh:创建完模型返回的字体模型(必填

  • rotation:各轴旋转度数(必填,不填默认为不旋转)

调用实例:

api.creatMeshWriter('这是一段文字').then(textMesh => {
    console.log(textMesh) //返回的字体模型
    let rotation = {
        x:-90,
        y:180,
        z:0
    }
    api.setMeshWriteRotation(textMesh,rotation)
});

image.png

设置字体模型位置

虽然现在可以一眼就看见模型的位置,但是模型和文字之间其实是有距离的,并不是挨在一起的。

image.png

我现在想让这个文字标记模型的某个位置,就需要调整文字模型的位置了。

api.setMeshWritePosition(textMesh,position);

接口描述:

创建字体模型完成后,需要修改字体模型位置调用此接口

传入参数:

  • textMesh:创建完模型返回的字体模型(必填

  • position:位置坐标(必填,不填默认为原点)

    let position = {
    	x:100,
    	y:100,
    	z:100
    }
    

调用实例:

api.creatMeshWriter('这是一段文字').then(textMesh => {
    console.log(textMesh) //返回的字体模型
    let position = {
        x:-200,
        y:50,
        z:-600
    }
    api.setMeshWritePosition(textMesh,position)
});

这一下就将文字模型加到了模型内部,从那个窗口可以看见一面的文字。

image.png

销毁字体模型

之前讲过,创建的模型不会消失,如果在不需要使用该模型的时候,需要调销毁接口进行模型销毁。这个文字模型也是一样,为了不占用资源,他也需要在不使用的时候进行销毁。

api.creatMeshWriter('这是一段文字').then(textMesh => {
     console.log(textMesh) //返回的字体模型
     textMesh.dispose()// 销毁模型
});