仅仅为了画张图,懒得详细渲染到图片了,想到用meshlab帮忙算法向量,然后用meshlab 可视化出来。

meshlab 保存的时候保存normal就会帮你算了, 然后脚本主要是处理把法向量转化成0-1之间,这样附在 顶点后面,meshlab就会显示出顶点的颜色了。
脚本用的ruby。

require '_chj/chj' 
include CHJmethod 

lines = readlines "shape.obj"

v = lines.select{|e| e[0..1]=="v "}.map{|e|e.split[1..3]}
vn = lines.select{|e| e[0..1]=="vn"}.map{|e|e.split[1..3].map{|e| e.to_f}}.map do |e|  
    len = Math.sqrt e.inject(0){|sum, x| sum+x*x}
    e.map{|x| x/len*0.5+0.5}
end
f = lines.select{|e| e[0..1]=="f "}.map{|e|e.split[1..3].map{|e|e.split("//")[0]}}

nV, nF = v.size, f.size

File.open("normal.obj", "w") do |fp|
    0.upto(nV-1).each do |id|
        fp.puts "v "+v[id].join(" ")+" "+vn[id].join(" ")
    end
    0.upto(nF-1).each do |id|
        fp.puts "f "+f[id].join(" ")
    end
end

在这里插入图片描述-> 在这里插入图片描述

Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