问题标签 [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 - 如何从 A-Frame 组件访问 bufferGeometry 的属性
我正在编写一个组件,该组件需要访问和修改作为资产读入 A-Frame 的模型上的位置、法线和 uv 属性。我可以接近访问数据,但不能完全到达那里。使用:
似乎给了我一个数组,但是尝试访问这些元素给了我一个带有空子对象和空几何的对象。
我的猜测是我试图通过错误的门访问数据,而:
向我展示了一个数组 size=1 和一个填充的 Object 元素
给我带有空地理等的元素。用于获取数据的正确机制或语法是什么?
three.js - 使随机顶点/三角形隐藏在 bufferGeometry 中
我的问题是关于在 bufferGeometry 中使一些顶点/三角形不可见。我从另一个问题中复制了这个着色器:
然后这就是我定义缓冲区几何的方式:
所以当我用这行代码隐藏一些顶点或三角形时:
我还在上面的代码行之后添加了这行代码:
没有改变!只是补充一点,我随机想让它们隐藏起来,所以我认为setDrawRange
不会起作用!
three.js - 在 three.js 中更新 bufferGeometry 的索引
我在 Three.js 中更新了 BufferGeometry 的顶点。但是,在更新之后,在我的情况下,该 bufferGeometry 的索引也需要更新。我只是使用geometry.setIndex(newIndicesArray)
命令没有成功。我不确定是否需要为 index.html 启用任何更新标志。谢谢你。
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,但几何图形还不平滑。
three.js - Three.js / 计算置换后顶点着色器中索引PlaneBufferGeometry的顶点法线
一段时间以来,我一直在努力解决这个问题。我有一个用于 GPGPU 布料物理模拟的索引 PlaneBufferGeometry,在将模拟渲染到纹理后,我终生无法在最终顶点着色器中正确计算法线。
这是我当前的设置(包括相关部分),我认为它不起作用,因为我需要一种方法来了解当前顶点的顺序以及它在“面”中的邻居。只是不能完全正确。
javascript:
这是我的大脑跳闸的地方。我尝试过以各种方式使用 faces 数组中的人脸索引值,但由于索引是重复的,因此数据会被覆盖。想不出如何正确存储每个面的顶点索引信息,以便可以使用 positionReference(或其他方式)在顶点着色器中查找它。
顶点着色器/模拟运行后:
片段着色器/照明:
不确定我是否遗漏了一些明显的/做一些愚蠢的事情,或者这个问题确实很难。没有发布我尝试过的许多失败的方法,有人有什么想法吗?
任何帮助是极大的赞赏。
[编辑 1]:我添加了几个示例,一个使用平面着色和面法线,另一个显示了我当前混乱的平滑顶点法线进度。很难找到我的错误......
[编辑 2]:这就是我将面部数据传递到每个顶点的方式。从数据的角度来看,一切对我来说都是正确的,但在视觉上却完全一团糟。不能为我的生活找到我要去哪里错了。
javascript
顶点着色器(相关部分)
three.js - 使用 three.js 在 3D 模型之间转换顶点
我正在尝试实现类似于以下的多边形吹气和重新组装效果:
在这两个示例中,您可以看到它们如何将顶点从一个 3d 模型变形/过渡到另一个,从而产生非常酷的效果。我有类似的工作,但我无法理解它们如何通过速度偏移来转换顶点(请参阅第一个链接,看看粒子如何不简单地映射和缓和到新位置,而是做一些角度偏移):
因此,我在 Three.js 中导入我的两个模型,取一个具有较大顶点数的模型并复制其几何图形,同时将第二个模型数据作为属性附加:
然后在我的着色器中,我可以像这样简单地在它们之间转换:
这行得通,但真的很乏味和无聊。顶点只是简单地从一个模型映射到另一个模型,没有任何偏移、没有重力或任何你想加入的东西。
此外,由于如果顶点数不匹配,我将 0 附加到某个位置,因此未使用的位置简单地缩放到 vec4(0.0, 0.0, 0.0, 1.0),这再次导致沉闷和无聊的效果(这里在兔子和大象模型)
(注意未使用的兔子顶点如何简单地缩小到 0)
如何解决这样的问题?
另外,在英雄联盟链接中,他们是如何做到的
当模型在屏幕上处于活动状态时,对模型内部的顶点进行动画处理
将粒子映射到下一个模型时(单击箭头和过渡时)对粒子应用不同的速度和重力?
是通过传递布尔属性吗?他们是否在更改 targetPositions 数组?任何帮助都将不胜感激
three.js - Three.js:为 BufferGeometry 设置索引/索引的正确方法?
我正在尝试在 BufferGeometry 中设置每个面的 UV 指数。
我从几何开始。我的几何图形的每个面都有一个face.materialIndex
对应的 UV 指数。我正在尝试将其转换为 BufferGeometry,然后将其映射face.materialIndex
到BufferGeometry
.
这是我到目前为止所拥有的:
现在这似乎破坏了我的网格并使它根本不绘制。我究竟做错了什么?
顺便说一句,在引擎盖下,当 Geometry 转换为 BufferGeometry 时,Three.js 将其置于首先称为 a 的中间格式DirectGeometry
。这用于复制索引,但由于 Doob 先生在此提交中未知的原因而将其删除。现在 Three 似乎在 Geo > BufGeo 转换中完全放弃了索引。
我还尝试使用该提交中的代码(修改为使用 setIndex):
但我有同样的问题。生成的网格被破坏。
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 的代码(直接在本地工作,跨域策略块除外):
现在离我很远,谢谢和最好的问候!
three.js - 我应该使用哪个 Threejs 导出器来导出可以使用 BufferGeometryLoader 加载的模型?
我尝试使用 BufferGeometryLoader 加载已通过 3dmax 导出器导出的 3d 模型,但它抛出此错误“无法读取未定义的属性'索引'”,我尝试使用搅拌器导出器导出相同的模型并且发生了同样的情况。我应该如何导出模型才能使用 BufferGeometryLoader 加载它?