如何制作 TextGeometry 多行?如何将它放在一个正方形内,以便它像 html 文本在 div 内一样换行?

2023-11-27

我正在使用一些 3D 文本WebGL, three.js, and THREE.TextGeometry。到目前为止一切正常。我能够创建单行 3D 文本。

现在我想创建多行文本,例如一个短段落。最好,我希望它在到达放置它的盒子/矩形的边界时自然包裹。我想要一个与标准类似的行为HTML当文本位于 div 内部时,文本会在到达其父 div 的边缘时换行为多行。

这是我创建单行的方法:

 textGeo = new THREE.TextGeometry(
    'Hello there. Am I a paragraph? I hope so.',
    'size': 30
    'height': 2
    'font': 'helvetiker'
    'weight': 'normal'
    'style': 'normal'
    bevelThickness: 0.1
    bevelSize: 0
    bevelEnabled: true
    material: 0
    extrudeMaterial: 1
  )

  materialArray = [
    new THREE.MeshBasicMaterial( { color: 0xFFFFFF  } )
    new THREE.MeshBasicMaterial( { color: 0x666666, shading: THREE.SmoothShading } )
  ]

  textMaterial = new THREE.MeshFaceMaterial(materialArray)
  textGeo = new THREE.Mesh(textGeo, textMaterial)

  textGeo.position.x = -150
  textGeo.rotation.y = de2ra(15)

  scene.add textGeo

我怎样才能制作这个多线?另外,我怎样才能把它放在一个正方形里,这样它就会包裹起来?如何创建正方形?


一种方法可能是在 HTML 中绘制文本并在 3D 场景中渲染它.

另一种方法是实例化文本,测试它有多大,如果它大于您所需的最大宽度(在 y 轴上偏移高度),则将其分割为多个 TextGeometry 实例。您可以使用以下命令获取几何体的尺寸geometry.boundingBox(调用后geometry.computeBoundingBox())这是一个THREE.Box3。边界框有min and max属性是表示对角顶点的向量,因此您可以通过调用以下命令来获取几何体沿给定轴的尺寸:

geometry.boundingBox.max.x - geometry.boundingBox.min.x
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何制作 TextGeometry 多行?如何将它放在一个正方形内,以便它像 html 文本在 div 内一样换行? 的相关文章

