问题标签 [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.
graphics - 什么是稀疏体素八叉树?
我已经阅读了很多关于稀疏体素八叉树在未来图形引擎中的潜在用途的文章。
但是,我一直无法找到有关它们的技术信息。
我了解体素是什么,但是我不知道什么是稀疏体素八叉树,也不知道它们如何比现在使用的多边形技术更有效。
有人可以解释或指出我对此的解释吗?
algorithm - 如何快速统计相邻体素的数量?
我有一个 3D 网格(体素),其中一些体素被填充,而有些则没有。3D 网格是稀疏填充的,所以我有一组filledVoxels
填充体素的坐标 (x, y, z)。我要做的是找出每个填充的体素,也填充了多少相邻的体素。
这是一个例子:
- fillVoxels 包含体素 (1, 1, 1)、(1, 2, 1) 和 (1, 3, 1)。
- 因此,邻居计数为:
- (1,1,1) 有 1 个邻居
- (1,2,1) 有 2 个邻居
- (1,3,1) 有 1 个邻居。
现在我有这个算法:
checkAllNeighbors() 查找所有 26 个周围的体素。因此,我总共进行了 26*filledVoxels.size() 查找,这非常慢。
有什么方法可以减少所需查找的数量吗?当您查看上面的示例时,您可以看到我多次检查相同的体素,因此可以通过一些巧妙的缓存来摆脱查找。
如果这有任何帮助,体素代表一个体素化的 3D 表面(但其中可能有孔)。我通常想得到一个包含 5 或 6 个邻居的所有体素的列表。
java - vtk java体素渲染
嗨,大家好,
有谁知道,为什么Java中的这段代码可以编译,但出现错误:
这是我从 C++ 代码中复制的 java 源代码:http: //permalink.gmane.org/gmane.comp.lib.vtk.user/35844
谢谢你的帮助!
大卫
programming-languages - 体素 3d“网格”
在您看来,创建大型(大量......)基于 3d 体素的网格的最佳语言是什么?
即喜欢 Minecraft (http://www.minecraft.net/)
我注意到 Minecraft 是用 Java 创建的,这显然有它的缺点。帮我做决定!:)
ps 这是社区维基,所以没有积分,只是在意见之后:)
mesh - 动态地形变形
我对设计一个非常简单的游戏很感兴趣(只是为了学习目的,我没有宏伟的计划)。我想要一个可变形的地形系统(想想我的世界),但有点复杂。
我知道 Mine Craft 使用了一个叫做体素的概念。我也不是说体素在 CPU 方面并不完全好,但现在可以通过一些 GPU 技巧来实现(同样从我目前所读到的内容中不知道)。
到目前为止,体素似乎是要走的路,但它们不是我想要的。它们允许悬垂和洞穴,但它们看起来非常简单。
我想要一个非常大而广阔的地形,我可以通过悬垂自由变形和操纵。我知道我必须针对景观的大小实施某种分页,甚至可能针对我正在考虑的地形类型进行三维分页。
我对 ROAM 进行了一些研究,但要学习的东西很多,我不确定它是否是正确的方向。我已经看到可能要走的路是使用分层高度图,然后使用 geomipmapping 和网格用于隧道等(如果这有任何意义的话)。
基本上是在寻找一个好的算法和起点,包括巨大的地形,这些地形完全可以变形,允许悬垂、悬崖、隧道和洞穴。
它不必像《我的世界》中那样漂亮,但也不像块状。
任何关于从哪里开始研究的方向都会有很大帮助。
谢谢。
python - 获取网格中可见体素的列表
我正在开发一款 Minecraft 风格的游戏,我需要一种方法来减少渲染世界的数量。目前,我正在使用一种天真的、渲染一切的方法,它存在明显的缩放问题。我需要一种方法来获取一组块,并以某种方式找出哪些块正在接触空气、水或任何其他半透明块。
我对使用 NumPy 或 SciPy 等外部模块持开放态度,尽管他们的一些文档让我有点不知所措。或者,遍历每个块并获取邻居列表也是可以接受的,尽管在 Python 而不是 C 中进行这些计算的性能成本会相当高。
作为记录,我已经尝试查看 NetworkX,但它似乎更多地用于科学分析或寻路,而不是可见性检查。
mesh - 将网格转换为元球
我正在做一个项目,我需要将现有的多边形网格转换为由元球(斑点)制成的静态形状。我已经用 binvox 将网格体素化为“.raw 文件”(根据binvox的描述),但我不知道它如何存储数据,因此不知道如何加载它。
问题1:有没有非PHD的方法可以做到这一点?从多边形网格创建元球模型。问题 2:有没有人使用过 binvox 中的上述 .raw 文件格式,如果使用过,如何使用?
c++ - 体素...老实说,我需要知道从哪里开始
好的,我知道体素基本上只是像素的体积版本。
在那之后,我什至不知道要寻找什么。
谷歌搜索没有显示任何教程,我在任何地方都找不到关于它的书,我什至找不到任何与体素到底是什么的基本概念有关的东西。
我知道很多 C++ 库,并且掌握了 OpenGL 的基础知识。
有人可以指出我正确的方向吗?
编辑:我想我只是对如何实现它们感到困惑?抱歉让我感到痛苦,只是我真的找不到任何可以轻松关联的东西……我想我在想象一个体素与一个向量相关,你可以在其中实际存储数据。
体素可以表示为任何3D 形状吗?例如,假设我希望形状是圆柱体。这是可能的,还是他们必须像立方体一样链接?
optimization - 体素引擎和优化
最近我开始开发体素引擎。我需要的只是没有纹理的彩色体素,但数量非常大(比我的世界小得多)——问题是如何快速绘制场景?我使用的是 c#/xna,但我认为这在这种情况下不是很重要,让我们谈谈一般情况。看看这两个游戏:
特别是我认为 2 号视频代表了很好的优化方法(我的 gfx 卡在 192 x 192 x 64 时开始窒息)他们是如何实现这一点的?
我会在引擎中拥有什么:
- 没有纹理但有阴影的彩色体素
- 很多很多体素,比如至少 512 x 512 x 128 来实现类似视频 #2 的效果
- 阴影(平滑的阴影会很棒,但这不是必需的)
- 可选:动态照明(例如来自飞行的火球,在体素结构附近点亮)
- 帧率最低 40 FPS
- 相机有 3 种自由方式(x 轴移动、y 轴移动、z 轴移动),无需旋转相机
- 最后可选功能可能是景深(它会很甜^^)
我已经知道什么优化:
- 删除位于体素结构内的看不见的体素(其他体素从六个方向覆盖)
- 删除看不见的体素面 - 因为相机没有旋转并且总是像 TPP 游戏一样向前倾斜,所以如果我们通过垂直切割划分屏幕,左体素和右体素将只显示 3 个面
- 将体素保留在字典中而不是 3 维数组中 - 跳过大小为 512 x 512 x 128 的数组需要几毫秒,这是不可接受的 - 但字典 int:color 其中 int 描述打包的 3D 位置要快得多
- 在适用的情况下使用实例化
- 遮挡?(这个怎么做?)
- 空间划分/八叉树(这是个好主意吗?)
如果有人给我提示如何改进上面列出的现有优化或者可以分享新改进的想法,我将非常感激。谢谢
c# - 使用噪声生成行进立方体地形?
我已经成功地在 C# XNA 中制作了一个行进立方体类,并且正在使用 Lib 噪声来生成 3d perlin 噪声,但是当我尝试使用 perlin 噪声的值作为我的行进立方体的密度来生成地形时,它会生成一大块行进的立方体,里面有看似随机的三角形。我分离了行进立方体,并给它任意的 3d 密度数组来运行,这样我就可以确保一切正常并且看起来很好,我让地形生成代码生成了正常的立方体,我得到了一个正常的地形,但是问题是每个立方体的角落从噪声中获取值总是从负数转换为正数如此之快,以至于行进的立方体看起来就像一团乱七八糟的东西。
这是我用来生成地形的代码:
GetDensity 方法如下:
我认为问题在于我没有正确使用噪音来获得行进立方体角的密度,但到目前为止,我的谷歌搜索结果根本没有太大帮助。那么有谁知道如何正确使用噪声来生成平滑的地形?或者还有什么可能导致这个问题?
我在http://imgur.com/a/D1uMC发布了屏幕截图 ,前两个使用行进立方体显示,最后一个是普通立方体。
编辑:所以从图片中我发现行进的立方体实际上是按照它们所赋予的值来工作的,问题在于我的噪音以及我如何使用它。有谁知道任何好的资源用于基于噪声的 3d 地形生成?