问题标签 [buffer-geometry]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
331 浏览

javascript - three.js r74 BufferGeometry Sphere 而不是 Squares

我有以下代码:

这将快速和精细地渲染立方体,但我需要球体。任何人都可以向我解释这如何与修订版 74 一起工作吗?我发现了这个问题,但是它不再起作用了。

谢谢!

0 投票
1 回答
562 浏览

javascript - Three.js BufferGeometry 顶点位置数组元素顺序是什么意思?

这是取自该 three.js 文档的顶点位置数组:

如果我更改此数组中的元素(顶点)顺序,则结果形状会发生变化。我想知道为什么这些元素按特定顺序排列,因为我想以编程方式创建形状。为此,我只需要知道为什么顶点的顺序很重要。我试图自己解决这个问题,但没有成功。

0 投票
0 回答
528 浏览

javascript - 使用 BufferGeometry 在 ThreeJs 中更改顶点数组

所以 - 我有一种情况,我用计算出的多边形填充屏幕。多边形的形状不断变化——即顶点的数量在每一帧都在变化。如果我每帧创建一个新的几何图形——突然我的机器有效地停止了,而且我显然正在消耗大量内存——似乎我必须更改几何图形中的缓冲区。

所以我尝试使用bufferGeometry,基本上是在做:

在我的渲染循环中 - 但它似乎根本不起作用。如果我只使用一个普通的几何图形,它动态地改变——如果我设置了 needsUpdate——但前提是我改变了原始向量中的值。如果我自己更改数组 - 它似乎没有出现。

我在这里有一个例子:http: //jsbin.com/fanebah/edit ?js,console,output - 如果你交换创建“立方体”的行 - 它会从工作变为不工作。

我更喜欢使用 bufferGeometry - 它更快,更接近我生成数据的方式 - 我做错了什么?还是threejs只是不支持动态缓冲几何?

0 投票
2 回答
5836 浏览

javascript - How to add faces to THREE.BufferGeometry?

I have created programmatically a simple mesh:

Problem is that this mesh has only vertices. I have tried to add to it faces like in this question using THREE.Shape.Utils.triangulateShape but BufferGeometry is different than normal geometry and it does not work. Is it possible to add faces to BufferGeometry?

EDIT: Working fiddle

0 投票
1 回答
2370 浏览

javascript - 我无法从 bufferGeometry 中获取位置属性

我有一条线“在我的场景中走来走去”(某种 3D 蛇),我希望实现的下一个目标是在它的头部周围设置一个框。该行bufferGeometry

我选择boxGeometry在它周围设置一个立方体(对象),并使用以下代码行来尝试实现它:

当我调试时,我看到我的positioning数组是未定义的。所以我想那里出了点问题。

谢谢。

0 投票
1 回答
1012 浏览

javascript - bufferGeometry 上的 CSG 操作

我目前正在使用 three.js 几何类来创建一个形状,然后对该形状执行多个 CSG 操作。从而不断地重新绘制形状。

这个执行多个 csg 操作的过程很慢,因为我使用光线投射来获得点击时的形状并执行所选形状和预定义形状(任何形状或几何形状)的 CSG。

所以我的问题是:

  • 使用缓冲区几何会加速我的 CSG,但是否有任何库可以在THREE.BufferGeometry实例上执行 CSG 操作?

  • 有没有办法通过使用任何其他方法来加快这个过程?

这是我的代码流:

我将这个库用于 CSG 操作,整体流程类似于three.js 示例中的这个示例。

0 投票
1 回答
2323 浏览

javascript - Three.js - 关于(使用)THREE.BufferGeometry 的问题

据我了解,使用缓冲区几何图形将提高性能并减少内存使用量,因为它降低了将所有这些数据传递到 GPU 的成本

正如我从@WestLangley 那里了解到的,他的帖子在这里:

THREE.BufferGeometry正在慢慢取代THREE.Geometry,因为它的计算效率更高。

