Three.js 中的渐进式加载/LOD/流网格

2024-01-09

我正在使用 STL 加载器将 stl 文件加载到 Three.js 场景中。这些 stl 文件的大小从 5mb 到 50mb 不等。

有没有一种方法可以用来在模型加载时逐步加载/流式传输/提高细节级别(不确定术语是否正确),以便我的用户在出现任何内容之前不会盯着空白屏幕几分钟?

如果模型有 20,000 个三角形, Three.js 是否有一种方法可以先仅加载 2,000 个三角形,然后再加载完全详细的模型?


真正的渐进式加载/网格流并不是开箱即用的。但这会很棒并且是可行的。

它是通过 WebGL 完成的,没有使用 POP 缓冲区的 Three.js:http://x3dom.org/pop/ http://x3dom.org/pop/ & https://github.com/thibauts/pop-buffer https://github.com/thibauts/pop-buffer

其中一个演示是:http://x3dom.org/pop/happy.html http://x3dom.org/pop/happy.html

我希望有一天我们也会为 Three.js 提供很好的 POP 缓冲区(或类似的替代方案)渐进式加载——也在我/我们的待办事项/愿望清单中,但在此之前还有很多事情..当然不介意如果之前有人写过:)

三个确实包含一个简单的 LOD 机制,但它是为了帮助渲染负载而不是加载时间:http://trijs.org/docs/#Reference/Objects/LOD http://threejs.org/docs/#Reference/Objects/LOD & http://trijs.org/examples/webgl_lod.html http://threejs.org/examples/webgl_lod.html

对于一个简单的解决方案,您可以编写模型的低版本和高版本,并编写自定义加载逻辑,以首先加载低版本并显示它们,然后继续加载高版本等。

我们已经在一个项目中做到了这一点,工作正常,符合预期。我能想到的唯一缺点是它增加了获得高版本的总时间。但低的可以非常小,所以没关系(在我们的例子中,低多边形无纹理,只有垂直颜色,然后高多边形有更多的多边形,但本质上也相当大的纹理)。

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

Three.js 中的渐进式加载/LOD/流网格 的相关文章

