首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perlin Noise -Python的Ursina游戏引擎

Perlin Noise -Python的Ursina游戏引擎
EN

Stack Overflow用户
提问于 2021-01-25 09:47:51
回答 2查看 748关注 0票数 0

有没有办法将Perlin噪声合并到我的“我的世界”克隆中?我尝试了许多不同的方法,但都不起作用。

下面是我的代码片段:

代码语言:javascript
复制
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))
EN

回答 2

Stack Overflow用户

发布于 2021-02-18 02:19:17

要使用perlin噪波生成地形,可以使用带有perlin噪波图像的高度贴图创建一个Terrain实体:

代码语言:javascript
复制
from ursina import *

app = Ursina()

noise = 'perlin_noise_file' # file 

t = Terrain(noise) # noise must be a file

app.run()

要产生柏林噪声,可以使用perlin_noise库。下面是文档中的一个示例:

代码语言:javascript
复制
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()
票数 0
EN

Stack Overflow用户

发布于 2021-10-06 13:54:45

是的,有一种方法可以将perlin噪声合并到一个“我的世界”克隆中,这是一个在“我的世界”克隆中随机地形的简单示例:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65877958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档