From 18d2d52b5e4b4e2cb770c95b0ec8653399ac60a5 Mon Sep 17 00:00:00 2001 From: Hcat <2768237203@qq.com> Date: Sun, 21 Jan 2024 21:14:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BB=96=E6=9D=B0=EF=BC=9A=E8=B7=AF=E7=89=8C?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../content/tunnelScene/sceneClass/demo.js | 2 +- .../sceneClass/utils/StreetSignTag.js | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 src/components/content/tunnelScene/sceneClass/utils/StreetSignTag.js diff --git a/src/components/content/tunnelScene/sceneClass/demo.js b/src/components/content/tunnelScene/sceneClass/demo.js index d5975ca..2721671 100644 --- a/src/components/content/tunnelScene/sceneClass/demo.js +++ b/src/components/content/tunnelScene/sceneClass/demo.js @@ -11,7 +11,7 @@ import addFunction from "./addEvent"; import { editTunnelInit } from "./editTunnelInit"; import { addEquipment, removeEquipment } from "./editEquipment"; import previewtunnelModeInit from "./previewTunnelInit" -import StreetSignTag from "./utils/StreetSignTag"; +import { StreetSignTag } from "./utils/StreetSignTag.js"; export default class Demo { // 摄像机看向位置 origin = null; diff --git a/src/components/content/tunnelScene/sceneClass/utils/StreetSignTag.js b/src/components/content/tunnelScene/sceneClass/utils/StreetSignTag.js new file mode 100644 index 0000000..d0f8e64 --- /dev/null +++ b/src/components/content/tunnelScene/sceneClass/utils/StreetSignTag.js @@ -0,0 +1,26 @@ +import * as THREE from "three";/** +* 返回一个带有文字的的#3D材质 +* 把输入的文字转化为base64的img图片 +* @param {String} text +* @param {String} param 传感器实时检测参数 +*/ +export function StreetSignTag(text = "", param = "", width = 250, height = 150) { + const canvas = document.createElement("canvas"); + canvas.width = width; + canvas.height = height; + const ctx = canvas.getContext("2d"); + ctx.fillStyle = "#003BA8"; + ctx.fillRect(0, 0, width, height); + ctx.fillStyle = "white"; + ctx.font = "15px serif"; + ctx.fillText('隧道简称:' + text, (100 - text.length * 1) / 50, 40); + ctx.fillText('隧道长度:' + param + 'm', (100 - param.length * 1) / 50, 115); + ctx.strokeStyle = "white"; + ctx.moveTo(0, 75); + ctx.lineTo(30000, 120); + ctx.stroke(); + const base64 = canvas.toDataURL(); + return new THREE.MeshBasicMaterial({ + map: new THREE.TextureLoader().load(base64), + }); +} \ No newline at end of file