【发布时间】:2021-10-17 22:43:35
【问题描述】:
我一直在创建一个用于在 Godot 中为 3D 模型着色的工具,但我需要能够将 PLY 格式转换为 Godot 中的 SurfaceTool。 PLY 格式有一个标题,它解释什么是结构,然后给出数据。这是一个立方体的例子:
ply
format ascii 1.0
comment made by Greg Turk
comment this file is a cube
element vertex 8
property float x
property float y
property float z
element face 6
property list uchar int vertex_index
end_header
0 0 0
0 0 1
0 1 1
0 1 0
1 0 0
1 0 1
1 1 1
1 1 0
4 0 1 2 3
4 7 6 5 4
4 0 4 5 1
4 1 5 6 2
4 2 6 7 3
4 3 7 4 0
我在标题中放入了不同的数组顶点和面信息。我创建了这样的网格:
var meshBuilder = SurfaceTool.new()
meshBuilder.begin(Mesh.PRIMITIVE_TRIANGLE_FAN)
我已经添加了这样的顶点:
for i in range(vertex_count):
meshBuilder.add_normal(Vector3.UP)
meshBuilder.add_vertex(Vector3(float(data[0]),
float(data[1]),
float(data[2])))
line = loadedFile.get_line()
if line == "":
break
data = line.split(" ")
但我不知道如何添加面孔。它是一个三角扇,其中第一个面 4 0 1 2 3 是 4 个顶点,由三角形 0,1,2 和 0,2,3 而不是 0,1,2 和 1,2,3 组成。这是使用顶点的顺序。
也许我应该按照面部所说的确切顺序添加顶点,但我不知道如何使用 add_uv,因为我被告知要使用它。
【问题讨论】: