Я пытаюсь найти лучший способ генерировать астероиды кубического вокселя кубика на основе перлана, но не могу найти последовательный метод для этого. /> вместе с этим статическим методом, чтобы вывести из него 3D -шум: < /p>
public static double Perlin3D(PerlinNoise noise, double x, double y, double z)
{
double AB = noise.getHeight(x, y);
double BC = noise.getHeight(y, z);
double AC = noise.getHeight(x, z);
double BA = noise.getHeight(y, x);
double CB = noise.getHeight(z, y);
double CA = noise.getHeight(z, x);
double ABC = AB + BC + AC + BA + CB + CA;
return ABC / 6;
}
< /code>
и этот метод для создания фактических астероидов: < /p>
public void Generate()
{
PerlinNoise p = new PerlinNoise(seed, persistence, frequency, amplitude, octaves);
GameObject newUnit = Instantiate(unit, genPoint, Quaternion.identity);
newUnit.transform.SetParent(transform);
for (int x = 0; x < maxDistanceFromCenter * 2; x++)
{
for (int y = 0; y < maxDistanceFromCenter * 2; y++)
{
for (int z = 0; z < maxDistanceFromCenter * 2; z++)
{
int targetX = genPoint.x - maxDistanceFromCenter + x;
int targetY = genPoint.y - maxDistanceFromCenter + y;
int targetZ = genPoint.z - maxDistanceFromCenter + z;
Vector3Int targetPos = new Vector3Int(targetX, targetY, targetZ);
Vector3 targetVector3d = new Vector3(targetX, targetY, targetZ).normalized;
double distFromCenter = Vector3.Distance(genPoint, targetPos);
double maxDistFromCenter = (NoiseHelper.Perlin3D(p, targetVector3d.x, targetVector3d.y, targetVector3d.z));
print(maxDistFromCenter);
if (distFromCenter < maxDistFromCenter)
{
GameObject newUnit2 = Instantiate(unit, targetPos, Quaternion.identity);
newUnit2.transform.SetParent(transform);
}
}
}
}
}
< /code>
К сожалению, я получаю результаты, которые выглядят так. Я ни в коем случае не ищу ответа на это единство, это совершенно концептуально для использования в различных проектах кодирования. Спасибо за помощь в Advanced, и я очень ценю ваше время, чтобы одолжить мне руку,
cheers.
Подробнее здесь: https://stackoverflow.com/questions/665 ... formations