网格导出到封装的postscript

postscript教程  时间:2021-01-27  阅读:()

 下载演示项目 230 KB

 下载EPS示例418 KB

内容

 抽象

 简介

 应用程序应用程序

 导出到封装的postscript ( EPS )

 导出到Windows增强图元文件剪贴板( EMF ) 。

 导出到设备独立位图( DIB )剪贴板

 网格细分工具

 下载

 确认工具

 引用

 历史记录

抽象

This换句话说 /mfc程序生成的3D网格的分辨率独立版本如何将渲染结果导出到向量格式例如封装的postscript ( EPS )和Windows增强型图元文件( EMF )格式。 主要的目标是能够生成矢量图形来编辑。打印和说明目的。我们假设网格模型存储在97文件中这些文件通过3D Studio max导出。阅读本文并下载完整项目后你将能够

 在MFC MDI应用程序中使用OpenGL显示3D三角网格

 更改渲染选项如线框。平滑阴影。灯光和剔除等。

 将当前网格的渲染结果导出为封装的postscript ( EPS )格式

 通过剪贴板导出到Windows增强的图元文件( EMF )格式

 使用DIB格式将渲染图像复制到剪贴板中

 应用均匀循环细分方案[实现网格细分1 ] 。

尽管本文围绕Surface细分设计了一个小型3D库但它特别关注导出特性。特别是 VRML解析器是一个非常简单的实现插图目的并且不支持。 图概述了本文提供的导出功能。

图1.从左至右 在导出模型后 postscript浏览器ghostview显示三角网格并将模型导出为封装的postscript ( EPS )格式 PowerPoint显示剪贴板设备独立位图格式内容后 PowerPoint显示模型。

简介

每英寸1200个点。这是你最后一个高端激光打印机打印机所声称的图形分辨率。用如此精细的分辨率渲染高度详细的3D网格会很好。 例如渲染图像的打印结果 即使是最高的打印机分辨率也会导致大量内存空间。 一个非常好的解决方案是输出一个分辨率独立格式的网格 比如(封装的PostScript )或者EMF ( Windows增强型图元文件) 用true打印机分辨率。

感谢OpenGL提供的强大反馈机制 postscript输出问题可以发布。 这篇文章来自马克。 J 。 为了使它在mfc/mdi应用程序中运行 Kilgard和

Frederic Delhoume运行了它。 这是我从这里开始的文章。

使用gluProject命令。三角形项的z排序和GDI 2D绘图函数发出EMF格式。 本文还介绍了如何将相应的EMF流推到剪贴板 以便让我们在你喜欢的绘图工具中制作"粘贴"。

为了解决一些图形卡的问题本文还提出了一种低但鲁棒的DIB格式的输出用于一些图形卡的修复。 文章) 。

为了获得高分辨率打印的说明 Loop细分方案。 这个函数允许我们从粗糙的网格生成高度细节的网格作为示例文件的示例文件提供。

让我们来看看所提供的应用程序。

应用程序应用程序

应用程序是基于MDI MFC架构和图形库OpenGL的。 它提供了打开。显示和转换3D个三角形网格到EPS 。 EMF和DIB格式的最小特性集。 图形2描述应用程序工具栏 图形3演示了nefertiti网格上的几种渲染模式 图4显示了应用程序的附加快照已经打开四个网格。

图2.应用程序工具栏。 从左至右分别为每个带批注的按钮组 通过编辑可以将当前图形渲染到剪贴板中并根据当前投影矩阵生成一个EPS文件 由当前渲染过程生成一个EPS文件。 渲染模式对应顶点线条和三角形填充而主选项是平滑() 阴影边叠和光切换。 剔除选项也可以通过OpenGL菜单进行切换。 颜色按钮组允许更改网格面和顶点颜色 以根据y坐标(这里菜单已经添加到WMF演示目的中)应用彩虹颜色坡度(例如) 。 background颜色) 。

