问题标签 [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.
three.js - 什么对性能更好。索引缓冲区几何或非索引?
什么对性能更好。索引缓冲区几何或非索引在三个 js 中?我如何从 obj loader 几何中获取实例缓冲区几何?
three.js - 在 Three.js 中用平面剪裁几何
我希望对某些平面使用 Geometry/BufferGeometry 进行简单的碰撞检测,我想知道 Three.js 是否包含一种仅返回位于平面一侧的 BufferGeometry 部分作为另一个 BufferGeometry 的方法?
我知道您可以在渲染时使用 Three.js 来剪辑带有平面的网格,但是我找不到在 GPU 之外进行剪辑的方法。
我知道可以使用 CSG.js,但这对于我需要的东西来说似乎过于重量级了。
javascript - 使用缓冲区几何合并后,我无法更改几何的透明度/不透明度
我有一个由多个盒子组成的简单模型。我正在尝试使用缓冲区几何合并来减少绘制调用的数量。但是,合并后我无法更改几何图形的透明度/不透明度。
我已经尝试过以下事情:
我正在使用设置元素的不透明度element.setAtribute('material', { opacity: 0.6 });
但是,我没有看到正确的变化发生。
我试图将不透明度设置为创建 ageometry.addAttribute('opacity',THREE.BufferAttribute(new Float32Array(geometry.attributes.position.array.length), 1)
并将所有元素设置为0.6
.
但是,这也不起作用。
我创建了一个最小的例子,你可以在这里找到:https ://glitch.com/~ambitious-chill
设置透明度的功能:
谁能告诉我,我做错了什么?合并后如何操纵不透明度?
先感谢您!
javascript - 使用实例化,我无法更改单个子几何图形的透明度/不透明度
我有一个由 1000 个球体实例组成的简单模型。我正在尝试使用实例化来减少绘图调用的数量。但是,我无法更改单个子几何图形的透明度/不透明度。
我已经尝试过以下事情:
我可以使用改变每个球体的透明度
但是,这会将每个球体的不透明度更改为 0.2。
html文件是这样的:
实现实例化的功能:
谁能告诉我,如何只改变一个球体的不透明度?先感谢您!
另外,假设我正在尝试复制多个盒子。其中之一如下:
我将填写 translateArray 和 vectorArray 的值是多少?提前非常感谢!
python - 将 Rhino Mesh 转换为 BufferGeometry JSON
我正在尝试将 Grasshopper python 中的犀牛网格转换为将在 Three.js/WebGL 中读取的 BufferGeometry。Three.js 确实有可用于从 .obj 到 three.js 的转换器,但对于我的工作流程,我需要将这些文件作为 JSON 从 GH 输出,而不先将其保存为 .obj。
我有一个旧转换器,它可以输入一个犀牛网格然后输出一个几何图形,但是从 Three.js r.99 开始,现在不推荐使用 JSON 格式。我创建了一个脚本,它输入一个网格并创建一个像JSON Geometry Format 4这样的数据结构。几何正在使用OBJLoader成功加载,但我收到以下错误。
glDrawArrays:尝试访问属性 1 中超出范围的顶点
提前致谢!
javascript - 使用三个 BufferGeometry 绘制自定义形状 - 形状取决于角度
我正在使用 THREE.js 和 BufferGeometry 来创建基于图像的一组点的视图。目前,我有以下内容:
可以看出,我构建的“对象”具有只能按预期从相反侧看到的面。
我已经用一组具有相应法线数组的点构建了我的 BufferGeometry,像这样实现(假设顶点和规范是有效的):
正如您从尝试添加法线数组中看到的那样,我尝试添加所有为 (0,1,0) 的法线。没有geometry.computeVertexNormals()
,这仍然会导致没有一个面是实心的/行为正确的。这样,就生成了图像中的结果。
什么可能导致固体表现出这样的行为?
javascript - Three.js BufferGeometry 顶点未更新
我正在寻找连接具有来自 IndexedDB 的真实高程数据的平面缓冲区几何网格图块。我的问题是 STRM 高程上的数据分辨率并不完美,因此瓷砖之间的边缘不一样。我需要将接触顶点之间的所有网格边缘平均化,以创建无缝地形。
当我将代码复制粘贴到场景中的控制台时,它可以工作。然而只是在代码中它没有。传递的 sceneRef 是有效的,并且代码库的其余部分正确使用了 sceneRef。
瓦片是 3 x 3,当前网格瓦片是 0,0 - 2,2 范围内 1,1 的中心。
angular - ThreeJS,Ionic,Angular2+ - 如何修改位置 BufferGeometry / BufferAttribute 值 - 它说 Index Signature ArrayLike是只读的
我拥有在普通 js 应用程序中工作的 Three.js 的 3d 实现的一切。我正在将 BufferGeometry 用于线条和网格,并且正在修改位置属性以修改它们的形状。
现在我正在使用 Ionic 并将 3d 内容转换为角度组件内。除了无法更新 bufferAttribute 中的位置值外,我一切正常。
我在原始 js 中使用它来获取要修改的位置数组:
然后我可以使用以下内容修改和设置 vrts 数组值:
然后我将 needsUpdate = true 设置为:
在 js 应用程序中一切正常。
在 Ionic 应用程序中,当我试图指向位置数组时,它说: BufferGeometry 类型上不存在属性“属性”| 几何所以我转换成这个:
现在我可以通过以下方式访问这些值:
但是,当我尝试修改该值时,即:
它说:错误TS2542:类型'ArrayLike < number>'中的索引签名只允许读取
并且不允许我修改该值。
我在访问 needsUpdate 变量时也遇到了一些麻烦。我之前使用的是:
现在已经转换为这个,但不确定它是否正确:
我还尝试使用以下语句将“位置”数组设置为动态:
我将 BufferGeometry 用于线条和网格。也许我的替代方法是创建一个新的位置数组并在每次修改内容时使用 setAttribute('position', newPositions) ,但这似乎会通过每次更改内容时分配新内存来破坏有效内存使用的目的。
感谢您的意见!
javascript - 三.js TubeBufferGeometry 相机动画位置变化
我正在尝试更改将用于相机动画的 TubeBufferGeometry.parameters.path 的位置/平移动态 (均基于此示例:webgl_geometry_extrude_splines)
到目前为止,这是我的代码的完整代码:Link to codesandbox with full code
代码的重要部分:
结果是没有让我翻译相机在默认位置绕着 GrannyKnot 曲线移动。
我期望的是在某个方向(例如位置 X + 100)上动态更改TubeBufferGeometry.parameters.path的位置/平移,这会影响我的相机移动
编辑 我刚刚意识到我可以通过添加来改变相机
但是如果有人会告诉我如何改变TubeBufferGeometry.parameters.path而不改变明确的 pos.x 就像上面的代码一样。我会很高兴的。
three.js - THREE.js 中的 ParametricBufferGeometry
在布料模拟示例代码中有一个叫做 ParametricBufferGeometry 的东西,它接受 3 个参数该函数实际上是什么意思?
在文档中我找不到任何合适的文档它说
ParametricBufferGeometry(func : Function, slices : Integer, stacks : Integer) func — 一个函数,接受 0 和 1 之间的 au 和 v 值并修改第三个 Vector3 参数 slices — 用于参数函数堆栈的切片计数 —用于参数函数的堆栈数
谁能解释一下它实际上是什么..