- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 2D 中使用 Perlin Noise 作为世界生成器(在 Terraria 中如何)。我找到了一个适合我的实现。我需要生成世界的一部分,但这种实现只能生成一次整个世界。
实现- http://sirisian.com/javascriptgame/tests/valuenoise2.html
我把它改写成 AS3,稍微修改(+ 主代码)- http://codepad.org/crMEQ2DD
请帮助修改代码,以便可以生成噪声部分:
PerlinNoise.randomize(65735);
...
var noises:Vector.<Number> = PerlinNoise.getNoise(0, 0, 100, 100, 6, 6, 1.0, 20);
...
var noises:Vector.<Number> = PerlinNoise.getNoise(100 /*<--x offset*/, 0, 100, 100, 6, 6, 1.0, 20);
最佳答案
Flash 已经包含 Perlin 噪声的实现,通过 BitmapData.perlinNoise()
方法。如果您需要将噪声作为数字向量(而不是可渲染位图)获取,那么您可以使用 BitmapData.getVector()
方法将所有像素作为 32 位整数向量返回,其中四个字节分别表示 alpha、红色、绿色和蓝色 channel 。
我自己在一个项目中采用了这种模式,取得了巨大的成功。下面是我编写和使用的函数。
public static function initNoiseVector(output : Vector.<Number>, baseX : Number, numOctaves : Number, scale : Number, blur : uint = 0) : void
{
var i : uint;
var len : uint;
var sum : uint;
var avg : uint;
var perlin : BitmapData;
var noise : Vector.<uint>;
len = output.length;
perlin = new BitmapData(len, 1);
perlin.perlinNoise(baseX, 1, numOctaves, 0, true, false, 7, true);
if (blur > 0)
perlin.applyFilter(perlin, perlin.rect, new Point(), new BlurFilter(blur, 1, 3));
noise = perlin.getVector(perlin.rect);
// Calculate average
sum = 0;
for (i=0; i<len; i++) {
// Mask out blue channel
sum += noise[i]&0xff;
}
avg = sum/len;
for (i=0; i<len; i++) {
var speed : Number;
// Convert perlin noise color to value between -1 and 1
speed = ((noise[i]&0xff) - avg) / avg;
output[i] = speed * scale;
}
}
_noise = new Vector.<Number>(1000, true);
PerlinNoiseUtil.initNoiseVector(_noise, 300, 10, randomDev * periodTime, 10);
关于actionscript-3 - 如何修改柏林噪声 [请参阅线程中的示例],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10995469/
我正在尝试在 JS 中设置时区,但无法弄清楚要使用哪个缩写。我尝试了一些,但我可能是这里的问题。 我尝试将 momentjs 与 moment.tz 一起使用。 最佳答案 “欧洲/柏林”就在这里。您可
我已将 ISAPI DLL SOAP 从 Delphi 10 Seattle 迁移到 Delphi 10.1 Berlin Update 2。 迁移后,会引发运行时“抽象异常”。 我注意到“Web.H
为什么我无法解析以下日期? DateTime.parse("2015-03-29 02:35:00", DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss")
我是一名优秀的程序员,十分优秀!