




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 / 9 用计算机程序制作三维立体画 摘 要 该文介绍了三维立体画的原理和制作方法 ,并给出了用 C 语言编写的源程序。借助于 ,读者可以自己设计和欣赏各式各样的三维立体画。 目前 ,市面上正在流行各式各样的立体画 ,其特点是从外表来看与一般的图案很相似 ,但是双眼紧盯着注视片刻后 ,一恍惚之间眼前便出现了画中画 立体像。笔者第一次看到这种画便被发明者的创意所倾倒。利用众所皆知的双眼视差原理 ,竟能在一张平面纸上制造出如此奇幻。但是立体画本身除了其发明者的灵感和画面创作者的别出心裁之外 ,其原理上并无神秘之处。用计算机程序来实现它 ,可说是易如反掌。笔者用一个晚上时间 ,便在微机上用 平面圆饼的立体画。当然 ,要使该程序具有完善的功能 ,提高其制作速度 ,还是应该用编译语言 (如 C 语言 )来编写。中给出的源程序借助于的 形文件 ,可使大家自己制作任意形态的立体画。 一、立体画的原理 看过立体电影的人都知道 ,当人的双眼分别接收不同视角拍摄的图像时便会产生立体感。这是由于人眼长期观察的习惯造成的。和立体电影原理相同的立体摄影风景照片也很早就已出现。图 1中给出了这种立体照片的示意图。左、右照片分别是人的 双眼角度上观察一棱锥体时左右眼看到的图像 (图 2)。左眼看到的是棱锥的顶端向右错动了一些的图像 ,右眼的看到则是棱锥的顶端向左2 / 9 错动了一些的图像。如果用一张硬卡片隔开两张照片 (如图3),;图 1 ;图 2 ;图 3双眼分别看两张画 ,会看到一个立体的棱锥体。这种立体照片的观察方法在测绘学中也早已采用。 但是 ,目前的三维立体画在形式上与这些很不相同。它是怎样在同一张画面上呈现立体的呢 ?首先 ,分析一下人们是怎样从这些立体画中看出立体形体的。从前面所说的可以知道 ,人眼要得到立体感 ,双眼必须有视差 ,即双眼看到的图像应该有差异。人们在看立体画时 ,都有恍惚一下的过程。在这过程中 ,双眼的视中心发生了错动 (如图4)。这样 ;图 4左眼看到的是画面的偏左像 ,右眼看到的是画面的偏右像。 只要偏左像和偏右像的内容相当于图 1 的左、右照片 ,双眼就会感到立体形体。那么 ,能否把图 1 的左、右照片分别当做偏左像和偏右像 ,简单重叠来得到立体画呢 ? 显然不行。能够合成立体画的偏左像和偏右像是要满足一定条件的。 如果图 5 中表现的棱锥体的表面上有图案的话 , ;图 5 像素 a 应该具有相同的颜色 ,因 为它们是从不同视角观察的 同一个实体点。像素 b 和像素 b、像素 c 和像素 c 的情况与此相同。把两幅画分别当作偏左图和偏右图 ,部分重叠成为同一画面时 ,在新的画面上这种关系仍应该表现为 a=a,b=b,c=c(如图 6)。但这时应该注意到 ,在这张合成 ;图 6画面上 ,点 a 既是偏右图上的点 a,又是偏左图3 / 9 上的点 b。而 一张画面上相同坐标点的像素只可能是一种颜色 ,因此 ,产生了新的像素关系 a=b。另外 ,点 左图上的点 a,又是偏右图上的点 c,所以 ,a=c。以此类推 ,点 b 和点 c 也有类似的情况。因此 出现了新的关系表示式 ,.=c=c=a=a=b=b=.。这就构成了立体画面上像素必须要满足的条件 :等颜色像素链。立体画上的所有点都从属于某一条等颜色像素链。这就是所有立体画图案都呈现出某种程度上的水平周期性的原因。 因此 ,对于任意立体形状 ,只要构造出相应的这种等像素链 ,并按其规律充填图案即可得到立体画。但是正如前面所述 ,由于这种等像素链条件的约束 ,人们虽然可以随意构造出各种形体的立体画 ,但其立体形体的表面图案是不能完全随人意愿的。 二、制作立体画的计算机程序 由于人的双眼的水平性 ,以上 的等像素链只按水平方向分布 ,与垂直方向无关。因此 ,在程序中 ,各个像素行的处理过程是相互独立的。制作立体画的程序主结构图如图 7。 ;图 7 制作立体画的程序主结构图在以上结构图中 ,关键是如何建立等 像素链。具体的处理如下。对于立体形体上的每一个点 ,首先求出该点在偏左图和偏右图上的坐标。以图 1 中的棱锥顶点为例 ,实际上其 X 坐标是在中心点 ,但由于双眼的位置并不在其正上方 ,顶点在偏左图上向右位移 ,在偏右图上向左位移 ,而且其位移值的大小显然与其高度有关 ,即该点坐标越4 / 9 高位移值就越大。 a,b,c 等点也都有这些位移。在求出一个点在偏左图和偏右图上的坐标后 ,再算出在合成图 (如图 6)上的对应坐标 ,以建立等像素关系 ,如 a=a。当立体形体的一个水平剖面上的全部点经过以上处理后 ,合成图的各条等像素链关系也就自然形成了。 另外 ,由于有可能出现高点遮盖低点的情况 ,等像素链的构造应该从低点到高点逐层进行 ,高点的等像素关系将替代低点的等像素关系。这也是程序主结构图中首先 ,对于没有任何形体存在的背景平面构造等像素链的原因。 下面给出了根据以上结构图用 C 语言编写的源程序。程序中 ,每一 个坐标点对应一个结构型数据 ,它包含前像素、后像素两个指针。前像素指针指向该坐标点作为偏右图上的一点 ,在偏左图所对应的点的坐标。后像素指针指向该坐标点作为偏左图上的一点 ,在偏右图所对应的点的坐标。程序中 ,立体形体水平剖面的高低坐标数据、原始图案素材和输出的立体画的文件格式都是采用了 的 形文件格式。图幅大小要求都是640 400,用 16 种颜色方式。其中 ,立体形体上各点的高低坐标用图形文件中的颜色值表示 ,因此该图形文件的图形与带颜色的等高线图安 全相同。通常情况下 ,在 16色的 件中颜色值从小到大的顺序为 :黑色、暗红色、暗绿色、暗黄色、暗蓝色、暗紫色、暗青色、暗灰色、灰色、明红色、5 / 9 明绿色、明黄色、明蓝色、明紫色、明青色、白色。本程序采用最简单的图案充填方案 ,即各条链上的像素点皆采用该链上的第一个像素的颜色。程序中的常数示偏左图和偏右图之间的偏差 ,的首或尾的指针标志。 该程序寄生在 的 件上。借助于它来构筑立体形体 (即立体形体水平剖面高低坐标数据文件图 8),设计原始图案 (图 9)。程序运行后 ,逐行输入并处理以上两个文件中的图形 ,然后输出立体画结果文件 (图 10)。最后 ,用 然 ,要设计出令人赏心悦目的立体画 ,必须在立体形体和图案素材的选择和搭配上做到天衣无缝 ,独具匠心。 ;图8 ;图 9 ;图 10 程序清单 /# #4 #0 # #4+40+4#6 #00 #40 # # /#20 /x(32+1)x4 x/ # / 9 #28 ; /of x/ ; /to p in x/ x x/ x in x in x/ ; /x ,4,8 4 x/ , x/ ,/x 0,or h x/ x 0,or h x/ ,a x/ ,0x/ ,0x/ ,0x/ ,x/ x; h i ()!= , , =B & =M & =& =& =& = s is n, ; ); s n, ; ); (
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业互联网应用案例解析与企业数字化转型实践经验分享
- 浙江省浙南名校联盟2025-2026学年高二上学期开学联考历史试卷
- 运城市小学考试试题及答案
- 2025年石油公司加油站人员安全操作知识考试题(附含答案)
- 2025年公共文秘教程考试题及答案
- 2025年山西省长治市事业单位工勤技能考试题库(含答案)
- 2025年山东省淄博市事业单位工勤技能考试考试题库及参考答案
- CN120111859A 一种散热组件及电子设备 (南昌华勤电子科技有限公司)
- U型吊安全事故培训课件
- CN120105831B 一种电机铁芯冲压模具装配面高保真快速建模方法及系统 (杭州电子科技大学)
- 动车组应急救援体系研究
- 墨菲定律课件教学课件
- 04S519小型排水构筑物(含隔油池)图集
- 高考数学一轮复习高频考点精讲精练(新高考专用)第11讲拓展四:导数中的隐零点问题(高频精讲)(原卷版+解析)
- 高校军事理论教育课教案
- 汉字历史-汉字的起源及形体演变(古代汉语课件)
- 八年级(上)+道德与法治+课程纲要
- 人教版部编版统编版一年级语文上册《我爱我们的祖国》课件
- 住院医师规范化培训临床小讲课的设计与实施培训课件
- 振动型式试验报告范本
- 基因工程与生命伦理
评论
0/150
提交评论