随机推荐

  • [Android]NumberPicker 选中项改变颜色

    是否可以更改 numberpicker 中所选项目的颜色 以便每次出现新的中心子 TextView 时将其颜色更改为我喜欢的颜色 但我没有找到任何与此相关的样式或 API 公开 I tried to follow many answers
  • 更改 Chrome 4xx 页面

    我正在部署一个信息亭系统 该系统使用 Chrome 来显示在 jetty 中运行的 java web 应用程序 该应用程序以 Windows 服务包装器启动 系统启动后需要一些时间才能让 jetty 准备好提供内容 因此现在我需要等待 然后
  • 如何按照声明的顺序读取类属性?

    我正在编写一个读取类属性并将它们存储在列表中的元类 但我希望列表 cls columns 尊重声明顺序 即 mycol2 mycol3 zut cool menfin a在我的例子中 import inspect import pprint
  • ActiveMQ Jolokia API 如何获取完整的消息正文

    我想编写自己的 ActiveMQ 监视器 我可以从队列中获取队列和消息 但消息正文 内容 很短 如何获得完整的消息正文 这个我已经测试过了 Get Always errors http localhost 8161 api jolokia
  • 按行数拆分数据框

    我有一个由 400 000 行和大约 50 列组成的数据框 由于这个数据帧太大 处理起来计算量太大 我想将此数据帧分割成更小的数据帧 然后运行我想要运行的函数 然后最后重新组装数据帧 我没有想用来分割此数据框的分组变量 我只想按行数将其拆分
  • Rails/ActiveRecord:将更改保存到模型的关联集合

    我是否必须保存对模型集合中各个项目的修改 或者是否可以在保存模型时调用一种方法来保存它们 save似乎没有这样做 例如 irb gt rental gt
  • 使用 PowerShell 以 UTF-8 写入无 BOM 的文件

    Out File使用 UTF 8 时似乎会强制使用 BOM MyFile Get Content MyPath MyFile Out File Encoding UTF8 MyPath 如何使用 PowerShell 以 UTF 8 格式写
  • 创建已完成的任务

    我正在实现一个方法Task
  • Scala“<-”用于理解

    我发现 Scala 总是对任何事情都有 自然的解释 总是类似 哦 但这只是用这个和那个参数在这个和那个对象上调用的函数 从某种意义上说 没有什么是真正像我们从其他语言中了解到的那样具有编译器魔力 我的问题是关于 lt 运算符如以下代码中所使
  • Jersey 客户端下载并保存文件

    我是球衣 JAX RS 实施的新手 请在下面找到我的球衣客户端代码来下载文件 Client client Client create WebResource wr client resource http localhost 7070 up
  • iPhone 模拟器和 applicationWillTerminate()

    当我的应用程序在 iPhone 模拟器中运行时 委托方法 void applicationWillTerminate UIApplication application 仅在我第一次按下 iPhone 模拟器的主页按钮时调用 按下主页按钮并
  • 找不到模块“puppeteer-core/internal/common/Device.js”

    重现问题的步骤 我使用 npm i puppeteer 安装了 puppeteer 使用 WSL ubuntu 当我尝试在一个简单的测试中加载 puppeteer 时 import puppeteer from puppeteer 我收到错
  • Moviepy 无法读取文件的持续时间

    我一直在使用 Moviepy 将几个较短的视频文件合并为一个小时长的文件 一些小文件被 损坏 它们包含视频但未正确完成 即它们使用 VLC 播放 但没有持续时间 并且您无法在视频中跳过 当我尝试使用 VideoFileClip file 函
  • NSString Compare: 和 isEqual(ToString): 之间有区别吗?

    有时我会发现测试两个是否存在的代码NSStrings 是一样的 if str1 compare str2 NSOrderedSame Do something 现在 我相信这比使用的可读性更差isEqualToString 它也有一些令人讨
  • Pygame:导入错误:libSDL_ttf-2.0.so.0:无法打开共享对象文件:没有这样的文件或目录

    从源代码来看 游戏运行良好 当我在 Linux 上使用 cx Freeze 编译二进制文件时 我在第二台机器上遇到了错误 tmp exe linux x86 64 2 7 rungame home local tmp exe linux x
  • Codeigniter 中的 PHPExcel 错误

    我正在尝试将 PHPExcel 与 CodeIgniter 一起使用 但我有一个错误 致命错误 从第 949 行 C ms4w Apache htdocs plantation system core Loader php 中的上下文 CI
  • 异步等待 + toPromise 挂起

    我在用着ngx 条纹 并且 createToken 返回一个 Observable 我尝试将其转换为 Promise 以便我可以使用 Async await 然而 这个承诺似乎并没有兑现 调试不会透露任何内容 并且我的 try Catch
  • 使用 AFNetworking 2.0 的 POST 请求 - AFHTTPSessionManager

    Hej 我正在努力向解析 REST API 发出 POST 请求 我正在使用 AFNetworking 2 0 我的 AFHTTPSessionManager 子类代码如下所示 ParseAPISession sharedSession s
  • 我可以更改 Xcode IDE 字体的大小吗?

    我想更改 Xcode IDE 的 组和文件 面板的字体大小 我知道如何更改首选项中的 字体和颜色 但这些 似乎 只影响代码窗口 而不影响 IDE 的其余部分 有任何想法吗 谢谢 我相信您可以通过设置 PBX 表字体大小参数来更改组和文件窗格
  • 如何制作 TextGeometry 多行?如何将它放在一个正方形内,以便它像 html 文本在 div 内一样换行?

    我正在使用一些 3D 文本WebGL three js and THREE TextGeometry 到目前为止一切正常 我能够创建单行 3D 文本 现在我想创建多行文本 例如一个短段落 最好 我希望它在到达放置它的盒子 矩形的边界时自然包