algorithm - 3D随机生成行星

标签 algorithm procedural-generation

对于一个项目,我正在 3D 空间中创建行星,这些行星基于一个中心“homeworld”,它们是从原点向各个方向随机生成的。

我研究过程序生成和 Perlin 噪声,但我找不到合适的方法来使它们适用,但我对任何类型的随机生成都不熟悉。

3D 点生成算法的任何良好起点,以原点为中心,最好基于种子(因此相同的种子构成相同的宇宙)。

谢谢!

最佳答案

尝试使用一组不同的随机数,而不是尝试使用特定算法对单个种子执行此操作。

first one is 1-360 is the rotation around the y axis
second one is 1-180 is the deviation from the y axis (wobble)
third one is 1-<really big  number> is the distance from your centre point (homeworld)
fourth (optional) one is to randomize the radius of the planet
fifth (optional) is to randomize the colour of the object

要绘制您的星球,只需一些简单的三角函数即可计算出您的原点(家乡)在 3d 空间 (x,y,z) 中的位置。

只要您的每个种子值都相同,您就能够生成一个非常大的行星空间。

如果您想用单个种子执行此操作,请使用该种子为所有后续随机数生成器生成“随机”种子数。

关于algorithm - 3D随机生成行星,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9562468/

相关文章:

opengl - 具有脊形分形噪声的程序地形

arrays - 使用 reserveCapacity 向后快速填充数组

java codility 训练基因组范围查询

java - Java 中的 2d 地形生成器出现问题

algorithm - 我可以使用 3 维单纯形噪声实现在球面上生成噪声吗?

c# - 程序化城市建模 - 多边形分割(也许是更好的想法?)

algorithm - 如何实现菱形方 block 算法?

algorithm - f1(n)/f2(n) 的时间复杂度

java - 如何在 O(n) 时间内找到到达数组末尾的最少跳转次数

php - 使用一维数组中的数据通过算法创建多维数组