Python+OpenGL绘制3D模型(四)绘制线段

2023-12-29 15:30:17

系列文章

一、逆向工程
Sketchup 逆向工程(一)破解.skp文件数据结构
Sketchup 逆向工程(二)分析三维模型数据结构
Sketchup 逆向工程(三)软件逆向工程从何处入手
Sketchup 逆向工程(四)破解的乐趣 钩子 外挂 代码注入

二、OpenGL渲染模型
Python+OpenGL绘制3D模型(一)Python 和 PyQt环境搭建
Python+OpenGL绘制3D模型(二)程序框架PyQt5
Python+OpenGL绘制3D模型(三)程序框架PyQt6
Python+OpenGL绘制3D模型(四)绘制线段
Python+OpenGL绘制3D模型(五)绘制三角型
Python+OpenGL绘制3D模型(六)材质文件载入和贴图映射
Python+OpenGL绘制3D模型(七)制作3dsmax导出插件
Python+OpenGL 杂谈(一)

三、成果
疫情期间关在家里实在没事干,破解了Sketchup,成功做出可以读取并显示.skp文件的程序SuViewer

前言

Sketchup作为目前设计院最为流行的设计软件(非工程制图软件),深受设计师的喜爱,软件小巧,而功能强大,有不少为之开发的插件应运而生,不过呢,关于底层数据结构和工作原理相关的文章少之又少,本文意在填补一下这方面的空缺,通过逆向软件分析,展示软件内部奥秘。本文用到的工具:IDA Pro,Immunity Debugger,Visual Studio (逆向工程三件套)数据结构属于知识产权的核心机密:


绘制线段

在上一节,我们创建了一个OpenGL窗口,并绘制了3条线组成的小十字,从后面开始,我们的绘图程序放在一个独立的文件里,只有一个对外的接口 draw(gl),之前的代码中,在paintEvent中调用主绘图函数,这样代码的,绘图和框架,分的就非常清晰

第一步,新建一个Draw1.py,修改tOpenGL.py中调用绘图函数

# tOpenGL.py
from Draw1 import draw

def paintEvent(self,  event):
    ...
    
    # Step 2
    self.SetupMatrix()
        
    # Step 3
    draw(self.gl)
    
    #self.drawTarget(self.gl)

第二部,编写绘图函数

def draw(gl):
    gl.glBegin(gl.GL_LINES)
    gl.glVertex3d(-1,  0,  0  )
    gl.glVertex3d(+1, 0,  0 )
    gl.glEnd()
    
    gl.glBegin(gl.GL_LINES)
    gl.glVertex3d(-1,  0,  2  )
    gl.glVertex3d(+1, 0,  2 )
    gl.glEnd()

    gl.glBegin(gl.GL_LINES)
    gl.glVertex3d(-1,  0, 0  )
    gl.glVertex3d(-1, 0,  2 )
    gl.glEnd()

    gl.glBegin(gl.GL_LINES)
    gl.glVertex3d(+1,  0,  0  )
    gl.glVertex3d(+1, 0,  2 )
    gl.glEnd()

第三部,运行 python tOpenGL.py
在这里插入图片描述

系列文章预告

目标是一个完善的Viewer,能够显示Sketchup的.skp文件中的3D模型
在这里插入图片描述

Corona渲染器照片级渲染效果
在这里插入图片描述

文章来源:https://blog.csdn.net/weixin_42377388/article/details/135208146
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。