Я пытаюсь сгенерировать карту высот из текстуры шума.Насколько я понимаю, чтобы вызвать get_pixel()
для изображения в этом контексте, изображение должно быть сначала заблокировано.Однако, когда я пытаюсь запустить программу, она завершается с ошибкой: Invalid call. Nonexistent function 'lock' in base 'StreamTexture'
.
Если я пытаюсь запустить ее без блокировки изображения, я получаю сообщение об ошибке: Invalid call. Nonexistent function 'get_pixel' in base 'StreamTexture'
.
Я уверен, что инструкции, которым я следую, относятся к той же версии Godot, которую я использую (3.1), так почему движок говорит мне, что lock()
и get_pixel()
- несуществующие функции?
Мой код здесь:
extends Spatial
var width
var height
var heightData = {}
var vertices = PoolVector3Array()
var drawMesh = Mesh.new()
func _ready():
var noiseTexture = load("res://noiseTexture.png")
width = noiseTexture.get_width()
height = noiseTexture.get_height()
noiseTexture.lock()
for x in range(0, width):
for y in range(0, height):
heightData[Vector2(x,y)] = noiseTexture.get_pixel(x,y).r
noiseTexture.unlock()
for x in range(0, width-1):
for y in range(0, height-1):
createQuad(x,y)
var surfTool = SurfaceTool.new()
surfTool.begin(Mesh.PRIMITIVE_TRIANGLES)
for i in vertices.size():
surfTool.add_vertex(vertices[i])
surfTool.commit(drawMesh)
$MeshInstance.mesh = drawMesh
func createQuad(x,y):
#First half
vertices.push_back(Vector3(x, heightData[Vector2(x,y)], -y))
vertices.push_back(Vector3(x, heightData[Vector2(x,y+1)], -y-1))
vertices.push_back(Vector3(x+1, heightData[Vector2(x+1,y+1)], -y-1))
#Second Half
vertices.push_back(Vector3(x, heightData[Vector2(x,y)], -y))
vertices.push_back(Vector3(x+1, heightData[Vector2(x+1,y+1)], -y-1))
vertices.push_back(Vector3(x+1, heightData[Vector2(x+1,y)], -y))
Любая помощь очень ценится.
РЕДАКТИРОВАТЬ - Я (пытался) осуществить изменения, которые были предложены в комментариях (но я до сих пор не 'Я не знаю, что делать с переменной цвета) и приложил снимок экрана моего результирующего кода, а также некоторые комментарии, которые я сделал, чтобы попытаться объяснить себе, почему процесс ДОЛЖЕН работать (я думаю).Он также показывает структуру моего узла, поэтому я решил отобразить это как изображение.Однако, когда я пытаюсь запустить это, программа вылетает с отображаемой ошибкой.