随机推荐

  • 在 CTRL+MOUSEWHEEL 事件上

    我被要求为我们的页面站点实现 ctrl mousewheel 事件 以便更改用户放大或缩小时的图像偏移 我找到了这个旧答案使用 javascript 覆盖浏览器 CTRL WHEEL SCROLL https stackoverflow c
  • 将带有哈希密码的用户表从旧的 php 应用程序迁移到新的 laravel 应用程序

    我正在开发一个旧的 php 应用程序 用户的密码是用md5 功能 所以密码的存储方式如下 c0c92dd7cc524a1eb55ffeb8311dd73f 我正在使用 Laravel 4 开发一个新应用程序 我需要有关如何迁移的建议user
  • 如何使用PHP7连接到sql服务器? (我错过了什么?)

    这是 phpinfo 输出 版本 php http cellcasehub com version php 这是代码 serverName X X X X connection array UID gt UserID PWD gt Pass
  • UnicodeDecodeError 'utf-8' 编解码器无法解码位置 2893 中的字节 0x92:无效的起始字节

    我正在尝试打开一系列 HTML 文件 以便使用 BeautifulSoup 从这些文件的正文中获取文本 我有大约 435 个文件想要运行 但我不断收到此错误 我尝试将 HTML 文件转换为文本并打开文本文件 但出现相同的错误 path Bi
  • Moq to Rhino - 假部分存储库

    我得到了这个非常酷的 Moq 方法 它伪造了我的 GetService 看起来像这样 private Mock
  • 在 jooq 的 UPDATE 中使用原始值表达式

    这是我试图执行的查询 UPDATE TABLE users SET metadata metadata keyA keyB WHERE
  • 如何在 R 中获取当前种子

    我正在 R 中运行一个带有随机因子的函数 我意识到我忘记运行set seed 在运行这个函数之前 有什么方法可以找回seedR 正在使用的值 我想它将是任意数字 但并不重要 以便我可以重现执行 您可以使用以下命令获取当前的随机状态 Rand
  • 如何将地址转换为纬度/经度?

    我如何将地址或城市转换为纬度 经度 我可以从哪些商业机构 租用 这项服务 这将用于具有全时互联网访问的 Windows PC 上的商业桌面应用程序 谷歌有一个地理编码 API 似乎对于他们拥有谷歌地图数据的大多数位置都运行良好 http g
  • 为什么内部 TABLE 部分必须经过 THEAD TFOOT TBODY 才能验证?

    我经常使用 THEAD TBODY 和 TFOOT 元素将数据表划分为可以使用 CSS 单独寻址的部分 我也明白总是有一个隐式的 TBODY 标签 让我困惑的是这些必须进入验证的顺序 该表将验证
  • Hadoop 映射器从 2 个不同的源输入文件读取

    我有一个链接很多映射器和缩减器的工具 在某些时候我需要合并之前映射缩减步骤的结果 例如作为输入 我有两个包含数据的文件 input a txt apple 10 orange 20 input b txt apple 5 orange 40
  • 如何使用javas Process.waitFor()?

    我正在尝试从 Java 运行命令行命令 快速的健全性检查让我意识到我遇到麻烦的原因是我无法获取pr waitFor 请拨打以下电话进行工作 该程序在不到 30 秒内结束 并且在 foo 之后不打印任何内容 我预计它会花费 30 多秒并在 f
  • 如何从模块导入类而不导入整个模块

    我有一个非常大的 python 模块 超过 1 GB 我使用以下命令在另一个 python 脚本中从该模块导入一个类from module import class 问题是 当我第一次启动 python 脚本时 内存消耗非常高 并且脚本执行
  • 具有多个手柄的 JQuery UI 滑块:如何阻止手柄交叉?

    我正在开发一个快速解决方案 它使用具有多个手柄的滑块来定义动态布局的宽度 我尝试使用 ExtJS3 和最新的 JQuery UI 在 ExtJS 中 您可以限制句柄 这样它们就不会相互交叉 这是一种实现我需要的 UI 的非常直观的方法 但是
  • 初始化集合时,哈希集对内存有何作用?

    我偶然发现了以下问题 我想要一个包含从 1 到 100 000 000 的所有数字的哈希集 我尝试了以下代码 var mySet new HashSet
  • ServiceStack OrmLite 命令超时

    使用 IDbConnection ExecuteSql 时如何设置命令超时 IDbConnection db ConnectionFactory OpenDbConnection db ExecuteSql 如果我使用 IDbCommand
  • 在撰写中禁用横向模式

    如何禁用可组合函数的横向模式 我想始终以纵向模式显示可组合项 PS 无法在活动的清单文件中设置它 因为我只希望此行为适用于一个可组合项 而不适用于活动中的其他可组合项 你可以这样做DisposableEffect 活动requestedOr
  • 线程:PyQt 因“出队时队列中存在未知请求”而崩溃

    我正在开发的应用程序的一部分需要向一小群人发送一些电子邮件 由于连接到 SMTP 服务器并发送电子邮件可能需要一些时间 因此我想在此操作期间使用后台线程来提供一个进度条来完成这项工作 现在发生的情况是 我可以实现一个工作得很好的测试结构 但
  • PHP 中如何判断 value 是否为日期

    我正在使用 PHP 中的值数组 其中一些值可能包括各种字符串格式的日期 我需要将多种格式的日期转换为它们的等效数字 Unix 时间戳 问题是能够确定字符串是否是日期 Using if timestamp strtotime str fals
  • Android:加密密码[重复]

    这个问题在这里已经有答案了 可能的重复 存储密码 https stackoverflow com questions 5359399 storing a password 我正在使用共享首选项来存储密码 按原样保存密码数据是否安全 或者我必
  • Three.js 中的渐进式加载/LOD/流网格

    我正在使用 STL 加载器将 stl 文件加载到 Three js 场景中 这些 stl 文件的大小从 5mb 到 50mb 不等 有没有一种方法可以用来在模型加载时逐步加载 流式传输 提高细节级别 不确定术语是否正确 以便我的用户在出现任