этот код почти работает при преобразовании obj-файлов в мой пользовательский формат, но когда вы добавляете фигуру с более чем 9 гранями, он получает всю причудливость и дает неверные числа для вершин граней.формат должен быть {vertex1, vertex2, vertex3, rvalue, gvalue, bvalue}, так что, скажем, у меня есть грань, которая использует вершины 1,2 и 4, тогда я получу {1,2,4,255,255,0},.но если у меня есть лицо с вершинами 1,2 и 10, тогда я получаю {1,2,101,255,255,0}, и я не знаю, почему
-- see if the file exists
function file_exists(file)
local f = io.open(file, "rb")
if f then f:close() end
return f ~= nil
end
-- get all lines from a file, returns an empty
-- list/table if the file does not exist
function lines_from(file)
if not file_exists(file) then return {} end
lines = {}
for line in io.lines(file) do
lines[#lines + 1] = line
end
return lines
end
-- tests the functions above
local file = 'cube.txt'
local lines = lines_from(file)
-- print all line numbers and their contents
for k,v in pairs(lines) do
str = tostring(v)
if 9 <= k then
str = str .. ","
end
print("before space : "..str)
str = str:gsub("v ", "")
str = string.gsub(str, "v", "")
str = str:gsub("f ", "")
str = string.gsub(str, "f", "")
str = str:gsub("%s+", ",")
str = string.gsub(str, "%s+", "")
print("before // : "..str)
str = str:gsub("(//).(,)", ",")
str = string.gsub(str, "//", "")
if k >= 9 then
print(" { " .. str .. "255,255,0 },")
else
print(" { " .. str .. " },")
end
end