网页功能: 加入收藏 设为首页 网站搜索  
wu像素
发表日期:2007-01-16作者:[转贴] 出处:  

星空,还记得那个demo吗?它们都拥有一个星空和一些滚动的文字.在惯用的320*200的解析度下,这些星星看上去真的很糟糕.远处的星移动的非常的慢,蹒跚的从屏幕中央向外移动,吃力的从一个像素移到下一个像素.低的屏幕解析度使得低速移动的像素非常的难看.怎样克服解析度的限制呢?答案就是反走样(Antialiasing).

注意:在这里我们将把屏幕上的像素和我们将要绘制的wu像素区别开.我将使用"像素"代表屏幕上的像素."粒子"将代表我们将使用"像素"绘制的wu像素.

m_fag2.gif (5323 bytes) 这里有我很早以前用BASIC写的一个wu像素的demo.非常抱歉,实际上它非常的慢.现在一个用C写的Demo很快就完成了.
wupix1.gif (2927 bytes) 在左边我们有一些我们将要绘制的粒子的位置.在右面是它们的反走样版本. wupix2.gif (3500 bytes)

在这里反走样粒子看上去没什么特别的.但是,当你使用它来绘制大量的缓慢移动的像素的时候,那效果相当令人满意.

属性

wu像素有一下属性:
.绘制的所有像素的亮度的总和等于原始的粒子的亮度.
.wu像素的中心亮度被定位在原始粒子的非整数位置.

方法

有多种方法可以绘制反走样粒子.你可以画一个正方形,粒子的单位尺寸,这是最简单的.你可以画一个粒子尺寸的圆,这略微有些难度而且看上去几乎和前者相同.你也可以画更大的粒子,在这种情况下圆的版本看上去更好.
无论用什么方法,绘制的所有像素的亮度将等于粒子覆盖的区域的亮度.

单位正方形

它们是最容易画的.对于粒子覆盖的每个像素,计算被粒子覆盖的区域.把它乘以粒子的亮度,然后绘制这个像素.你一个单位正方形最大可以覆盖4个像素.

在(wx,wy)绘制亮度为wb的wu像素的伪代码

Variables:
INTEGER: x, y ' wu像素的整数坐标
FLOAT: fx, fy ' 坐标的一部分
INTEGER: btl, btr, bbl, bbr ' 粒子覆盖的四个像素的亮度
' (top left, top right, bottom left, bottom right)


x = int(wx) ' 计算左上角像素的坐标
y = int(wy) '
fx = wx - x '
fy = wy - y '

btl = (1-fx) * (1-fy) * wb ' 乘以总的wu亮度来计算每四个像素的亮度
btr = (fx) * (1-fy) * wb '
bbl = (1-fx) * (fy) * wb '
bbr = (fx) * (fy) * wb '

plot pixel with brightness btl at (x, y) ' 画像素
plot pixel with brightness btr at (x+1, y) '
plot pixel with brightness bbl at (x, y+1) '
plot pixel with brightness bbr at (x+1, y+1)


那给你一个这个方法背后的想法.我将把优化留给你.我能想得到的最好的方法是建立一个包含256个wu像素的查找表.占用1Kb.

其他形状和尺寸

你不必把自己限定在单位正方形上.机会所有的尺寸和形状都是可能的,尽管只有他相对的很大的时候区别它们的形状才有意义.最好的建立区域和尺寸的方法是把它们更大的绘制多次,然后再取样.

x_wu1.gif (1491 bytes) 举个例子,一个三像素宽的圆形粒子.把这个粒子画的更大,然后再取样.把0到1之间的x和y的偏移量作一个查找表. x_wu2.gif (1870 bytes)
我来说两句】 【加入收藏】 【返加顶部】 【打印本页】 【关闭窗口
中搜索 wu像素
本类热点文章
  Particle Fire [粒子火焰]
  wu反走样(Anti-aliased)直线
  反走样技术之一 —— Wu像素
  粒 子 系 统
  3D 粒子系统
  Real-time Cloth Deformation [实时变形..
  Ripple [水波]
  碰撞检测和粒子的交互作用
  Particle System Overview [粒子系统概..
  wu像素
  图象特效-等离子体(Plasma)
  制作爆炸效果
最新分类信息我要发布 
最新招聘信息

关于我们 / 合作推广 / 给我留言 / 版权举报 / 意见建议 / 广告投放  
Copyright ©2003-2024 Lihuasoft.net webmaster(at)lihuasoft.net
网站编程QQ群   京ICP备05001064号 页面生成时间:0.0032