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

three.js - BufferGeometry 透明度

在 BufferGeometry 中,我们可以使用材质设置{vertexColors: THREE.FaceColors}来为面设置不同的颜色。但是没有办法设置透明度。

如何为 BufferGeometry 中的不同面设置透明度?

0 投票
1 回答
3303 浏览

javascript - 三.js平面缓冲几何uvs

我正在尝试创建一个缓冲几何平面,但我在使用 uv 坐标时遇到了问题。我试图跟随正确的 UV 映射 Three.js,但没有得到正确的结果。

紫外线代码如下。我还将整个缓冲几何代码保存在http://jsfiddle.net/94xaL/

我非常感谢提示我在这里做错了什么!

谢谢!

0 投票
1 回答
1367 浏览

javascript - Three.js BufferGeometry 与粒子的几何

一些粒子示例使用THREE.BufferGeometry,而其他使用简单的THREE.Geometry. 关于每种方法的优缺点的一些内容?

0 投票
1 回答
2172 浏览

javascript - BufferGeometry 偏移量和索引

我只是想知道“偏移”和“索引/索引”到底是什么。例如在https://github.com/mrdoob/three.js/blob/dev/src/core/BufferGeometry.js中提到了偏移量,在 IndexedGeometry 中提到了索引,但是我目前无法在开发树中找到它. 尽管索引似乎相当明显,尽管我可以深入研究代码为自己找出一些可能正确的答案,但我很想听到“官方”声明:)

谢谢!

0 投票
1 回答
1395 浏览

javascript - three.js:BufferGeometry 和纹理

我正在尝试在 a 上加载纹理THREE.BufferGeometry,但纹理没有显示出来。如果我使用普通几何,纹理就会出现。BufferGeometry 不支持纹理还是我做错了什么?

这有效:

这不会:

0 投票
1 回答
2416 浏览

javascript - 释放BufferGeometry?

作为我的场景对象的基础,我有一个根 Object3D。我的数据作为 Object3Ds 的树结构从这个根目录加载。使用 BufferGeometry/MeshPhongMaterial 将网格添加到叶 Object3D。我通过将根 Object3D 传递给此方法来清除现有树:

考虑以下简单的树:

  • 场景(场景)
    • 根 (Object3D)
      • 分支(Object3D)
        • 叶(网状)

一旦这个结构出现在场景中,我就会观察堆(使用 Chrome 的开发工具)。我可以看到 3 个 Object3Ds 对象和 2 个 Mesh 对象(额外的是原型)。

当我调用 clearScene(Root) 时,我看到它穿过树,移除 Object3D,并清理网格。但是当我观察堆时,我看到虽然 Object3D 已被移除,但 2 个 Mesh 对象(及其关联的 BufferGoemetry 和 Material 对象)仍然存在。如果我在清除后第二次加载数据,我会看到 3 个 Object3D(好的)和 4 个网格(不好)。

我相信这意味着引用没有被正确清除,但我没有看到堆中的任何保留器会这样做。

我一定是错过了导致这些物体徘徊的其他东西。

r69dev(我在 r68 中看到了相同的内容),在 Chrome 36.0.1985.125 中进行测试

0 投票
1 回答
4350 浏览

javascript - 球体的三个 js 缓冲几何

我正在尝试制作一个显示大量球形对象的三个 js 文档,最快的方法是使用 buffergeometry。从这里的这篇文章中,我了解到我可以使用以下方法将普通几何转换为缓冲几何:

但这似乎对我不起作用,创建对象的其余代码如下:

如果我使用它可以正常工作,var geometry = new THREE.BufferGeometry();但这会创建我不想要的正方形。任何人都知道为什么这似乎不起作用?提前致谢。

0 投票
1 回答
715 浏览

javascript - BufferGeometry MeshFaceMaterial 实现 r68

我们最近切换到 r68 并将我们所有的几何图形移动到THREE.BufferGeometry.

