在 Lua 中将 obj 文件转换为自定义格式

这段代码几乎可以将 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},而我不知道为什么

-- 检查文件是否存在
function file_exists(file)
  local f = io.open(file, "rb")
  if f then f:close() end
  return f ~= nil
end

-- 获取文件中的所有行,如果文件不存在则返回一个空列表/表格
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

-- 测试上述函数
local file = 'cube.txt'
local lines = lines_from(file)
-- 打印所有行数及其内容

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
点赞