图3 。使用网格nefertiti.wrl.顶线条绘制了几种渲染模式 顶点。线条和面模式。 底线具有光滑阴影的面模式与每个顶点的y坐标和彩虹斜坡相同的叠加边和网格。 除了叠加的每个模式外都可以导出为封装的postscript格式。

图4.应用程序快照。打开和渲染四个网格这些选项由图detailed 。 3 NMT(数值模型地形)的颜色与海拔一致。

导出到封装的Postscript

目标是从当前视点所使用的3D个网格中生成一个EPS文件。 因此我们从3D提供的GL_FEEDBACK渲染模式中提取2D个基本元素在调用postscript2D绘图函数之前。 相应的几何图元可能是圆。笔画和填充具体取决于所选的OpenGL渲染模式(分别为顶点。直线或者面) 。 为了调试 SGI实现了GL_FEEDBACK渲染模式并输出了由浮点缓冲区中的呈现过程产生的2D个几何原始图元。 postscript渲染引擎(下面称为CPsRenderer )从这个缓冲区中提取几何原语并在一个EPS文件中输出相应的绘图函数(单击以下是下载示例EPS文件的示例 。 C++类CPsRenderer封装了由Mark J编写的C代码。Kilgard和Frederic Delhoume [ 3 ] 。

下面的伪代码总结了顺序

1. pFeedbackBuffer = new float [size]

2. glFeedbackBuffer(size,GL_3D_COLOR,pFeedbackBuffer)

3. glRenderMode(GL_FEEDBACK)

4. scene.Render() // immediate mode

5. NbValues = glRenderMode(GL_RENDER) // go back to rendering mode

6. PsRenderer.Run(pFilename,pFeedbackBuffer,NbValues,TRUE)

7. delete[] pFeedbackBuffer

注意这个代码对于单色基元(点。三角形和线段)运行非常好 当光滑阴影/着色被剪切时换句话说 。 平滑呈现效果是由三角形和线段元素的递归细分引发的直到颜色差小于PsRender.h.文件大小。

想尝试导出为EPS格式的示例 应用以下顺序

 启动bin/网格应用程序

 将venus.wrl文件拖到上面

 使用right/left/twice鼠标按钮改变视点

 选择菜单导出/eps 

 输入文件名

 启动GhostView并检查结果

 使用OpenGL菜单更改渲染选项(注意不导出边缘叠加选项并且

GhostView选项中的四个位深图显示。 不要担心这一点 因为它将被删

除在印刷

 从步骤3中重播序列。

对于需要你著名1200 dpi postscript激光打印机的非常密集的网格的black和白色渲染请应用以下顺序

 启动bin/网格应用程序

 将venus.wrl文件拖到上面

 使用right/left/twice鼠标按钮改变视点

 利用菜单网格/环细分(或者按Ctrl+L键)对均匀循环细分应用三次迭

代

 选择一个白色background (菜单opengl/清除颜色)

 选择black网格颜色(菜单Mesh/Color/Choose) ;

 检查线条渲染模式(菜单opengl/线条) 

 取消选中灯光选项(工具栏上的小太阳) 

 选择你的剔除选项偏好(菜单opengl/剔除)

 选择菜单导出/eps 

 输入文件名

 启动GhostView并检查结果

 将你的EPS文件插入你的LaTeX文档中

 检查文档。

下面是在视图派生类中定义的EPS导出函数

/*********************************

/OnExportEps

/*********************************void CMeshView: :OnExportEps()

{static char BASED_CODE filter[] ="EPS Files (*. eps) |*. eps";CFileDialog SaveDlg(FALSE, "*. eps", "mesh. eps",

OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,f i lter) ;if(SaveDlg.DoModal () == IDOK)

{

CString string = SaveDlg.GetPathName() ;char *pFilename = string.GetBuffer(MAX_PATH) ;

//Allocation

//no way to predict this, you may change it

//for large meshes.const int size = (int)6e6;

GLfloat *pFeedbackBuffer = new GLfloat[size] ;

ASSERT(pFeedbackBuffer) ;

CDC *pDC = GetDC() ;

//Useful in multidoc templates

: :wglMakeCurrent(pDC->m_hDC,m_hGLContext) ;

//Set feedback mode

: :glFeedbackBuffer(size,GL_3D_COLOR,pFeedbackBuffer) ;: :glRenderMode(GL_FEEDBACK) ;

//Render

: :glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) ;

//Position/translation/scale

: :glPushMatrix() ;

: :glTranslated(m_xTranslation,m_yTranslation,m_zTranslation) ;: :glRotatef(m_xRotation, 1.0, 0.0, 0.0) ;

: :glRotatef(m_yRotation, 0.0, 1.0, 0.0) ;

: :glRotatef(m_zRotation, 0.0, 0.0, 1.0) ;

: :glScalef(m_xScaling,m_yScaling,m_zScaling) ;

//Start rendering

CMeshDoc *pDoc = GetDocument() ;

//Std rendering (no superimposed lines anyway)

//do not use display lists here!pDoc->m_SceneGraph.glDrawDirect() ;

SugarHosts糖果主机,(67元/年)云服务器/虚拟主机低至半价

SugarHosts 糖果主机商也算是比较老牌的主机商,从2009年开始推出虚拟主机以来,目前当然还是以虚拟主机为主,也有新增云服务器和独立服务器。早年很多网友也比较争议他们家是不是国人商家,其实这些不是特别重要,我们很多国人商家或者国外商家主要还是看重的是品质和服务。一晃十二年过去,有看到SugarHosts糖果主机商12周年的促销活动。如果我们有需要香港、美国、德国虚拟主机的可以选择,他们家的...

3C云1核1G 9.9元 4核4G 16元 美国Cera 2核4G 24元

3C云互联怎么样?3C云互联专注免备案香港美国日本韩国台湾云主机vps服务器,美国高防CN2GIA,香港CN2GIA,顶级线路优化,高端品质售后无忧!致力于对互联网云计算科技深入研发与运营的极客共同搭建而成,将云计算与网络核心技术转化为最稳定,安全,高速以及极具性价比的云服务器等产品提供给用户!专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端服务部署,促使用户云端部署化简为零,轻松...

Vultr VPS新增第18个数据中心 瑞典斯德哥尔摩欧洲VPS主机机房

前几天还在和做外贸业务的网友聊着有哪些欧洲机房的云服务器、VPS商家值得选择的。其中介绍他选择的还是我们熟悉的Vultr VPS服务商,拥有比较多达到17个数据中心,这不今天在登录VULTR商家的时候看到消息又新增一个新的机房。这算是第18个数据中心,也是欧洲VPS主机,地区是瑞典斯德哥尔摩。如果我们有需要欧洲机房的朋友现在就可以看到开通的机房中有可以选择瑞典机房。目前欧洲已经有五个机房可以选择,...

postscript教程为你推荐
软银亏损65亿美元日本软银为什么要出售阿里巴巴股票进行套现,将视频制作软件哪个好哪款视频编辑软件比较好用?苹果x和xr哪个好苹果x和xr那个好?dnf魔枪士转职哪个好dnf平民魔枪士转什么好红茶和绿茶哪个好红茶好还是绿茶好?云盘哪个好免费的网盘哪个好用啊?51空间登录怎样登51个人空间q空间登录腾讯qq空间登陆飞信空间登录怎样在网上登陆飞信东莞电信网上营业厅东莞电信网上营业厅是不是有个宽带团购活动?
虚拟主机评测网 godaddy域名注册 二级域名查询 fdcservers 全球付 kdata edis 云图标 me空间社区 域名接入 电信托管 新世界服务器 超级服务器 空间登陆首页 深圳主机托管 谷歌搜索打不开 湖南铁通 免费网站加速 webmin linux服务器系统 更多