我们THREE.MeshFaceMaterial在很多地方都使用过,根据BufferGeometry faces 材料 THREE.BufferGeometry不支持它。解决方案似乎是创建多个网格,我试过这个,但它似乎不起作用,我没有得到任何错误。

我的方法如下:

这可以正常工作,没有错误,但是在渲染时,所有光照贴图等似乎都不起作用,几何看起来很好,但只有一种颜色。

关于如何正确实施的任何提示?

编辑:

紫外线问题:https ://github.com/mrdoob/three.js/issues/5118

编辑2:

在深入研究了 WebGLRenderer 源代码之后,我认为实现这一点需要做更多的工作,然后现在就值得了。我们现在将坚持使用旧几何,但我仍然愿意接受建议;)

编辑 3:可以在此处找到自己执行此操作的基本方法:https ://github.com/mrdoob/three.js/issues/5268

这里有工作https://github.com/mrdoob/three.js/issues/5417来改进three.js 导出器,例如导出具有多种材料的缓冲几何。

0 投票
2 回答
1574 浏览

three.js - BufferGeometry always creates FlatShading normals. I need SmoothShading

I use ThreeJS r68.

I always used THREE.Geometry for my project and it just works fine. Now I want to change from THREE.Geometry to THREE.BufferGeometry because I read that this is the better choice. But I couldn't get SmoothShading to work with my THREE.BufferGeometry.

I load my Object into a BufferGeometry and call bufferGeometry.computerVertexNormals. And then my result is FlatShading.

I read in the computeVertexNormals() method that BufferGeometry calculates differently if I use an "index" attribute. I tried to create an "Indexed" BufferGeometry but that just made everything worse. I don't know if I just created that right. I just added the indices like I would add them to the faces in a normal Geometry. The BufferGeometry.fromGeometry() method does not create an indexed BufferGeometry so I don't know where to look.

Do I need an indexed BufferGeometry for SmoothShading?

UPDATE

[... some time later....]

I think I could create a indexed THREE.BufferGeometry now. It's more like Geometry. And smooth shading looks fine with an indexed BufferGeometry. So now i have SmoothShading but a invalid uv-map. But why is the uv-map different in an indexed BufferGeometry to compared to not indexed BufferGeometry? BufferGeometry is really not easily loaded.

0 投票
1 回答
3156 浏览

javascript - BufferGeometry 索引问题

我正在尝试将我在 openFrameworks 中制作的一些代码移植到 THREE.JS 中。该代码使用柏林噪声生成景观。我这样做是为了首先创建一个静态索引数组,然后将顶点的位置放置在一个方形网格中,每个网格都位移一个指定的距离。这样可以移动阵列中顶点的位置(上、下、左或右),以便当相机移动时,可以更新风景并根据相机移动的方向生成新的风景条。

对于每个顶点,将 6 个索引添加到索引数组中,它们引用两个相邻的三角形。我不想浪费内存来存储每个三角形的每个顶点的副本。

例如,例如

例如,在顶点 v00 处,添加索引 {v00, v10, v11} 和 {v00, v11, v01} 等。

在我的 openFrameworks 代码中,这一切都很完美!在经历了很多麻烦之后,我终于在 THREE.js 中得到了工作,但是我注意到,一旦我增加顶点的数量,一切都开始变得奇怪 - 三角形连接(看起来)到处都是,而且一大块的顶点开始被跳过。目前,任何高达并包括 256*256 网格大小的东西都可以正常工作,但是一旦我增加任何更高的值,我就会开始看到所有的人工制品。

我认为这可能是偏移的问题,但我真的不明白这意味着什么,或者如何用我的代码实现它。我见过其他人在按顺序定义索引时成功使用它 (0, 1, 2, 3, ... ),而是为每个三角形使用 3 个单独的顶点(并按顺序为每个三角形添加三个顶点) . 我似乎无法让同样的事情发挥作用。

有任何想法吗?我在下面有我的代码以防万一。你可以看到我注释掉偏移的部分。

var Landscape = { 大小:0,块大小:21845,距离:0,几何:空,网格:空,位置:空,法线:空,颜色:空,索引:空,