问题标签 [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 - 具有不更新阴影的形态属性的动画缓冲几何
我已将库中的 MD2 代码转换为使用THREE.BufferGeometry
,而不是THREE.Geometry
大大改善内存占用。为此,我只需在THREE.BufferGeometry
加载完成后将模型转换为。我还必须修改MorphBlendMesh
代码以使用morphTargetInfluences
.
除了问题之外,这很好用:阴影在动画期间不会更新,它总是使用动画第一帧的阴影。
我还没有看到任何关于morphTargetInfluences
属性的文档,所以我没有太多工作要做。
我不能真正发布代码,因为它在代码库中过于分散。
我只是希望那里的人可能对变形动画期间阴影如何更新有所了解,并可能为我指出如何研究这个问题的正确方向。
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 的想法涉及不使用索引。
three.js - 三个带有索引 BufferGeometry 的自定义属性
我正在使用索引 BufferGeometry 进行光线追踪。这意味着我有一个唯一顶点的平面列表和面的索引缓冲区。如何为每个面的顶点添加自定义属性?据我了解,每个属性缓冲区的大小应该与位置缓冲区的大小相匹配。
javascript - 如何在 Three.JS 中将两个 BufferGeometry 合并到一个 BufferGeometry 中?
如何THREE.BufferGeometry
在 ThreeJS 中将两个缓冲区几何图形合并为一个?
不做任何事情modelGeometry
。如何正确合并这些几何?
javascript - Thee.js 中 BufferGeometry 的渲染顺序
继上一个问题之后,我正在处理在 BufferGeometry 中构建模型,并意识到transparent
标志会影响渲染顺序:具有透明材质的对象将在非透明材质之后渲染。
另外,我从这个线程中读到,在JSFiddle上做了一个实验,发现 BufferGeometry 中面部的渲染顺序与缓冲区中指定的顺序相同,但与相机的距离不同。(在上面的实验中,我首先在缓冲区中指定了一个更近的三角形,它会遮挡它后面的其他三角形。)
所以我的问题是:是否可以在 BufferGeometry 中手动设置人脸的渲染顺序?就我而言,我可能需要动态更改建筑元素的透明度。(我读过线程说我们可以设置renderOrder
Object3D。)
谢谢你。
javascript - THREE.js 中 BufferGeometry 的 STL 导出器
我有许多 BufferGeometries,它们组成一个场景,它们的网格已经转移到不同的位置。我想知道是否有办法将这个场景从包含 BufferGeometries 的网格导出到 STL 文件。非常感谢。
three.js - THREE.InstancedBufferGeometry、THREE.MultiMaterial 和组
当与addGroup
. _THREE.InstancedBufferGeometry
THREE.MultiMaterial
这是 r75,源代码如下所示:
除了“复制”方法,我看不到字段“实例”的其他用途。此组中没有“materialIndex”字段,如THREE.BufferGeometry
.
如果我尝试渲染Mesh( InstancedBufferGeometry, MultiMaterial )
不起作用的东西,我会从组材料中的“可见”字段中得到一个错误。
instances
用materialIndex
in替换addGroup
就好了,但必须是另一种用于instances
现场的用途。我不明白这一点,或者这可能是一个错误。
在three.js页面发帖:https ://github.com/mrdoob/three.js/issues/8912
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?