问题标签 [voxels]

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 回答
402 浏览

c++ - 在片段着色器 OpenGL 中写入多个 3D 纹理

我有一个 3D 纹理,我在其中写入数据并以这种方式将其用作片段着色器中的体素:

并且纹理是这样定义的

然后当我必须使用它时

现在我的问题是我想要一个 mipmapped 版本而不使用 opengl 函数,因为我注意到它非常慢。所以我正在考虑同时在所有级别写入 3D 纹理,例如,最大分辨率为 512^3,当我在该 3dtex 中写入 1 voxel VALUE 时,我还为 256^3 写入 0.125*VALUE voxel 和 0.015625*VALUE 用于 126^3 等。由于我使用 imageStore,它使用原子性,所有值都将被写入并使用这些权重我会自动获得平均值(不完全像插值,但我可能会得到一个令人愉快的结果反正)。所以我的问题是,拥有多个 3dtexture 并同时写入所有这些的最佳方法是什么?

0 投票
3 回答
3882 浏览

javascript - how to make 3d terrain using voxels and perlin noise

Ive read many tutorials on this concept but I feel none of them go into too much depth on how to do it. I already know how 3d programming (rasterizing, projection matrix, etc.) raycasting (using euclidean geometry and vectors) and raytracing work I just need to know how a voxel landscape is generated and rendered using perlin noise. Also, I know that maps are created with 2d arrays but does each element of the array represent each vertical column of voxels or just a generalized point on the map (like the peak of a mountain or a hill top). Thanx in advance for the answers!

0 投票
2 回答
407 浏览

c++ - 在大小为 n 的 3D 数组中有效地检查相邻体素

我的体素系统使用在运行时为每个块动态分配的平面 3D 数组,但是每个块生成数百万个立方体是不可行的,所以我需要优化。

我打算实施的第一个优化当然是不为被遮挡的体素生成网格数据,这在纸上是个好主意,但我不知道该怎么做。

我所有的尝试都以难以调试内存分配问题而告终,因此我不得不放弃并询问更多知识渊博的人,因为我不知所措。

我现在的化身就是这样

