因此,我一直试图制作一个类似于我的世界的无限和动态的世界生成,并一直使用佩林噪声来获得一个随机但平滑的地形。我现在使用的是Unity(版本5.0.2F1),所以请原谅任何非纯JavaScript的东西。
(为了安全起见,我要提醒那些不熟悉Unity Game Engine的人,start()
被称为第一个帧,yield;
告诉引擎不要等待完成而继续下一个帧。)
发生的情况是,start()
函数和构造函数实际上都可以工作,但是构造函数无法调用generatefloor()
。
#pragma strict
/*
This creates only one chunk so it should be called once for each chunk to be generated
*/
var size = 256; //"Blocks" in a chunk, note that a chunk has to be a square prism because the size is square rooted to generate each side.
var x : float;
var y : float;
var z : float;
var currentX : float;//Note : The first block in the
var currentZ : float;//chunk is (0, 0) and not (1, 1).
public var seed : int;
var heightMap : Vector3[];
print(Mathf.PerlinNoise(currentX, currentZ));
function Start(){
TerrainGenerator(new Vector3(10, 20, 30));
print("Start() is working"); //For debug
}
function TerrainGenerator(coords : Vector3){
x = coords.x;
y = coords.y;
z = coords.z;
print("Constructor worked.");//For debug
}
function Generate(){
GenerateFloor();
GenerateCaves();
}
function GenerateFloor(){
print("GenerateFloor() was called");//For debug
if(!(seed > 0)){
Debug.LogError("Seed not valid. Seed: " + seed + " .");
seed = Random.Range(0, 1000000000000000);
Debug.LogError("Generated new seed. Seed: " + seed + ".");
}
for(var i = 0; i < heightMap.length; i++){
if(currentX == Math.Sqrt(size)){
currentX = 0;
currentZ++;
}
else if(currentX > Math.Sqrt(size)) Debug.LogError("How did this happen?! currentX = " + currentX + " size = " + size + " .");
var height = Mathf.PerlinNoise(currentX, currentZ);
heightMap[currentX * currentZ] = new Vector3(currentX, height, currentZ);
print("For loop worked");//For debug
yield;
}
}
function GenerateCaves(){
//Coming soon
}
您不应该对Unity使用构造函数,因为Unity本身将创建实例,然后调用Start()函数。使用Start()和Awake()来执行通常在构造函数中执行的操作(比如调用地形生成函数)。我还强烈建议您学习C#。
所以我在这里的方法是,在脚本附加到的GameObject的检查器中设置x、y、z和大小。然后在Start()中调用Generate()函数。
GaussianNoise层 因为这是一个起正则化作用的层,该层只在训练时才有效。 GaussianDropout层 因为这是一个起正则化作用的层,该层只在训练时才有效。 AlphaDropout Alpha Dropout是一种保持输入均值和方差不变的Dropout,该层的作用是即使在dropout时也保持数据的自规范性。 通过随机对负的饱和值进行激活,Alphe Drpout与selu激活函数
GaussianNoise层 keras.layers.noise.GaussianNoise(sigma) 为层的输入施加0均值,标准差为sigma的加性高斯噪声。该层在克服过拟合时比较有用,你可以将它看作是随机的数据提升。高斯噪声是需要对输入数据进行破坏时的自然选择。 一个使用噪声层的典型案例是构建去噪自动编码器,即Denoising AutoEncoder(DAE)。该编码器试图从加噪的输
GaussianNoise层 keras.layers.noise.GaussianNoise(stddev) 为数据施加0均值,标准差为stddev的加性高斯噪声。该层在克服过拟合时比较有用,你可以将它看作是随机的数据提升。高斯噪声是需要对输入数据进行破坏时的自然选择。 因为这是一个起正则化作用的层,该层只在训练时才有效。 参数 stddev:浮点数,代表要产生的高斯噪声标准差 输入shape
[source] GaussianNoise keras.layers.GaussianNoise(stddev) 应用以 0 为中心的加性高斯噪声。 这对缓解过拟合很有用 (你可以将其视为随机数据增强的一种形式)。 高斯噪声(GS)是对真实输入的腐蚀过程的自然选择。 由于它是一个正则化层,因此它只在训练时才被激活。 参数 stddev: float,噪声分布的标准差。 输入尺寸 可以是任意的。
我最近一直在尝试用C实现一个Perlin噪声发生器(基于Ken Perlin的网站,使用SDL库作为屏幕输出),但输出显示插值块之间的边不是连续的或平滑的-插值块确实表现为块。 我很确定我的代码中缺少了一些东西,或者做错了,但我似乎找不到它。 作为参考,我的当前代码如下: 用法:跑步时,按住上下键可放大或缩小噪声网格。
我正在开发webRTC,我正在本地网络上的两个Android设备之间进行实时流,它对我来说工作得很好,除了音质问题,声音中有噪音和回声。如果我在一端使用免提,它会变得更好,但我不想使用免提。 那么我该如何提高音质,有什么技术可以提高音质。它还表示,webRTC内置了回声消除功能,如果这是回声仍然存在的原因。
问题内容: 我有一张地图清单。 列表中的值例如是 最后,我想要一个Map>,就像 如何在Java中实现这一目标。 代码: 现在,基于与我想要的相同ID,此genericList是该列表的输入并来自此列表 基本上,要根据ID将响应归类为String,将具有相同ID的响应分组在列表中,然后创建一个以ID为键并以列表为值的新映射。 问题答案: 您可以使用Java 8进行以下操作: 这将打印: 整数:1
我使用柏林噪声生成2D高度图。起初,我手动尝试了一些参数,并为我的工作找到了振幅、持久性...的良好组合。 现在我正在开发该程序,我为用户添加了更改贴图参数并为自己制作新贴图的功能,但现在我发现某些参数(主要是倍频程和频率)的值不在我以前看到的范围内。我认为,如果设定的振幅=20,我从中得到的值(高度)将在[0,20]或[-10,10]或[-20,20]范围内,但现在我看到振幅不是控制输出范围的唯