一种基于DirectX 9.0 API的G代码逆向渲染方法

          

           G代码是一种工业加工描述语言,现在也广泛的运用于3D打印中。但G代码是一种单向的描述语言,很难逆向回三维模型。但近日,日本出现了一款名为MakePaintable的软件,它可以将G代码逆向回三维模型。下图所示的就是这一软件的效果图:

 

图0-1 原始三维模型

 

图0-2 逆向出的三维模型

可以看到,逆向出的模型除了与原模型形状相同,还有光照与材质。但是国内还没有这样的软件。

    另一方面,现在游戏编程中的图形渲染一般基于多边形网络(主要是三角形),绝大多数图形格式诸如STL等都是如此。G代码可以从这些三角形网络获得,但G代码却很难对游戏编程有什么帮助。

本文就提出了一种方法来逆向G代码,并且逆向出的模型包含完整形状、材质、光照、贴图等等。除了可以单纯的逆向G代码,成为一款G代码逆向器,还可以应用于游戏编程,成为一种新的图形描述办法。

该方法思路如下:


本文也就由此展开

1.G代码的解析

G代码本身只是一段文本,可以使用fstream流读入。读入之后必须将其编制成为符合要求的数据结构。

才能从中高效率的提取有关信息。G代码的语法结构与汇编语言颇有些相似,都是功能字+操作数。而一个标准的功能字又可以拆分为一个字母(比如G01的G)和一个数字(比如G01的01)。我们可以定义一个GSentence的类来表示一条完整的G指令。并用一个GProgram来表示所有G指令类GSentence的集合。在GSentence中定义一个名为GFuncition的简单数据结构来描述一条功能字:

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值