我目前正在使用 three.js - r72
当我绘制我的几何体制作网格并将它们添加到场景中时,我看到我的几何体中有两个属性__directGeometry_bufferGeometry.

在这里THREE.BoxGeometry

在此处输入图像描述

在这里THREE.Geometry

在此处输入图像描述

在这里THREE.ShapeGeometry

在此处输入图像描述

我的问题:

  1. 什么是a THREE.DirectGeometry,它有什么作用?(我似乎找不到任何关于此的文档)
  2. 这是THREE.BufferGeometry存储在_bufferGeometry已经自动使用的吗?如果没有,我可以简单地使用它而不是我的几何体来提高性能吗?
  3. 有转换方法:THREE.BufferGeometryhastoGeometryTHREE.Geometryhas toBufferGeometryTHREE.BufferGeometry如果我使用此方法将所有正常几何图形转换为缓冲几何图形,与从一开始就绘制它们相比,它会给我带来相同的性能提升吗?
  4. 我应该如何以及何时使用THREE.BufferGeometry
  5. three.js 什么时候会停止THREE.Geometry支持THREE.BufferGeometry

注意:我找不到有关何时以及如何使用缓冲区几何图形或何时替换THREE.Geometry. 但是,如果有人有好的来源或参考,请发表评论。

0 投票
0 回答
556 浏览

javascript - 对 Line 和 Mesh 重用 THREE.BufferGeometry 实例

我正在学习如何充分利用我的缓冲区几何形状。我慢慢开始了解它们是如何工作的,以及不同的可能性是什么。

但现在我想要一个带有轮廓的网格:

在此处输入图像描述

要获得网格,我需要定义两个面( 0, 1, 2 )( 0, 2, 3 ). 所以要绘制这个网格,我的索引数组将如下所示:

但是要绘制轮廓,我需要按顺序连接点,(0, 1, 2, 3, 0)因此我的线索引数组如下所示:

但是我只能为我的THREE.BufferGeometry实例定义一次索引数组。因此,要绘制两者,我需要克隆几何并将其添加一次连接到 aMesh和一次作为 a Line。这意味着所有位置都存储两次。

我可以不使用相同的缓冲区几何图形来绘制线和网格吗?不知何故,通过传递两个索引数组或例如将它们组合为一个并使用此问题中提到的偏移量。

这很好用,因为你可以看到我的小提琴

0 投票
1 回答
3157 浏览

three.js - THREE.BufferGeometry - 顶点法线和面法线

在文档THREE.BufferGeometry中写道:

normal (itemSize: 3)
存储此几何中每个顶点的面或顶点法线向量的 x、y 和 z 分量。由 .fromGeometry() 设置。

这个变量什么时候保存顶点法线,什么时候保存法线?

是否像使用 a 一样简单,THREE.MeshMaterial法线被解释为面法线,而当使用 a 时THREE.LineMaterial,法线被用作顶点法线?或者它比那更复杂。

我也明白它THREE.FlatShading可以用来渲染一个带有平面阴影的网格(面法线指向外面)。

我想说法线不再需要了。在这种情况下,为什么我的缓冲区几何图形是由例如THREE.BoxGeometry仍然持有正常属性的?此信息是否仍用于渲染,或者将它们从缓冲区几何图形中删除是一种可能的优化?

0 投票
1 回答
2828 浏览

javascript - Three.js 中 BufferGeometry 顶点上的几何图形

我以为我想要一个安静简单的东西,但结果比我预期的要复杂..

我想要的只是THREE.BufferGeometry(球体)的每个顶点上的网格!

编解码器:codepen.io/cheesyeyes/pen/YwBZGz

这就是我想要的

这是我的缓冲区几何:

我正在尝试获取顶点的位置:

那么如何正确读取它们以便获得bufferGeometry的所有(此处为5)顶点的位置?

我试过这样。它确实有效,但我认为它非常难看:

我根本不明白这个数组是如何排列的..请帮帮我!谢谢!