有没有办法将Perlin噪声合并到我的“我的世界”克隆中?我尝试了许多不同的方法,但都不起作用。
下面是我的代码片段:
from ursina import *
from ursina.prefabs.first_person_controller import FirstPersonController
from ursina.shaders import camera_grayscale_shader
app = Ursina()
grass = 'textures/grass.jpg'
class Voxel(Button):
def __init__(self, position = (0,0,0), texture = grass):
super().__init__(
model='cube',
texture=texture,
color=color.color(0,0,random.uniform(.823,.984)),
parent=scene,
position=position,
)
def input(self, key):
if self.hovered:
if key == 'right mouse down':
voxel = Voxel(position = self.position + mouse.normal, texture = plank)
if key == 'left mouse down':
destroy(self)
for z in range(16):
for x in range(16):
voxel = Voxel(position = (x,0,z))发布于 2021-02-18 02:19:17
要使用perlin噪波生成地形,可以使用带有perlin噪波图像的高度贴图创建一个Terrain实体:
from ursina import *
app = Ursina()
noise = 'perlin_noise_file' # file
t = Terrain(noise) # noise must be a file
app.run()要产生柏林噪声,可以使用perlin_noise库。下面是文档中的一个示例:
import matplotlib.pyplot as plt
from perlin_noise import PerlinNoise
noise = PerlinNoise(octaves=10, seed=1)
xpix, ypix = 100, 100
pic = [[noise([i/xpix, j/ypix]) for j in range(xpix)] for i in range(ypix)]
plt.imshow(pic, cmap='gray')
plt.show()发布于 2021-10-06 13:54:45
是的,有一种方法可以将perlin噪声合并到一个“我的世界”克隆中,这是一个在“我的世界”克隆中随机地形的简单示例:
from perlin_noise import PerlinNoise
import random
noise = PerlinNoise (octaves=3,seed=random.randint(1,1000000))
for z in range(-10,10):
for x in range(-10,10):
y = noise([x * .02,z * .02])
y = math.floor(y * 7.5)
voxel = Voxel(position=(x,y,z))这是最终的结果:https://imgur.com/a/VZd1Uip
请记住,您需要安装perlin noise,为此,只需在终端中写入以下内容: pip install perlin-noise
https://stackoverflow.com/questions/65877958
复制相似问题