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

麻花云:3折优惠,香港CN2安徽麻花云香港安徽移动BGP云服务器(大带宽)

麻花云在7月特意为主机测评用户群定制了促销活动:香港宽频CN2云服务器、安徽移动云服务器(BGP网络,非单线,效果更好)、安徽移动独立服务器、安徽电信独立服务器,全部不限制流量,自带一个IPv4,默认5Gbps的DDoS防御。活动链接:https://www.mhyun.net/act/zjcp特价云服务器不限流量,自带一个IPv4,5Gbps防御香港宽频CN2全固态Ⅲ型 4核4G【KVM】内存:...

HostKvm:香港国际/韩国KVM夏季7折,2G内存套餐月付5.95美元起

HostKvm是一家成立于2013年的国外主机服务商,主要提供基于KVM架构的VPS主机,可选数据中心包括日本、新加坡、韩国、美国、中国香港等多个地区机房,均为国内直连或优化线路,延迟较低,适合建站或者远程办公等。目前商家发布了夏季特别促销活动,针对香港国际/韩国机房VPS主机提供7折优惠码,其他机房全场8折,优惠后2GB内存套餐月付5.95美元起。下面分别列出几款主机套餐配置信息。套餐:韩国KR...

RAKsmart:美国圣何塞服务器限量秒杀$30/月起;美国/韩国/日本站群服务器每月189美元起

RAKsmart怎么样?RAKsmart是一家由华人运营的国外主机商,提供的产品包括独立服务器租用和VPS等,可选数据中心包括美国加州圣何塞、洛杉矶、中国香港、韩国、日本、荷兰等国家和地区数据中心(部分自营),支持使用PayPal、支付宝等付款方式,网站可选中文网页,提供中文客服支持。本月商家继续提供每日限量秒杀服务器月付30.62美元起,除了常规服务器外,商家美国/韩国/日本站群服务器、1-10...

postscript教程为你推荐
金士顿内存怎么样金士顿内存条到底怎么样啊?这么多人买?又说90%都是假的?去装机人家推荐我金士顿骇客神条行不行啊?2014年万圣节是几月几日万圣节是几月几日桌面背景图片风景最原始的桌面壁纸,蓝天白云大草原的那种,有木有???盗版win8.1升级win10电脑预装正版win8,后来装成盗版win8.1了,请问还能不能升级win10呀电脑管家和360哪个好360和电脑管家哪个好啊录屏软件哪个好手机录屏的话那个软件会好一点电脑杀毒软件哪个好现在电脑用哪个杀毒软件最好莫代尔和纯棉哪个好内裤是莫代尔的好还是棉质的好?理由是什么手机浏览器哪个好手机什么浏览器最好用传奇类手游哪个好传奇手游哪个好玩免费
网站空间价格 广西虚拟主机 花生壳域名 工信部域名备案查询 国外免费vps 如何查询域名备案号 virpus 国外idc 国外空间服务商 免费静态空间 警告本网站美国保护 坐公交投2700元 如何用qq邮箱发邮件 昆明蜗牛家 hkt 银盘服务是什么 网站在线扫描 web服务器搭建 免费ftp 东莞服务器托管 更多