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

日本CN2独立物理服务器 E3 1230 16G 20M 500元/月 提速啦

提速啦的来历提速啦是 网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑 由赣州王成璟网络科技有限公司旗下赣州提速啦网络科技有限公司运营 投资1000万人民币 在美国Cera 香港CTG 香港Cera 国内 杭州 宿迁 浙江 赣州 南昌 大连 辽宁 扬州 等地区建立数据中心 正规持有IDC ISP CDN 云牌照 公司。公司购买产品支持3天内退款 超过3天步退款政策。提速啦的市场定位提速啦主...

阿里云秋季促销活动 轻量云服务器2G5M配置新购年60元

已经有一段时间没有分享阿里云服务商的促销活动,主要原因在于他们以前的促销都仅限新用户,而且我们大部分人都已经有过账户基本上促销活动和我们无缘。即便老用户可选新产品购买,也是比较配置较高的,所以就懒得分享。这不看到有阿里云金秋活动,有不错的促销活动可以允许产品新购。即便我们是老用户,但是比如你没有购买过他们轻量服务器,也是可以享受优惠活动的。这次轻量服务器在金秋活动中力度折扣比较大,2G5M配置年付...

vpsdime:夏日促销活动,美国达拉斯VPS,2G内存/2核/20gSSD/1T流量,$20/年

vpsdime怎么样?vpsdime是2013年注册的国外VPS主机商,实际上他还有一系列的其他域名站点如Winity.io, Backupsy,Cloudive, Virtora等等,母公司“Nodisto IT”相对来说还是很靠谱了的商家。VPSDime主要提供各种高配低价VPS套餐,其中Linux VPS和存储VPS基于OpenVZ架构,高级VPS基于KVM。VPSDime在上个季度的Low...

postscript教程为你推荐
滚筒洗衣机和波轮洗衣机哪个好一分钟看懂滚筒洗衣机和波轮洗衣机 滚筒洗衣机和波轮洗衣机哪个好天气预报哪个好用哪个最准确一般查看天气预报哪个软件好用?天气预报哪个好用哪个最准确哪个天气预报最准确!录屏软件哪个好手机录屏的话那个软件会好一点传奇类手游哪个好传奇哪个版本比较好玩 最好玩的传奇手游排行榜少儿英语哪个好少儿英语哪个比较好?炒股软件哪个好用股票交易软件哪个好?辽宁联通网上营业厅辽宁省昌图县联通网上营业厅通话单怎么查询360云盘同步版360云盘和360云盘同步版有什么区别?哪个更好用?哪家快递最便宜哪一家快递最便宜?谁知道!本人做淘宝的,每天发货!
广东服务器租用 68.168.16.150 win8升级win10正式版 镇江联通宽带 工作站服务器 699美元 cdn加速原理 免费测手机号 息壤代理 华为云盘 空间购买 阿里云免费邮箱 smtp服务器地址 美国迈阿密 空间服务器 免备案cdn加速 带宽测试 云销售系统 789电视剧网 双11促销 更多