faces
in a flat Array[Float]
# Compute the vertices coordinates of `faces` in a flat `Array[Float]`
fun vertices(faces: Array[ObjFace]): Array[Float] do
var obj_def = obj_def
var vertices = new Array[Float]
for face in faces do
# 1st triangle
var count = 0
for e in face.vertices do
var i = e.vertex_point_index - 1
var v = obj_def.vertex_points[i]
vertices.add v.x
vertices.add v.y
vertices.add v.z
if count == 2 then break
count += 1
end
# If square, 2nd triangle
#
# This may not support all vertices ordering.
if face.vertices.length > 3 then
for e in [face.vertices[0], face.vertices[2], face.vertices[3]] do
var i = e.vertex_point_index - 1
var v = obj_def.vertex_points[i]
vertices.add v.x
vertices.add v.y
vertices.add v.z
end
end
# TODO use polygon triangulation to support larger polygons
end
return vertices
end
lib/gamnit/depth/more_models.nit:293,2--331,4