问题标签 [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 投票
1 回答
2403 浏览

three.js - 如何从 A-Frame 组件访问 bufferGeometry 的属性

我正在编写一个组件,该组件需要访问和修改作为资产读入 A-Frame 的模型上的位置、法线和 uv 属性。我可以接近访问数据,但不能完全到达那里。使用:

似乎给了我一个数组,但是尝试访问这些元素给了我一个带有空子对象和空几何的对象。

我的猜测是我试图通过错误的门访问数据,而:

向我展示了一个数组 size=1 和一个填充的 Object 元素

给我带有空地理等的元素。用于获取数据的正确机制或语法是什么?

0 投票
1 回答
707 浏览

three.js - 使随机顶点/三角形隐藏在 bufferGeometry 中

我的问题是关于在 bufferGeometry 中使一些顶点/三角形不可见。我从另一个问题中复制了这个着色器:

然后这就是我定义缓冲区几何的方式:

所以当我用这行代码隐藏一些顶点或三角形时:

我还在上面的代码行之后添加了这行代码:

没有改变!只是补充一点,我随机想让它们隐藏起来,所以我认为setDrawRange不会起作用!

0 投票
1 回答
1545 浏览

three.js - 在 three.js 中更新 bufferGeometry 的索引

我在 Three.js 中更新了 BufferGeometry 的顶点。但是,在更新之后,在我的情况下,该 bufferGeometry 的索引也需要更新。我只是使用geometry.setIndex(newIndicesArray)命令没有成功。我不确定是否需要为 index.html 启用任何更新标志。谢谢你。

0 投票
1 回答
1198 浏览

three.js - 在three.js中更新bufferGeometry中的法线

我有两个在一端相交的圆柱体。我可以单独更改交叉点的半径,但它们仍然在一端相遇,如下所示。但是,我希望这两者之间的交点是平滑的,或者换句话说,它们在交点中的法线要像这里提到的那样共享:http ://www.opengl-tutorial.org/intermediate-tutorials/tutorial-9-vbo-索引/ . 我已将法线更新设置为 TRUE,并将法线的所有 y 分量在交点处更改为零。它仍然没有显示出平滑的交叉点。这两个圆柱体是用 BufferGeometry 制成的。在此处输入图像描述

所以我的代码的一部分更重要:1-由于几何是BufferGeometry,我首先使用下面的两个命令来创建两个几何来创建法线:

2-然后由于两个几何图形具有相同数量的顶点,我将所有顶点的 y 分量设置为 0:

当我让程序显示法线时,它们的法线 y 分量为 0,但几何图形还不平滑。

0 投票
1 回答
1423 浏览

three.js - Three.js / 计算置换后顶点着色器中索引PlaneBufferGeometry的顶点法线

一段时间以来,我一直在努力解决这个问题。我有一个用于 GPGPU 布料物理模拟的索引 PlaneBufferGeometry,在将模拟渲染到纹理后,我终生无法在最终顶点着色器中正确计算法线。

这是我当前的设置(包括相关部分),我认为它不起作用,因为我需要一种方法来了解当前顶点的顺序以及它在“面”中的邻居。只是不能完全正确。

javascript:

这是我的大脑跳闸的地方。我尝试过以各种方式使用 faces 数组中的人脸索引值,但由于索引是重复的,因此数据会被覆盖。想不出如何正确存储每个面的顶点索引信息,以便可以使用 positionReference(或其他方式)在顶点着色器中查找它。

顶点着色器/模拟运行后:

片段着色器/照明:

不确定我是否遗漏了一些明显的/做一些愚蠢的事情,或者这个问题确实很难。没有发布我尝试过的许多失败的方法,有人有什么想法吗?

任何帮助是极大的赞赏。


[编辑 1]:我添加了几个示例,一个使用平面着色和面法线,另一个显示了我当前混乱的平滑顶点法线进度。很难找到我的错误......


[编辑 2]:这就是我将面部数据传递到每个顶点的方式。从数据的角度来看,一切对我来说都是正确的,但在视觉上却完全一团糟。不能为我的生活找到我要去哪里错了。

javascript

顶点着色器(相关部分)

0 投票
1 回答
2197 浏览

three.js - 使用 three.js 在 3D 模型之间转换顶点

我正在尝试实现类似于以下的多边形吹气和重新组装效果:

在这两个示例中,您可以看到它们如何将顶点从一个 3d 模型变形/过渡到另一个,从而产生非常酷的效果。我有类似的工作,但我无法理解它们如何通过速度偏移来转换顶点(请参阅第一个链接,看看粒子如何不简单地映射和缓和到新位置,而是做一些角度偏移):

在此处输入图像描述

因此,我在 Three.js 中导入我的两个模型,取一个具有较大顶点数的模型并复制其几何图形,同时将第二个模型数据作为属性附加:

然后在我的着色器中,我可以像这样简单地在它们之间转换:

这行得通,但真的很乏味和无聊。顶点只是简单地从一个模型映射到另一个模型,没有任何偏移、没有重力或任何你想加入的东西。

此外,由于如果顶点数不匹配,我将 0 附加到某个位置,因此未使用的位置简单地缩放到 vec4(0.0, 0.0, 0.0, 1.0),这再次导致沉闷和无聊的效果(这里在兔子和大象模型)

(注意未使用的兔子顶点如何简单地缩小到 0)

在兔子和大象模型之间变形

如何解决这样的问题?

另外,在英雄联盟链接中,他们是如何做到的

  1. 当模型在屏幕上处于活动状态时,对模型内部的顶点进行动画处理

  2. 将粒子映射到下一个模型时(单击箭头和过渡时)对粒子应用不同的速度和重力?

是通过传递布尔属性吗?他们是否在更改 targetPositions 数组?任何帮助都将不胜感激

0 投票
1 回答
4084 浏览

three.js - Three.js:为 BufferGeometry 设置索引/索引的正确方法?

我正在尝试在 BufferGeometry 中设置每个面的 UV 指数。

我从几何开始。我的几何图形的每个面都有一个face.materialIndex对应的 UV 指数。我正在尝试将其转换为 BufferGeometry,然后将其映射face.materialIndexBufferGeometry.

这是我到目前为止所拥有的:

现在这似乎破坏了我的网格并使它根本不绘制。我究竟做错了什么?

顺便说一句,在引擎盖下,当 Geometry 转换为 BufferGeometry 时,Three.js 将其置于首先称为 a 的中间格式DirectGeometry。这用于复制索引,但由于 Doob 先生在此提交中未知的原因而将其删除。现在 Three 似乎在 Geo > BufGeo 转换中完全放弃了索引。

我还尝试使用该提交中的代码(修改为使用 setIndex):

但我有同样的问题。生成的网格被破坏。

0 投票
1 回答
699 浏览

animation - 从 Blender 到 THREE.js:导出器的 BufferGeometry 和动画问题

我正在使用 THREE.js 一段时间,我真的很喜欢它,除了一件事:将动画图形从 Blender 带入游戏场景。在尝试自己解决并搜索了一段时间之后,我在这里提出了我的问题。坦率地说,我只是一名编码员,而不是图形专家,而且我自己也没有创建搅拌机内容。

1. 在当前版本 86 中使用 THREE.js Blender 导出器导出 BufferGeometry 是否有什么特别需要了解(或损坏?)?当使用 BufferGeometry 作为导出选项时,我的文件大小增加了 3 倍,但生成的 .json 文件中不包含任何动画。使用除了“Geometry”而不是“BufferGeometry”之外的相同选项包括动画并提供更小的文件大小(导出器选项和下面的示例文件)。

2. 正确的可能有什么问题?.json 没有在 THREE.js 中播放动画?我有一个可以导出、加载和动画的工作示例(Slimeblob)。使用相同的代码,我的大多数其他动画模型都已加载,但没有动画。例如,我有一个非常简单的立方体,它有一个短动画,它不在 THREE.js 中播放,而是在 .json 中(以及运行时环境中)有动画数据。.blend 文件和代码如下。可以在控制台输出中看到动画以某种方式加载(至少在 chrome 浏览器中)。

示例演示:

代码运行没有错误,并且两个模型都已加载。粘液动画正确,立方体没有。我错过了什么?

导出设置(两者相同)

环境细节:

  • THREE.js 修订版 86(此时是最新版本)
  • 来自修订版 86 的 THREE.js Blender 导出器
  • 搅拌机版本 2.77

工作示例:上面的代码以及 .json 和 .blend 的代码(直接在本地工作,跨域策略块除外):

动画测试.7z

现在离我很远,谢谢和最好的问候!

0 投票
1 回答
164 浏览

three.js - 我应该使用哪个 Threejs 导出器来导出可以使用 BufferGeometryLoader 加载的模型?

我尝试使用 BufferGeometryLoader 加载已通过 3dmax 导出器导出的 3d 模型,但它抛出此错误“无法读取未定义的属性'索引'”,我尝试使用搅拌器导出器导出相同的模型并且发生了同样的情况。我应该如何导出模型才能使用 BufferGeometryLoader 加载它?

0 投票
1 回答
990 浏览

three.js - 从其中心缩放 BufferGeometry 对象

我有大量随机放置的圆圈保存在单个缓冲区几何中。我正在尝试根据来自它们中心的音频输入来缩放每一个,但它们会一直在场景中心进行缩放。它们不会变得更大的半径并保持静止,而是会变得更大,但也会远离中心。

这就是我正在尝试的。是否有一个矩阵变换可以将原点移动到每个圆的中心而不会弄乱场景的其他方面?

小尺度值 小尺度值

较大的刻度值 较大的刻度值