问题标签 [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.
javascript - Three.js BufferGeometry 顶点位置数组元素顺序是什么意思?
这是取自该 three.js 文档的顶点位置数组:
如果我更改此数组中的元素(顶点)顺序,则结果形状会发生变化。我想知道为什么这些元素按特定顺序排列,因为我想以编程方式创建形状。为此,我只需要知道为什么顶点的顺序很重要。我试图自己解决这个问题,但没有成功。
javascript - 使用 BufferGeometry 在 ThreeJs 中更改顶点数组
所以 - 我有一种情况,我用计算出的多边形填充屏幕。多边形的形状不断变化——即顶点的数量在每一帧都在变化。如果我每帧创建一个新的几何图形——突然我的机器有效地停止了,而且我显然正在消耗大量内存——似乎我必须更改几何图形中的缓冲区。
所以我尝试使用bufferGeometry,基本上是在做:
在我的渲染循环中 - 但它似乎根本不起作用。如果我只使用一个普通的几何图形,它会动态地改变——如果我设置了 needsUpdate——但前提是我改变了原始向量中的值。如果我自己更改数组 - 它似乎没有出现。
我在这里有一个例子:http: //jsbin.com/fanebah/edit ?js,console,output - 如果你交换创建“立方体”的行 - 它会从工作变为不工作。
我更喜欢使用 bufferGeometry - 它更快,更接近我生成数据的方式 - 我做错了什么?还是threejs只是不支持动态缓冲几何?
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
javascript - 我无法从 bufferGeometry 中获取位置属性
我有一条线“在我的场景中走来走去”(某种 3D 蛇),我希望实现的下一个目标是在它的头部周围设置一个框。该行bufferGeometry
由
我选择boxGeometry
在它周围设置一个立方体(对象),并使用以下代码行来尝试实现它:
当我调试时,我看到我的positioning
数组是未定义的。所以我想那里出了点问题。
谢谢。
javascript - Three.js - 关于(使用)THREE.BufferGeometry 的问题
据我了解,使用缓冲区几何图形将提高性能并减少内存使用量,因为它降低了将所有这些数据传递到 GPU 的成本。
正如我从@WestLangley 那里了解到的,他的帖子在这里:
THREE.BufferGeometry
正在慢慢取代THREE.Geometry
,因为它的计算效率更高。
我目前正在使用 three.js - r72。
当我绘制我的几何体制作网格并将它们添加到场景中时,我看到我的几何体中有两个属性__directGeometry
和_bufferGeometry
.
在这里THREE.BoxGeometry
:
在这里THREE.Geometry
:
在这里THREE.ShapeGeometry
:
我的问题:
- 什么是a
THREE.DirectGeometry
,它有什么作用?(我似乎找不到任何关于此的文档) - 这是
THREE.BufferGeometry
存储在_bufferGeometry
已经自动使用的吗?如果没有,我可以简单地使用它而不是我的几何体来提高性能吗? - 有转换方法:
THREE.BufferGeometry
hastoGeometry
和THREE.Geometry
hastoBufferGeometry
。THREE.BufferGeometry
如果我使用此方法将所有正常几何图形转换为缓冲几何图形,与从一开始就绘制它们相比,它会给我带来相同的性能提升吗? - 我应该如何以及何时使用
THREE.BufferGeometry
? - three.js 什么时候会停止
THREE.Geometry
支持THREE.BufferGeometry
?
注意:我找不到有关何时以及如何使用缓冲区几何图形或何时替换THREE.Geometry
. 但是,如果有人有好的来源或参考,请发表评论。
javascript - 对 Line 和 Mesh 重用 THREE.BufferGeometry 实例
我正在学习如何充分利用我的缓冲区几何形状。我慢慢开始了解它们是如何工作的,以及不同的可能性是什么。
但现在我想要一个带有轮廓的网格:
要获得网格,我需要定义两个面( 0, 1, 2 )
和( 0, 2, 3 )
. 所以要绘制这个网格,我的索引数组将如下所示:
但是要绘制轮廓,我需要按顺序连接点,(0, 1, 2, 3, 0)
因此我的线索引数组如下所示:
但是我只能为我的THREE.BufferGeometry
实例定义一次索引数组。因此,要绘制两者,我需要克隆几何并将其添加一次连接到 aMesh
和一次作为 a Line
。这意味着所有位置都存储两次。
我可以不使用相同的缓冲区几何图形来绘制线和网格吗?不知何故,通过传递两个索引数组或例如将它们组合为一个并使用此问题中提到的偏移量。
这很好用,因为你可以看到我的小提琴
three.js - THREE.BufferGeometry - 顶点法线和面法线
在文档THREE.BufferGeometry
中写道:
normal (itemSize: 3)
存储此几何中每个顶点的面或顶点法线向量的 x、y 和 z 分量。由 .fromGeometry() 设置。
这个变量什么时候保存顶点法线,什么时候保存面法线?
是否像使用 a 一样简单,THREE.MeshMaterial
法线被解释为面法线,而当使用 a 时THREE.LineMaterial
,法线被用作顶点法线?或者它比那更复杂。
我也明白它THREE.FlatShading
可以用来渲染一个带有平面阴影的网格(面法线指向外面)。
我想说法线不再需要了。在这种情况下,为什么我的缓冲区几何图形是由例如THREE.BoxGeometry
仍然持有正常属性的?此信息是否仍用于渲染,或者将它们从缓冲区几何图形中删除是一种可能的优化?
javascript - Three.js 中 BufferGeometry 顶点上的几何图形
我以为我想要一个安静简单的东西,但结果比我预期的要复杂..
我想要的只是THREE.BufferGeometry
(球体)的每个顶点上的网格!
编解码器:codepen.io/cheesyeyes/pen/YwBZGz
这是我的缓冲区几何:
我正在尝试获取顶点的位置:
那么如何正确读取它们以便获得bufferGeometry的所有(此处为5)顶点的位置?
我试过这样。它确实有效,但我认为它非常难看:
我根本不明白这个数组是如何排列的..请帮帮我!谢谢!