问题标签 [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 回答
450 浏览

javascript - 具有不更新阴影的形态属性的动画缓冲几何

我已将库中的 MD2 代码转换为使用THREE.BufferGeometry,而不是THREE.Geometry大大改善内存占用。为此,我只需在THREE.BufferGeometry加载完成后将模型转换为。我还必须修改MorphBlendMesh代码以使用morphTargetInfluences.

除了问题之外,这很好用:阴影在动画期间不会更新,它总是使用动画第一帧的阴影。

我还没有看到任何关于morphTargetInfluences属性的文档,所以我没有太多工作要做。

我不能真正发布代码,因为它在代码库中过于分散。

我只是希望那里的人可能对变形动画期间阴影如何更新有所了解,并可能为我指出如何研究这个问题的正确方向。

0 投票
1 回答
95 浏览

three.js - 如何在不多次使用“scene.add”的情况下更新有孩子的 BufferGeometry

我的问题非常具体。我创建了一个带有 bufferGeometry 的网格 (Mesh1),该网格由一些参数更新,但另一个网格 (Mesh2) 已通过“添加”方法 (Mesh1.add(Mesh2)) 添加到其中。对于初始化,我执行了scene.add(Mesh1),显然两个网格都显示在屏幕上。但是一旦我更新了 Mesh1,Mesh2 就会消失,除非我再次执行 scene.add(Mesh1),这是不必要的,因为它会再次将 Mesh1 添加到屏幕上。我想知道是否有人可以帮助我解决这个问题。谢谢你。 在此处输入图像描述

0 投票
0 回答
747 浏览

javascript - 三.js 从 SphereBufferGeometry 复制到 BufferGeometry

我创建了一个 BufferGeometry 来存储一堆三角形(以便以后使用顶点着色器进行操作)。顶点位置坐标和颜色是随机生成的,并作为数组添加到 bufferGeometry.attributes 属性中。当用于制作网格时,它工作得很好。这是代码:-

接下来我想创建一个类似的 BufferGeometry 但这次三角形最初应该排列成一个球形“表面”。所以我创建了一个具有适当配置的“捐助者”SphereBufferGeometry。

这个想法是然后简单地将相关数据从供体 SphereBufferGeometry 复制到 BufferGeometry 中。

这是我一直在使用的代码:-

出于某种原因,当我从 SphereBufferGeometry 复制到 BufferGeometry 并制作网格时,实际上只绘制了一小部分(大约 20-25%?)三角形。

问题

所以我的问题是:我需要做什么来绘制所有三角形?

更新1

相比之下,以下方法可以正常工作:(1) 使用 SphereGeometry 制作网格,(2) 使用 .setFromObject(mesh) 制作新的 BufferGeometry (3) 从先前的 BufferGeometry 复制到新的 BufferGeometry 并使用后者制作新网格。但这似乎是一种冗长的方法。

更新2

当 Cgeometry 是 SphereBufferGeometry 时,以下方法也可以正常工作。

似乎最初的问题是由于在 SphereBufferGeometry 中使用了索引,并且默认情况下在新的 BufferGeometry 中没有构建索引。

似乎没有一种简单的方法可以将索引从 SphereBufferGeometry 复制到新的 BufferGeometry。

我有点困惑,因为我认为 BufferGeomtry 的想法涉及不使用索引。

0 投票
0 回答
1361 浏览

javascript - 缓冲区大小不足,必须绑定一个缓冲区

我正在尝试使用 OBJLoader 对象在我的场景中添加一盏灯。该对象是从 Blender 中导出的。如果我将其children[i].castShadow属性设置true为以下错误,则会出现但它仍然出现并且它的阴影可以在墙上看到:

错误信息

我究竟做错了什么?如果当我向场景中添加其他对象并将其castShadow属性设置为时,true我不会收到任何错误消息。这是我目前唯一有问题的对象。

还有一件事。我的项目无法在 Firefox 中运行,但它会在 Edge 或 Chrome 中显示。Firefox 有什么特别之处?

0 投票
0 回答
907 浏览

three.js - 三个带有索引 BufferGeometry 的自定义属性

我正在使用索引 BufferGeometry 进行光线追踪。这意味着我有一个唯一顶点的平面列表和面的索引缓冲区。如何为每个面的顶点添加自定义属性?据我了解,每个属性缓冲区的大小应该与位置缓冲区的大小相匹配。

0 投票
2 回答
8253 浏览

javascript - 如何在 Three.JS 中将两个 BufferGeometry 合并到一个 BufferGeometry 中?

如何THREE.BufferGeometry在 ThreeJS 中将两个缓冲区几何图形合并为一个?

不做任何事情modelGeometry。如何正确合并这些几何?

0 投票
1 回答
789 浏览

javascript - Thee.js 中 BufferGeometry 的渲染顺序

继上一个问题之后,我正在处理在 BufferGeometry 中构建模型,并意识到transparent标志会影响渲染顺序:具有透明材质的对象将在非透明材质之后渲染。

另外,我从这个线程中读到,在JSFiddle上做了一个实验,发现 BufferGeometry 中面部的渲染顺序与缓冲区中指定的顺序相同,但与相机的距离不同。(在上面的实验中,我首先在缓冲区中指定了一个更近的三角形,它会遮挡它后面的其他三角形。)

所以我的问题是:是否可以在 BufferGeometry 中手动设置人脸的渲染顺序?就我而言,我可能需要动态更改建筑元素的透明度。(我读过线程说我们可以设置renderOrderObject3D。)

谢谢你。

0 投票
2 回答
1160 浏览

javascript - THREE.js 中 BufferGeometry 的 STL 导出器

我有许多 BufferGeometries,它们组成一个场景,它们的网格已经转移到不同的位置。我想知道是否有办法将这个场景从包含 BufferGeometries 的网格导出到 STL 文件。非常感谢。

0 投票
0 回答
707 浏览

three.js - THREE.InstancedBufferGeometry、THREE.MultiMaterial 和组

当与addGroup. _THREE.InstancedBufferGeometryTHREE.MultiMaterial

这是 r75,源代码如下所示:

除了“复制”方法,我看不到字段“实例”的其他用途。此组中没有“materialIndex”字段,如THREE.BufferGeometry.

如果我尝试渲染Mesh( InstancedBufferGeometry, MultiMaterial )不起作用的东西,我会从组材料中的“可见”字段中得到一个错误。

instancesmaterialIndexin替换addGroup就好了,但必须是另一种用于instances现场的用途。我不明白这一点,或者这可能是一个错误。

在three.js页面发帖:https ://github.com/mrdoob/three.js/issues/8912

0 投票
1 回答
1406 浏览

javascript - Can I add Faces from an array to a THREE.BufferGeometry

I will create a Mesh which is based on a BufferGeometry. At the moment I have a worker which is responsible for my geometry.

Worker: First of all I create a Three.Geometry. Then I build my bufferGeometry and send data back to main-thread.

1.) I convert my geometry into a THREE.BufferGeometry

2.) Next I get the BufferAttributes

3.) Next I create a bufferArray

4.) At the end I send these array back to the main thread

Main-Thread: In the main-thread I rebuild my bufferGeometry and convert this to a THREE.Geometry

At the end the triangulate faces are lost!!! I have only standard face indices (0,1,2) (3,4,5), ... Actually I am doing some triangulation in the worker thread. These faces are still existing in the THREE.Geometry before the conversion to a bufferGeometry (step 1).

How can I add these faces to the bufferGeometry?