关于Threejs的使用二

Threejs之前是没有使用过的,由于项目需要最近一段时间一直在研究;

关于绘制字体:

   有两种方案:

       1.可以通过页面添加标签化元素进行插入到页面中:

          //創建元素const descriptionElement = document.createElement('div');descriptionElement.style.position = 'absolute';descriptionElement.style.top = '10px';descriptionElement.style.left = '10px';descriptionElement.style.color = 'black';descriptionElement.innerHTML = description;document.body.appendChild(descriptionElement);//根據位置進行調整object.updateDescriptionPosition = function() {const vector = new THREE.Vector3();vector.setFromMatrixPosition(sphere.matrixWorld);const projectedPosition = vector.project(_this.cameraPersp);descriptionElement.style.left = (window.innerWidth * (projectedPosition.x + 1) / 2) + 'px';descriptionElement.style.top = (window.innerHeight * (1 - projectedPosition.y) / 2) + 'px';};

        2.可以通过使用threejs的3d文字绘制;

    在此使用之前遇到了一个问题: threejs的3d通过加载文字 英文、数字是没问题的,汉字显示的是问号,这就说明没有转换成功,后来找到原因是:由于threejs本身是不支持的,所以我们可以把需要的字体文件转换成json或者ttf版本进行加载;

import { FontLoader } from "three/examples/jsm/loaders/FontLoader.js";
import jsonText from "three/examples/fonts/FangSong_Regular.json";

      const fontLoader = new FontLoader();const font = fontLoader.parse(jsonText);const textGeometry = new THREE.TextGeometry("哈喽啊,朋友们~", {font: font,size: 5,height: 1.2,curveSegments: 12,bevelEnabled: true,bevelThickness: 0.1,bevelSize: 0.1,bevelOffset: 0,bevelSegments: 5,});var textMaterial = new THREE.MeshBasicMaterial({ color: color });var textMesh = new THREE.Mesh(textGeometry, textMaterial);textMesh.position.x = 10;   //根据自己的需要可以实时更新文字位置的变化textMesh.position.y = 10;textMesh.position.z = 10;this.scene.add(textMesh);function moveClick() { //改变字体的朝向textMesh.lookAt(_this.control.camera.position);}this.renderer.domElement.addEventListener("mousedown", moveClick, false);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/30860.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

求最小生成树的新算法

不管 prim 算法还是 kruskal 算法都基于 “当前可见最短边” 作贪心策略,但这并不适合分布式并行操作,比方说所有节点一起构建最小生成树,这些算法都显得同步开销过大,甚至导出错误的结果。 最近研究并构建最大流多路径传输协议的…

docker容器之间ip能ping通,但是端口访问不了

docker容器之间ip能ping通,但是端口访问不了 curl: (7) Failed to connect to 172.17.0.5 port 80: No route to host原因: 可能是因为启动docker前,服务器防火墙是关闭的,而启动之后修改了防火墙规则 解决方法: 重启…

如何获得一个Oracle 23ai数据库(vagrant box)

准确的说,是Oracle 23ai Free Developer版,因为企业版目前只在云上(OCI和Azure)和ECC上提供。 前面我博客介绍了3种方法: Virtual ApplianceRPM安装Docker 今天介绍最近新出的一种方法,也是我最为推荐的…

java通过jts获取点到线的垂足点

在Java中,可以使用JTS(Java Topology Suite)库来获取点到线段的垂足点。以下是一个简单的示例代码,展示了如何使用JTS获取点到线段的垂足点: 首先,确保你的项目中包含了JTS库。 import org.locationtech.j…

Debugger的使用

断点调试 1.打断点 2.以debug模式运行 3.流程控制

SQL注入-sqlmap使用

sqlmap简介 一款自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞,目前支持的数据库是MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB Sqlma…

移动应用开发-第8章广播机制

广播是一种运用在组件之间传递消息的机制。如果要接收并过滤广播中的信息,则需要使用BroadcastRecciver(广播接收者)。 8.1广播机制的概述 Android中的广播机制更加灵活,因为Android中每个应用程序都可以根据自己的需要对广播进…

图像处理:Python使用OpenCV 减少图片噪音