if(sPosX == MIN) 是我实施的一个 hack,它不会在生成块时出现段错误(否则它会在生成块 [CHUNKSIZE][CHUNKSIZE][CHUNKSIZE] 时出现内存访问冲突,这不是很好。这个hack 无意中确保生成了所有立方体,但同样没有吸引力。

这里的简明问题如下:我的逻辑的哪一部分被破坏了?(大概是全部)以及如何以一种不会导致越界错误的快速方式正确检查相邻块?(我尝试为每个最后一个极端情况手动编码异常,但事实证明这是不可维护的,而且速度要慢几个数量级并且容易出现段错误)

0 投票
1 回答
1528 浏览

vtk - VTK 使用 VoxelModeller 构建点云的体素空间

这就是我想做的事情:我有一个 .pcd(PCL 标准格式)文件,其中存储了一个点云,我想构建它的体素表示,然后提取等值面。如果我没记错的话,我应该按照这个例子http://www.vtk.org/Wiki/VTK/Examples/Cxx/Modelling/MarchingCubes,我应该将我的 pcd 设置为 vtkVoxelModeller 而不是球体的输入。

所以我尝试了这种方式:

其余代码取自示例,我所做的唯一修改是根据我的表面设置边界,并且:

当我运行可执行文件时,我得到一个空窗口:(

由于我是 VTK 的新手,我的研究项目非常需要它,如果有人能解释我做错了什么并指出正确的解决方案,我会非常高兴。

谢谢

0 投票
1 回答
403 浏览

javascript - 有人可以建议我体素化 3d 模型的方法吗?

这个网站解释了如何做到这一点。http://drububu.com/miscellaneous/voxelizer/index.html 但我不明白如何在代码中实现它。

0 投票
1 回答
221 浏览

c++ - 如何填充给定平面内的 OpenVDB 体素?

我有一个由 4 个 (x,y,z) 点定义的四边形(就像一个有边的平面)。我有一个 OpenVDB 网格。我想用值 1 填充我的四边形(包括边缘)内的所有体素。如果不手动设置四边形(有限平面)的每个体素,这样的事情可能吗?

0 投票
1 回答
1530 浏览

c++ - 在体素引擎中创建块网格很慢

我正在使用 C++ 开发体素引擎,在实现了块之后,我意识到它们的生成成本真的很高。我的意思不是用块填充它们,我的意思是生成一个块网格。

生成块后,游戏运行顺畅,除了放置和删除体素。每当一个块发生变化时,它的网格就会被重建。这是昂贵的过程。处理一个块大约需要 0.36 秒,这会导致在编辑一个块时冻结大约 0.36 秒。此外,由于单个区块的 0.36 秒峰值,加载超过一个区块半径或 3 或 4 个区块的世界需要几分钟。有 4 个块,需要 189 秒,(4*2)^3*0.36(每个 0.36 秒 512 个块)

这是我的网格生成代码。它遍历块中的每个块,如果它不是空气,它会为其添加立方体顶点,否则,忽略它。稍后这将成为一个更复杂的方法,其中包含我计划的一些东西,如果该方法已经很慢,那就不好了。

使用的结构ChunkMesh,我认为问题在于:

我相信问题出在 ChunkMesh 结构中,使用了 push_backs。数百个std::vectorpush_backs 非常慢,但我找不到替代方案。我可以用什么替换矢量?

我要完全错误地渲染这些块吗?如何优化此功能?

任何帮助将非常感激。

谢谢。

编辑: 我尝试保留向量,令我困惑的是,这对性能没有影响。它保持在 0.36 秒。

我添加了一个构造函数来ChunkMesh获取块的数量,如下所示:

0 投票
1 回答
436 浏览

c++ - OpenGL体素引擎面部合并与逐顶点环境遮挡

我正在制作一个体素引擎,将世界分成块,每个块有 32 x 32 x 32 个块。我一直在实现许多渲染优化,例如不渲染被实体体素覆盖的面或为相同的相邻体素进行面合并。

问题是我想实现逐顶点环境遮挡,从 CPU 计算遮挡并将其传递给着色器,就像那个图像一样。它几乎可以正常工作,但是由于 OpenGL 对片段的最终颜色进行了线性插值,因此面合并会在较大的面上产生更大的渐变。

我现在想知道是否有办法解决这个问题,通过告诉片段着色器片段离顶点有多远或类似的东西。

0 投票
1 回答
139 浏览

arrays - 将黑白图像堆栈写入布尔 3D 体素数组?

读取包含 ISO 卷的 0/1 值并将其写入布尔体素数组的黑白图像堆栈的最佳和低内存选项是什么?即 2k 平方像素的 2k 图像提供 800MB 的布尔值。

我开始编写一个 3D 布尔数组 boolean[z,y,x]... 但它不起作用?!:我需要一个 2D 数组 boolean[x,y] 数组(如何?)

我已经编写了一个程序,通过 X,Y 遍历图像堆栈以检测体积的边缘,即图像从 0 到 1 和从 1 到 0 变化的空间中的每个点,它给了我顶点以及泊松盘网格划分的对象法线。我现在还需要在 Z 中遍历,而不需要加载 2000 张图像 N 次。

体素总共可以达到 80 亿个体素。

我需要哪个?如何在 C/C#/JS 中声明数组?

感谢您的任何提示。

0 投票
1 回答
1333 浏览

c# - 将体素动画化,就好像它们是 unity3d 中的 2d 精灵一样。还有比这更好的方法吗?

我正在制作体素模型,我喜欢像素艺术。我想统一使用的模型是非常小的类人动物,纯粹是为了功能。

当我四处寻找为这些体素模型设置动画的方法时,我真正看到的只是添加骨骼/绑定的方法,创建一个与体素风格相悖的平滑动画。

我想让这些体素以与 2D 精灵动画相同的方式动画。例如,我最好的也是迄今为止唯一的跳跃动画技术是破坏站立体素对象并在我按下跳跃时立即实例化跳跃体素模型对象。不涉及过渡,只是老式的精灵风格动画;像马里奥。

我的代码将是(显然不是字面意思,但你明白了):

这真的是团结一致的最佳方法吗?我在 qubicle 中制作动画的每一帧(目前),使用站立体素作为子对象,然后相对于用户输入销毁和实例化不同的预制件(用作动画帧)。

有人在没有绑定的情况下制作体素动画吗?我在吠叫错误的树吗?

谢谢

如果不清楚,这就是我的意思: https ://www.youtube.com/watch?v=u2e8lfViIxg