最小化 Three.js 抽奖次数

2024-02-29

我正在为我的项目测试 Three.js 的使用(http://agentscript.org http://agentscript.org)并且第一个测试似乎很慢:

https://asx-vqnhxlahpe.now.sh/test.html? Three0 https://asx-vqnhxlahpe.now.sh/test.html?three0

(注意:该网站可能需要一段时间,在一段时间不使用后它会“休眠”)

这显然是由于我使用了太多的抽签方式,每个代理一次。 renderer.info.render Object {calls: 10002, vertices: 60090, faces: 20000, points: 0}

我相信使用 BufferGeometry 可以解决这个问题,但我不知道如何使用它并且仍然能够访问每个单独的代理,以便我的步骤/动画函数可以修改(移动、旋转)它们。

我该怎么做?

我意识到我可以简单地使用我自己的着色器,并计划这样做,但我更愿意先有一个或两个中间解决方案。


您希望减少代理模拟中的绘制调用数量,并让某些东西相对轻松地工作。您可以通过将您的代理集合表示为来做到这一点THREE.Points.

// geometry
var geometry = new THREE.BufferGeometry();

// attributes
var positions = new Float32Array( numAgents * 3 ); // 3 values per vertex
var rotations = new Float32Array( numAgents * 1 ); // 1 values per vertex

for ( var i = 0; i < numAgents; i ++ ) {

    positions[ i ] = 0;
    positions[ i + 1 ] = 0;
    positions[ i + 2 ] = 0;
    rotations[ i ] = 2 * Math.PI * Math.random();

}

geometry.addAttribute( 'position', new THREE.BufferAttribute( positions, 3 ) );
geometry.addAttribute( 'rotation', new THREE.BufferAttribute( rotations, 1 ) );

// material
var material = new THREE.PointsMaterial( {

    color: 0xff0000,
    size: 4,
    map: null

} );

// points
points = new THREE.Points( geometry, material );
scene.add( points );

这将在一次绘制调用中进行渲染,您可以更新 CPU 上的位置并将每帧数据推送到 GPU。您应该能够轻松渲染 100,000 个代理。

fiddle: http://jsfiddle.net/730ffn4x/ http://jsfiddle.net/730ffn4x/

如果您想将点表示为带有方向的箭头,则需要提供带有箭头图像和自定义的纹理ShaderMaterial旋转每个点。

InstancedBufferGeometry如果每个代理必须代表一个Mesh. 这是一个很好的例子 http://codepen.io/usefulthink/full/YNrvpY作者:@MartinSchuhfuß,这与您想要做的类似。

对于激烈的模拟,您可以使用 GPGPU。请参阅 Three.js 示例 https://threejs.org/examples/?q=GPGPU。在 GPGPU 中,模拟完全在 GPU 上运行,CPU 通常执行最少的工作。

三.js r.84

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

最小化 Three.js 抽奖次数 的相关文章

  • 三-mtl-loader 错误:THREE.MeshPhongMaterial:.shading 已被删除 -> 对象不可见

    昨天我问了这个问题 未捕获的类型错误 THREE MTLLoader 不是构造函数 2 0 https stackoverflow com questions 47741644 uncaught typeerror three mtlloa
  • 如何为 CUDA 内核选择网格和块尺寸?

    这是一个关于如何确定CUDA网格 块和线程大小的问题 这是对已发布问题的附加问题here https stackoverflow com a 5643838 1292251 通过此链接 talonmies 的答案包含一个代码片段 见下文 我
  • Xcode“使用性能工具运行”被禁用?

    我正在尝试从我的 Xcode 项目中查找内存泄漏 我不知道发生了什么 我无法选择任何内容Run gt Run with performance tool 事物列表被禁用 请帮助我 我是初学者 问题是我已经删除了构建文件夹并尝试使用性能工具运
  • 子查询与连接

    我重构了从另一家公司继承的应用程序的一个缓慢部分 以使用内部联接而不是子查询 例如 WHERE id IN SELECT id FROM 重构后的查询运行速度提高了约 100 倍 50 秒到 0 3 我预计会有改进 但谁能解释为什么它如此剧
  • 渲染 ThreeJS 应用程序第一帧时的性能问题

    目前 当我渲染以下内容时 我的 ThreeJS 应用程序的性能受到很大影响第一帧 它会导致 Edge 和 IE 11 浏览器冻结 5 秒 并弹出窗口指示 此窗口没有响应 这可能会吓到我的用户 使用 Chrome 的性能分析器 问题似乎来自几
  • R:使用带有 .Call 和 C/C++ 包装器的 Fortran 子例程而不是 .Fortran 的优点?

    我有一个 R 包 它使用大量 Fortran 子例程来进行递归线性代数计算的嵌套循环 很大程度上依赖于 BLAS 和 LAPACK 例程 作为 Fortran 的接口 我使用 Fortran功能 我刚刚读过乔纳森卡拉汉的博客文章 http
  • node-mongodb-native的插入性能

    我正在使用 MongoDB 测试 Node js 的性能 我知道其中每一个都很好 彼此独立 但我正在尝试一些测试来感受它们 我遇到了这个问题 但无法确定来源 问题 我正在尝试在单个 Node js 程序中插入 1 000 000 条记录 它
  • 为什么 System.nanoTime() 比 System.currentTimeMillis() 慢(性能)?

    今天我做了一个快速基准测试来测试速度性能System nanoTime and System currentTimeMillis long startTime System nanoTime for int i 0 i lt 1000000
  • 循环内的局部变量会被垃圾收集吗?

    我想知道将循环内引用的任何变量放在循环外是否更有效 或者它们可以像函数内的变量一样被垃圾收集吗 var obj key val for var i 0 i lt 10 i console log obj or for var i 0 i l
  • PhoneGap 1.4 封装 Sencha Touch 2.X - 性能怎么样?

    我正在构建一个多平台平板电脑应用程序 仅使用其 Webview 使用 Phonegap 1 4 对其进行包装 然后使用 Sencha Touch 2 框架发挥我的魔力 我所说的多平台是指 iOS 5 X 和 Android 3 0 目前 到
  • Python——捕获异常的效率[重复]

    这个问题在这里已经有答案了 可能的重复 Python 常见问题解答 异常有多快 https stackoverflow com questions 8107695 python faq how fast are exceptions 我记得
  • iPhone 3GS 上的 ARM 与 Thumb 性能比较,非浮点代码

    我想知道是否有人有关于 iPhone 3GS 上 ARM 与 Thumb 代码性能的硬性数据 特别是对于非浮点 VFP 或 NEON 代码 我知道 Thumb 模式下的浮点性能问题 更大的 ARM 指令的额外代码大小是否会在某个时刻成为性能
  • 在所有浏览器中启用我的网站的平滑滚动

    我正在开发一个视差滚动网站Stellar http markdalgleish com projects stellar js and Skrollr https github com Prinzhorn skrollr图书馆 该网站在 F
  • 优化 LATERAL join 中的慢速聚合

    在我的 PostgreSQL 9 6 2 数据库中 我有一个查询 该查询根据一些股票数据构建计算字段表 它为表中的每一行计算 1 到 10 年的移动平均窗口 并将其用于周期性调整 具体来说 CAPE CAPB CAPC CAPS 和 CAP
  • Android 性能:SharedPreferences 的成本

    当我的应用程序启动时 我使用分片首选项中的值填充容器类 这个想法是处理 SharedPreferences 和 PreferenceManager 一次 因为我猜它们很重 这是一个示例 SharedPreferences prefs Pre
  • 使用 APDU 命令的有效 NFC 读取比特率是多少?

    我目前正在使用 Android IsoDep trancieve 函数发送和接收累计 1628 字节的数据 该函数分布在 35 个 APDU 命令 选择应用程序 身份验证 读取 中 字节计数包括返回的 MAC 校验和以及由 transcie
  • 如何最大限度地提高服务器性能?

    我一直在努力了解性能和可扩展性 并想知道开发人员 系统管理员正在做什么来提高他们的系统的效率 为了标准化答案 如果您能尽力回答以下任一问题 将会有所帮助 Profile Magazine publication on Joomla Jobs
  • Rails Windows Vagrant 响应时间非常慢

    我在跑 Vagrant 1 7 1 Rails 4 1 4 Thin 1 6 1 Windows 7 每个静态文件的发送时间都超过一秒 在我的 PC 上加载一个页面可能需要大约 20 秒 而在同事的 Linux 机器上则只需瞬间 有一些帖子
  • 独立滚动矩阵的行

    我有一个矩阵 准确地说 是 2d numpy ndarray A np array 4 0 0 1 2 3 0 0 5 我想滚动每一行A根据另一个数组中的滚动值独立地 r np array 2 0 1 也就是说 我想这样做 print np
  • mysql表中的数据非常大。即使 select 语句也需要很多时间

    我正在开发一个数据库 它是一个相当大的数据库 有 13 亿行和大约 35 列 这是我检查表状态后得到的结果 Name Table Name Engine InnoDB Version 10 Row format Compact Rows 1

随机推荐

  • 使用 R 将 qicharts 图转换为 ggplot

    我的数据框看起来像这样 Datetime lt c 2015 09 29AM 2015 09 29PM 2015 09 30AM 2015 09 30PM 2015 10 01AM 2015 10 01PM 2015 10 02AM 201
  • 从通知中启动的活动按返回/主页退出应用程序

    我有一个从通知启动的活动 我使用 TaskStackBuilder 包含一个后退堆栈 以便当用户点击主页按钮 操作栏标题按钮 或使用后退键时 它将返回到应用程序 但是 它不是以这种方式工作的 而是回击或操作栏标题按钮总是导致应用程序关闭 就
  • JSON.parse 从 JSON 返回 [object]

    我正在使用一个名为的 npm 包request发出 http 请求 现在我想解析收到的数据 以提取经纬度并将其写入我的数据库 但到目前为止 我得到的控制台输出是 address components Object Object Object
  • C# using 和 Java import 之间的区别

    我知道在java中我们使用 星号 来导入包中的所有内容 例如 import java lang 那为什么我们不在C 中使用相同的 星号 来导入所有内容 有没有像java中那样的方法来导入所有内容 有什么区别 import java awt
  • 是否可以使用相同的 requestCode 和不同的 extras 创建多个 PendingIntents ?

    我在用着AlarmManager安排 1 到 35 个警报 取决于用户输入 当用户请求安排新警报时 我需要取消当前警报 因此我使用相同的 requestCode 创建所有警报 该请求代码在final多变的 clear remaining a
  • 如何在 UWP 应用中播放 JS 的声音?

    我正在开发一个 UWP 其中包含一个 Web 应用程序 该应用程序具有一些调用一些 C 函数的 JS 函数 现在 我正在尝试播放我存储在 UWP 应用程序的 Assets 文件夹中的声音 这是我想要发挥的功能Windows 运行时组件 pu
  • html5本地数据库位于客户端计算机上的哪里?

    我正在不同的浏览器 Firefox Opera Safari 和 Chrome 上使用 html5 本地存储 我只是想知道我使用 创建的本地数据库的位置在哪里 开放数据库 我可以更改该数据库的位置吗 Gath 它将存储在用户的配置文件目录中
  • jQuery 的 ajax 成功函数的额外参数

    我正在使用以下代码获取 XML 文件 function getMaps toLoad loadMaps length for var i 0 i lt loadMaps length i ajax type GET url loadMaps
  • 为什么“findById()”在同一实体上调用 getOne() 后返回代理?

    在我的网络应用程序中 在服务布局中 我使用 餐厅 实体的代理 餐厅 字段中的 FetchType Lazy User user userRepository get userId Getting proxy here not restaur
  • 如何在 docker 容器中对 elasticsearch.yml 进行简单编辑?

    我在用docker compose as in https github com davidefiocco dockerized elasticsearch indexer blob master docker compose yml ht
  • 为什么 html5 postMessage 对我不起作用?

    我使用几行 javascript 来创建一个 iframe 元素 然后我想向它发送一条消息 如下所示 function loadiframe callback var body document getElementsByTagName b
  • 如何修改和使用R包的函数?

    我的问题是关于如何在 R 中调整 控制树状图中的比例 使用 portfolio 库 https stackoverflow com questions 7561423 how do you adjust control the scale
  • 溢出:滚动;在 中

    为什么 CSS 属性overflow scroll 不工作于 td while overflow hidden 效果很好 table border 1 style width 100px tr td style width 50px 100
  • CF9 中的 QueryNew() 数据类型

    我接管了运行 CF9 0 1 的生产服务器上的系统 但在开发人员版本中找不到该系统的副本 因此我正在运行 CF10 我正在将数据从数据库导出到 Excel 由于数据来自多个数据源 因此需要手动将结果输入到查询中 然后用于输出到 Excel
  • 如何比较/匹配两个不相同的声音片段

    我需要每 5 秒采集一次短声音样本 然后将其上传到我们的云服务器 然后 我需要找到一种方法来比较 检查该样本是否是完整长音频文件的一部分 样本将通过手机麦克风录制 因此它们确实不准确 我知道这个主题可能会变得非常技术性和复杂 但我确信一定有
  • Firestore 写入限制错误代码

    Firestore 目前处于测试阶段 并且有每秒写入次数限制 写入 Firestore 数据库时是否可以检查特定的 Firestore 写入错误代码 我的用例是我需要具有查询可能性的高吞吐量 通过检查写入错误代码 我可以稍后重试写入 根据官
  • 用于具有多种类型的嵌套对象的 RedisTemplate 哈希值序列化器

    我正在尝试使用 Redis 为我的实体存储一些缓存数据 其中包含不同类型的字段 例如 public class Job private String id private Date createTime Long private Strin
  • 使用 SDWebimage 通过 url 一张一张下载图像

    我需要从以下位置下载图像Array网址一一显示并一次显示全部 前任 我有 10 个 URL 的数组 我只需要一张一张地下载图像 并一次显示 我在用SDWebImage用于下载图像 请帮我 Thanks 你可以尝试这样的事情 void dow
  • 如何更新学说中的字段以将其设置为空

    我想将原则中的一个字段设置为 null 这是句子 em this gt getDoctrine gt getManager qb em gt createQueryBuilder query qb gt update Model Examp
  • 最小化 Three.js 抽奖次数

    我正在为我的项目测试 Three js 的使用 http agentscript org http agentscript org 并且第一个测试似乎很慢 https asx vqnhxlahpe now sh test html Thre