文章目录 1. 均值滤波 (Mean Filtering)2. 高斯滤波 (Gaussian Filtering)3. 中值滤波 (Median Filtering)4.代码实现示例5.效果展示 在图像处理中,均值滤波、高斯滤波和中值滤波是三种常用的降噪方法。它们的实现原理各有不同: 1. 均值滤波 (Mean Filte…

scp 命令如何不用输入密码实现拷贝

scp 命令如何不用输入密码实现拷贝 前言sshpass 安装sshpass 参数场景测试 前言 个人内网环境使用,不考虑安全问题。此处,使用 sshpass 。 sshpass 是一个用来非交互式地提供密码给 ssh 的工具。这对于自动化脚本非常有用,尤其是当你需要在…

Object类hashCode方法和equals方法源码

hashCode方法 顶级类Object里面的方法,所有类都是继承Object的,返回值int类型 根据一定的hash规则(存储地址、字段、或者长度等),映射成一个数值,即散列值 public static int hashCode(Object a[]) {if (a…

High-variance latent spaces

“High-variance latent spaces” 这个术语通常出现在机器学习和人工智能领域,特别是在涉及到生成模型、表示学习和特征学习的时候。在这个上下文中,“latent space” 指的是一个多维空间,其中每个点代表输入数据的一个潜在表示或特征向量。这…

wps要会员才能把pdf分开,这不纯属智商税吗

我有一个文档 然后 我给你们写好了一个代码 from PyPDF2 import PdfReader, PdfWriterdef split_pdf(file_path, ranges, output_names):# Open the input PDF filewith open(file_path, rb) as pdf_file:reader = PdfReader(pdf_file)total_pages = len(reader.pages)if len…

【Python 可变参数定义和使用】

可变参数允许函数接受不定数量的参数。在Python中,有两种类型的可变参数:可变位置参数(*args)和可变关键字参数(**kwargs)。 可变位置参数 (*args) 使用*args可以传递任意数量的位置参数给函数。参数会被…

Cookie、Session、Token的关系和区别

关系 Session与Cookie:Session通常依赖于Cookie来工作。当服务器为客户端创建一个Session时,它会在服务器上存储与客户端相关的信息,并将一个唯一的SessionID通过Cookie发送给客户端。客户端在后续的请求中会携带这个Cookie(包含…

北航数据结构与程序设计查找与排序编程题

查找与排序编程题 单词查找(查找——基本题)排座位(简)a 单词查找(查找——基本题) 【问题描述】 从标准输入中读入一个英文单词及查找方式,在一个给定的英文常用单词字典文件dictionary3000.…

如何使用SQL工具批量执行SQL文件?(以MySQL和SQLynx为例)

目录 1. 配置MySQL数据源 2. 打开 SQL 文件 3. 执行 SQL 文件 4. 检查执行结果 5. SQL文件示例 6. 注意事项 7. 总结 在现代数据库管理和操作中,批量执行 SQL 文件在 MySQL 中显现出其巨大的价值和不可替代的作用。通过将多个 SQL 语句集成在一个文件中进行批…

MySQL安装教程,包含root账户密码的修改(绿色版安装)---超简单好用

1、下载(mysql-8.0.27-winx64) 2、下载地址:https://dev.mysql.com/downloads/mysql/ 3、已经将 mysql-8.0.27-winx64 文件放在了文章最后,有需要的自取(解压配置即可用)。 4、配置环境变量: 右键点击我的电脑->属性->高级系统设置->高级->环境变量->系…

FineReport报表

一、报表类型 模板设计是 FineReport 学习过程中的主要难题所在,FineReport 模板设计主要包括普通报表、聚合报表、决策报表三种设计类型。 官网: ‘‘报表类型简介- FineReport帮助文档 - 全面的报表使用教程和学习资料 ‘’ 二、聚合报表 2-1 介绍…

爬虫逆向实战(41)-某花顺登陆(Cookie、MD5、SHA256)

一、数据接口分析 主页地址:某花顺 1、抓包 通过抓包可以发现在登陆时,网站首先请求了pwdRangeCalcRegular.json、getGS两个接口,接着请求dologinreturnjson2进行登陆,但是此接口会返回请先完成滑块验证码校验的响应。然后网站…

C 语言通用MySQL 功能增删查改功能.

前提条件:Ubuntu 22.04.4 LTS、MSQL 8数据库 并且已经安装MySQL 8 开发库。如果没有安装,可以查考:C 语言连接MySQL数据库 项目要求: 1、完成MySQL数据库增删改查通用功能封装 2、编辑makefile 文件实现项目动态更新和快速编译 项目结构…