noise_value = pnoise2(x * frequency, y * frequency)
,这里的 frequency
就是频率参数。persistence
参数决定。比如,每增加一个八度(octave),振幅就乘以 persistence
。假设 persistence
是 0.5,那么第二个八度的振幅就是第一个八度的一半,第三个八度就是四分之一,以此类推。persistence
参数衰减。比如,使用 6 个八度时,噪声会包含从低频到高频的多个层次,生成的纹理会更接近自然现象。persistence
的值越小,高频噪声的振幅衰减得就越快,纹理的细节就越少;persistence
的值越大,高频噪声的振幅衰减得就越慢,纹理的细节就越多。比如,persistence
设为 0.5 时,高频噪声的影响会逐渐减弱,而设为 0.8 时,高频噪声的影响会更明显。lacunarity
的值越大,频率之间的间隔就越大,噪声的粗糙程度也就越高;lacunarity
的值越小,频率之间的间隔就越小,噪声的细腻程度也就越高。比如,lacunarity
设为 2.0 时,每个八度的频率是前一个八度的两倍,而设为 1.5 时,频率间隔就会更小。from PIL import Image
import numpy as np
# 生成噪声数据
width, height = ,
noise_data = np.zeros((height, width))
for y in range(height):
for x in range(width):
noise_data[y][x] = noise.pnoise2(x/width, y/height, octaves=)
# 归一化到 0-255
noise_data = (noise_data - noise_data.min()) / (noise_data.max() - noise_data.min()) *
# 转换为图像并保存
img = Image.fromarray(noise_data.astype(np.uint8))
img.save('perlin_noise.png')
Texture2D
对象,将噪声数据填充到纹理中,然后将纹理应用到材质上。using UnityEngine;
public class PerlinNoiseGenerator : MonoBehaviour
{
public int width = ;
public int height = ;
public float frequency = 1.0f;
public int octaves = ;
public float persistence = 0.5f;
public float lacunarity = 2.0f;
private Texture2D noiseTexture;
void Start()
{
noiseTexture = new Texture2D(width, height);
GenerateNoise();
GetComponent<Renderer>().material.mainTexture = noiseTexture;
}
void GenerateNoise()
{
Color[] pixels = new Color[width * height];
for (int y = ; y < height; y++)
{
for (int x = ; x < width; x++)
{
float sampleX = (float)x / width * frequency;
float sampleY = (float)y / height * frequency;
float noiseValue = ;
float amplitude = ;
float maxValue = ;
for (int i = ; i < octaves; i++)
{
noiseValue += noise.pnoise2(sampleX, sampleY, octaves, persistence, lacunarity) * amplitude;
maxValue += amplitude;
amplitude *= persistence;
sampleX *= lacunarity;
sampleY *= lacunarity;
}
noiseValue /= maxValue;
pixels[y * width + x] = new Color(noiseValue, noiseValue, noiseValue);
}
}
noiseTexture.SetPixels(pixels);
noiseTexture.Apply();
}
}
repeatx
和 repeaty
参数,让噪声在指定的周期内重复,或者在生成纹理时使用无缝拼接的方法,比如将纹理边缘的像素复制到对面。lacunarity
太大。调整这些参数,找到一个平衡点。💡 素材管理:让内容生产效率翻倍的核心武器 作为运营圈公认的 “插件神器”,壹伴在素材管理上的设计堪称教科书级别。我见过太多团队因为素材混乱导致内容生产效率低下,而壹伴的全网采集 + 智能分类功能彻
📐 对称排版:让公众号界面更规整对称是公众号排版中最基础也最容易出效果的美学原则。你打开那些阅读量高的公众号就会发现,它们的排版很少有东倒西歪的情况。文字对称尤其重要,标题和正文的对齐方式得统一,
冷启动的本质是 “破冰”,这话一点不假。对于一个全新的公众号来说,第一批粉丝就像刚认识的朋友,你得想办法让他们对你产生兴趣,愿意留下来看看。要是这一步没做好,后面再怎么努力,可能都是白费功夫。🎯
✨ 135 微信编辑器公众号排版教程 | 2025 新版图文排版技巧全攻略 📌 图文排版核心要素解析 咱们先来看最基础的排版参数。文字大小方面,14-15px 是移动端最舒服的阅读尺寸,要是文章篇幅
📊 先搞懂原创度检测报告的核心指标拿到一份 AI 文章原创度检测报告,先别被密密麻麻的数据吓住。核心就那么几个指标,抓住了它们,报告就看懂了一大半。原创度百分比是最显眼的,通常在报告最上方。这个
笔灵 AI 写作怎么样?2025 最新深度测评与功能全解析 | 高效内容创作神器 如今,AI 写作工具已成为内容创作者的得力助手,在众多工具中,笔灵 AI 写作凭借其强大的功能和出色的表现,受到了广泛
? 【基础操作】VCB-Studio 高效格式转换全攻略 VCB-Studio 是一款支持 100 + 格式的视频处理神器,尤其擅长 MP4、AVI、MOV 等常见格式的转换。它的操作界面简洁,功能强
我最近帮三家教育机构测试 Muse.ai,说实话,这工具在教育场景的适配度真的让我惊喜。尤其是中小型培训机构,之前总抱怨资料散乱、跨国学生沟通难,用了两个月后,反馈竟然出奇一致 ——“早该发现这东西了