欢迎使用CSKSOFT Stereoic
----------------------------------------------------------------------------
目前作为最易用的立体图生成系统已经推出,你可以免费得到完整的版本和多种素材
欢迎访问:http://StereoCity.csksoft.net!
CSKSOFT网站:www.csksoft.net
我的qq:27605046
CSKSOFT在线开发日志:blog.csksoft.net
目录:
首先做一个试验:合上你的左眼或者右眼,伸出你的左手的食指,放眼你眼前方(不要太近),然后伸出你右手的食指在你眼睛前方,保持两手指指尖略微靠近,你会发现两个手指似乎是离你一样近的。由此可见:我们对距离远近的感受必需借助双眼。
但它们是如何工作的呢?
从这张图中,我们可以看到,观察者(observer)在观察离他远近不同的来年两个点时,由于双眼均要对准一点,我们便假设有两条"视线"存在,同时发现在观察远近不同物体时视线的夹角(Alpha角和Beta角)是不同的,角度越大,代表里观察者越近,而大脑正是根据双眼的对焦视角决定物体的远近程度。
而立体图正是利用了这点。下面的说明仍是用这张图展开的。
看着上面的图,现在我们假设在观察者和实物之间隔了一层透明物,比如玻璃(图中的水平横线),我们在假设在有“视线”连接这观察者和实物的某一点。比如图中的蓝色“视线”,我们会发现他们在假想的那块玻璃平面上会有两个交点,或者说是投影。而这两个交点(投影)的颜色应该是和观察者正在注视物体的那一点颜色相同。同时我们如果设这两点间距为Sep,则会发现观察者注视实物上不同远近点时,在“玻璃”上产生的射影点的间距Sep的大小是不同的,并且目标越远,sep越大,越近sep越小。同时根据三角形相似我们知道具有相同远近的目标点产生的射影点距离sep是相同的!
可能你已经猜到接下来的事情了,如果我们反过来进行这一切会怎样?
现在假设我们把刚才那块“玻璃”变成显示器屏幕或者是纸张,上面每个像素点都如实反映了对应实物每个点在原先“玻璃”上投影的颜色,如果按照平时观屏幕或者纸张的习惯,你可能就只看到一堆无序的图案(它就是立体图了!!),而如果假设那屏幕后面有物体并改变你视距,让双眼视线相交在屏幕后方(就像屏幕或纸张透明了,看到后面的墙!),同时视线在屏幕上的交点正好就是原先实物某一点在那个"玻璃"上的射影,这样不就和的确存在一样物体在屏幕后一样了?你看到会是那个实物,而屏幕似乎“透明”了!
现在你已知道立体图的奥秘了。但具体生成一幅立体图却存在许多技术问题,下面只作出简要讲解。
还是观察那张图,我们把实物看成由许多不同远近的点(像素)组成,并且其中存在一些离观察者最远的点,也存在最近的点,我们通常把介于最远点和最近点的间距划分为256个等级(为什么呢?一个byte正好能存放256个数,而且256个等级人的肉眼已经无法感觉到不平滑了),这样每个像素都可以在0-255中取值,而保存这个数据的方法自然也清楚了,用一幅256色的灰度图片(通常称为深度表depth map,StereogramMaker中叫做位图3d蒙版)!其中将0-255的调色板定义为由浅到深。越深的像素自然就里观察者“越远”。
图:立体蒙板(深度表)
以后只要根据给定的一张灰度图片(深度表)或者3d模型,依次扫描各点,算出他们应该在纸面上的两个射影位置,就可以生成你要的立体图了。
但还有一个问题:深度表只是 记录了物体的距离信息,没有物体的颜色信息。所以在生成立体图前必须要选择一种图案(patten)来替代,一般先将patten平铺(和windows平铺桌面墙纸一样)在和深度表一样大小的位图上,然后在进行生成时读取每个对应点的颜色,再“投影”到屏幕或纸面就完成了对3d模型色彩的补充。
图:平铺的图案
现在你也知道为什么通常立体图总是由重复的图案组成的原因了,但这些图案(patten)也是要有一定要求的。这里我们提出一个最大深度或者最大间隔(MaxSep)概念。
上面已经提到:目标点越远,它在屏幕或纸面上的摄影点(还记得吗?应该有两个点)间距越远,而目标所有点中,一定有一个最远的点(其实有很多),这样就必须存在一个最大的间距(MaxSep),所有投影点间距均不能超过它。但你就会问这与图案有什么关系?呵呵,关系很大。刚才提到我们要将图案进行平铺,我们知道平铺是有周期的,所以每相隔一个周期长度的像素点颜色一样,这正好可以理解为存在一个目标点它在屏幕的投影就是图案的某两个重复的点!
图:重复的图案可以看成在最远处的目标图案在屏幕的射影。
所以你会发现,如果图案重复的周期必须等于最大间距(MaxSep)!(如果大于也会被自动截去大于的部分,你想想为什么?),否则你看到的景象可能就像这样:目标物体上嵌了一个平面!但你会说我强行让图案按照最大间距(MaxSep)为周期平铺不就可以了吗?(是可以,但要看方法,StereogramMaker会自动拉伸图案)但如果此时图案的宽度不做修改的话,你会发些在平铺的图案中会有黑色矩 形!
图:强行设定了重复周期间隔,导致平铺图案中有黑色矩形
而这对产生的立体图是致命的。因为这些区域对应的目标点是无法得到颜色信息的,由于肉眼最终还是要感受颜色,没了颜色怎么感受深度?
所以图案的要求就是:宽度要等于或大于最大间隔。而StereogramMaker可以让你忽略这一切!
好了,生成立体图原理就简要说道这了,下面我们给个例子让大家看看如何用StereogramMaker生成立体图!
目前除StereogramMaker外,大多数同类软件都不支持“可视化”制作,而StereogramMaker可以让用户方便的进行创作(注:正式版将带有制作向导和从3d max导入立体蒙板的功能)
该图就是StereogramMaker的界面,下面对每个部件进行说明:
a.
,标尺格式与页面大小设定。点击他或者在<设定>-<页面选项>中可以选择关于页面大小、标尺的单位。
b.图上的黑色虚线框:在选择了“位图图案”后可以用鼠标拖动改变位图大小。
c.图上黑色的带有"pixel"文字,表示了当前页面的大小
d.
重复间隔调整器,可以在小蓝点和标尺上拖动改变 最大间隔(MaxSep),该间隔越大,代表生成的立体图中隐藏物体的最大距离离开观察者越远,反之越近,同时较小的间隔 有利于观察。
e.图上"RandomDots"文字,表示用以渲染立体图所用的图案类型,可以是随机点(RandDots)、位图(Bitmap)、用户输入的文字(Text)(Demo版未包含)。其中图案是重复出现的,宽度超过蓝线的部分会在生成时自动删去
f.视图选择,也可以在“视图”菜单中选择
:编辑模式,就是截图中的视图,可以以直观的形势编辑立体图的素材
:实景模式(demo中未包含),会以形象的模型图让用户设定虚拟3d模型距离直面距离、观察者离纸面距离、观察者两眼间距等(均为厘米或英尺)
:预览模式,在生成立体图后便可在此视图观看。
g.
3d图格式设定(demo版仅为加载背景蒙版),可以设定生成图的分辨率、相关参数。
h.
图案设定。用户可以选择图案类型、图案渲染方式等
i:拖动可调整页面大小。
首先将StereogramMaker最大化,点击标尺处的小方块:
,将出现如下对话框:
在“坐标尺单位”中选择毫米(mm),然后按确定。你会发现做标尺长度作了调整(原先为10像素单位,现在为1cm单位):
,(提示:你可以同过页面下放的小方块随意改变大小)
现在准备工作完成!我们开始选择立体蒙版:
在Demo目录下有个“爱心”的蒙版:(hearts.bmp)。
我们在StereogramMaker中页面的有下方找到一个小方块,点击它,便出现蒙版导入对话框(正式版与此不同)
选择后,软件页面上便出现了蒙板的预览:
将鼠标移动到页面上蓝色虚线小方块出,或者虚线在标尺上的标记处,会发现鼠标变为拖动状,按住鼠标不放,将虚线向左拖动少许,减少最大间距。
此时如果你已不耐心继续操作,便可察看随机点图了!
点击下放工具栏第三个小图标(出现的页面会提示你生成预览,点击文字即可)或者在选择[生成]-〉[生成预览]:
经过几秒计算,随机点图便生成了!
如果觉得随机点图不好看,你可以选择位图图案。首先点下放工具栏第一个图标或者相关菜单回到一开始的编辑视图,在那个黑色虚线小框里点右下角的按钮:
根据图上指出的,我们在patten目录下选择Prairie wind.bmp文件,会发现原先的黑色虚线框变成了如下图:
同时注意到图案的宽度超出了最大间距,如果我们需要自动调整图案,可以在刚才的“图案设定”对话框中点击“渲染设定”,并选择“自动缩放至匹配大小”,如图:
现在发现图案已经按照比例,自动缩放到宽度与最大间距一样了:
此时你也可以马上察看立体图,方法与前面一样,但如果觉得图案仍旧不满意,可以使用鼠标直接拖动边框改变大小:
最后,我们便能欣赏自己的杰作了(由于demo版的关系,无法保存生成的图,你可以用Print screen,请你等待正式版推出,估计在2月中旬)
COPYRIGHT 2004-2005 CSKSOFT
该文所有内容(素材图片除外)版权归陈士凯所有