网格导出到封装的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() ;

LOCVPS-2021年6月香港便宜vps宽带升级,充值就送代金券,其它八折优惠!

LOCVPS怎么样?LOCVPS是一家成立于2011年的稳定老牌国人商家,目前提供中国香港、韩国、美国、日本、新加坡、德国、荷兰等区域VPS服务器,所有机房Ping延迟低,国内速度优秀,非常适合建站和远程办公,所有机房Ping延迟低,国内速度优秀,非常适合做站。XEN架构产品的特点是小带宽无限流量、不超售!KVM架构是目前比较流行的虚拟化技术,大带宽,生态发展比较全面!所有大家可以根据自己业务需求...

无忧云(25元/月),国内BGP高防云服务器 2核2G5M

无忧云官网无忧云怎么样 无忧云服务器好不好 无忧云值不值得购买 无忧云,无忧云是一家成立于2017年的老牌商家旗下的服务器销售品牌,现由深圳市云上无忧网络科技有限公司运营,是正规持证IDC/ISP/IRCS商家,主要销售国内、中国香港、国外服务器产品,线路有腾讯云国外线路、自营香港CN2线路等,都是中国大陆直连线路,非常适合免北岸建站业务需求和各种负载较高的项目,同时国内服务器也有多个BGP以及高...

NameCheap域名转入优惠再次来袭 搜罗今年到期域名续费

在上个月的时候也有记录到 NameCheap 域名注册商有发布域名转入促销活动的,那时候我也有帮助自己和公司的客户通过域名转入到NC服务商这样可以实现省钱续费的目的。上个月续费转入的时候是选择9月和10月份到期的域名,这不还有几个域名年底到期的,正好看到NameCheap商家再次发布转入优惠,所以打算把剩下的还有几个看看一并转入进来。活动截止到9月20日,如果我们需要转入域名的话可以准备起来。 N...

postscript教程为你推荐
内存卡数据恢复软件怎样找回sd卡文件恢复天玑1000plus和骁龙865哪个好天玑1000plus相当于骁龙多少苹果x和xr哪个好苹果xr好还是苹果x好石英表和机械表哪个好石英表好还是机械表好?手机杀毒哪个好手机杀毒软件哪个好红茶和绿茶哪个好红茶和绿茶哪个更好?群空间登录群空间无法正常登陆的问题飞信空间登录关于飞信登陆方式东莞电信宽带套餐广东东莞电信宽带资费是怎么样的?电信dns服务器地址电信光纤的dns地址怎么设置
北京主机租用 blackfriday cloudstack 优惠码 新世界电讯 debian源 远程登陆工具 私有云存储 铁通流量查询 e蜗牛 网站卫士 服务器干什么用的 1美金 512mb 免费ftp 我的世界服务器ip net空间 国内域名 帽子云排名 中国域名 更多