问题标签 [voxel]

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

performance - 关于八叉树

我正在创建一个类似于 Minecraft 的地形引擎,我想知道八叉树到底是什么。使用我的引擎,我将它的每个部分分成块或区域 - 从我所读到的内容中,这与它有关。另外,我想知道指数是否确实会提高游戏中的性能,如果可以,会提高多少?任何其他提高性能的想法/方法将不胜感激。请注意,我已经包含了背面剔除,如果盒子或一侧被隐藏,则不要显示该侧。

0 投票
1 回答
1073 浏览

c# - 提高体素引擎的性能

正如我在之前的几篇文章中提到的,我正在创建一个类似于引擎的东西。

我已将地形划分为多个区域,并且仅渲染位于相机视锥体中的区域。当每个区域的顶点缓冲区被构建时,它们会检查每个块是否可以看到,如果不是,则不会将其添加到缓冲区中,如果是,它会检查哪些边没有被其他块包围并构建这些面. 我也启用了逆时针剔除。

任何人都可以提出任何其他提高性能的方法(注意:我还没有添加索引缓冲区,但只使用顶点缓冲区进行渲染)?前面提到的原因可能是我帧率低的原因......而且我也想知道向这个引擎添加索引是否会提高性能。

我也不认为这与内存分配有任何关系。

编辑:好的,我已经暗示了索引缓冲区,性能已经大大提高,但我仍然认为它可以增加更多......

0 投票
1 回答
424 浏览

java - 将 3D 数组转换为 3D 模型

我正在尝试找到一种可用于将 3D Java 数组转换为 3D 体素模型的软件。我正在用 Java 开发体素地形生成器,我需要一些方法来可视化 3 维整数数组。什么软件(或 API)适合这个目的?

此外,我要转换的数组是一个 3D 整数数组,其中每个整数都应对应于具有特定颜色的体素。

0 投票
1 回答
2446 浏览

c# - 玩家到体素碰撞检测/响应

我有大量的体素,就像我的世界一样。玩家/敌人在这个网格中。我不知道如何进行这种类型的碰撞检测。请注意,这不是动态可移动对象与动态可移动对象,这是可移动对象与固定地面/墙壁/天花板。

我对检测没有问题,它的响应我不知道该怎么做。

我必须处理的内容:玩家位置、速度和边界框,以及围绕玩家的 1x1x1 体素数组。

0 投票
1 回答
692 浏览

c# - 如何在 XNA 中隐藏立方体模型的某些面,以便体素引擎对其进行优化?

您好,我正在尝试制作类似于 Minecraft 的地形引擎。

我能够加载一个块。它非常滞后,当一次加载多个块时,它变得无法播放。

这是我的渲染代码:

如您所见,我没有使用 for-each 或 for 循环,因为它只是一个立方体;这不是必需的。

我做了一些研究,发现最好的答案是我需要隐藏立方体不可见的面。所以说如果有 2 个立方体彼此相邻,我不想渲染面之间的面。

这就是我卡住的地方,大多数人都使用在 XNA 中绘制的立方体,而我正在使用模型。

我是 XNA 的新手,因为我目前在 9 年级,所以我不太了解手动绘制立方体所涉及的数学,所以我使用了一个模型。

那么我将如何只渲染可见的面呢?

0 投票
0 回答
828 浏览

python - 在 Python 中将多面体和多边形转换为体素

对于我的研究,我需要将 3D 多边形(面)和 3D 多面体(体积)都转换为体素(等距立方体),因此有限差分 PDE 求解器方案可以处理几何。我已经在 python 中有一个工作设置,但它目前非常缓慢且不稳定:

1)为了将多边形转换为体素,我在多边形上放置了一个网格,并将每个网格点分配给一个体素。为了防止“洞”,当我增加体素分辨率时,我必须显着增加网格分辨率。

2)为了将(凸)多面体转换为体素,我在网格的一个隔间上运行,其中包含它,并为所有网格点尝试 sage.all.Polyhedron.contains (如 sagemath)。此例程相当缓慢且有缺陷

错误,随机无法为某些边列表构建多面体。

我正在寻找一些pythonic方式

1)通过检查多边形与体素的多边形面的交集来正确地对多边形进行体素化

2) 有一个快速可靠的 polyhedron.contains() 例程。

到目前为止,我发现的唯一内容是 CGAL bindings: polyhedron facet intersection example。有没有人有他们的经验?

0 投票
4 回答
5835 浏览

opengl - 为类似 Minecraft 的游戏渲染每侧具有不同纹理的立方体的有效方法?

我正在尝试确定在类似 Minecraft 的游戏中渲染一堆具有不同纹理的立方体的最有效方法是什么。

我发现了实例化渲染。我所做的是创建了一个“立方体模型”,它存储了立方体的所有顶点、法线和纹理坐标,我从中创建了一个数组缓冲区并将其传递给 GPU 一次。然后我创建了一个(平移向量,纹理索引)结构数组,并使用实例化渲染一遍又一遍地重绘同一个立方体,每次平移并使用适当的纹理

(希望 Notch 不介意我使用他的纹理,直到我自己制作)

问题是并非所有 6 个面都将始终具有相同的纹理,我试图弄清楚如何使它们对于每种块类型都不同。我提出的两个解决方案是:

  1. 为每种模块类型使用不同的模型。这样我可以在每个顶点上指定不同的纹理坐标。我仍然可以使用实例化渲染,但我会为每种块类型分别进行一次传递。
  2. 传递 6 个“纹理索引”(每个面 1 个)而不是每个块 1 个。

第二种解决方案需要传递更多(可能是冗余的)数据。我不确定实例化渲染的好处有多大……所以我不知道是不是最好做,比如说,最多 256 个“通过”(每种块类型 1 个),或者“一个大传递”所有数据,并一次渲染每个块。

或者也许还有另一种我不知道的方法?

0 投票
1 回答
592 浏览

c++ - 保存数据以重新使用体素编辑器的最佳方法

我正计划构建一个体素编辑器(c++ 和 opengl)供个人使用,我想重新使用我在以后的项目中构建的对象。我遇到的问题是,我不确定将体素数据保存到文件的最佳方法是什么。我搜索了很多网站,发现“另存为八叉树”和“另存为 BSP 树”在您看来哪个更好,为什么?

提前致谢。

0 投票
2 回答
1172 浏览

game-engine - 最佳体素引擎/语言?

我正在研究制作一个类似于 Minecraft 的基于体素的游戏,只是这将使用具有更高纹理分辨率的稍微更高的多边形体素,以创建更平滑、更逼真的地形以及独特的功能,如基于体素的自定义角色、玩家和敌人。

我的问题是开发这种类型的独立游戏的最佳引擎和语言是什么,对于这种类型的体素来说,图形优化程度最高?

0 投票
1 回答
2031 浏览

terrain - 基于体素的地形的适当密度函数?

我已经设法在 C# 中实现了 Marching Cubes 算法。到目前为止,我已经尝试过渲染球体的算法。这很容易,因为密度函数的编码不是很复杂。

但现在我想让算法更进一步,为游戏渲染一些有趣的地形。所以我需要适当的密度函数来完成这项任务。我首先想到的是体积 Perlin 噪声。没关系,但我正在寻找一个没有凸形的地形,我的意思是,目前没有洞穴和类似的几何形状。

好的,我知道一个简单的高度图可以完成这项工作,但我想要一个体素生成的地形。我需要什么类型的密度函数或伪代码来实现它们?