【发布时间】:2019-08-27 09:50:32
【问题描述】:
我一直在尝试弄清楚如何使用 Perlin Noise 在 3d 球体上创建波浪效果
我找到了一些关于如何在飞机上执行此操作的教程,但是在 3d 对象上没有, 这段代码在飞机上工作得很好,有人知道如何在 3d 球体上调整它吗? 提前感谢您的帮助
using UnityEngine;
using System.Collections;
public class PerlinTerrain : MonoBehaviour {
public float perlinScale;
public float waveSpeed;
public float waveHeight;
public float offset;
void Update () {
CalcNoise();
}
void CalcNoise() {
MeshFilter mF = GetComponent<MeshFilter>();
MeshCollider mC = GetComponent<MeshCollider>();
mC.sharedMesh = mF.mesh;
Vector3[] verts = mF.mesh.vertices;
for (int i=0; i< verts.Length; i++) {
float pX = (verts[i].x * perlinScale) + (Time.timeSinceLevelLoad * waveSpeed) + offset;
float pZ = (verts[i].z * perlinScale) + (Time.timeSinceLevelLoad * waveSpeed) + offset;
verts[i].y = Mathf.PerlinNoise(pX, pZ) * waveHeight;
}
mF.mesh.vertices = verts;
mF.mesh.RecalculateNormals();
mF.mesh.RecalculateBounds();
}
}
【问题讨论】:
-
如果您链接到您正在关注的教程,它可能会有所帮助。至少有 2 种非常不同的方式可以让您拥有基于 Perlin 噪声的球体:您可以从 3d 噪声中雕刻出一个球体,或者您可以用 2d 噪声覆盖球体的外部。
标签: c# unity3d wave perlin-noise